mysql 主动 被动模式_Zabbix--06主动模式和被动模式、低级自动发现、性能优化、...

本文介绍了Zabbix监控中的主动模式和被动模式的区别,并详细展示了如何将Zabbix从被动模式切换到主动模式。此外,文章还涵盖了Zabbix的低级自动发现,包括端口和MySQL多实例的自动发现,并分享了性能优化的方法,如调整监控项间隔、升级存储引擎等。最后讨论了Zabbix的高可用性方案。
摘要由CSDN通过智能技术生成

一、 Zabbix主动模式和被动模式

默认为被动模式:100个监控项要100个来回,要的时候才返回

主动模式:100个监控项1个回合,将所需要的100个打包,然后一次发过去,发过去之后,客户端全部执行完再一次返回给服务端。

1.克隆模版

完全克隆原来被动模式的模版为主动模式

917a3fc59ce648bb9d127bdc91de36ea.png

d7e4805189a80fe4dc0b507ee8740629.png

2.修改克隆后的模版为主动模式

7c681c5b8e74679d0d57cff9094e75d2.png

8794dd3c9ff2346f78e664a293fa605c.png

dd9b890c623541b27912cdc94c5e40e3.png

eeee2c70f0f52befb4e8958b3feba35a.png

3.修改监控主机关联的模版为主动模式

cc044cb2cb49547a7405dfb27b1de3a6.png

4.修改客户端配置文件并重启

