版权声明:转载请注明出处。 https://blog.csdn.net/paopaohll/article/details/88056152
一、Zabbix环境描述
1. 服务器系统及版本
CentOS Linux release 7.3.1611 (Core)
2. Zabbix版本
zabbix版本:3.4
mysql 5.7
3. Python版本
python 2.7(系统自带)
二、修改配置文件&编写Python脚本
1. 修改zabbix agent的配置文件
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
# 本次添加的内容
UserParameter=port.discovery,/etc/zabbix/tools/port.py
2. 编辑Python脚本,并上传至/etc/zabbix/tools/
自动发现&监控大于1024的端口,具体可以通过修改代码自行修改~
#!/usr/bin/python
import os
import json
import sys
def discover():
d = {}
d['data'] = []
with os.popen("netstat -tnlp | awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}' | awk '{if ($1 > 1024) print $1}'|sort|uniq") as pipe:
for line in pipe:
info = {}
info["{#TCPPORT}"] = line.replace("\n", "")
d["data"].append(info)
print json.dumps(d)
if __name__ == "__main__":
discover()
3. Zabbix Web导入模板
-
选择《配置》《模板》《导入》
-
选择模板文件
-
模板内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>3.4</version>
<date>2019-03-01T03:44:58Z</date>
<groups>
<group>
<name>VmvareTest</name>
</group>
</groups>
<templates>
<template>
<template>Template Linux Auto Add Port</template>
<name>Template Linux Auto Add Port</name>
<description/>
<groups>
<group>
<name>VmvareTest</name>
</group>
</groups>
<applications>
<application>
<name>AutoAddPort</name>
</application>
</applications>
<items/>
<discovery_rules>
<discovery_rule>
<name>Auto Discovery Port</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>port.discovery</key>
<delay>30s</delay>
<status>0</status>
<allowed_hosts/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<filter>
<evaltype>0</evaltype>
<formula/>
<conditions>
<condition>
<macro>{#TCPPORT}</macro>
<value/>
<operator>8</operator>
<formulaid>A</formulaid>
</condition>
</conditions>
</filter>
<lifetime>30d</lifetime>
<description/>
<item_prototypes>
<item_prototype>
<name>Linux Tcp Port {#TCPPORT} Item</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>net.tcp.listen[{#TCPPORT}]</key>
<delay>30s</delay>
<history>90d</history>
<trends>365d</trends>
<status>0</status>
<value_type>3</value_type>
<allowed_hosts/>
<units/>
<snmpv3_contextname/>
<snmpv3_securityname/>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authprotocol>0</snmpv3_authprotocol>
<snmpv3_authpassphrase/>
<snmpv3_privprotocol>0</snmpv3_privprotocol>
<snmpv3_privpassphrase/>
<params/>
<ipmi_sensor/>
<authtype>0</authtype>
<username/>
<password/>
<publickey/>
<privatekey/>
<port/>
<description/>
<inventory_link>0</inventory_link>
<applications>
<application>
<name>AutoAddPort</name>
</application>
</applications>
<valuemap/>
<logtimefmt/>
<preprocessing/>
<jmx_endpoint/>
<application_prototypes/>
<master_item_prototype/>
</item_prototype>
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{Template Linux Auto Add Port:net.tcp.listen[{#TCPPORT}].last()}=0</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>Linux Tcp Port {#TCPPORT} Trigger</name>
<correlation_mode>0</correlation_mode>
<correlation_tag/>
<url/>
<status>0</status>
<priority>4</priority>
<description/>
<type>0</type>
<manual_close>0</manual_close>
<dependencies/>
<tags/>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes/>
<host_prototypes/>
<jmx_endpoint/>
</discovery_rule>
</discovery_rules>
<httptests/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
</zabbix_export>
- 关联主机
自行添加咯