zabbix–监控服务端口

这里实现服务器上面所有的服务端口监控(包括一个服务多端口状况),有异常并进行告警。

zabbix-agent端配置

✏️ 创建自动发现配置文件

vim /etc/zabbix/zabbix_agentd.d/userparameter_tcp_port.conf
UserParameter=discovery.tcp_port,/etc/zabbix/scripts/tcp_port_discovery.py

✏️ 创建脚本存放目录

mkdir /etc/zabbix/scripts

✏️ 编写脚本

vim /etc/zabbix/scripts/tcp_port_discovery.py
#!/usr/bin/python
-*- coding: utf-8 -*-

使用python2 commands模块

import re
import commands
import json

DROP_LIST = ['22','25','111']
排除端口

def filterList():
    DROP_str = "|".join(DROP_LIST)
    CMD="netstat -pntl | awk '{print $4,$7}'|grep  [0-9] |egrep -vw '%s'" % (DROP_str)
    Result_Str = commands.getoutput(CMD)
    #print (Result_Str)
    tmp_list = Result_Str.split("\n") #每行加入列表
    new_dict = {}
    for line in tmp_list:
       # print (line)
       PORT_REG = re.search(r"(127.0.0.1:|\d+.\d+.\d+.\d+:|:::|0.0.0.0:)(\d+).+\d+/(\S+)",line)
       if PORT_REG is not None:
           match_line =  (PORT_REG.groups())
           new_dict[ match_line[-1]]  =  match_line[-2]
    return new_dict

if __name__ == "__main__":
    Results = filterList()
    #格式化成适合zabbix lld的json数据
    ports = []
    for key  in  Results:
        ports += [{'{#PNAME}':key,'{#PPORT}':Results[key]}]
    print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))

✏️ ​给脚本赋予执行权限

chmod +x /etc/zabbix/scripts/tcp_port_discovery.py

✏️ ​重启 zabbix-agent

systemctl restart zabbix-agent

✏️ ​zabbix-server端测试能否获取到值

zabbix_get -s 172.24.115.131 -k discovery.tcp_port
{
    "data":[]
}
#说明:如果像上面获取不到值,那是因为zabbix使用的是zabbix用户允许,然而linux普通用户没有权限执行netstat -p选项,故而获取不到数据。
#解决办法:agent端给netstat命令属主加上s权限。或者在添加sudo权限。
which netstat
/usr/bin/netstat
[root@centos7-2 ~]# chmod u+s /usr/bin/netstat

#再次在zabbix-server端获取值
zabbix_get -s 192.168.3.12 -k discovery.tcp_port
{
    "data":[
        {
            "{#PNAME}":"zabbix_agentd",
            "{#PPORT}":"10050"
        },
        {
            "{#PNAME}":"data_adapter",
            "{#PPORT}":"17993"
        },
        {
            "{#PNAME}":"nginx:",
            "{#PPORT}":"15692"
        },
        {
            "{#PNAME}":"redis-server",
            "{#PPORT}":"6379"
        },
        {
            "{#PNAME}":"zwopen_recep",
            "{#PPORT}":"14001"
        },
    ]
}

zabbix-server端配置

✏️ web界面添加服务 tcp端口监控的模板

1️⃣ 创建模板

zabbix--监控服务端口

zabbix--监控服务端口

2️⃣ 点击上面创建的模板进来创建自动发现规则

zabbix--监控服务端口

zabbix--监控服务端口

上面填写完成,可以点击测试进行测试下是否能获取到 agent端的值,没问题后再点击添加

zabbix--监控服务端口

3️⃣ 点击上面创建的自动发现规则,创建监控原型

zabbix--监控服务端口

zabbix--监控服务端口

zabbix--监控服务端口

4️⃣ 创建触发器原型

zabbix--监控服务端口

zabbix--监控服务端口

5️⃣ 监控主机链接模板

zabbix--监控服务端口

6️⃣ 验证

zabbix--监控服务端口

ansible playbook配置agent端

📝 这里如果有 n台zabbix-agent,这样一台一台去配置就比较耗时,这里通过 ansible-playbook去批量配置。

1、创建一个存放 playbook的目录

mkdir /data/tools/playbook/playbook_tcp_port -p

2、编写 playbook

