zoukankan      html  css  js  c++  java
  • 源码安装和配置zabbix 3.0 LST

    Zabbix是什么

    Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。

    Zabbix 是一个企业级的分布式开源监控方案。

    Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。

    Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。

    Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。

    以上是zabbix官方文档的原文介绍。

    更多zabbix的特性,请参考zabbix的官网。https://www.zabbix.com/

    官方文档,3.4版本的文档已经有中文版本了。https://www.zabbix.com/documentation/3.4/zh/manual/introduction/features

    下面是CentOS 7 + LNMP + zabbix 3.0 LST版演示

    为什么我要选择zabbix 3.0 LST这个比较旧的版本,而不是最新版本。因为这个是LST(Long-Term Support)版本,即长期支持版本。相对来说,支持的时间比较长,也比较稳定。现在最新的版本已经是3.4了。

    0. 环境

    zabbix server端: 192.168.4.243,主机名:L3;一般server端也会安装zabbix agent,因为zabbixe server本身使用的mysql也需要被监控。
    zabbix agent端(被监控的主机): 192.168.4.242,主机名:L2
    zabbix server站点目录:/data/website/zabbix/

    1. 安装mysql或mariadb

    (略)

    2. 安装Nginx

    下载,解压

    cd /usr/local/src
    wget http://nginx.org/download/nginx-1.9.15.tar.gz 
    tar -zxvf nginx-1.9.15.tar.gz 
    

    安装依赖,编译安装

    yum -y install mysql-devel
    cd nginx-1.9.15
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre
    
    make && make install
    

    创建启动脚本,并把附件脚本放到 /etc/init.d/ 下

    vim /etc/init.d/nginx
    
    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemin
    #
    # chkconfig: - 85 15
    # description: Nginx is an HTTP(S) server, HTTP(S) reverse 
    # proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config: /usr/local/nginx/conf/nginx.conf
    # pidfile: /usr/local/nginx/logs/nginx.pid
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    nginx="/usr/local/nginx/sbin/nginx"
    prog=$(basename $nginx)
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
    lockfile=/var/lock/subsys/nginx
    start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
    }
    stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
    }
    restart() {
    configtest || return $?
    stop
    start
    }
    reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
    }
    force_reload() {
    restart
    }
    configtest() {
    $nginx -t -c $NGINX_CONF_FILE
    }
    rh_status() {
    status $prog
    }
    rh_status_q() {
    rh_status >/dev/null 2>&1
    }
    case "$1" in
    start)
    rh_status_q && exit 0
    $1
    ;;
    stop)
    rh_status_q || exit 0
    $1
    ;;
    restart|configtest)
    $1
    ;;
    reload)
    rh_status_q || exit 7
    $1
    ;;
    force-reload)
    force_reload
    ;;
    status)
    rh_status
    ;;
    condrestart|try-restart)
    rh_status_q || exit 0
    ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
    exit 2
    esac
    

    修改nginx,支持php

    vim  /usr/local/nginx/conf/nginx.conf
    

    找到并修改以下代码

    location / {
                root   /data/website/zabbix;  #根据网站目录设置
                index  index.php;
            }
    
    location ~ .php$ {
               root           html;
               fastcgi_pass   127.0.0.1:9000;
               fastcgi_index  index.php;
               fastcgi_param  SCRIPT_FILENAME  /data/website/zabbix$fastcgi_script_name;
               include        fastcgi_params;
           }
    

    以上的代码由server {}包含的,要把server及一对{}的注释去掉,注意对应的关系。

    启动

    chmod 777 /etc/init.d/nginx
    chkconfig nginx on
    service nginx start
    

    3. 安装PHP

    安装依赖包

    yum -y install beecrypt beecry-devel curl curl-devel freetype 
    freetype-devel fontconfig fontconfig-devel gettext gettext-devel 
    ImageMagick ImageMagick-devel mingw32-iconv.noarch libmcrypt 
    libmcrypt-devel libpng libpng-devel libxml2 libxml2-devel libxslt 
    libxslt-devel mhash mhash-devel mcrypt zlib zlib-devel gd gd-devel 
    libjpeg libjpeg-devel pcre pcre-devel openldap openldap-devel
    

    下载,解压

    cd /usr/local/src
    wget http://cn2.php.net/distributions/php-7.1.8.tar.bz2
    tar -jxvf php-7.1.8.tar.bz2
    

    编译

    cd php-7.1.8/
    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc 
    --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd 
    --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local 
    --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring 
    --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib 
    --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-dom --enable-xml 
    --enable-fpm --with-libdir=lib64 --enable-bcmath --with-ldap
    
    make && make install
    

    配置php

    cp /usr/local/src/php-7.1.8/php.ini-production  /usr/local/php/etc/php.ini
    cp /usr/local/php/etc/php-fpm.conf.default   /usr/local/php/etc/php-fpm.conf
    cp /usr/local/php/etc/php-fpm.d/www.conf.default   /usr/local/php/etc/php-fpm.d/www.conf
    

    启动

    cp /usr/local/src/php-7.1.8/sapi/fpm/init.d.php-fpm   /etc/init.d/php-fpm
    chmod 755 /etc/init.d/php-fpm
    chkconfig php-fpm on
    service php-fpm start
    

    创建zabbix server的站点

    mkdir -p /data/website/zabbix
    chmod +w /data/website/zabbix
    vim /data/website/zabbix/index-test.php
    

    内容如下:

    <?php phpinfo();?>
    

    重载nginx

    service nginx reload
    

    这时,在页面上面访问 http://192.168.4.243/index-test.php 有PHP相关信息说明配置已搞定。
    也可以/usr/local/php/sbin/php-fpm -t --测试php运行状态

    4.安装zabbix server

    官方安装文档:https://www.zabbix.com/documentation/3.0/manual/installation/install

    下载,解压

    cd /usr/local/src
    wget --no-check-certificate https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.10/zabbix-3.0.10.tar.gz
    tar -zxvf zabbix-3.0.10.tar.gz 
    

    编译

    yum install -y net-snmp-devel curl-devel
    cd zabbix-3.0.10
    ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
    
    
    make install
    

    根据官方文档,加了--enable-agent参数,会把zabbix_get和zabbix_sender都安装。
    Command-line utilities zabbix_get and zabbix_sender are compiled if --enable-agent option is used.

    所以如果在被监控主机(客户端)上安装agent编译为:./configure --prefix=/usr/local/zabbix --enable-agent
    客户端安装agent也需要建立zabbix用户组和用户。
    由于server端也要监控,所以192.168.4.243也安装了zabbix agent。

    建立zabbix用户组和用户

    groupadd zabbix
    useradd -g zabbix zabbix
    

    登录mysql账户,创建zabbix数据库

    mysql -uroot -p
    

    官网文档创建数据库时指定了排序规则utf8_bin,这里不使用

    mysql> create database zabbix character set utf8;
    mysql> grant all privileges on zabbix.* to ‘zabbix’@‘localhost’ identified by 'zabbix123';
    mysql> quit
    cd /usr/local/src/zabbix-3.0.10/database/mysql/
    mysql -uzabbix -pzabbix123 -Dzabbix < schema.sql
    mysql -uzabbix -pzabbix123 -Dzabbix < images.sql
    mysql -uzabbix -pzabbix123 -Dzabbix < data.sql
    

    把zabbix server的前端页面复制到zabbix站点下

    cp -rp /usr/local/src/zabbix-3.0.10/frontends/php/*   /data/website/zabbix
    chown -R zabbix:zabbix zabbix/
    

    创建zabbix的data文件夹(与mysql的data文件类似,用来存放log和pid文件)

    mkdir -p  /data/zabbix
    chown -R zabbix:zabbix  /data/zabbix
    

    配置zabbix server

    vim /usr/local/zabbix/etc/zabbix_server.conf
    # 配置以下内容:
    LogFile=/data/zabbix/zabbix_server.log
    PidFile=/data/zabbix/zabbix_server.pid
    DBHost=127.0.0.1
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix123
    DBPort=3306
    Timeout=4
    LogSlowQueries=3000
    

    检查

    egrep -v '^#|^$'  /usr/local/zabbix/etc/zabbix_server.conf
    

    配置zabbix agent

    vim /usr/local/zabbix/etc/zabbix_agentd.conf
    # 配置以下内容:
    PidFile=/data/zabbix/zabbix_agentd.pid
    LogFile=/data/zabbix/zabbix_agentd.log
    Server=127.0.0.1
    ServerActive=127.0.0.1
    Hostname=127.0.0.1
    Timeout=10
    

    检查

    egrep -v '^#|^$'  /usr/local/zabbix/etc/zabbix_agentd.conf
    

    复制启动脚本到/etc/init.d/下

    cp /usr/local/src/zabbix-3.0.10/misc/init.d/tru64/*    /etc/init.d/
    

    修改启动脚本

    vim /etc/init.d/zabbix_server
    

    源码安装需要在 #!/bin/sh 后加入如下两行注释,注意要行前要加“#”,否则chkconfig会显示不支持

    # chkconfig: - 95 95
    # description: Zabbix Server
    DAEMON=/usr/local/zabbix/sbin/zabbix_server 
    
    vim /etc/init.d/zabbix_agentd
    

    源码安装需要在 #!/bin/sh 后加入如下两行注释,注意要行前要加“#”,否则chkconfig会显示不支持

    # chkconfig: - 86 14
    # Description: Zabbix agent
    DAEMON=/usr/local/zabbix/sbin/zabbix_agentd
    

    修改为可执行

    chmod a+x /etc/init.d/zabbix_server
    chmod a+x /etc/init.d/zabbix_agentd 
    

    启动,server默认端口10051;agent默认端口10050

    service zabbix_server start
    service zabbix_agentd  start
    

    检查
    ps aux | grep zabbix 查看有没有进程。
    ls /data/zabbix/ 查看log和pid文件有没有生成。
    vim /data/zabbix/zabbix_server.pid进程号是否一致。
    检查 tail -f zabbix_server.log 启动日志有没有正常启动或报错。
    同理,检查agent。

    加入开机自启动

    chkconfig --level 2345 zabbix_server on
    chkconfig --level 2345 zabbix_agentd on 
    

    5. 配置zabbix 站点

    修改php.ini的参数

    vim /usr/local/php/etc/php.ini
    max_execution_time = 300
    memory_limit = 128M
    post_max_size = 16M
    upload_max_filesize = 2M
    max_input_time = 300
    always_populate_raw_post_data = -1
    date.timezone = Asia/Shanghai
    

    检查有没有问题(命令不能转行)

    egrep 'max_execution_time|memory_limit|post_max_size|upload_max_filesize|max_input_timealways_populate_raw_post_data|Asia/Shanghai' /usr/local/php/etc/php.ini
    

    重启php服务

    service php-fpm restart
    

    zabbix 站点页面设置
    打开http:/192.168.4.243可看到zabbix web前端的一些验证,如果参数配置有问题,重复第5步修改。最后会一步会生成一个zabbix.conf.php文件, 自动放在zabbix server站点/data/zabbix/conf/目录下。如果提示无权限操作,可下载该文件把指定目录下,也可手动创建该文件。

    6. 登录zabbix server站点

    默认账号是admin,密码是zabbix。注意:在创建数据库时,按照官方的文档是加了collate utf8_bin,会区分大小写。官方文档:https://www.zabbix.com/documentation/3.0/manual/appendix/install/db_scripts

    7. 在agent端(192.168.4.242)

    安装zabbix agent
    在被监控的主机上安装zabbix agent,可以用rpm安装,也可以使用源码安装。如果server端是源码安装的,建议agent端也用编译安装。

    scp /usr/local/src/zabbix-3.0.10.tar.gz  root@192.168.4.242:/usr/local/src/
    yum install -y net-snmp-devel curl-devel
    cd zabbix-3.0.10
    ./configure --prefix=/usr/local/zabbix  --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
    
    make install
    

    配置zabbix-aget

    mkdir -p  /data/zabbix
    chown -R zabbix:zabbix /data/zabbix
    # Server指允许这个IP来取数据,ServerActive是指主动提交数据的IP。Hostname为被监控的主机名。
    vim /usr/local/zabbix/etc/zabbix_agentd.conf
    PidFile=/data/zabbix/zabbix/zabbix_agentd.pid
    LogFile=/data/zabbix/zabbix/zabbix_agentd.log
    LogFileSize=0
    Server=192.168.2.243
    ServerActive=192.168.4.243:10051
    Hostname=192.168.2.242
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
    

    检查

    egrep -v '^#|^$'  /usr/local/zabbix/etc/zabbix_agentd.conf
    

    建立zabbix用户组和用户

    groupadd zabbix
    useradd -g zabbix zabbix
    

    启动,默认端口为10050
    复制启动脚本到/etc/init.d/下

    cp /usr/local/src/zabbix-3.0.10/misc/init.d/tru64/zabbix_agentd    /etc/init.d/
    

    修改启动脚本

    vim /etc/init.d/zabbix_agentd
    

    源码安装需要在 #!/bin/sh 后加入如下两行注释,注意要行前要加“#”,否则chkconfig会显示不支持

    # chkconfig: - 86 14
    # Description: Zabbix agent
    DAEMON=/usr/local/zabbix/sbin/zabbix_agentd
    

    修改为可执行

    chmod a+x /etc/init.d/zabbix_agentd 
    

    加入开机自启动

    chkconfig --level 2345 zabbix_agentd on
    
    编译安装加入到系统开机自动运行的设置
    Nginx开机自动运行实现方法
    http://professor.blog.51cto.com/996189/1579791/
    Zabbix agentd和 Zabbix Server 开机自动运行实现方法
    http://os.51cto.com/art/201006/203193.htm
    
    1. 复制 zabbix 源程序的启动脚本到 /etc/init.d 目录下
    cp /usr/local/src/zabbix-3.xxxx/misc/init.d/tru64/zabbix_server   /etc/init.d/
    
    1. 修改 /etc/init.d/zabbix_service,修改文件路径为make install路径。
    SERVICE="Zabbix server"
    DAEMON=/usr/local/zabbix/sbin/zabbix_server
    PIDFILE=/var/run/zabbix_server.pid
    
    1. 增加可执行的权限
    chmod a+x /etc/init.d/zabbix_server 
    
    1. 修改启动脚本使其支持 redhat 的 chkconfig,分别在两个脚本的#!/bin/sh 后加入如下两行注释,注意要行前要加“#”
    vim /etc/init.d/zabbix_server 
    
    # chkconfig: - 95 95
    # description: Zabbix Server
    

    如果是agent

    vim /etc/init.d/zabbix_agentd
    
    # chkconfig: - 86 14
    # Description: Zabbix agent
    
    1. 使用 chkconfig 将其加入 init 的启动服务
    chkconfig --level 2345 zabbix_server on
    
    1. 检查
    chkconfig --list | grep zabbix
    
    1. 重启系统可以验证是否自启动成功
    reboot 后 ps aux | grep zabbix
    

    扩展

    源码安装zabbix server,通过vim /etc/init.d/zabbix_server查看pid文件默认是放在/tmp/zabbix_server.pid的。这个启动/关闭zabbix server的脚本是通过pid文件去找到进程号,然后直接kill进程的。如果pid文件不存在、目录不正常或启动用户对pid文件的操作权限不足,会造成service zabbix_server stop/stop/restart命令无法启动/关闭zabbix server。

    生成log和pid文件由/usr/local/zabbix/etc/zabbix_server.conf文件指定,而启动/关闭去读取 pid文件,则由启动/关闭脚本指定。所以如果要修改log和pid文件的默认/tmp下的路径/data/zabbix,需要修改.conf和启动/关闭脚本文件,显式指定pid的路径,并且保证写入的路径/data/zabbix是有权限的。最好是把/data/zabbix文件夹设置为系统用户zabbix所有。参考mysql的配置也是这样的,会把/data/mysql文件夹设置为系统用户mysql所有。

    log和pid文件放到默认的/tmp文件夹下,虽然说权限没有问题,而且大部分情况下也是正常使用的。但由于/tmp是“公共”文件夹,其他程序或人员有可能把这里的文件“误”删了,会导致一些意外的问题。指定其他文件夹,注意权限问题,必要时,可以切换到运行用户(运行用户一般不能登录Linux,另外再设置可登录)去测试权限是否足够。

  • 相关阅读:
    Linux帮助都有哪几种,如何使用?
    描述linux目录结构以及目录结构命名规定
    常见Linux的发行版有哪些?并描述不同发行版之间的联系与区别。
    【redis常用的键值操作及性能优化】
    【防护墙学习-1】
    【生成树中易混淆的概念及拓扑集】
    【linux运维递进】
    【windows中常用的服务概览和总结】
    【shell脚本学习-4】
    【shell脚本学习-3】
  • 原文地址:https://www.cnblogs.com/fishparadise/p/9067471.html
Copyright © 2011-2022 走看看