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

Python实现的服务器日志监控脚本

以下是一个Python实现的服务器日志监控脚本,当检测到错误日志时自动发送短信通知。使用Twilio作为短信服务提供商(需先注册账号获取凭证):

import time
import logging
from twilio.rest import Client# 配置日志文件路径
LOG_FILE = "/var/log/nginx/error.log"# Twilio配置(从环境变量获取更安全)
ACCOUNT_SID = "your_account_sid"
AUTH_TOKEN = "your_auth_token"
FROM_NUMBER = "+1234567890"  # 你的Twilio号码
TO_NUMBER = "+0987654321"    # 接收通知的号码# 初始化Twilio客户端
client = Client(ACCOUNT_SID, AUTH_TOKEN)def send_sms_alert(log_entry):"""发送短信通知"""try:message = client.messages.create(body=f"🚨 服务器错误告警: {log_entry[:160]}...",  # 截取前160字符from_=FROM_NUMBER,to=TO_NUMBER)logging.info(f"短信已发送: {message.sid}")except Exception as e:logging.error(f"短信发送失败: {str(e)}")def monitor_logs():"""监控日志文件变化"""last_position = 0while True:try:with open(LOG_FILE, 'r') as f:# 定位到上次读取位置f.seek(last_position)new_lines = f.readlines()last_position = f.tell()for line in new_lines:if "ERROR" in line or "500" in line:  # 检测错误关键词logging.warning(f"检测到错误日志: {line.strip()}")send_sms_alert(line.strip())except FileNotFoundError:logging.error("日志文件不存在")except Exception as e:logging.error(f"监控异常: {str(e)}")time.sleep(60)  # 每60秒检查一次if __name__ == "__main__":logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s')monitor_logs()

使用说明:

  1. 前置要求

    • 安装依赖:pip install twilio
    • 注册Twilio获取ACCOUNT_SIDAUTH_TOKEN
    • 申请Twilio电话号码(FROM_NUMBER
  2. 功能特点

    • 实时监控日志文件变化
    • 当出现"ERROR"或"500"等关键词时触发通知
    • 短信内容自动截断适配SMS长度限制
    • 内置异常处理和日志记录
  3. 部署建议

    • 使用systemd创建守护进程
    • 通过环境变量配置敏感信息:
      export TWILIO_ACCOUNT_SID="your_sid"
      export TWILIO_AUTH_TOKEN="your_token"
      

    • 修改代码中的关键词检测逻辑适配具体日志格式
  4. 安全提示

    • 不要将凭证直接写在代码中
    • 限制接收号码为管理员号码
    • 添加频率限制防止短信轰炸

注意:实际使用时需替换配置参数,并根据服务器日志格式调整错误检测逻辑。对于生产环境,建议添加日志轮转(rotation)处理机制。

http://www.dtcms.com/a/494496.html

相关文章:

  • Git合并冲突解决方法
  • 计算机毕业设计选题推荐:基于SpringBoot和Vue的爱心公益网站
  • 解密Anthropic的MCP Inspector:从协议调试到AI应用开发的全栈架构之旅
  • 数据结构——二十一、哈夫曼树(王道408)
  • Amazon ElastiCache 全解析:打造高性能的智能缓存架构
  • Set数据结构【ES6】
  • 【算法与数据结构】图的遍历与生成树实战:从顶点3出发,DFS/BFS生成树完整代码+流程拆解
  • AI游戏素材创作全攻略
  • 杭州网站app开发公司大连市网站制作电话
  • C标准库--错误信息<errno.h>
  • SpringCloud 获取Feign请求的真实IP地址
  • 目标检测算法在家禽养殖领域中的应用
  • MUI组件库与主题系统全面指南
  • 用 PyTorch 搭建 CIFAR10 线性分类器:从数据加载到模型推理全流程解析
  • 什么是机械设备制造ERP?哲霖软件如何助力企业实现降本增效?
  • 【小白笔记】关于 Python 类、初始化以及 PyTorch 数据处理的问题
  • HTTPS 内容抓取实战 能抓到什么、怎么抓、不可解密时如何定位(面向开发与 iOS 真机排查)
  • Gartner发布数据安全态势管理市场指南:将功能扩展到AI的特定数据安全保护是DSPM发展方向
  • 建站系统的应用场景一条龙搭建网站
  • 公司网站自己做的网站怎么被搜录
  • item_video:获得淘宝商品视频 API 接口实战演示说明
  • appium学习
  • [Linux]学习笔记系列 -- [kernel][irq]softirq
  • 家庭相册私有化:Immich+cpolar构建你的数字记忆堡垒
  • 存储同步管理器SyncManager 归纳
  • 做游戏网站多少钱建设电子商务网站要多少钱
  • iBizModel 实体通知(PSDENOTIFY)模型详解
  • mysql函数大全及举例
  • 人工智能综合项目开发3-----农业病虫害识别dataclean.py
  • R语言手搓一个计算生存分析C指数(C-index)的函数算法