[TOC]
0x00 Zabbix监控Windows (1) Windows Agent下载安装配置 Agent下载地址:https://www.zabbix.com/download_agents 选择我们对应的版本:4.2.1/Windows/amd64/OpenSSLhttps://www.zabbix.com/downloads/4.2.1/zabbix_agents-4.2.1-win-amd64-openssl.zip
weiyigeek.top-根据系统位数选择
Step 0. 这里监控windows我采用了宿主机与virtual中Zabbix主机进行通信,需要设置虚拟网卡为HOST-ONLY模式,注意HOST-only网卡需要设置自动获取
[TOC]
0x00 Zabbix监控Windows (1) Windows Agent下载安装配置 Agent下载地址:https://www.zabbix.com/download_agents 选择我们对应的版本:4.2.1/Windows/amd64/OpenSSLhttps://www.zabbix.com/downloads/4.2.1/zabbix_agents-4.2.1-win-amd64-openssl.zip
weiyigeek.top-根据系统位数选择
Step 0. 这里监控windows我采用了宿主机与virtual中Zabbix主机进行通信,需要设置虚拟网卡为HOST-ONLY模式,注意HOST-only网卡需要设置自动获取1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ifdown eth2 ifup eth2 192.168.56.101 zabbix.weiyigeek.com [root@WeiyiGeek C:\zabbix\bin] 2.168.56.102 METRIC 3 IF 15 操作完成! route ADD 192.168.56.200 MASK 255.255.255.255 192.168.56.101 METRIC 3 IF 15 [root@WeiyiGeek C:\zabbix\bin]
weiyigeek.top-
Step 1. 下载解压文件 -> 打开并配置conf/zabbix_agentd.conf 里面的配置比较详细1 2 3 4 5 6 7 8 LogFile=c:\zabbix_agentd.log EnableRemoteCommands=1 LogRemoteCommands=1 DebugLevel=3 Server=192.168.56.101 ListenPort=10050 ServerActive=192.168.56.101 Hostname=Windows7
Step 2. 启动zabbix的 bin注册服务到系统1 2 3 4 5 6 7 8 C:\zabbix\bin\zabbix_agentd.exe -i -c C:\zabbix\conf\zabbix_agentd.conf zabbix_agentd.exe [11700]: service [Zabbix Agent] installed successfully zabbix_agentd.exe [11700]: event source [Zabbix Agent] installed successfully C:\zabbix\bin\zabbix_agentd.exe -s -c C:\zabbix\conf\zabbix_agentd.conf zabbix_agentd.exe [10756]: service [Zabbix Agent] started successfully C:\zabbix\zabbix_agentd.exe -d -c C:\zabbix\conf\zabbix_agentd.conf
Step 3. 查看服务是在系统的服务列表中或者services命令查看1 2 3 4 5 6 7 8 9 10 11 12 13 [root@WeiyiGeek C:\Users\Administrator]$sc qc "Zabbix Agent" [SC] QueryServiceConfig 成功 SERVICE_NAME: Zabbix Agent TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : "C:\zabbix\bin\zabbix_agentd.exe" --config "C:\zabbix\conf\zabbix_agentd.conf" LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Zabbix Agent DEPENDENCIES : SERVICE_START_NAME : LocalSystem
Step 4. 可通过zabbix_agentd.log日志和zabbix主机选项卡中看到连接成功 -> 监控 -> 拓扑图 -> 编辑拓扑图
weiyigeek.top-拓扑图
Step 5. 尝试执行远程命令脚本 管理 -> 脚本 -> 添加选项选择主机群组
weiyigeek.top-shutdown
Step 6. 之后可以在网络拓扑中选择主机进行命令执行
weiyigeek.top-拓扑图
weiyigeek.top-成功执行
0x01 Zabbix监控Linux (1)Zabbix自带模板监控 监控:Linux主机 CPU、内存、硬盘、网卡等等,以及设置图像化界面; 执行流程: Step 1. 配置 -> 主机 -> 添加主机 -> 群组选择[Linux Server] -> 设置agent代理程序的接口 -> 添加即可 Step 2. 配置 -> 主机 -> data2-模板 -> 添加模板 -> 链接指示器[寻找Template OS Linux] -> 添加后更新(否则不生效)
weiyigeek.top-链接指示器选择群组模板
weiyigeek.top-添加完成后会自动添加图形
Step 3. 配置 -> 主机 -> 选择指定主机 -> 更新即可 -> ZBX正常连接
Step 4. 配置 -> 主机 -> 选择主机图像 -> 创建图形 -> 选择模板中监控项 -> 添加即可
weiyigeek.top-创建图像
weiyigeek.top-配置图像监控项
(2)Zabbix聚合图像 Step 1. 监测 -> 聚合图像 -> 所有聚合图像 -> 创建聚合图形 -> 设置所有者和名称[ Linuxgeneral] -> 添加即可 Step 2. 点击设置聚合图像名称[Linuxgeneral] -> 编辑聚合图像 -> 更改 -> 选择显示的类型 -> 选择图像或者监控项
weiyigeek.top-编辑聚合图像
weiyigeek.top-添加图像到面板
(3)Zabbix设置自动发现添加主机功能 Step 1. 配置 -> 自动发放 -> 创建自动发现规则 -> 监测方式设置 -> 监测IP段 Step 2. 配置 -> 动作 —> 事件源[自动发现] -> 设置动作条件 -> 启用即可
weiyigeek.top-动作
weiyigeek.top-自动发现
Step 3. 选择指定自动发现检查条件,就是选择自动发现规则名称; 配置 -> 动作 -> 选择创建的发现规则 -> 选择操作 -> 设置操作细节: 动作:添加主机 、 添加到主机群组: Windows General 、链接到模板: Template OS Windows -> 添加即可
weiyigeek.top-自动发现检查
weiyigeek.top-自动发现操作
Step 4. 我们就能在主机群组发现我们检测到的主机
weiyigeek.top-WindowsGeneral
Step 5. 之后我们能在配置 -> 主机 -> 选择群组 -> 查看添加到zabbix 监控的主机 -> 注意次数ZBX未启动 -> 需要在监控端安装agent;
weiyigeek.top-测试自动发现添加到主机中
0x02 Zabbix分布式安装 Zabbix为IT基础设施提供有效和可用的分布式监控,代理(proxies)可用于代替Zabbix server本地收集数据,然后将数据报告给server服务器。 zabbix proxy 是一个数据收集器,它不计算触发器、不处理事件、不发送报警
zabbix proxy 使用场景:
监控远程区域设备
监控本地网络不稳定区域
当zabbix监控上千设备时,使用它来减轻 server 的压力
简化分布式监控的维护
weiyigeek.top-zabbix
执行过程:proxy 收集到数据之后,首先将数据缓存在本地,然后在一定得时间之后传递给 zabbix server,这样就不会因为服务器的任何临时通信问题而丢失数据。
如何选择proxy模式?
主动式 - proxy将连接到Zabbix server并请求配置数据
被动式 - Zabbix server连接到代理proxy 注意:当使用active proxy,未加密通信(敏感)proxy配置数据可用于访问Zabbix server trapper端口。如果不进行身份验证,任何人都可以伪装成active proxy并请求配置数据。
我们这里采用共享秘钥(PSK)方式加密通信:1 2 3 4 5 6 如:ZABBIXPROXY [root@container1 etc]$ openssl rand -hex 32 > /var/lib/zabbix/zabbix_proxy.psk
zabbix-proxy重要参数:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 egrep -v '^#' /etc/zabbix/zabbix_proxy.conf Server=192.168.1.200 ServerPort=10051 Hostname=ZabbixProxy LogFile=/var/log /zabbix/zabbix_proxy.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_proxy.pid SocketDir=/var/run/zabbix DBHost=192.168.1.200 DBName=zabbix_proxy DBUser=zabbix_proxy DBPassword=123456 DBPort=3306 ProxyLocalBuffer=10 ProxyOfflineBuffer=10 HeartbeatFrequency=60 ConfigFrequency=30 DataSenderFrequency=60 SNMPTrapperFile=/var/log /snmptrap/snmptrap.log Timeout=4 ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000 StatsAllowedIP=127.0.0.1 TLSConnect=psk TLSAccept=psk TLSPSKIdentity=ZABBIXPROXY TLSPSKFile=etc/zabbix/zabbix_proxy.psk
然后启动zabbix-proxy和观察连接日志:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@Szabbix ~]$service zabbix-proxy restart [root@Szabbix ~]$cat /var/log /zabbix/zabbix_proxy.log 4733:20190516:000542.753 using configuration file: /etc/zabbix/zabbix_proxy.c 4733:20190516:000542.768 current database version (mandatory/optional): 04020 4733:20190516:000542.768 required mandatory version: 04020000 4733:20190516:000542.793 proxy 4735:20190516:000542.795 proxy 4737:20190516:000542.800 proxy 4736:20190516:000542.803 proxy 4740:20190516:000542.806 proxy 4742:20190516:000542.817 proxy $vim /etc/hosts hostname zabbixagent $service zabbix-agent startcat /var/log /zabbix/zabbix_agentd.log
在zabbix-web中设置agent代理程序:
weiyigeek.top-设置agent代理程序
weiyigeek.top-加密agent代理程序
注意:接入成功后需要建立应用集ZBX才能进行显示绿色(注意这里的主机名称需要与配置文件对应)
weiyigeek.top-proxy接入
注意: zabbix proxy 数据库必须和 server 分开,否则数据会被破坏;
0x03 Zabbix使用钉钉进行预警 群机器人是钉钉群的高级扩展功能,群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步; 登录钉钉客户端->创建一个群->然后点击群右上角的”群机器人”->”添加机器人”->”自定义”,记录该机器人的webhook值!
weiyigeek.top-webhook
修改后钉钉zabbix监控脚本:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 cat dingding.py import json,sys,os,datetimeimport urllib2webhook="https://oapi.dingtalk.com/robot/send?access_token=e633c24593e06b207af5ef099b300f7b6f68a6ff086a74837f094638d51c52a2" username=sys.argv[1 ] text=sys.argv[3 ] data={ "msgtype" : "text" , "text" : { "content" : text }, "at" : { "atMobiles" : [ username ], "isAtAll" : False } } headers = {'Content-Type' : 'application/json' } request=urllib2.Request(url=webhook,data=json.dumps(data),headers=headers) reponse=urllib2.urlopen(request) result = reponse.read() filename="/var/log/zabbix/log/dingding.log" if os.path.exists(filename): f=open(filename,"a+" ) else : f=open(filename,"w+" ) f.write("\n" +"--" *30 ) x = json.loads(result) print x["errmsg" ]if x["errcode" ] == 0 : f.write("\n" +str(datetime.datetime.now())+" " +str(username)+" " +"发送成功" +"\n" +str(text)) f.close() else : f.write("\n" +str(datetime.datetime.now()) + " " + str(username) + " " + "发送失败" + "\n" + str(text)) f.close()
执行流程:1 2 3 4 5 6 7 8 chmod +x dingding.py mkdir -vp /var/log /zabbix/log / chown zabbix.zabbix /var/log /zabbix/log /dingding.log ./dingding.py 1842 gaojing "测试报警"
zabbix web界面配置流程: Step1. 创建报警媒介 脚本参数:ALERT.SENDTO ALERT.SUBJECT ALERT.MESSAGE Step2. 给用户添加报警媒介 说明:收件人是钉钉上的手机号码,我这里使用的是Admin管理员用户
weiyigeek.top-添加报警媒介
Step3. 点击配置–>动作–>创建动作->触发器1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 { "from" : "{HOSTNAME1}" , "time" : "{EVENT.DATE} {EVENT.TIME}" , "level" : "{TRIGGER.SEVERITY}" , "name" : "{TRIGGER.NAME}" , "key" : "{TRIGGER.KEY1}" , "value" : "{ITEM.VALUE}" , "now" : "{ITEM.LASTVALUE}" , "id" : "{EVENT.ID}" , "ip" : "{HOST.IP}" , "color" :"FFE61A1A" , "age" :"{EVENT.AGE}" , "status" :"{EVENT.STATUS}" } { "from" : "{HOSTNAME1}" , "time" : "{EVENT.DATE} {EVENT.TIME}" , "level" : "{TRIGGER.SEVERITY}" , "name" : "{TRIGGER.NAME}" , "key" : "{TRIGGER.KEY1}" , "value" : "{ITEM.VALUE}" , "now" : "{ITEM.LASTVALUE}" , "id" : "{EVENT.ID}" , "ip" : "{HOST.IP}" , "color" :"FF4A934A" , "age" :"{EVENT.AGE}" , "recoveryTime" :"{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}" , "status" :"{EVENT.RECOVERY.STATUS}" }
Step4. 等待事件触发
weiyigeek.top-测试
weiyigeek.top-钉钉报警