zabbix_agent自动发现服务端口
应用背景:
zabbix监控系统介绍及安装,参考大牛运维生存时间,在这儿就不啰嗦了
为了zabbix-agent端能自动把服务器端的服务端口汇报给 zabbix server端,监控其端口是否存活可用,
用下面的脚本:service_scan.py 部署于agent端 /usr/local/zabbix-agent/bin/service_scan.py
部署准备:
- service_scan.py脚本 依懒 python2.7版本下的 psutil库,
- 需要在agent端安装 python2.7版本,
- 用python2.7 安装相关的 psutil库
|
1
|
/usr/local/python27/bin/pip install psutil |
服务器端口自动发现脚本: service_scan.py
#!/usr/local/python27/bin/python
# author: moorewqk@163.com
#
import os, sys, time
import commands
import psutil
import socket
import json
del_list = ["rpc.statd","java"]
def Handle_Connects():
rows = []
lc = psutil.net_connections('inet')
for c in lc:
(ip, port) = c.laddr
if ip == '0.0.0.0' or ip == '::':
if c.type == socket.SOCK_STREAM and c.status == psutil.CONN_LISTEN:
proto_s = 'tcp'
#elif c.type == socket.SOCK_DGRAM:
# proto_s = 'udp'
else:
continue
pid_s = str(c.pid) if c.pid else '(unknown)'
#print pid_s,port
rows.append('%s:%s'%(pid_s,port))
dedup_list = {}.fromkeys(rows).keys()
return dedup_list
def handler_pid(pid,port):
service_dict = {}
p = psutil.Process(int(pid))
if p.as_dict()['name'] == 'jsvc':
service_pname = p.as_dict()['environ']['HOME'].split('/')[3]
service_dict['{#PNAME}'] = service_pname
service_dict['{#PPORT}'] = port
else:
service_pname = p.as_dict()['name']
service_dict['{#PNAME}'] = service_pname
service_dict['{#PPORT}'] = port
return service_dict
def main():
zb_dict = {}
service_list = []
result_list = []
clist = []
for i in Handle_Connects():
pid = i.split(':')[0]
port = i.split(':')[1]
service_list.append(handler_pid(pid,port))
for dictlist in service_list:
if dictlist["{#PNAME}"] in del_list:
result_list.append(dictlist)
#service_list.remove(dictlist)
#print result_list
for delname in service_list:
if delname not in result_list:
clist.append(delname)
zb_dict['data'] = clist
print json.dumps(zb_dict,sort_keys=True,indent=4)
if __name__ == "__main__":
main()
zabbix_agent自动发现服务端口的更多相关文章
- ZABBIX自动发现Redis端口并监控
由于一台服务器开启许多Redis实例,如果一台一台的监控太耗费时间,也非常容器出错.这种费力不讨好的事情我们是坚决杜绝的,幸好ZABBIX有自动发现功能,今天我们就来用该功能来监控我们的Redis实例 ...
- python 自动发现Java端口
python 自动发现Java端口 #!/usr/bin/env python #encoding: utf8 import subprocess try: import json except Im ...
- Prometheus + Consul 自动发现服务监控
一.Prometheus支持的多种服务发现机制(常用如下) static_configs: 静态服务发现 file_sd_configs: 文件服务发现 dns_sd_configs: DNS 服务发 ...
- 分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口
一.Zabbix-3.0.3批量添加主机的配置如下: 0)被监控机上要安装zabbix_agent,并配置好zabbix_agentd.conf (如下172.29.8.50是zabbix_serve ...
- marathon的高可用服务自动发现和负载均衡
上一篇我们说谈了docker+zookeeper+mesos+marathon集群,本篇我们来谈谈marathon的集群和自动发现服务. marathon的服务自动发现和负载均衡有两种,1是mesos ...
- Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务
前一章, 我们的Hello world应用服务,通过配置服务器Config Server获取到了我们配置的hello信息“hello world”. 但自己的配置文件中必须配置config serve ...
- 使用 zabbix 自动发现监控 MySQL
介绍 使用 zabbix 的 low-level 自动发现功能完成单主机多端口的监控, 详见low_level_discovery, 整体上监控类似 percona 的 zabbix 监控插件, 不过 ...
- Prometheus基于consul自动发现监控对象 https://www.iloxp.com/archive/11/
Prometheus 监控目标为什么要自动发现 频繁对Prometheus配置文件进行修改,无疑给运维人员带来很大的负担,还有可能直接变成一个“配置小王子”,即使是配置小王子也会存在人为失误的情况 ...
- Zabbix--06主动模式和被动模式、低级自动发现、性能优化、
目录 一. Zabbix主动模式和被动模式 1.克隆模版 2.修改克隆后的模版为主动模式 3.修改监控主机关联的模版为主动模式 4.修改客户端配置文件并重启 5.查看最新数据 二.Zabbix低级自动 ...
随机推荐
- java界面编程(9) ------ 列表框
本文是自己学习所做笔记,欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 列表框和JComboBox组合框明显不同,这不不过体如今外观上. 当激活JCom ...
- C#之快速排序
算法描述 1.假定数组首位元素为“枢轴”,设定数列首位(begin)与末位(end)索引: 2.由末位索引对应元素与“枢轴”进行比较,如果末位索引对应元素大于“枢轴”元素,对末位索引减一(end--) ...
- LeetCode 551. Student Attendance Record I (学生出勤纪录 I)
You are given a string representing an attendance record for a student. The record only contains the ...
- 使用Vitamio插件显示花屏
Vitamio是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染. 使用vitamio进行播放器的开发非常便捷,使用vitamio的解码,自己编写播放器界 ...
- SQLServer添加链接服务器
右键,添加链接服务器 在安全里面输入用户名和密码 添加成功之后的使用方法 select * from [192.168.1.63,3326].[数据库].[dbo].[表]
- 【POJ 1995】 Raising Modulo Numbers
[题目链接] http://poj.org/problem?id=1995 [算法] 快速幂 [代码] #include <algorithm> #include <bitset&g ...
- bzoj2125 最短路——仙人掌两点间距离
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2125 仙人掌!模仿 lyd 的代码写的,也算是努力理解了: 主要分成 lca 在环上和不在环 ...
- 什么是IaaS,PaaS和SaaS及其区别
云计算的三种服务模式:IaaS,PaaS和SaaS Infrastructure(基础设施)-as-a-Service,Platform(平台)-as-a-Service,Software(软件)-a ...
- PCB Winform使用谷歌webkit内核 应用
我们Winfrom界面嵌入网页最常用的是WebBrowser控件,因为微软自带的,使用方便,但在实际使用起来,会遇到各种麻烦(JS,不兼容问题,渲染等问题) 而实际WebBrowser控件内核是微软的 ...
- E20170623-ts
filter n. 滤波器; 滤光器; 滤色镜; [化] 过滤器; mass n. 大量,大多; 块,堆,团; [物理学] 质量; 弥撒曲; assignment n. 分给,分配; 任务, ...