【py脚本+logstash+es实现自动化检测工具】
概述
有时候,我们会遇到需要查看服务器的网络连接或者内存或者其他指标是否有超时,但是每次需要登录到服务器查看会很不方便,所以我们可以设置一个自动脚本化工具自动帮助我们查看,下面我做了一个demo在windows上面。
一、py脚本
import subprocess
import socket
print("hello world")
def execute_wmic_command():
command = "wmic MemoryChip get Capacity,DeviceLocator"
result = subprocess.run(command, shell=True, capture_output=True, text=True)
output_lines = result.stdout.strip().split('\n')[1:] # 去掉标题行
data_list = [line.strip().split() for line in output_lines if line.strip()]
return data_list
# 连接到Logstash并发送数据
def send_to_logstash(data):
host = 'localhost' # Logstash所在主机地址,如果在本地就是'localhost',按需修改
port = 5000 # Logstash监听的端口,根据实际配置修改
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((host, port))
for item in data:
if len(item) == 2:
capacity = item[0]
device_locator = item[1]
message = f'{{"capacity": "{capacity}", "deviceLocator": "{device_locator}"}}\n'
s.send(message.encode('utf-8'))
except socket.error as e:
print(f"Socket error: {e}")
except Exception as ex:
print(f"Other error: {ex}")
if __name__ == "__main__":
wmic_data = execute_wmic_command()
send_to_logstash(wmic_data)
print(wmic_data)
py的版本最好在3.9.0以上。
执行python脚本的命令
python xxx.py
python3 xxx.py
(2)logstash
在logstash中的config创建一个conf文件并写上自己的配置
input {
tcp {
port => 5000 # 对应Python脚本中连接的端口
codec => json_lines # 因为Python脚本发送的是JSON格式每行一条记录的数据,所以用json_lines编解码器解析
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "memory_chip_info"
}
}
logstash启动
cd D:\software\logstash-7.6.2\bin
logstash -f D:\software\logstash-7.6.2\config\myconfig.conf
(3)es
es启动直接双击
D:\es\elasticsearch-7.6.2-windows-x86_64\elasticsearch-7.6.2\bin 的bat文件即可。
当然如果想连接到springboot或者其他工具都是可以的。