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)

大家都在看

  • java.lang.NoClassDefFoundError 解决方案

    http://stackoverflow.com/questions/9870995/android-java-lang-noclassdeffounderror 像网络了上说的一…

    Java 2023年5月29日
    070
  • SpringBoot定时任务-开箱即用分布式任务框架xxl-job

    除了前文介绍的ElasticJob,xxl-job在很多中小公司有着应用(虽然其代码和设计等质量并不太高,License不够开放,有着个人主义色彩,但是其具体开箱使用的便捷性和功能…

    Java 2023年6月6日
    078
  • spring Aop实现防止重复提交

    1.先定义一个注解 2.实现一个aop import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.Stri…

    Java 2023年5月30日
    070
  • mysql的主从复制延迟问题–看这一篇就够了

    ​ 在之前我们已经讲解了一主一从,双主双从的mysql集群搭建,在单机应用的时候看起来没有问题,但是在企业的生产环境中,在很多情况下都会有复制延迟的问题。 ​ 主从复制的原理我们在…

    Java 2023年6月7日
    098
  • 1.欧拉算法求100以内素数个数

    class test { private static boolean[] check = new boolean[101];//这里定100会有越界错误 private stat…

    Java 2023年6月9日
    0183
  • 多线程

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    088
  • 最新MongoDB安装,学习笔记

    MongoDB 导读 作者还在陆续更新中,如果喜欢作者的笔记,觉得可以学习到有帮助,后面会不断学习新内容,就点个关注吧,如果觉得文章有关注可以点个赞,谢谢; 官网:https://…

    Java 2023年6月9日
    073
  • nginx日志分析解决方案- Awstats

    很多PHP搭建的网站都在由apache转向了nginx。nginx的日志信息如何分析呢? 当然你可以自己写一个,但是这里也推荐一款结果信息非常详尽的开源工具——Awstats ,它…

    Java 2023年5月30日
    086
  • SpringBoot连接MySQL配置(yml)?

    SpringBoot连接MySQL 需要导入的依赖 1. MySQL 8 yaml配置: undefined 2. MySQL 5 yaml配置: spring Original:…

    Java 2023年6月9日
    064
  • Java的值传递

    特别注意:java只有值传递没有引用传递。 一、值传递和引用传递的定义 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进…

    Java 2023年5月29日
    0102
  • 删除链表结点类问题

    删除链表结点 NO1. 删除链表倒数第 k个结点 给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针。要求:空间复杂度 (O(1)),时间复杂度 (O(n)) 如果倒数第…

    Java 2023年6月15日
    098
  • 设计模式之二策略模式(java实现)

    策略模式的实际应用就是消除代码块中的if else语句,这个时候就有人说了,if else挺好的啊,写代码本来就是if else的逻辑判断,处理业务 写小项目没问题,但是那种大型的…

    Java 2023年6月6日
    0106
  • 关于JSP学习中一些记录

    【JSP探究】 一、JSP转换后的源文件的位置 由于不同版本的IDEA的默认路径不同,所以我们无法统一按照网上所给路径进行查找 我们可以创建一个JavaWeb项目并运行,查看日志就…

    Java 2023年6月13日
    067
  • springboot jrebel热部署

    安装 IDEA点击File -> Settings -> Plugins,如下图:搜索JRebel安装 完美破解 服务器地址监听服务器地址: http://jrebel…

    Java 2023年5月30日
    0107
  • Spring Boot:整合JdbcTemplate

    综合概述 Spring对数据库的操作在jdbc上面做了更深层次的封装,而JdbcTemplate便是Spring提供的一个操作数据库的便捷工具。我们可以借助JdbcTemplate…

    Java 2023年5月30日
    073
  • 分析 java.util.HashMap 源码

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

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