欢迎阅读!

潇湘夜雨

当前位置: 主页 > 服务器 >

zabbix3.2服务端配置

时间:2017-01-20 23:27来源:潇湘夜雨 作者:华嵩阳 点击:
环境准备: lamp环境 zabbix3.2 php5.6 一、配置zabbix server 1.编译安装zabbix [root@localhost ~]# tar -zxvf zabbix-3.2.3.tar.gz [root@localhost ~]# cd zabbix-3.2.3 [root@localhost ~]#yum install mysql-devel libxml2-devel net-snm
环境准备:
lamp环境
zabbix3.2
php5.6

一、配置zabbix server
1.编译安装zabbix
    [root@localhost ~]# tar -zxvf zabbix-3.2.3.tar.gz
    [root@localhost ~]# cd zabbix-3.2.3
    [root@localhost ~]#yum install mysql-devel libxml2-devel net-snmp-devel curl-devel #安装依赖包
    [root@localhost zabbix-3.2.3]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
    常见依赖性错误:
        configure: error: Not found mysqlclient library
        [root@localhost ~]# yum install mysql-devel
        configure: error: LIBXML2 library not found
        [root@localhost zabbix-3.2.3]# yum install libxml2-devel
        configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
        yum install net-snmp-devel
        configure: error: Curl library not found
        [root@localhost zabbix-3.2.3]# yum install curl-devel
 
    [root@localhost zabbix-3.2.3]# make
    [root@localhost zabbix-3.2.3]# make install

2.添加zabbix服务对应的端口
    默认已添加,没有可以手动添加。
    vi /etc/services #编辑,在最后添加以下代码
        # Zabbix
        zabbix-agent 10050/tcp # Zabbix Agent
        zabbix-agent 10050/udp # Zabbix Agent
        zabbix-trapper 10051/tcp # Zabbix Trapper
        zabbix-trapper 10051/udp # Zabbix Trapper
    
3.修改zabbix配置文件
    DBHost=192.168.227.128    #数据库地址
    DBName=zabbix    #数据库名
    DBUser=zbuser    #数据库账户
    DBPassword=123456    #数据库密码
    Timeout=4
    AlertScriptsPath=${datadir}/zabbix/alertscripts    #zabbix运行脚本存放目录
    
