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)

大家都在看

  • rocketmq延时消息

    rocketmq提供一种延时消息的解决方案,就是在特定的时间到了,消息才会被投递出去供 consumer消费。 总体来是简单的场景是满足了,但是需要注意的是延时的时间是需要按照默认…

    Java 2023年6月16日
    095
  • launchMode(启动模式)

    默认启动模式,每次将创建一个新的实例。 如果该活动处于栈顶部,则不会新建实例,否则新建实例; 复用时会触发 onNewIntent 方法。 栈内唯一,只要栈中存在该实例,将被复用;…

    Java 2023年6月7日
    095
  • Swagger以及knife4j的基本使用

    Swagger 介绍: Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的 Web 服务 RESTful是一种架构的规范与约束、原则,符合这种…

    Java 2023年6月14日
    075
  • JavaWeb_(视频网站)_五、视频模块2 辅助功能

    获取上传视频秒数 在utils包中添加VideoUtils.java工具类,用来获得视频秒数 package com.Gary.betobe.utils; import com.t…

    Java 2023年5月29日
    061
  • Vulnhub-Tomato靶机实战

    前言 靶机下载地址:https://www.vulnhub.com/entry/tomato-1,557/ KALI地址:192.168.94.108靶机地址:192.168.94…

    Java 2023年6月13日
    077
  • Nginx服务器性能优化与安全配置实践指南

    转载自:https://www.bilibili.com/read/cv16151784?spm_id_from=333.999.0.0 1.引言1.1 目的 为了更好的指导部署与…

    Java 2023年5月30日
    076
  • ArrayList扩容机制

    写在前面 数据结构在面试中基本都是常问的,但是一般开发中基本上都是在使用没有去关心过怎么实现的。 在数据结构中,链表是一种线性存储结构,也就是常说的线性表。 概念:线性表,是数据结…

    Java 2023年6月5日
    085
  • spring BeanFactory VS FactoryBean

    一、FactoryBean示例 public class DateStringFactoryBean implements FactoryBean { private boolea…

    Java 2023年5月30日
    0102
  • SSM整合开发步骤(自己回顾复习用)

    SSM: SpringMVC + Spring + MyBatis. SpringMVC:视图层,界面层,负责接收请求,显示处理结果的。Spring:业务层,管理service,d…

    Java 2023年6月9日
    054
  • 字符串

    1. 获取字符串长度 str.length() 实例: 2. 字符串的查找 2.1 indexOf() 这个方法用于返回参数字符串在指定字符串首次出现的位置 2.2 lastInd…

    Java 2023年6月8日
    095
  • 一个关于MySQL指定编码实现的小坑

    写在前面 环境:MySQL5.7+,MySQL数据库字符编码实现为utf8,表也为utf8 场景:微信授权获取用户信息(包括昵称)并保存到数据库,有的用户成功了,少数用户却失败了 …

    Java 2023年6月16日
    0103
  • javaweb之HttpSession对象

    1.session会话追踪原理 客户端第一次请求服务端,服务端会创建一个session对象并且存储下来,之后会将session的唯一标识sessionId设置到响应头中传给客户端 …

    Java 2023年6月9日
    092
  • 3-面向对象(3)

    一、main()的使用说明 main()方法作为程序的入口 main()方法也是一个普通的静态方法 main()方法可以作为我们与控制台交互的方式。(之前:使用Scanner) 如…

    Java 2023年6月7日
    089
  • Nginx总结(九)Nginx服务器高性能优化的配置–轻松实现10万并发访问量

    前面讲了如何配置Nginx虚拟主机,如何配置服务日志等很多基础的内容,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhon…

    Java 2023年5月30日
    064
  • Docker入门

    一、简介 1.1、是什么 Docker是·基于GO语言实现的云开源项目Docker的主要目标是”Bulid,Ship and Run Any APP, Anywhere…

    Java 2023年6月9日
    079
  • 工厂模式详解

    1.1工厂模式的由来 现实生活中,原始社会(没有工厂)–> 农耕小作坊(简单工厂)–> 工业革命(工厂方法)–> 代工厂(抽象…

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