【python小脚本】监听日志文件异常数据发送告警短信

简介: 老项目中有个用脚本启动的服务,很重要,用来做业务留痕的,涉及业务客户经常性投诉,是找第三方做的,时间长了维护需要花钱,老出各种未知bug,没办法处理所以机器上配了定时任务,定期的几天重启一次来解决。但是有时候不知道什么原因,重启脚本运行,服务没起来,crond 也没有什么调度机制。希望写个脚本做监控,当发现服务没起来,发送告警信息,或者重启服务。

我的需求:

  • 老项目中有个用脚本启动的服务,很重要,用来做业务留痕的,涉及业务客户经常性投诉,是找第三方做的,时间长了维护需要花钱,老出各种未知bug,没办法处理所以机器上配了定时任务,定期的几天重启一次来解决。
  • 但是有时候不知道什么原因,重启脚本运行,服务没起来,crond 也没有什么调度机制。
  • 希望写个脚本做监控,当发现服务没起来,发送告警信息,或者重启服务。

我需要解决的问题:

  • 这里需要考虑的问题,如何在服务死掉后触发这个告警或者重启服务的动作,即健康监测的手段是什么?
  • 常见的手段比如心跳探针 之类,心跳即服务定时向外发送存活信息,探针即外部监听者,定时向服务发送存活询问。

我是这样做的:

  • 目前的解决办法是通过检索 日志来 触发,类似一种探针的手段,定时读取日志文件来确认存在当天的日志来确认服务正常,通过执行命名的返回值确认。类似下面这样
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$grep Pod demo.yaml
kind: Pod
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$echo $?
0
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$grep pod demo.yaml
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$echo $?
1
  • 也可以使用常见的判断方式,比如考虑重启时指定 PID,然后通过 PID 进程存在来判断,或者直接通过 启动命名 来匹配进程是否存在
┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create]
└─$pgrep etcd
2507
  • 如果希望 systemd 管理,可以把 启动脚本写成一个 Service unit,通过 systemctl 相关命令来判断服务存在,类似systemctl show httpd -p ActiveState 这样
  • 实现方式考虑 shellpython 脚本。需要配置为定时任务

傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波


下面为一个python 写的 Demo,通过监听日志文件中是否存在指定日期的日志来触发动作,这里插表发送短信。

主要利用 pythonsubprocess 模块来执行命令,这是一个自带的模块,当命名返回值不为0 的时候,会报异常,然后通过 命令来发送执行 SQL install 操作。

前提是机器需要有 python 环境,同时需要有 mysql 客户端,当然连接 mysql 也可以通过python实现,但是需要装对应的模块。

当然这里 grep 的触发方式很简单,如果使用下面的脚本,只能判断当天日志存在,如果精确到时间需要修改正则匹配。

需要注意的是,这并不是一个完全可信任的方式,当sql连接异常就无法做到监听的目的。同时需要考虑正则匹配的偶然性。

# -*- encoding: utf-8 -*-
"""
@File    :   ipcc_log_mis.py
@Time    :   2022/10/13 17:27:15
@Author  :   Li Ruilong
@Version :   1.0
@Contact :   1224965096@qq.com
@Desc    :   IPCC日志监控
             如果日志文件不存在,或者当天的日志没有,会发送告警短信
"""

# here put the import lib


import subprocess

parser = argparse.ArgumentParser(description='简单的日志监控:如果命令失败或者不是成功状态码,执行对应的操作')



try:
    com = 'tail -n 10 /home/****/RecordUser.log | grep -i $(date +%m-%d)'
    out_bytes = subprocess.check_output(com, shell=True)
    out_bytes = out_bytes.decode('utf-8')
    # print out_bytes
except subprocess.CalledProcessError as e:
    out_bytes = e.output  # Output generated before error
    line = 'mysql -h 192.168.50.187 -P 3306 -u PT90  *************   --database cloud -A  -e"{sql}" > /dev/null 2>&1'
    sql = "insert into nm_sms_send (accNbr,smsContent,spId) values ('181****5370','【XX平台】IPCC 日志异常,监控不到当天日志。请排查,$(date)',1);"
    sql += "insert into nm_sms_send (accNbr,smsContent,spId) values ('153****7834','【XX平台】IPCC 日志异常,监控不到当天日志。请排查,$(date)',1);"
    line = line.format(sql=sql)
    subprocess.check_output(line, shell=True)
  • 理解不足之处小伙伴帮忙指正,生活加油 ^_^
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
265 2
|
9月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
7274 1
|
9月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
730 0
|
9月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
9月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
10月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
10月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
10月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
10月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
10月前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。

推荐镜像

更多