zabbix监控配置过程图解

一、前述

zabbix的工作组件及告警流程如下:

数据采集:Zabbix 通过 SNMP、Agent、ICMP、SSH、IPMI 等对系统进行数据采集。
数据存储: Zabbix存储在MySQL上,也可以存储在其他数据库服务。
数据分析:当我们事后需要复盘分析故障时,zabbix能给我们提供图形以及时间等相关信息,方面我们确定故障所在。
数据展示:web界面展示、(移动APP、java_php开发一个web界面也可以)。
监控报警:电话报警、邮件报警、微信报警、短信报警、报警升级机制等(无论什么报警都可以)。
报警处理:当接收到报警,我们需要根据故障的级别进行处理,比如:重要紧急、重要不紧急,等。根据故障的级别,配合相关的人员进行快速处理。
在这里插入图片描述

1、测试主机开启snmp

对于linux对象,关闭selinux,关闭防火墙或者打开161端口
1)yum install -y net-snmp net-snmp-utils //安装net-snmp
2)修改配置文件
vim /etc/snmp/snmpd.conf

sec.name source community
com2sec notConfigUser default zabbix   #社区名称定义为zabbix
view systemview included .1            #添加一个采集项.1,意味着可以采集到所有mib tree的信息
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1

3)systemctl start snmpd.service

netstat -lntup|grep 161

2、zabbix-server上验证

snmpwalk -v 2c -c zabbix 10.172.23.112|wc -l //结果如下

82 //这里取到了82项

yum install -y nmap后,执行nmap -sU 目标IP -p 161,进行端口扫描探测
在这里插入图片描述
附:其他snmp测试命令

1)不同版本的snmp测试命令

snmpstatus -v 1 -c public 192.168.10.1

snmpstatus -v 2c -c public 192.168.10.2

snmpstatus -v 3 -c public 192.168.10.3

snmpwalk –v 3 –l authNoPriv –u zabbix –A MD5 –a "passWD" –X DES –x "world" 192.168.10.3  //用户名:zabbix 用户密码:passWD 加密算法:MD5;传输加密密码:world 传输加密协议:DES
snmpget  -v 2c -c public 192.168.10.3 .1.3.6.1.2.1.25.2.2.0   #获取内存的值

SNMPv2c:配置只需要一个团体名即可。
SNMPv3:实现原理和SNMPv1、SNMPv2c基本一致,唯一的区别是SNMPv3增加了身份验证和加密处理,提高了安全性。

2)常用OID

OID对象标识符分通用和私用2类:
通用的一般都是:.1.3.6.1.2.1.x.x.x;如:.1.3.6.1.2.1.25.2.2.0这个OID是获取内存总量大小的
私人企业的一般都是:.1.3.6.1.4.1.x(企业标识符).x.x
常用OID:https://blog.csdn.net/qq_20332637/article/details/82691364
3)snmptranslate命令:
snmptranslate命令在MIBOID在数字和文字名称之间进行转换
4)snmpdf:
通过snmpdf监视远程主机的磁盘空间,相当于直接在主机上执行df -h

snmpdf -v 3 -u zabbix -a MD5 -A "passWD" -x DES -X "world" -l authPriv 192.168.10.3

3、添加Linux主机

配置——主机——创建主机——移除interface的客户端——添加SNMP客户端

在这里插入图片描述
在这里插入图片描述
示例:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
{$SNMP_COMMUNITY}变量值配置为你的团体字
在这里插入图片描述
等待1分钟,等待图标变成绿色即正常,
在这里插入图片描述
添加完模板,可针对模板添加监控项(items):
在这里插入图片描述
单击上图中的Item项,再点击右上角的create item就可以创建item项了,这里添加两个做为测试,一个是eth0的数据流出量和流入量:
在这里插入图片描述
在这里插入图片描述
创建图形展示数据,点击Graphs,再点create graphs就可以创建图形展示数据了,填上相关的参数:
在这里插入图片描述

4、web监控

通过zabbix进行web监控,不仅可监控到站点的响应时间,还可根据站点返回的状态码或响应时间做告警设置,比如说对某个url进行监控,当访问返回的状态码是非200状态时都报警(创建触发器即可)。

4.1 创建监控场景

在这里插入图片描述

点击配置——模板——创建模板

在这里插入图片描述
可新建自定义模板,也可利用现有的HTTPS模板来修改

在这里插入图片描述
创建web监控场景:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分别输入:

