当前位置: 首页 > article >正文

【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或者其他工具都是可以的。


http://www.kler.cn/a/449689.html

相关文章:

  • 使用GPT进行SCI论文润色常用语句
  • 解释下什么是面向对象?面向对象和面向过程的区别?
  • .NET Core 中使用 C# 获取Windows 和 Linux 环境兼容路径合并
  • ESP32应用开发-Webserver
  • [Xshell] Xshell的下载安装使用、连接linux、 上传文件到linux系统-详解(附下载链接)
  • DCN-DCN路由器online_list.php存在任意文件读取漏洞
  • 多模态去噪信息收集
  • 本机如何连接虚拟机MYSQL
  • 深入了解 Kubernetes Pod 的状态
  • StarRocks 生产部署一套集群,存储空间如何规划?
  • 【MySQL初阶】--- 库和表的操作
  • (2024.12)Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败>记录
  • gitlab克隆仓库报错fatal: unable to access ‘仓库地址xxxxxxxx‘
  • 【国产NI替代】基于国产FPGA+兆易创新GD32F450的全国产16振动+2转速(24bits)高精度终端采集板卡
  • DeepFaceLab技术浅析(五):面部替换
  • Git(9)之创建新空白分支
  • 【爬虫开发】爬虫开发从0到1全知识教程第11篇:Mongodb数据库,介绍【附代码文档】
  • 力扣第114题:二叉树展开为链表
  • 使用MATLAB判断矩阵是否正定的方法与例程
  • Spring Boot注解总结大全【案例详解,一眼秒懂】
  • Linux网络——网络基础
  • 基于Spring Boot的图书管理系统
  • C语言基础——指针(4)
  • WebRTC服务质量(09)- Pacer机制(01) 流程概述
  • Nautilus源码编译傻瓜式教程一
  • 20241230 基础数学-线性代数-(1)求解特征值(numpy, scipy)