05 zabbix 老男孩02

17zabbix服务深入

2019.08.11 11:25:21字数 1178阅读 398

第1章 Grafana自定义图形

1.安装grafana

[root@m01 /data/soft]# wget https://dl.grafana.com/oss/release/grafana-6.3.2-1.x86_64.rpm [root@m01 /data/soft]# yum localinstall grafana-6.3.2-1.x86_64.rpm -y [root@m01 /data/soft]# systemctl start grafana-server.service [root@m01 /data/soft]# systemctl enable grafana-server.service 

访问grafana:http://10.0.0.61:3000
账号密码:admin admin

安装zabbix插件,启动插件

[root@m01 ~]# grafana-cli plugins list-remote|grep zabbix id: alexanderzobnin-zabbix-app version: 3.10.4 [root@m01 ~]# grafana-cli plugins install alexanderzobnin-zabbix-app [root@m01 ~]# systemctl restart grafana-server.service 

网页操作-激活zabbix插件

网页操作-添加zabbix数据源

网页操作-导入模版


数据展示:

第2章 percona模版监控mysql

参考强哥的博客

https://www.qstack.com.cn/archives/213.html

1.安装php环境

percona需要php环境

[root@m01 /data/soft]# yum install php php-mysql -y 

2.下载软件

注意,安装完成后会有提示模版的路径位置

[root@m01 ~]# cd /data/soft/ [root@m01 /data/soft]# wget 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 [root@m01 /data/soft]# 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 

3.查看目录

进入安装目录会发现有2个目录,一个是脚本目录,一个是模版目录

[root@m01 ~]# cd /var/lib/zabbix/percona/ [root@m01 /var/lib/zabbix/percona]# tree . ├── scripts │ ├── get_mysql_stats_wrapper.sh │ └── ss_get_mysql_stats.php └── templates ├── userparameter_percona_mysql.conf └── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml 

其中脚本目录里有2个脚本,用来获取数据库信息

[root@m01 /var/lib/zabbix/percona]# cd scripts/ [root@m01 /var/lib/zabbix/percona/scripts]# ls get_mysql_stats_wrapper.sh ss_get_mysql_stats.php 

4.修改get_mysql_stats_wrapper.sh

修改get_mysql_stats_wrapper数据库登陆信息
第19行添加mysql账号密码

[root@m01 /var/lib/zabbix/percona/scripts]# sed -n '19p' get_mysql_stats_wrapper.sh RES=`HOME=~zabbix mysql -uroot -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' 

5.修改ss_get_mysql_stats.php

[root@m01 /var/lib/zabbix/percona/scripts]# sed -n '30,31p' ss_get_mysql_stats.php $mysql_user = 'root'; $mysql_pass = '123456'; 

6.复制自定义监控项配置文件到zabbix目录

[root@m01 ~]# cd /var/lib/zabbix/percona/templates/ [root@m01 /var/lib/zabbix/percona/templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ [root@m01 /var/lib/zabbix/percona/templates]# cd /etc/zabbix/zabbix_agentd.d/ [root@m01 /etc/zabbix/zabbix_agentd.d]# ls userparameter_mysql.conf userparameter_percona_mysql.conf 

7.重启agent

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

8.测试key

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k MySQL.Sort-scan
16

9.导入模版

官方自带的模版有点问题,需要先装在2.x版本然后导出来,这里使用网友已经修改好的模版上传

http://pan.baidu.com/s/1pL1wDYj

10.主机链接模版

xx.报错解决

查看监控发现没有数据显示不支持类型
查看zabbix-server发现因为tmp的文件没有权限,因为刚才手动执行了脚本,所以文件属性是root,将文件删除后由zabbix自己创建解决问题
报错日志如下:

2846:20190811:202708.785 item "Zabbix server:MySQL.State-init" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"
  2843:20190811:202709.787 item "Zabbix server:MySQL.State-locked" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"
  2844:20190811:202710.788 item "Zabbix server:MySQL.State-login" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"

第3章 自动发现和自动注册

1.自动发现

web页面操作

2.自动注册

修改zabbix-agent配置文件

[root@web02 ~]# 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=web02 Include=/etc/zabbix/zabbix_agentd.d/*.conf 

web页面操作

刷新查看发现已经添加上了

第4章 主动模式和被动模式

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

1.克隆模版

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

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

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

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.查看最新数据

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

第5章 低级自动发现

监控端口自动发现

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

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

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


2.解析成json后的格式


3.过滤规则

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

image.png


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


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


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

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k vfs.fs.size[{#FSNAME},free] ZBX_NOTSUPPORTED: Cannot obtain filesystem information: [2] No such file or directory [root@m01 ~]# zabbix_agentd -p|grep vfs.fs.size vfs.fs.size[/,free] [u|15713636352] [root@m01 ~]# zabbix_get -s 10.0.1.61 -k vfs.fs.size[/,free] 15713693696 

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

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

2.过滤规则

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

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页面创建自动发现规则模版

创建模版
创建自动发现规则
设置过滤规则
创建过滤 规则

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页面添加监控项原型

监控项原型

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

主机关联模版

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

第6章 性能优化

1.升级到mysql5.7 tokudb
2.去掉无用监控项,增加监控项的取值间隔,减少历史数据的保存周期
3.被动模式改为主动模式
4.针对zabbix-server进程数量调优
5.针对zabbix-server缓存调优,谁的剩余内存少,就加大他的缓存

第7章 zabbix高可用

思路:
2台zabbix-server使用keepavied做高可用
数据库做主从复制
keepalived两端都做backup角色,设置不抢占VIP
keepalived设置如果发生改变就将自身的从库数据库修改为主库设置
然后另一台修复上线后,手动介入重新做主从同步,变成从库

猜你喜欢

转载自www.cnblogs.com/linux985/p/11703446.html
今日推荐