zabbix自定义监控项
自定义监控
被监控的机器需要安装zabbix-agent,agent跟server版本保持一致
zabbix5.0 agent安装
# 方法一:
[root@web01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.36-1.el7.x86_64.rpm
# 方法二:
[root@web01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@web01 ~]# yum install -y zabbix-agent
zabbix3.4 agent安装
# 方法一:
[root@web02 ~]# rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.2-1.el7.x86_64.rpm
# 方法二:
[root@web02 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@web02 ~]# yum install -y zabbix-agent
后续步骤
# 修改配置文件
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1,172.16.1.71
Hostname=web01
# 启动并加入开机自启
[root@web01 ~]# systemctl start zabbix-agent
[root@web01 ~]# systemctl enable zabbix-agent
知识点
# 监控群组
- 按项目分
- 按应用分
# 接口
客户端:所有基本监控,自定义监控,都可以用客户端形式
SNMP:监控网络设备,交换机,路由器 Console口
JMX:专门监控java内存,堆栈信息(老年代,新生代,永久代,full-gc【垃圾回收机制】)
IPMI:监控硬件协议
shell脚本执行完后就会执行一次垃圾回收机制
简单监控一台机器图文流程(5.0)
创建群组
创建主机
修改模板
监控完成
简单监控一台机器图文流程(3.4)
创建主机
配置主机
添加模板
配置完成
自定义监控项(按应用创建)(5.0)
创建模板
更换模板
链接模板
链接模板后的展示
自定义监控项(按应用创建)(3.4)
创建模板
添加群组
添加链接模板
更换链接模板
创建监控项(5.0)
点击模板中的监控项
创建监控项
创建监控项(3.4)
监控服务器用户登录数量(5.0)
# 1.写脚本或者命令,取出想要监控的值
uptime|grep -Po '\d+(?= user)'
# 2.修改客户端
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=user.count,uptime|grep -Po '\d+(?= user)'
## 2.1 官方给的模板
Format: UserParameter=<key>,<shell command>
# 3.重启
[root@web01 ~]# systemctl restart zabbix-agent
# 4.去页面添加监控
配置监控项
配置完成后展示
监控项不支持排错工具(服务端操作)
# 5.0版本下载排错工具
[root@zabbix fonts]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-get-5.0.36-1.el7.x86_64.rpm
# 3.4版本下载排错工具
[root@zabbix3 fonts]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-get-3.4.15-1.el7.x86_64.rpm
# 检验结果
zabbix_get -s 172.16.1.7 -k user.count
触发器的添加
点击模板中的触发器
创建触发器
配置触发器
添加设置好的触发器
添加3台连接用户后的告警示例
关闭3台连接用户后解决示例
zabbix3.4告警页面
页面中的告警提示声
画图
点击模板中的图形
创建图形
自定义图形的图案与配置
成图展示
自定义变量监控
监控进程
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/process.conf
UserParameter=process.status[*],ps -ef |grep -v grep | grep -c $1
[root@zabbix fonts]# zabbix_get -s 172.16.1.7 -k process.status[nginx]
2
# 中括号内的值传递到[*]中,$1再调用[*]内的第一个传参
配置监控项
监控展示
监控端口(最好加在主机上)
# 由于内部已经写好了端口监控,所以直接调用就可以了
net.tcp.listen[3306]
net.tcp.listen[80]
监控TCP的11种状态
tcp的11种状态
LISTEN -侦听来自远方TCP端口的连接请求;
SYN-SENT -在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED -在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED -代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 -等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 -从远程TCP等待连接中断请求;
CLOSE-WAIT -等待从本地用户发来的连接中断请求;
CLOSING -等待远程TCP对连接中断的确认;
LAST-ACK -等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;
客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。
服务端独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。
共有的:(1)CLOSED (2)ESTABLISHED 。
查看tcp连接状态的命令:
netstat -antp
ss -lntup
[root@zabbix ~]# netstat -ant | grep -c ESTABLISHED(状态名称)
20
优化zabbix客户端的内核参数
[root@web01 ~]# vim /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30 #timeout时间
net.ipv4.tcp_keepalive_time = 1200 #长连接
net.ipv4.tcp_syncookies = 1 #cookies ,记录登录状态
net.ipv4.tcp_tw_reuse = 1 #time_wait复用
net.ipv4.tcp_tw_recycle = 1 #回收
net.ipv4.ip_local_port_range = 10000 65000 #调整本地随机端口范围net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_max_tw_buckets = 5000
配置监控项:
# 进入zabbix客户端子配置文件目录
[root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/
# 编辑子配置文件
[root@web01 zabbix_agentd.d]# vim tcp_state.conf
UserParameter=tcp.state[*],netstat -ant|grep -c $1
# 重启服务
[root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent
# zabbix-server测试
[root@web02 ~]# zabbix_get -s 172.16.1.7 -k tcp.state[LISTEN]
8
在web页面添加自定义监控项:
因为TCP状态有11种,所以我们需要添加11个监控项,我们可以把所有监控项放入一个模板中,这样我们所有机器在模板中关联即可。
创建模板
我们在模板上添加一个监控项
克隆监控项
创建剩下的监控项
SYN-SENT
SYN-RECEIVED
ESTABLISHED
FIN-WAIT-1
FIN-WAIT-2
CLOSE-WAIT
CLOSING
LAST-ACK
TIME-WAIT
CLOSED
创建完成监控项展示
给主机关联模板
查看TCP状态的最新数据
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k tcp.state[CLOSING]
0
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k tcp.state[LISTEN]
8
创建图形


图形展示

nginx状态页
# 配置nginx主配置文件(开启nginx状态页面)
[root@web01 conf.d]# vim /etc/nginx/nginx.conf
.....
43 location / {
44 root html;
45 index index.html index.htm;
46 }
47
48 location /status { # 添加
49 stub_status; # 添加,开启nginx状态页面
50 allow 172.16.1.71; # 允许zabbix-server端访问nginx状态页面
51 allow 172.16.1.7; # 允许nginx端访问nginx状态页面
52 allow 127.0.0.1; # 允许真机访问
53 }
......
# 重启nginx
systemctl restart nginx
在nginx端编写脚本来监控nginx端的状态页面,我使用脚本监控的是 Waiting的值
# 创建脚本放置目录
[root@web01 conf.d]# mkdir /etc/zabbix/scripts
# 编辑脚本
[root@web01 conf.d]# vim /etc/zabbix/scripts/web_status.sh
#!/bin/bash
# 取到对应的三个值
case $1 in
"Reading")
curl -s http://ljy:ljy@127.0.0.1/status | awk 'NR==3{print $1}';;
"Writing")
curl -s http://ljy:ljy@127.0.0.1/status | awk 'NR==3{print $2}';;
"Waiting")
curl -s http://ljy:ljy@127.0.0.1/status | awk 'NR==3{print $3}';;
esac
# 添加执行权限
[root@web01 ~]# chmod +x /etc/zabbix/scripts/web_status.sh
# 创建zabbix配置文件
vim /etc/zabbix/zabbix_agentd.d/web.conf
UserParameter=web.status[*],/bin/sh /etc/zabbix/scripts/web_status.sh $1
# 重启服务
[root@web01 scripts]# systemctl restart zabbix-agent
给自定义监控项模板创建监控项
编写监控项Reading
编写监控项Writing
编写监控项Waiting
监控成果展示
zabbix出图结合grafana
安装grafana(那个机器装都行我在zabbix-server上面装的)
Grafana官方文档
https://grafana.com/docs/grafana/latest/
# 下载rpm包
[root@zabbix ~]# wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Packages/grafana-10.0.0-1.x86_64.rpm --no-check-certificate
# 安装
[root@zabbix ~]# yum localinstall grafana-10.0.0-1.x86_64.rpm -y
# 启动并设开机自启
[root@zabbix ~]# systemctl start grafana-server.service
[root@zabbix ~]# systemctl enable grafana-server.service
# 查看端口3000起了没有
[root@zabbix ~]# netstat -lntup
tcp6 0 0 :::3000 :::* LISTEN 63184/grafana
# 安装zabbix插件
[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
✔ Downloaded and extracted alexanderzobnin-zabbix-app v4.3.1 zip successfully to /var/lib/grafana/plugins/alexanderzobnin-zabbix-app
Please restart Grafana after installing or removing plugins. Refer to Grafana documentation for instructions if necessary.
#### zabbix5.0用ip访问(修改端口为90,取消域名)
[root@zabbix ~]# vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server {
listen 90;
server_name _;
root /usr/share/zabbix;
index index.php;
....
# 重启服务
[root@zabbix ~]# systemctl restart grafana-server rh-nginx116-nginx
刷新页面zabbix插件就可以用了