`yml
vim playbook_tcp_port.yml

Original: https://www.cnblogs.com/yanjieli/p/13807757.html
Author: 别来无恙-
Title: zabbix–监控服务端口

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544029/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Collections.sort排序方法的最简化写法

    Collections.sort排序方法的最简化写法 Collections.sort排序方法的最简化写法 假定按照Number对象的Id字段进行排序 正序排序 Collectio…

    Java 2023年6月16日
    078
  • 共读《redis设计与实现》-单机(一)

    上一章我们讲了 redis 基本类型的 数据结构 和 对&#x…

    Java 2023年6月7日
    079
  • vue面试题

    vue面试题 轻量级速度快简单易学低耦合可重用性独立开发文档齐全,且文档为中文文档 props $emit 共同点:都是动态显示 DOM 元素区别点:v-if 是动态的向 DOM …

    Java 2023年6月5日
    071
  • css 隐藏元素

    display , visibility 仅会改变元素显示,不会改变元素种类。可以配合 js 使用使元素可以动态的显示隐藏。 可以使用 display 或 visibility 实…

    Java 2023年6月5日
    084
  • spring-boot-dependencies 和 spring-boot-starter-parent

    构建springboot项目有两种方式: 第一种是继承spring-boot-starter-parent pom里面指定parent项目: org.springframework…

    Java 2023年5月30日
    076
  • Java(9)在mac上运行命令行提示”找不到或无法加载主类”

    天坑 遇到的问题:使用命令行执行命令: java EightSample,会报以下错误错误: 找不到或无法加载主类 EightSample 运行环境 mac系统 IntelliJ …

    Java 2023年6月9日
    079
  • window和linux系统相关

    C1. window p1. 启动项 设置启动项 操作流程:win +…

    Java 2023年6月16日
    058
  • 2021/1/28

    #include <bits/stdc++.h> using namespace std; string a,b; int maxl[1001][1001]; int …

    Java 2023年6月5日
    068
  • 实际业务处理 Kafka 消息丢失、重复消费和顺序消费的问题

    消息丢失,消息重复消费,消息顺序消费等问题是我们使用 MQ 时不得不考虑的一个问题,下面我结合实际的业务来和你分享一下解决方案。 比如我们使用 Kakfa 时,以下场景都会发生消息…

    Java 2023年6月9日
    064
  • Springboot启动后执行方法(4种)

    一、注解@PostConstruct 使用注解@PostConstruct是最常见的一种方式,存在的问题是如果执行的方法耗时过长,会导致项目在方法执行期间无法提供服务。 二、Com…

    Java 2023年5月30日
    053
  • CompletableFuture的简单使用

    日常开发中,我们都会用到线程池,一般会用execute()和submit()方法提交任务。但是当你用过CompletableFuture之后,就会发现以前的线程池处理任务有多难用,…

    Java 2023年6月6日
    061
  • SSM-Web集成

    day6 Spring Web 集成 应用上下文对象一启动服务器就创建,创建好的应用上下文对象放到application域中🐟。利用监听器在Web项目中,可以使用🙆‍Servlet…

    Java 2023年6月5日
    081
  • 人生苦短,我用python之二

    今天的主题爬取网页的通用代码框架 我们首先打开IDLE选择File->new window命令(或者可以直接按键Ctrl+N键,在很多地方这个按键是新建文件的意思) 我们填入…

    Java 2023年6月7日
    092
  • Synchronized底层实现逻辑原理解析

    什么是同步的 如果一个资源被多个线程共享,我们需要同步线程,以避免资源抢占造成的资源数据混乱。在Java中,synchronized是实现线程同步的关键字。 使用synchroni…

    Java 2023年5月29日
    060
  • 企业微信第三方应用(六)接口调用许可应用

    前言:企业微信服务商收费模式已于2022年5月16日调整为接口调用许可 此文档是基于接口调用许可应用讲解 企业微信官网描述 一、安装测试1、首先我们先安装配置企业微信第三方应用企业…

    Java 2023年6月7日
    067
  • session与cookie的区别是什么?如果客户端禁用了cookie功能,将会对session有什么影响?

    cookie 和session 的区别: 1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、cookie不是很安全,别人可以分析存放在本地的COOKI…

    Java 2023年5月30日
    062
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球