Skip to content

Commit faca290

Browse files
committed
2.18.11.07 增加对磁盘的自动发现
1 parent 667bae6 commit faca290

File tree

4 files changed

+26
-7
lines changed

4 files changed

+26
-7
lines changed

bin/mtlsmonitor

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,9 @@ basic_items={
181181
'ThreadsCreated':statu.ThreadsCreated,
182182
'ThreadsRunning':statu.ThreadsRunning,
183183
'Uptime':statu.Uptime,
184-
#为了支持zabbix的自动发现 返回数据类似:{'data': [{'{#MYSQLPORT}': 3306}]}
185-
'discovery':base.mysql_discovery
184+
#为了支持zabbix的自动发现 返回数据类似:{"data": [{"{#MYSQLPORT}": 3306}]}
185+
'MySQLDiscovery':base.mysql_discovery,
186+
'DiskDiscovery':base.disk_discovery
186187
}
187188

188189
#定义mysql主从复制时用到的监控项
118 Bytes
Binary file not shown.

mtls/base.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,16 @@
1212
import logging
1313
import subprocess
1414
import socket
15+
import json
1516

1617
class Discovery(object):
1718
def __init__(self,value):
18-
self.value = value
19+
self._value = value
20+
21+
@property
22+
def value(self):
23+
return json.dumps(self._value)
24+
1925

2026
def is_mysql_port(port):
2127
"""传入一个端口、如果这个端口是MySQL协议用的,那么就返回这个端口,如果不是就返回None
@@ -36,7 +42,7 @@ def is_mysql_port(port):
3642
client_socket.close()
3743

3844
def mysql_discovery(*args,**kwargs):
39-
"""查找主机上的MySQL服务并返回它们的监听的port
45+
"""查找主机上的MySQL服务并返回它们的监听的port {"data": [{"{#MYSQLPORT}": 3306}]}
4046
"""
4147
output = subprocess.check_output(['netstat','-ltn'])
4248
output = output.decode('latin-1').split('\n')[2:-1]
@@ -49,12 +55,23 @@ def mysql_discovery(*args,**kwargs):
4955
port = int(host_and_port[index+1:])
5056
#只有在这个端口是被MySQL占用的情况下才返回
5157
if is_mysql_port(port):
52-
result['data'].append({'{#MYSQLPORT}':port})
58+
result["data"].append({"{#MYSQLPORT}":port})
5359
except Exception as e:
5460
print(e)
5561
exit()
5662
return Discovery(value=result)
5763

64+
def disk_discovery(*args,**kwargs):
65+
result = {"data":[]}
66+
message = subprocess.check_output(['lsblk',])
67+
message = message.decode('latin-1')
68+
for line in message.split('\n'):
69+
if 'disk' in line:
70+
disk_name,*_ = line.split()
71+
result['data'].append({"{#DISKNAME}":disk_name})
72+
return Discovery(value=result)
73+
74+
5875
class ConnectorBase(object):
5976
"""ConnectorBase代表一个与数据库之间的连接
6077
ConnectorBase实例的.cursor属性代表着一个连接到数据库的cursor对象

mtlsmonitor

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,9 @@ basic_items={
181181
'ThreadsCreated':statu.ThreadsCreated,
182182
'ThreadsRunning':statu.ThreadsRunning,
183183
'Uptime':statu.Uptime,
184-
#为了支持zabbix的自动发现 返回数据类似:{'data': [{'{#MYSQLPORT}': 3306}]}
185-
'discovery':base.mysql_discovery
184+
#为了支持zabbix的自动发现 返回数据类似:{"data": [{"{#MYSQLPORT}": 3306}]}
185+
'MySQLDiscovery':base.mysql_discovery,
186+
'DiskDiscovery':base.disk_discovery
186187
}
187188

188189
#定义mysql主从复制时用到的监控项

0 commit comments

Comments
 (0)