Zabbix 自动发现端口&监控

版权声明:转载请注明出处。 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导入模板
  1. 选择《配置》《模板》《导入》
    在这里插入图片描述

  2. 选择模板文件在这里插入图片描述

  3. 模板内容如下:

<?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>

  1. 关联主机

自行添加咯

猜你喜欢

转载自blog.csdn.net/paopaohll/article/details/88056152