环境准备: 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) |