1、简介
这里记录安装zabbix-agent的步骤。进一步记录安装percona的zabbix监控mysql的过程
2、安装zabbix-agent步骤
步骤说明:1)安装zabbix-agent,这里没使用国内的源,要重复安装好几次;2)配置,被动模式、密码 3)修改selinux措施 4)启动
yum install zabbix-agent -y [root@www zabbix]# cat zabbix_agentd.conf|grep -v '^#'|grep -v '^$' PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=127.0.0.1 StartAgents=0 ServerActive=xxx.xxx.xxx.xxx:xx Hostname=xxxx Include=/etc/zabbix/zabbix_agentd.d/*.conf TLSConnect=psk TLSAccept=psk TLSPSKFile=/etc/zabbix/zabbix_agentd.d/zabbix_agentd.psk TLSPSKIdentity=PSK 001 [root@www zabbix]# cat /etc/zabbix/zabbix_agentd.d/zabbix_agentd.psk xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [root@www zabbix]# [root@www zl]# ls -alZ /etc/zabbix/zabbix_agentd.d/zabbix_agentd.psk -rw-r--r--. root root system_u:object_r:etc_t:s0 /etc/zabbix/zabbix_agentd.d/zabbix_agentd.psk [root@www zl]# semanage port -a -t zabbix_port_t -p tcp 30050 chcon --reference=/etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.d/zabbix_agentd.psk systemctl restart zabbix-agent
3、安装zabbix-agent报错处理
在启动zabbix-agent的时候,受到selinux影响,启动成功了,但无法连接zabbix的server,报错如下:
[root@www zl]# cat /var/log/zabbix/zabbix_agentd.log |grep 30050 5717:20200903:000112.188 active check configuration update from [xxx.11.11.11:30050] started to fail (cannot connect to [[xxx.11.11.11]:30050]: [13] Permission denied) [root@www zl]#
根据经验,这个可能是linux的影响,首先处理了文件权限的问题;
chcon --reference=/etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.d/zabbix_agentd.psk
但还是不行,继续使用journalctl -xn查看日志,发现了其中有这么一句
If you want to allow /usr/sbin/zabbix_agentd to connect to network port 30050 Then you need to modify the port type. Do # semanage port -a -t PORT_TYPE -p tcp 30050
根据经验,查看了这个的用法
[root@www zl]# semanage --help [root@www zl]# semanage port [root@www zl]# semanage port -l [root@www zl]# semanage port -l|grep zabbix zabbix_agent_port_t tcp 10050 zabbix_port_t tcp 10051 [root@www zl]# semanage port -a -t zabbix_port_t -p tcp 30050
最后根据经验,得出了方法
[root@www zl]# semanage port -a -t zabbix_port_t -p tcp 30050 [root@www zl]#
4、安装percona的zabbix组件监控mysql的过程
#1、安装国内的php的yum源 yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm -y #2、安装php yum install php74-php php74-php-cli php74-php-common php74-php-gd php74-php-ldap php74-php-mbstring php74-php-mysql php74-php-pdo -y #3、安装percona的zabbix系列的MySQL监控包 rpm -ivh https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm #4、查看刚刚安装的MySQL监控包 cd /var/lib/zabbix/percona/ #5、对php进行软连接 ln -s /usr/bin/php74 /usr/bin/php #6、配置数据库连接文件cp /etc/my.cnf.d/root.cnf /var/lib/zabbix/.my.cnf cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php,修改这里面的mysql连接 #7、转移配置文件到指定文件夹中 cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ #8、修改selinux配置 semanage fcontext -a -t zabbix_script_exec_t /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh restorecon -Rv /var/lib/zabbix/percona/scripts/ #9、启动zabbix-agent systemctl restart zabbix-agent 若失败,就关掉selinux,等zabbix-agent运行正常,然后再启动selinux试试 #10、web页面操作, 将下面的xml模板导入zabbix中,然后加入需要监控的主机模块中即可; 模板导入:”配置“--》”模板“--》点击界面导入 主机使用:”配置“--》"主机”--》点击主机名称进入配置--》点击”模板“--》添加刚才导入的模板即可 [root@www templates]# pwd /var/lib/zabbix/percona/templates [root@www templates]# ls *xml zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml [root@www templates]# #11、其他 1)继续对整个脚本进行测试,若没结果说明有问题; sh /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt 其中get_mysql_stats_wrapper.sh文件中的两行,可以拆出来单独测试 /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G 2)查看日志,看看日志里面的报错 journalctl -f 3)查询selinux可能有的权限 semanage fcontext -l |grep zabbix 4)配置文件,下面的两个配置都是对/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh分析后,才知道要配置的; [root@www ~]# cat /var/lib/zabbix/.my.cnf [client] port=3306 host=127.0.0.1 user=xxxxx password='xxxxxxxxxxxx' default_character_set=utf8 [root@www ~]# [root@www ~]# head -n 35 /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php|grep mysql $mysql_user = 'xxxx'; $mysql_pass = 'xxxxxxxxxxx'; $mysql_port = 3306; $mysql_socket = NULL; $mysql_flags = 0; $mysql_ssl = FALSE; # Whether to use SSL to connect to MySQL. [root@www ~]# 5)建立一个MySQL账号,给zabbix使用,用于监控MySQL的性能; 根据脚本得出,监控主要用了下面几个命令: [root@www ~]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php |grep "SHOW" SHOW STATUS; SHOW VARIABLES; SHOW SLAVE STATUS; SHOW MASTER LOGS; SHOW PROCESSLIST; SHOW ENGINES; SHOW /*!50000 ENGINE*/ INNODB STATUS; [root@www ~]# 然后根据测试结果,发现只要给与process权限就可以了;所以建立账号的命令是: CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password(密码复杂强度规定必须要有大小写字母、数字、符号)'; GRANT process ON *.* TO 'jeffrey'@'localhost'; flush privileges;
5、报错问题解决
问题1:重启客户端服务后提示已经存在相同的key;下面的报错来自journactl -f【参考1】 zabbix_agentd[7317]: zabbix_agentd [7317]: ERROR: cannot add user parameter "MySQL.Sort-scan,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt": key "MySQL.Sort-scan" already exists 解决方法:/etc/zabbix/zabbix_agentd.conf中出现了重复的行,Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/这一行重复了,去掉重复即可; 问题2:selinux报错,报错来自命令journactl -f【参考2】 setroubleshoot[7724]: SELinux is preventing /usr/bin/bash from read access on the file get_mysql_stats_wrapper.sh. For complete SELinux messages run: 解决方法: semanage fcontext -a -t zabbix_script_exec_t /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh restorecon -Rv /var/lib/zabbix/percona/scripts/ 请注意,本次执行semanage后权限修改没有生效,执行restorecon才生效了,这个问题还需要观察
参考1:https://blog.leonshadow.com/763482/1064.html
官方参考:https://www.percona.com/doc/percona-monitoring-plugins/1.1/zabbix/index.html (从zabbix官方搜索找到的)
时间:2020-09-03