4.修改zabbix_agent配置文件:
    注意:zabbix_agent用于监控的客户端插件,这里用于监控本机。
    [root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
    [root@localhost ~]# grep ^[A-Z] /usr/local/zabbix/etc/zabbix_agentd.conf
        LogFile=/tmp/zabbix_agentd.log
        Server=192.168.227.128    #被动模式下允许的服务端的ip,可以是多个。
        ServerActive=192.168.227.128    #主动模式服务端的ip
        Hostname=Zabbix server
        Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
        UnsafeUserParameters=1 #启用自定义key


5.添加开机启动脚本
    [root@localhost ~]# cp zabbix-3.2.3/misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
    [root@localhost ~]# cp zabbix-3.2.3/misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
    chmod +x /etc/rc.d/init.d/zabbix_server #添加脚本执行权限
    chmod +x /etc/rc.d/init.d/zabbix_agentd #添加脚本执行权限
    chkconfig zabbix_server on #添加开机启动
    chkconfig zabbix_agentd on #添加开机启动
    
6、修改zabbix开机启动脚本中的zabbix安装目录
    vi /etc/rc.d/init.d/zabbix_server #编辑服务端配置文件
    BASEDIR=/usr/local/zabbix/ #zabbix安装目录
    :wq! #保存退出
    vi /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件
    BASEDIR=/usr/local/zabbix/ #zabbix_agentd安装目录
    :wq! #保存退出
    
二、zabbix数据库配置

1、创建、导入zabbix数据库
    [root@localhost ~]# mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 5
    Server version: 5.7.17 MySQL Community Server (GPL)
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    mysql> create database zabbix;    #创建zabbix数据库
    Query OK, 1 row affected (0.04 sec)
    mysql> grant all privileges on zabbix.* to zbuser@'192.168.227.128' identified by '123456';    #创建并授权zabbix的数据库账号zbuser
    Query OK, 0 rows affected, 1 warning (0.07 sec)
    mysql> select User,Host,authentication_string from mysql.user;    #查看创建的数据库
    +-----------+-----------------+-------------------------------------------+
    | User      | Host            | authentication_string                     |
    +-----------+-----------------+-------------------------------------------+
    | root      | localhost       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | mysql.sys | localhost       | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | zbuser    | 192.168.227.128 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    +-----------+-----------------+-------------------------------------------+
    3 rows in set (0.00 sec)
    mysql> flush privileges;    #刷新系统授权表
    Query OK, 0 rows affected (0.00 sec)
    
2.导入zabix数据库
    注意:请按照以上顺序进行导入,否则会出错。
    [root@localhost ~]# mysql -u zbuser -h 192.168.227.128 -p zabbix < zabbix-3.2.3/database/mysql/schema.sql
    Enter password:
    [root@localhost ~]# mysql -u zbuser -h 192.168.227.128 -p zabbix < zabbix-3.2.3/database/mysql/images.sql
    Enter password:
    [root@localhost ~]# mysql -u zbuser -h 192.168.227.128 -p zabbix < zabbix-3.2.3/database/mysql/data.sql
    Enter password:
    
三、配置web管理界面

1.配置zabbix网页
    [root@localhost ~]#cp -r zabbix-3.2.3/frontends/php/ /var/www/html/zabbix    #复制zabbix的网页代码到web服务器目录
    [root@localhost ~]#service zabbix_server start #启动zabbix服务端
    [root@localhost ~]#service zabbix_agentd start #启动zabbix客户端
    [root@localhost ~]# chown -R apache.apache /var/www/html/zabbix/    #更改权限
注意:zabbix3.0以上的版本的web界面要求php5.4以上的版本,否则不能打开页面。
yum升级php5.3到5.6:
    执行命令下载、安装yum源,当前是针对Centos6并且64位版本的源:
    [root@localhost ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    [root@localhost ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    编辑[remi.repo]下的enabled选项从0设为1
    [root@localhost ~]# sed -i '/enabled/s/=0/=1/g' /etc/yum.repos.d/remi.repo
    运行如下命令
    [root@localhost ~]# yum clean all
    [root@localhost ~]# yum makecache
    [root@localhost ~]#yum update php --skip-broken    #升级php,如果依赖报错可以加skip-broken参数忽略

2.调整php配置
zabbix的web界面对php的参数有一定要求,不同版本的参数设置略有差异。
主要参数:
    max_execution_time = 300
    memory_limit = 128M
    post_max_size = 16M
    upload_max_filesize = 2M
    max_input_time = 300
    date.timezone = PRC
更改后要重启httpd服务才生效

3.web界面配置
登录地址:http://192.168.227.128/zabbix/
按照提示配置web界面

配置完后默认账户是:
账号:admin
密码:zabbix

4.中文乱码
问题描述:web界面切换到中文字符时,在查看图表时可能会显示中文字符乱码
解决方法:将Windows系统中的楷体字体库文件放到zabbix的网页文件夹中
    [root@localhost ~]# cd /var/www/html/zabbix/fonts/
    [root@localhost fonts]# ls
    DejaVuSans.ttf
    [root@localhost fonts]# rz -E    #将simkai.ttf字体文件上传到fonts目录中
    rz waiting to receive.
    [root@localhost fonts]# ls
    DejaVuSans.ttf  simkai.ttf
    [root@localhost zabbix]# sed -i 's/DejaVuSans/simkai/g' ./include/defines.inc.php    #更改字体格式
    
通过以上方法只能让乱码的中文字符正常显示,如果提交中文字段到数据库仍会报错,建议配置是切换到英文界面并尽量用英文输入。

四、mysql监控配置

    这里可以采用zabbix自带的zabbix-3.2.3/conf/zabbix_agentd/userparameter_mysql.conf模版,但是也需要
    在mysql服务器上准备获取mysql status的脚本chk_mysql.sh,zabbix通过调用这个脚本来获取mysql的运行信息。

1.在配置文件zabbix_agentd.conf里面添加mysql监控信息:
[root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
    UserParameter=mysql.version,mysql -V
    UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1
    UserParameter=mysql.ping,netstat -ntpl |grep 3306 |grep mysql |wc |awk '{print $1}'
    注意:netstat命令一般需要root用户才能执行,要授权给普通用户: chmod +s /bin/netstat
    
2.创建mysql脚本
脚本要根据mysql的实际配置修改:    
    [root@localhost ~]# find / -name mysql.sock #查找mysql套接字
    /var/lib/mysql/mysql.sock
    [root@localhost ~]# whereis mysqladmin    #MySQLadmin命令路径
    mysqladmin: /usr/bin/mysqladmin /usr/share/man/man1/mysqladmin.1.gz
    
    此外还需要一个mysql本地登录用户,这里监控的是zabbix服务端的数据库,所以已经创建了zbuser用户,没有则创建创建。
    注意:这里是zabbix客户端获取本机的mysql数据后再主动或被动传递给zabbix服务端,因此创建一个localhost的授权用户即可。
    mysql> grant all privileges on *.* to zbuser@'localhost' identified by '123456';
    [root@localhost ~]# vim/usr/local/zabbix/etc/chk_mysql.sh
脚本模板一:
    #!/bin/sh
    # -------------------------------------------------------------------------------
    # FileName:    check_mysql.sh
    # Revision:    1.0
    # Date:        2017/01/20
    # Author:      lzh
    MYSQL_SOCK="/var/lib/mysql/mysql.sock"
    ARGS=1
    if [ $# -ne "$ARGS" ];then
        echo "Please input one arguement:"
    fi
    case $1 in
        Uptime)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"`
                echo $result
                ;;
            Com_update)
                result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3`
                echo $result
                ;;
            Slow_queries)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"`
                    echo $result
                    ;;
        Com_select)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3`
                    echo $result
                    ;;
        Com_rollback)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
                    echo $result
                    ;;
        Questions)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"`
                    echo $result
                    ;;
        Com_insert)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3`
                    echo $result
                    ;;
        Com_delete)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3`
                    echo $result
                    ;;
        Com_commit)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3`
                    echo $result
                    ;;
        Bytes_sent)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
                    echo $result
                    ;;
        Bytes_received)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
                    echo $result
                    ;;
        Com_begin)
            result=`/usr/bin/mysqladmin   -S $MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3`
                    echo $result
                    ;;
                           
            *)
            echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)"
            ;;
    esac


脚本模板2:    
注意:使用该脚本虽然可获取数据,但会有报警信息。
    #!/bin/sh
    # -------------------------------------------------------------------------------
    # FileName:    check_mysql.sh
    # Revision:    1.0
    # Date:        2017/01/20
    # Author:      lzh
    MYSQL_SOCK="/var/lib/mysql/mysql.sock"
    MYSQL_USER='zbuser'
    #MYSQL_PWD='123456'
    MYSQL_HOST='192.168.227.128'
    MYSQL_PORT='3306'
    ARGS=1
    if [ $# -ne "$ARGS" ];then
        echo "Please input one arguement:"
    fi
    case $1 in
        Uptime)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"`
                echo $result
                ;;
            Com_update)
                result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3`
                echo $result
                ;;
            Slow_queries)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"`
                    echo $result
                    ;;
        Com_select)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3`
                    echo $result
                    ;;
        Com_rollback)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
                    echo $result
                    ;;
        Questions)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"`
                    echo $result
                    ;;
        Com_insert)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3`
                    echo $result
                    ;;
        Com_delete)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3`
                    echo $result
                    ;;
        Com_commit)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3`
                    echo $result
                    ;;
        Bytes_sent)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
                    echo $result
                    ;;
        Bytes_received)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
                    echo $result
                    ;;
        Com_begin)
            result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3`
                    echo $result
                    ;;
                           
            *)
            echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)"
            ;;
    esac

