zabbix自动发现规则批量监控主机的TCP监听端口

zabbix自动发现

配置自动发现

keysystem.uname 是agent端系统的信息

[root@lb-node1 ~]# zabbix_agentd -p|grep system.uname
system.uname                                  [s|Linux lb-node1 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64]
[root@lb-node1 ~]# 

  • 配置自动发现
    [外链图片转存失败(img-p0MCo8Ii-1564503367501)(D7C5296EBB8348C79917393D64E5112A)]

  • 网络发现模块执行的服务和主机(IP)的每次检查都生成发现事件于是配置Discovery的Action
    [外链图片转存失败(img-XeOC9DKx-1564503367503)(E98630A0FBD04392B0C9BC9CEE7DA5FE)]
    [外链图片转存失败(img-oTzfxcue-1564503367504)(CF17D0060EDA4547966F2457DFD27F06)]
    [外链图片转存失败(img-LSHgJ03g-1564503367505)(EA6D9F31E2244A23A4AF6D1CDA2CCEDE)][外链图片转存失败(img-kSyoJqUE-1564503367506)(11CE48109AE64ECA9F0BEF9CFEC78F20)]

  • 自动发现主机成功
    [外链图片转存失败(img-s0VdbsLm-1564503367507)(4398452629954032913421EC49ABB2D5)]

端口port自动发现

  • 客户端新建查询端口脚本discoverport.sh
[root@lb-node1 /etc/zabbix/scripts]# vim discoverport.sh 
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
  do
     printf '\n\t\t{'
     printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
     if [ $i -lt $[$length-1] ];then
                printf ','
     fi
  done
printf  "\n\t]\n"
printf "}\n"


  • 增加执行权限
[root@lb-node1 /etc/zabbix/scripts]# chmod +x discovertcpport.sh
  • 客户端增加discovery的key
UserParameter=tcpportlisten,/usr/local/zabbix_agent/sbin/discovertcpport.sh "$1"
  • 重启zabbix_agentd服务,server端测试获取key
[root@zabbix-server ~]# zabbix_get -s 192.168.1.10 -k tcpportlisten
{
	"data":[
		{"{#TCP_PORT}":"10050"},
		{"{#TCP_PORT}":"22"},
		{"{#TCP_PORT}":"25"},
		{"{#TCP_PORT}":"80"}
	]
}
[root@zabbix-server ~]# 

  • 在Linux模板中创建端口自动发现规则

[外链图片转存失败(img-g4qVZGOc-1564503367508)(CA67021793BC4634AE8A97687478B7BC)]
2.
[外链图片转存失败(img-pkzwT0Aq-1564503367508)(84595BECDF274B75842FD9EB6F843D76)]
3.
[外链图片转存失败(img-Ws3aC6Kt-1564503367509)(47DF19C4FE33454FAA6019EB245FBA8A)]
4.
[外链图片转存失败(img-FiuAvbUT-1564503367510)(DC983FE80D18403293A3E91B055F2DC6)]

  • 创建Item原型
    [外链图片转存失败(img-O1eY9gtp-1564503367511)(18A67EEAB1EF4807B50B8AFD6CB281E4)]
    [外链图片转存失败(img-UG9535zM-1564503367512)(F399488B6AA8415FA8F9DD759AFB123B)]

  • 创建触发器原型
    在这里插入图片描述

  • 创建图像原型
    [外链图片转存失败(img-Un2drtxC-1564503367513)(FB0C6E89D7AB48A58D6E789A22469A31)]

  • 查看是否成功,在monitoring-latest data里面查看是否有端口产生
    [外链图片转存失败(img-RKWqrRYA-1564503367514)(FB439FA38534416995124839DF137503)][外链图片转存失败(img-Gqe7ib2d-1564503367515)(0C75725095284EF2A843931F8D8633DE)]

  • 报错解决
    [外链图片转存失败(img-HNfobnRR-1564503367516)(9B14F847E7F34956B86AB3313BE239F7)]

