Elasticsearch检测索引数据的脚本

1、有天需要写一个脚本,然后写了一个shell的脚本,测试了一下不太行,觉得还是用python比较好实现点,当时引入了Elasticsearch和requests模块
以下是检测Elasticsearch中applog索引中包含error2589的内容使用钉钉发送警报的代码

import datetime
from elasticsearch import Elasticsearch
import requests

# Elasticsearch配置
es = Elasticsearch(["localhost:9200"])

# 计算最近3分钟的时间范围,查询当前3分钟的数据
current_time = datetime.datetime.utcnow()
one_minute_ago = current_time - datetime.timedelta(minutes=3)

# 构建Elasticsearch查询语句
query = {
    "query": {
        "bool": {
            "filter": [
                {"range": {"@timestamp": {"gte": one_minute_ago.isoformat()}}},
                {"match_phrase": {"rest": "- error2589"}}
            ]
        }
    },
    "sort": [{"@timestamp": {"order": "desc"}}],
    "size": 1
}

# 在索引中执行查询
index_name = "applog" 
result = es.search(index=index_name, body=query)

# 如果有符合条件的结果
if result["hits"]["total"]["value"] > 0:
    # 获取最近一次的内容
    recent_error = result["hits"]["hits"][0]["_source"]["rest"]

    # 发送钉钉报警
    webhook_url = "https://oapi.dingtalk.com/robot/send?access_token=??"
    headers = {"Content-Type": "application/json"}
    data = {"msgtype": "text", "text": {"content": f"发生报警:{recent_error}"}}
    
    response = requests.post(webhook_url, json=data, headers=headers)
    
    if response.status_code == 200:
        print("报警已发送")
    else:
        print("报警发送失败")
else:
    print("最近1分钟内没有包含名为error2589的内容")

2、然后我想手动执行一下,就使用命令去执行

python3 es.py

然后报错
Traceback (most recent call last):
File “es报警.py”, line 3, in
from elasticsearch import Elasticsearch
ModuleNotFoundError: No module named ‘elasticsearch’
报错显示没有elasticsearch的模块
1.那么我们使用以下命令进去去安装(看你自己的es版本)

pip install elasticsearch==7.15.0

2.但是我的是centos系统不能直接进行去安装,我们得再python的环境中去进行安装,这时候我们就要创建一个python的虚拟环境(我实在home目录下执行的)

python3 -m venv myenv

3.然后激活

source myenv/bin/activate

4.此时已进入虚拟环境,可以在其中安装和使用 Python 包。安装 elasticsearch 包

pip install elasticsearch

5.在虚拟环境中运行你的脚本:

python es.py

成功执行
3、脚本当然不能一直手动去执行吧,这时候我们就需要用电脑自带的命令执行
1.打开终端编写

crontab -e

2.在打开的文本编辑器中,添加以下行来每分钟执行你的脚本。请注意替换路径为你的脚本的实际路径。

* * * * * /home/myenv/bin/python3 /home/es.py

注:/home/myenv/bin/python3这个路径是你刚才创建的虚拟环境的路径,要不然执行不了
这每小时的每分钟执行一次脚本。可以根据需要调整执行频率,例如使用0,15,30,45 * * * *来每15分钟执行一次。
ok,到此结束
随手记录,也不知道起个啥标题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值