监控网页名称便于自己区分

监控的URL地址

监控超时时间,根据自己相应业务动态调整频率

要求返回的状态码,这里返回200为正常,非200报警

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、Linux 系统监控

5.1、Linux系统负载监控

1)添加统一监控模板,然后对模板添加监控项

生产实际中,需要监控的主机数量往往较多,单台主机配置监控会造成很多重复的操作,显然不现实,这里我们可以使用zabbix的Templates(模板)将Items(监控项和Triggers(触发器)等众多配置定义在模板中,之后只需将主机链接到定义好的模板上,就可以批量应用这些操作了。下图通过链接到zabbix自带的系统监控模板来继承指标,而无需重复创建。
在这里插入图片描述
2)添加负载监控的触发器

CPU used percent >80%表达式:{Linux system-load:system.cpu.util.avg(5m,60)}>80

Mem used percent >80%表达式:100*({Linux system-load:vm.memory.size[total].avg(5m,60)}-{Linux system-load:vm.memory.size[available].avg(5m,60)})/{Linux system-load:vm.memory.size[total].avg(5m,60)}>=85 ##其中,“available"=“free + buffers + cached”(内核版本Linux<3.14)

Mem used percent >80%表达式2:100*(last(“vm.memory.size[total]”)-last(“vm.memory.size[available]”))/last(“vm.memory.size[total]”)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
3)Dashboard中添加图形

六、脚本监控

6.1、

可参考:http://www.zsythink.net/archives/551

二、其他配置

2.1 配置自动发现规则

为了避免手动创建监控项的麻烦,我们利用zabbix提供的自动发现的功能来自动扫描要监控的主机,现场环境为被监控主机安装zabbix-agent(10050),即可通过zabbix-agent(客户端)来进行主机发现。 zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux ,Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows 2000/2003/XP/Vista等系统之上。

1)agent端配置文件检查

vim /etc/zabbix/zabbix_agentd.conf


UnsafeUserParameters=1 # 默认为0,表示不允许自定义key
UserParameter=portall,/root/shell/python/postjson.py   #自定义监控项
UserParameter1=dns_ping[*],/root/dns_ping.py $1
AllowRoot=1  //赋予高权限

2)被监控端agent上添加脚本

vim /root/monitor/python/postjson.py


#!/usr/bin/env python
import json
import os
 
cmd=os.popen("""netstat -ntl|tail -n +3|awk '{print $4}'|awk -F: '{print $NF}'|sort|uniq""")  ##监控系统端口
 
ports=[]
 
for port in cmd.readlines():
         r=port.strip()
         ports+=[{'{#PORT}':r}]
 
print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))

自动返回 ping 结果的自动发现规则,返回的 JSON 必须遵循固定格式:

#!/root/bin/python3
import sys
import json
import subprocess

dns_ip_map = {
  "baidu" : "180.76.76.76",
  "ali" : "223.5.5.5",
  "tencent" : "119.29.29.29",
}

def ping(ip):
    cmd = "ping -c 2 -W 2 %s" %(ip)
    result = subprocess.getstatusoutput(cmd)[0]
    return result


if __name__ == "__main__":
    # 不加任何参数的时候,返回自动发现的变量,遵循指定的 JSON 格式,经 zabbix 5.0 版本测试
    # 仅返回列表,没有 `data` 作为键也可以
    if len(sys.argv) == 1:
        lld_key_list = [
            {"{#DNS_IP}": ip } for ip in dns_ip_map.keys()
        ]
        print(json.dumps(lld_key_list))
    # 传入参数的时候,即:将变量 {$DNS_IP} 对应的值传入的时候,可以获取到对应的执行结果 
    if len(sys.argv) == 2:
        result = ping(dns_ip_map.get(sys.argv[1]))
        print(result)

脚本有两个功能:

不加参数运行时输出自定义变量列表,可以作为【自动发现规则】的 key
加参数运行时输出指定 ip 的 ping 结果,ip 不存在时返回 -1,可以作为【监控项原型】的 key

3)创建自动发现规则

其中,键值就是前面agent配置文件那里写的名称
在这里插入图片描述
4)创建监控项原型

在这里插入图片描述
注意:net.tcp.port[,{#PORT}]键值必须这么写,在写的时候参考官方文档不然监控项无效。
在这里插入图片描述
在这里插入图片描述

验证:
在这里插入图片描述
在这里插入图片描述

……未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羌俊恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值