解决办法是 vim /etc/sudoers

#Defaults    requiretty  注释掉这个
zabbix  ALL=(ALL)      NOPASSWD: ALL

然后在上面的脚本里面改为

sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq

[外链图片转存失败(img-6uqSODnF-1564503367516)(61302FDEBFDA45A9BF1866E812758F6A)]

监听端口自动发现的演示方法2

配置低级别自动发现的步骤

  1. 配置自动发现监控项Discovery rules(根据脚本或命令生成低级别的自动发现宏变量)
  2. 定义item原型Item prototypes(主要利用低级别自动发现产生的变量,来动态的创建监控项、触发器、图形)

实战演示低级别自动发现的配置管理

  • 演示内容:自动发现服务器本地的监听的端口,并且将这些端口进行自动化的监控和告警
  1. 配置agent客户端
[root@lb-node2 /etc/zabbix]# vim zabbix_agentd.d/userparameter_ports.conf 

UserParameter=listen.ports.discovery,python /etc/zabbix/scripts/listen_ports.py

  1. 编写获取服务端口的脚本listen_ports.py
#!/usr/bin/python

import os
import json

cmd=os.popen("""netstat -lntp|grep -v rpc|awk -F "[ :]+" '{if($4 ~ /0.0.0.0/ || $4 ~ /127.0.0.1/) print $5}'""")

ports=[]
for port in cmd.readlines():
    r=port.strip()
    ports += [{'{#PORT}':r}]

print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))

  1. 配置测试的监控模板

[外链图片转存失败(img-Ex9kPf80-1564503367517)(2741E0FDD0204527A8C9C8F9ED5D880D)][外链图片转存失败(img-IyAxpEJy-1564503367518)(51439D26F27B4370A24F2E98491A3078)]

  1. 设置zabbix权限
    默认zabbix-agent使用zabbix用户启动,为了可以是zabbix执行脚本,我们修改他的权限,给他提升权限sudovi
  • 两种方法
    1. 提升sudo权限

      [root@lb-node2 ~]# visudo

      zabbix ALL=NOPASSWD ALL

    2. 修改zabbix配置,使zabbix-agent以root用户运行(修改配置后要重启agent)

    sed -i 's@# AllowRoot=0@AllowRoot=1@g' /etc/zabbix/zabbix_agentd.conf
    
    [外链图片转存失败(img-mtJFBltW-1564503367519)(BE843706B3794E69AEB08DA9CBF8D16E)]
    • 还有一种方法:思路用root用户生成json格式的端口信息日志,然后zabbix-agent读取这个日志即可
  1. zabbix-server端测试获取agent端的端口信息

[外链图片转存失败(img-NOgc04Iz-1564503367519)(C7BB4A82ED654AE9B82CF8DAFF5A719F)]

  1. 自动发现规则已经创建

[外链图片转存失败(img-eDuAAEQ0-1564503367520)(9157AC32E90B4F6A8735973208979CFE)]

  1. 创建监控项原型

[外链图片转存失败(img-O6sXuPIQ-1564503367521)(BCE24807B4334B74A9107539606F2D33)][外链图片转存失败(img-y4IA2yGV-1564503367522)(EB0A49B772A54D4C90E52F1C90A6BF81)]

  1. 创建监控项触发器原型
    在这里插入图片描述

  2. lb-node1主机上自动发现监听端口实现了
    [外链图片转存失败(img-QXG4vzBn-1564503367526)(376B1358C0804399B2871EDE8D206764)]

  • 并且监听的端口都有值了

[外链图片转存失败(img-QJOsxWj6-1564503367527)(51A64C138FE54E99A948223FC39E2C08)]

  • 测试停止zabbix-agent触发告警
    [外链图片转存失败(img-8BE3WpaN-1564503367528)(32674C681C9D494BB16C74C4FB63BCC5)]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章