概述
有時候,我們會遇到需要查看服務器的網絡連接或者內存或者其他指標是否有超時,但是每次需要登錄到服務器查看會很不方便,所以我們可以設置一個自動腳本化工具自動幫助我們查看,下面我做了一個demo在windows上面。
一、py腳本
import subprocess
import socketprint("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.pypython3 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或者其他工具都是可以的。