参考
- zabbix6官网自动发现
- zabbix官网 agent监控项说明
- go请求zabbix封装参考
- ant design pro 前端构建
- gin 官方文档
- zabbix6.0接口官方文档
- zabbix 各表开发介绍
- zabbix webhook告警推送微信参考
- Telegraf+SNMP+Grafana构建企业级交换机监控
zabbix agent2监控插件实现原理
自定义
环境
前端启动
cd ~/go/src/monitor/zabbix_web
npm run start
后端启动
cd ~/go/src/monitor/zabbix_go
go run main.go
snmp指标数据快速获取、翻译
zabbix-server 安装snmp工具
yum -y install net-snmp-utils
snmpwalk -v 2c -c public 172.17.0.1
获取具体配置信息
snmpwalk -v 2c -c public 172.17.0.1 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux bzy2c8nnb0dtlnbi 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
获取oid名称,获取oid值
snmpget -v 2c -c public -On 172.17.0.1 SNMPv2-MIB::sysDescr.0
.1.3.6.1.2.1.1.1.0 = STRING: Linux bzy2c8nnb0dtlnbi 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
取
1.3.6.1.2.1.1.1.0
原始信息
命令:snmpwalk -v 2c -c public 127.0.0.1
结果:SNMPv2-MIB::sysDescr.0 = STRING: Linux bzy2c8nnb0dtlnbi 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
命令:snmpget -v 2c -c public -On 127.0.0.1 SNMPv2-MIB::sysDescr.0
结果:.1.3.6.1.2.1.1.1.0 = STRING: Linux bzy2c8nnb0dtlnbi 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
监控配置的oid
1.3.6.1.2.1.1.1.0
- 配置监控
172.17.0.1
system.descr
1.3.6.1.2.1.1.1.0
Preprocessing 数据预处理
smp预处理参考
正则 ^(.*)SMP \1
自动发现snmp数据
- 现获取全量 snmpwalk -v 2c -c public 172.17.0.1
- 找到同类指标 snmpget -v 2c -c public -On 172.17.0.1 SNMPv2-MIB::sysORID
- 获取oid之后
- 测试同类oid snmpwalk -v 2c -c public 172.17.0.1 1.3.6.1.2.1.1.9.1.2
- 原始数据样例
snmpwalk -v 2c -c public 172.17.0.1 1.3.6.1.2.1.1.9.1.2
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
- 配置监控项原型oid discovery[{#IFDESCR},1.3.6.1.2.1.1.9.1.2]
- 自动发现返回数据
[
{
"{#SNMPINDEX}":"1",
"{#IFDESCR}":"SNMP-MPD-MIB::snmpMPDCompliance"
},
{
"{#SNMPINDEX}":"2",
"{#IFDESCR}":"SNMP-USER-BASED-SM-MIB::usmMIBCompliance"
},
{
"{#SNMPINDEX}":"3",
"{#IFDESCR}":"SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance"
},
{
"{#SNMPINDEX}":"4",
"{#IFDESCR}":"SNMPv2-MIB::snmpMIB"
},
{
"{#SNMPINDEX}":"5",
"{#IFDESCR}":"TCP-MIB::tcpMIB"
},
{
"{#SNMPINDEX}":"6",
"{#IFDESCR}":"IP-MIB::ip"
},
{
"{#SNMPINDEX}":"7",
"{#IFDESCR}":"UDP-MIB::udpMIB"
},
{
"{#SNMPINDEX}":"8",
"{#IFDESCR}":"SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup"
},
{
"{#SNMPINDEX}":"9",
"{#IFDESCR}":"SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance"
},
{
"{#SNMPINDEX}":"10",
"{#IFDESCR}":"NOTIFICATION-LOG-MIB::notificationLogMIB"
}
]
-
测试
-
也可写成 discovery[{#SYSORID}, sysORID]
-
添加监控项原型
-
snmp-自动发现-sysORID.{#SNMPINDEX}
-
snmp.sysORID.SNMPINDEX
监控指标快速获取
- 快速匹配文档
- 智能提供指标参数
- 智能提示
进程数量
zabbix_get -s 172.17.0.1 -k proc.num[python3,]
全部进程数
zabbix_get -s 172.17.0.1 -k proc.num[,]
zabbix进程数
zabbix_get -s 172.17.0.1 -k proc.num[,zabbix]
cpu负载
zabbix_get -s 172.17.0.1 -k system.cpu.load
cpu数量
zabbix_get -s 172.17.0.1 -k system.cpu.num
cpu利用率百分比
zabbix_get -s 172.17.0.1 -k system.cpu.util
登录用户数
zabbix_get -s 172.17.0.1 -k system.users.num
目录大小
zabbix_get -s 172.17.0.1 -k vfs.dir.size[/tmp]
比特 /1024/1024 为M
监控项 检查 文件 最近的1个值不等于最近的第二个值责报警
last(/bzy2c8nnb0dtlnbi/vfs.file.cksum[/etc/passwd,sha256],#1)<>last(/bzy2c8nnb0dtlnbi/vfs.file.cksum[/etc/passwd,sha256],#2)
文件字符查找
zabbix_get -s 172.17.0.1 -k vfs.file.regmatch[/root/src/python/dabai/django/app/static/log/token.log,error]
ZBX_NOTSUPPORTED: Cannot open file /root/src/python/dabai/django/app/static/log/token.log: open /root/src/python/dabai/django/app/static/log/token.log: permission denied
页面加载时长
zabbix_get -s 172.17.0.1 -k web.page.perf[https://www.baidu.com]
snmp陷阱主动发送
zabbix 配置mib库
监控网卡总流量
zabbix_get -s 172.17.0.1 -k net.if.discovery
[{
"{#IFNAME}":"br-c93c4438e934"},{
"{#IFNAME}":"vethb618d20"},{
"{#IFNAME}":"veth9f6b37b"},{
"{#IFNAME}":"vethbe2a195"},{
"{#IFNAME}":"eth0"},{
"{#IFNAME}":"lo"},{
"{#IFNAME}":"veth1b239df"},{
"{#IFNAME}":"docker0"}]
zabbix_get -s 172.17.0.1 -k net.if.total[br-c93c4438e934]
10422461
实时流量数据
iftop
查看cpu使用率排名
ps aux|head -1;ps aux|sort -rn -k3 | grep zabbix_go
lld 自动发现
监控项原型
触发器原型
图像原型
自动发现趋势图
正则
[[ "$test" =~ ^[0-9]+$ ]]
echo ${test}
man bash
[[ "$test" =~ ^[0-9]+$ ]] && echo 1 || echo 0
0
test=666
[[ "$test" =~ ^[0-9]+$ ]] && echo 1 || echo 0
1
test=adjfia666
[[ "$test" =~ ^[0-9]+$ ]] && echo 1 || echo 0
0
自动发现-触发器
自动发现-监控项原型
监控端口是否可访问(内置的是否可访问)
监控进程占用cpu、内存大小
监控端口的连接数量,并发数
通过过滤器匹配规则
进程在过滤监控项的时候采用,自动发现一般不用
- 自定义变量如何查看?
- 1、主机-》宏;主机-》对应模版名称-》宏
- 2、管理-》一般-》宏、正则表达式
自带监控原型
zabbix_get -s 172.17.0.1 -k net.tcp.port[,8202]
1存在 0不存在
使用 “{#PORTNAME}”
新的应用集 新的应用程序原型 :定义该监控比如该端口相关都在此集合里
监控端口"{#PORTNAME}"状态是否可以访问
- 核心点 awk 变量传参 awk -vport=80 ‘$4~port’
- 采用内置监控原型 键值 net.tcp.port[,“{#PORTNAME}”]
- 查看端口 ss -lntup| awk -F ‘[ :]+’ ‘ 6 / [ 0 − 9 ] + 6~/^[0-9]+ 6 /[0−9]+/{print $6}’
- 获取端口对应pid ss -lntup| grep -w *:80 | awk -F ‘pid=|,’ ‘{print $3}’
- 检测端口并发数
- ss -ant | grep -i estab | awk -vport=80 ‘$4~port’
- 数量 ss -ant | grep -i estab | awk -vport=80 ‘$4~port’ | wc -l
- ss -ant | grep -i estab | awk -vport=80 ‘$4~port{i++}END{print i}’ 存在问题
传参方式的监控端口连接数
tail -n 1 web.conf
UserParameter