文章目录
20. zabbix-agent 主动模式和被动模式
20.1 区别概述
- 主动模式:
主动模式是由 zabbix agent 主动向 zabbix server 的 10051 端口发起TCP连接请求,
因此主动模式下必须在 zabbix 配置文件中指定zabbix server 的ip或者主机名,
在连接 zabbix server 之前 zabbix agent 是不知道自己要采集那些数据以及间隔多久采集一次数据的,
连接到 zabbix server 以后获取到自己的监控向和数据采集间隔周期时间,
然后在根据监控向采集数据并返回给 zabbix server, 在主动模式下不需要 zabbix server 向 zabbix agent 发起连接请求,
因此主动模式在一定程度上可以减轻 zabbix server 打开的本机随机端口数和进程数, 在一定程度上可以减轻 zabbix server 的压力.
- 被动模式:也就是agent等待server来拉取监控数据,此时agent需要监听端口,默认10050
被动模式是 zabbix agent 被动的接收 zabbix server 周期性发送过来的数据收集指令,
在被动模式下, zabbix server 会根据主机关联的模板中的监控向和数据采集间隔时间,
周期性的打开随机端口并向 zabbix agent 服务器的 10050发起tcp连接,
然后发送获取监控向数据的指令, 即 zabbix server 发送什么指令那么 zabbix agent 就收集什么数据,
zabbix server 什么时候发送 zabbix agent 就什么时候采集,
zabbix server 不发送 zabbix agent 就一直不会响应, 所以 zabbix agent 也不用关心其采集项和数据采集器周期间隔时间.
被动模式的优点就是配置简单, 安装好后即可使用, 因此也是 默认的工作模式,
但是被动模式最大的问题就是 zabbix server 的压力会变大
20.2 主动模式案例:使用 percona 监控 mysql
试验环境说明:
1)全新的 centos 7 主机
2)使用 yum 安装 mariadb (yum install mariadb_server.86_64 -y)
3)下载安装 percona rpm 包 (下载安装 percona 可参考上面 15.2)
注意事项:
在主机页面中引用模板为主动模式的时候,主机的 “可用性” 一栏是没有颜色标注显示的,
只有在模板的 “监控项” 中含有 “被动模式” 时才会有颜色标注显示,
即 “监控项” 中只要包含被动模式的类型就会有颜色显示
20.2.1 安装 mariadb
yum install mariadb-server.x86_64 -y
# 启动数据库并设置开机自启
systemctl start mariadb.service
systemctl enable mariadb.service
# 优化数据库(这个可以做也可以不用,看使用需求)
mysql_secure_installation
20.2.2 安装 percona
# 下载地址
https://www.percona.com/downloads/percona-monitoring-plugins/
个人分享云盘:
链接:https://pan.baidu.com/s/1X4vHJ68ND_8nuHSOkxTqww
提取码:fw0k
# 安装 percona ,装在有数据库的机器上
[root@zabbix ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
警告:percona-zabbix-templates-1.1.8-1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:percona-zabbix-templates-1.1.8-1 ################################# [100%]
# 脚本文件
Scripts are installed to /var/lib/zabbix/percona/scripts
# 模板配置文件
Templates are installed to /var/lib/zabbix/percona/templates
# percona是php写的,所以agent连接MySQL必须安装php和php-mysql
[root@zabbix ~]# yum install php php-mysql -y
# 下载模板并导入模板
[root@zabbix ~]# cd /var/lib/zabbix/percona/templates
[root@zabbix templates]# ls
userparameter_percona_mysql.conf zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
[root@zabbix templates]# ll
总用量 284
-rw-r--r-- 1 root root 18866 1月 10 2018 userparameter_percona_mysql.conf
-rw-r--r-- 1 root root 269258 1月 10 2018 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
[root@zabbix templates]# sz zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
[root@zabbix templates]#
导入模板失败:原因是因为这个模板版本不同 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1 这个是 2. 的版本
解决方案:百度找一个新的模板导入
链接:https://pan.baidu.com/s/1RgAHTryhjEDoaB-6xHt2hg
提取码:e4xu
20.2.3 修改配置文件
# 将配置文件 userparameter_percona_mysql.conf 移动到 /etc/zabbix/zabbix_agentd.d 目录下。
# /etc/zabbix/zabbix_agentd.d/ 目录下已有 .conf 文件时则将文件内容复制到 .conf 文件中,或者原有 .conf 文件是不需要的内容,则也可以将原有的文件删除
#
mv /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
# 修改 ss_get_mysql_stats.php 文件
[root@zabbix]# cd /var/lib/zabbix/percona/scripts/
[root@zabbix scripts]# ls
get_mysql_stats_wrapper.sh ss_get_mysql_stats.php
[root@zabbix scripts]# vim ss_get_mysql_stats.php
# 修改为 root 或者我们新建 zabbix 用户,新建用户注意权限,没有设置密码就空着就行
$mysql_user = 'root';
$mysql_pass = '';
# 这里默认的数据库用户名和密码是不对的,要修改成我们实际使用的,修改前也可以测试一下用户密码
[root@zabbix scripts]# mysql -uzabbix -p123456 -e 'show status' | head -3
Variable_name Value
Aborted_clients 0
Aborted_connects 2
[root@zabbix scripts]#
20.2.4 导入模板
20.2.5 修改模板类型
找到需要修改的模板 --> 点击监控项 --> 全选 --> 最底部点击批量更新 --> 类型选择“zabbix客户端(主动式)”
20.2.6 创建主机
填写主机名称
agent ip 地址
20.2.7 添加模板
添加链接模板,添加之前修改为主动式的模板
正常情况下立刻就能获取到数据
注意:
下图中主动模板的“可用性”一栏没有颜色标注,是因为监控项中都是主动模式,没有被动模式的情况下“可用性”是没有颜色标注显示的
如果非要有颜色显示,可以将个别监控项改为“被动模式”,这样就会有颜色显示了
20.2.8 查看数据
本次试验机器性能比较差,所以获数据时间有差异
20.3 mysql监控问题小结
[root@zabbix ~]# zabbix_get -s 192.168.169.133 -k MySQL.Sort-scan
rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0
问题:
在 zabbix server 中使用 zabbix_get 测试获取内容时报错 rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
解决:
检查 zabbix agent /tmp/localhost-mysql_cacti_stats.txt 文件所属用户和组,修改成 zabbix 用户和 zabbix 组
说明:
/tmp/localhost-mysql_cacti_stats.txt 文件在 /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh 脚本中有配置使用,可以参考脚本内容理解
主从报错
1)在下面页面中报错信息为:
Value "ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: NO)
0" of type "string" is not suitable for value type "Numeric (unsigned)"
2)或者在 zabbix server 中使用 zabbix_get 命令获取时报错
[root@zabbix ~]# zabbix_get -s 192.168.169.133 -k MySQL.running-slave
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: NO)
0
解决:
# 在 zabbix agent 中修改 /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh 文件
# 将
RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
# 修改为
RES=`HOME=~zabbix mysql -uroot -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
这里是添加 root 用户(这里的 root 用户是没有设置密码的)获取其他有权限的超级用户
说明:具体监控主从后期在从新写一个