添加check脚本权限:
    [root@localhost ~]# chmod u+x /usr/local/zabbix/etc/chk_mysql.sh
    [root@localhost ~]# chown -R zabbix.zabbix /usr/local/zabbix/etc/chk_mysql.sh
    
3.在mysql配置文件添加MySQLadmin的默认用户
vim /etc/my.cnf
    [mysqladmin]
    user=zbuser
    password=123456
    
    [root@localhost ~]# service mysqld reload    #重新读取配置文件
     SUCCESS! Reloading service MySQL

4.测试监控脚本是否生效
    [root@localhost ~]# service zabbix_agentd restart
    Shutting down zabbix_agentd:                               [确定]
    Starting zabbix_agentd:                                    [确定]
    在服务端测试(这里服务端和客户端在同一台主机):
    [root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.227.128 -p10050 -k mysql.status[Com_update]  
    1206
    [root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.227.128 -p10050 -k mysql.version
    mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper
    脚本测试成功
    
5.在web界面给主机添加mysql模板
    进入zabbix web 后台,configuration-->hosts-->点击你的主机 name-->选择template选项卡,选择
    模板“Template App MySQL”,最后点击左边的“Add”按钮,最后点击“update”按钮即可。
    等几分钟就可以在msyql的图形监控界面看到数据了
    
6.mysql监控的常见故障    
    故障1:web界面无法存储数据,服务端日志报错。
    2125:20170120:191517.298 error reason for "Zabbix server:mysql.status[Uptime]" changed: Received value [mysqladmin: [Warning] Using a password on the command line interface can be insecure.5621] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]

    解决办法是,在zabbix客户端的mysql配置文件中添加用户名密码配置,这样避免shell密码外泄也不会报错,
    (这里报这种错误是因为返回的结果集中有字符串提醒信息,而后台zabbix的item的是decimal所以存储不进去报错):

    vim /usr/local/mysql/my.cnf
    [mysqladmin]
    user=zbuser
    password=123456
    
    监控脚本中也要删除密码,或者直接用上面的模板一就可以了。
    然后重启zabbix_agent和mysql
    
    故障2:mysql.ping无法获取数据
    [root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.227.128 -p10050 -k mysql.ping
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
        0

    原因:netstat命令一般需要root用户才能执行,要授权给普通用户

    去mysql服务器上赋予s权限
    [root@localhost ~]# chmod +s /bin/netstat
    [root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.227.128 -p10050 -k mysql.ping
        1
    没有报错信息了 (责任编辑:liangzh)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容