[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

Server=10.0.1.61

ServerActive=10.0.1.61

Hostname=web01

Include=/etc/zabbix/zabbix_agentd.d/*.conf

[root@web01 ~]# systemctl restart zabbix-agent.service

5.查看最新数据

发现获取数据的时间是一样的

f9119f622042832b9b6eae745d804a27.png

二、Zabbix低级自动发现

监控端口自动发现

1.查看系统自带分区自动发现

系统自带的自动发现会显示红字,比如自带的磁盘分区发现规则

c9fb53d95b0ffef2e60fb743e8b5c329.png

fc391c31edb903a36c5ee6bad349bbd6.png

1.查看zabbbix所有的key过滤后展示

e676bcbc41a62bdc9898aa1d9b5f6b88.png

2.解析成json后的格式

3bcdd471a72a84bea6bd5c2a96bff823.png

3.过滤规则

实质上是从mount命令获取的分区名和类型

0e179d5e6f27a980f5ef34a8fddfc47c.png

但是我们zabbix显示的并没有这么多 是因为做了正则表达式过滤

3127269a66ab09bb502fd82e3a125e07.png

而正则表达式是在管理里面配置的

2148b8b9ad3a25b7539b3227886ac41c.png

4.使用zabbix_get获取key 因为根据过滤规则,只发现了一个xfs的key,使用zabbix_get可以查看到这个key

2.查看系统自带的网卡自动发现

1.查看网络自动发现规则

d550a3569bf0b080faafea4d56922f6d.png

2.过滤规则

9fb3c81677116688719e898af3d88451.png

0393dd242ca30268275aabe36da5b7b5.png

2.命令行过滤

[root@m01 ~]# zabbix_agentd -p|grep net.if.discovery

net.if.discovery [s|{"data":[{"{#IFNAME}":"tun0"},{"{#IFNAME}":"eth0"},{"{#IFNAME}":"eth1"},{"{#IFNAME}":"lo"}]}]

3.查看自动添加的监控项

我们会发现添加了四个监控项

2个eth0

2个eth1

01e7c9cc059ca8b2e2aab8a5196c5743.png

a67bf56fb92ed6a3174719d48946c1d5.png

4.查看key的值

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k net.if.in[eth0]

2191453

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k net.if.in[eth1]

7152

3.监控mysql多实例

[https://www.qstack.com.cn/archives/108.html](https://www.qstack.com.cn/archives/108.html)

1.复制并修改数据库配置文件

[root@m01 ~]# cp /etc/my.cnf /etc/my3307.cnf

[root@m01 ~]# vim /etc/my3307.cnf

[root@m01 ~]# cat /etc/my3307.cnf

[mysqld]

datadir=/data/3307/

socket=/data/3307/mysql.sock

port=3307

user=mysql

symbolic-links=0

[mysqld_safe]

log-error=/data/3307/mysqld.log

pid-file=/data/3307/mysqld.pid

[root@m01 ~]# cp /etc/my3307.cnf /etc/my3308.cnf

[root@m01 ~]# sed -i 's#3307#3308#g' /etc/my3308.cnf

2.创建数据目录并初始化

[root@m01 ~]# mkdir /data/{3307,3308}

[root@m01 ~]# chown -R mysql.mysql /data/330*

[root@m01 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf

[root@m01 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf

3.启动多实例

[root@m01 ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &

[root@m01 ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &

4.检查端口

[root@m01 ~]# netstat -lntup|grep mysql

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2042/mysqld

tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 84790/mysqld

tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 85439/mysqld

5.创建自动发现配置文件

[root@m01 ~]# vim /etc/zabbix/zabbix_agentd.d/mysql_discovery.conf

[root@m01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql_discovery.conf

UserParameter=mysql.discovery,/bin/bash /server/scripts/mysql_discovery.sh

6.创建自动发现多实例脚本

[root@m01 ~]# cat /server/scripts/mysql_discovery.sh

#!/bin/bash

#mysql low-level discovery

res=$(netstat -lntp|awk -F "[ :\t]+" '/mysqld/{print$5}')

port=($res)

printf '{'

printf '"data":['

for key in ${!port[@]}

do

if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then

printf '{'

printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"

else [[ "${key}" -eq "((${#port[@]}-1))" ]]

printf '{'

printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"

fi

done

printf ']'

printf '}\n'

7.测试自动发现脚本

[root@m01 ~]# bash /server/scripts/mysql_discovery.sh

{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}

8.重启zabbix-agent

[root@m01 ~]# systemctl restart zabbix-agent.service

9.zabbix_get测试取key

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k mysql.discovery

(Not all processes could be identified, non-owned process info

will not be shown, you would have to be root to see it all.)

{"data":[]}

这时我们发现取不出来并提示了个错误

原因是zabbix用户不能使用netstat的-p参数

解决方法为给netstat命令添加s权限

[root@m01 ~]# which netstat

/usr/bin/netstat

[root@m01 ~]# chmod u+s /usr/bin/netstat

然后再次测试就发现可以取到值了

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k mysql.discovery

{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}

10.web页面创建自动发现规则模版

c607c8a48bc72e5b4fccccd37bdd7e62.png

创建模版

0adb206b2cc5ad1e9c2bf40e02fce0f3.png

创建自动发现规则

ff6ba81b907f6aeaa1468a7fadac78b9.png

设置过滤规则

13c76e0bbea1b702c8eabd57997c6b24.png

创建过滤 规则

11.模仿zabbix自带的mysql监控配置修改监控项

[root@m01 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -uroot -p123456 -P $2 -N | awk '{print $$2}'

[root@m01 ~]# systemctl restart zabbix-agent.service

12.测试访问监控项

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k mysql.status[Uptime,3307]

23202

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k mysql.status[Uptime,3308]

23204

13.web页面添加监控项原型

b4529ae704e5d91bcce67ee05e096429.png

监控项原型

12.web页面设置主机关联模版

69c27ac23c03feb8307fca743eab1427.png

主机关联模版

13.查看是否已经自动添加成功

0155dfd4d1bb902d1311338e0f99d316.png

三、Zabbix 性能优化

1.监控数据分析

zabbix监控主机和监控项较少的时候,不需要优化

数据库 200台主机 * 200个监控项 = 40000监控项/30秒 = 1333次写入/每秒

写多 读少

2.优化思路

1.mariadb 5.5 innodb 升级到mysql5.7 tokudb

2.去掉无用监控项,增加监控项的取值间隔,减少历史数据的保存周期

3.被动模式改为主动模式

4.针对zabbix-server进程数量调优

5.针对zabbix-server缓存调优,谁的剩余内存少,就加大他的缓存

3.升级存储引擎

TokuDB性能比InnoDB要好

实施步骤:

1.找一台机器安装好mysql5.7

2.将mariadb的数据导出,然后替换sql文件里的存储引擎为TokuDB

3.将替换之后的数据导入到mysql5.7

4.停掉mariadb

5.检查测试

4.优化进程数

cc6dcb174974d5154824542a0710ebb0.png

可以人为制造进程繁忙,把自动发现调整IP范围为1-254

bbd3857e40546dfeed316a10919ceccb.png

这个时候观察会发现自动发现进程变得繁忙了

修改进程数

[root@zabbix-11 ~]# grep "^StartDiscoverers" /etc/zabbix/zabbix_server.conf

StartDiscoverers=10

[root@zabbix-11 ~]# systemctl restart zabbix-server.service

调整之后发现进程不这么繁忙了

52968edd397242130259310f6a3b6a7a.png

5.缓存调优

2d6e2a5b6830a131081b91e40e7c38c8.png

调整配置文件

[root@zabbix-11 ~]# grep "^Cache" /etc/zabbix/zabbix_server.conf

CacheSize=128M

四、 zabbix高可用

思路:

2台zabbix-server使用keepavied做高可用

数据库做主从复制

keepalived两端都做backup角色,设置不抢占VIP

keepalived设置如果发生改变就将自身的从库数据库修改为主库设置

然后另一台修复上线后,手动介入重新做主从同步,变成从库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值