监控平台搭建(6)-日志告警
tbghg

监控平台搭建(6)-日志告警

前言

日志告警通常是使用ELK(Elasticsearch、Logstash 和 Kibana)来做的

  • ELK:查看日志、日志告警
  • Prometheus:查看指标、指标告警

两个系统负责的不是同一种东西,按理说应该上ELK,但是它的体量太大

此次需求需要对日志进行监控,同时项目较为小型,使用轻量化的mtail监控日志即可

介绍

mtail是一个google开发的日志提取工具,它从 应用程序日志 中提取指标以导出到 时间序列数据库 或 时间序列计算器,用于警报和仪表板

简单来说,整个过程为:mtail实时读取应用程序的日志,根据用户编写的脚本实时分析,最终生成时间序列指标了,Prometheus拉取mtail暴露的指标

官方地址

配置与使用

1
2
3
4
5
6
7
8
9
10
11
12
13
curl -LO https://github.com/google/mtail/releases/download/v3.0.7/mtail_3.0.7_linux_amd64.tar.gz
tar -xzf mtail_3.0.7_linux_amd64.tar.gz
sudo mv mtail_3.0.7_linux_amd64/ /usr/local/mtail/
mkdir mtails
cd mtails

vim test.mtail

counter error_log_count by file,date,info

/\[(?P<date>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]\[error\],(?P<info>.*)/ {
error_log_count[getfilename()][$date][$info]++
}

先来逐行解释下test.mtail的内容,具体的mtail语法可参考:mtail详解官方文档

1
2
3
4
5
6
7
8
# 声明error_log_count,指出类型counter,说明包含file,date,info三种标签
counter error_log_count by file,date,info

# 正则匹配日期,?P<date>接收日期,之后通过$date使用
# ?P<info>匹配这行后面的所有内容
/\[(?P<date>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]\[error\],(?P<info>.*)/ {
error_log_count[getfilename()][$date][$info]++
}

配置自启动,注意此处的logs需要根据实际情况替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo vim /usr/lib/systemd/system/mtail.service

[Unit]
Description=mtail
After=network.target

[Service]
WorkingDirectory=/usr/local/mtail
ExecStart=/usr/local/mtail/mtail -port 9150 --progs /usr/local/mtail/mtails/ --logs /usr/local/mtail/logs/*.log
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

进行验证:

1
2
3
4
5
6
echo "[2088-11-09 23:25:31][error],[object Promise] reason:TypeError: Cannot read properties of undefined (reading 'area')
at /data/server/server-2022-11-02-19-49-41-627-ver-07b1a29930153101e4feb0ff39e760903d9e5cbe/Project/Servers/wbScene/worldScene/EntityComponent/ComponentTrade.js:139:64
at Array.forEach (<anonymous>)
at ComponentTrade.autoTradeAction (/data/server/server-2022-11-02-19-49-41-627-ver-07b1a29930153101e4feb0ff39e760903d9e5cbe/Project/Servers/wbScene/worldScene/EntityComponent/ComponentTrade.js:133:16)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)" >> apple.log

http://192.168.227.129:9150/

image

发现mtail文件编译通过

image

指标中有 时间、错误信息、日志文件、mtail文件,配置告警时,可以简单阐述错误情况

参考资料

 评论
评论插件加载失败
正在加载评论插件