2020-04-03 17:05:31
我们目前想使用zabbix每五分钟监控一个错误日志文件,如果监控到有错误产生,就发邮件告警。像标准的访问日志,如nginx的access log,一行表示一条日志,解析起来比较容易,但当日志不是一行一条时,如tomcat,glassfish的日志,如下:
[2015-07-17T14:24:04.552+0800] [glassfish 4.0] [SEVERE] [AS-WEB-CORE-00037] [javax.enterprise.web.core] [tid: _ThreadID=26 _ThreadName=http-listener-1(3)] [timeMillis: 1437114244552] [levelValue: 1000] [[
An exception or error occurred in the container during the request processing
java.lang.IllegalArgumentException
at org.glassfish.grizzly.http.util.CookieParserUtils.parseClientCookies(CookieParserUtils.java:353)
at org.glassfish.grizzly.http.util.CookieParserUtils.parseClientCookies(CookieParserUtils.java:336)
at org.glassfish.grizzly.http.Cookies.processClientCookies(Cookies.java:220)
at org.glassfish.grizzly.http.Cookies.get(Cookies.java:131)
at org.glassfish.grizzly.http.server.Request.parseCookies(Request.java:1911)
at org.glassfish.grizzly.http.server.Request.getCookies(Request.java:1505)
at org.apache.catalina.connector.Request.parseSessionCookiesId(Request.java:4077)
at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:649)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:297)
]]
这个时候解析起来就相对复杂,我们可以使用如下脚本来取得最近五分钟的日志:
#!/bin/bash # 取得前5分钟时间 LAST_MINUTE=$(date -d '-5 minute' +%H%M%S) # 初始化日志条数 LOG_NUM=0 # 最大获取日志条数 MAX_LOG=3 # 初始化最终匹配日志 LOG_CONTENT="" # 初始化包含时间行的匹配值 LOG_DATE_MATCH=false # 设置日志路径 LOG_PATH="/data/log/glassfish/domain1/server.log" while read line;do # 匹配包含时间的行 if echo "$line" | grep -q '^[20';then # 根据包含时间行获取出特定时间格式,如181320 date_time=$(echo $line | grep -E -o "[0-9]{2}:[0-9]{2}:[0-9]{2}" | tr -d ':') date_time=$(echo $date_time | sed 's/^0//') LAST_MINUTES=$(echo $LAST_MINUTES | sed 's/^0//') # 当前行的时间是否大于5分钟前的时间 if [[ "$date_time" -gt "$LAST_MINUTE" ]];then LOG_CONTENT="$LOG_CONTENT $log_entry" ((LOG_NUM++)) LOG_DATE_MATCH=true log_entry="$line " else LOG_DATE_MATCH=false continue fi else # 只当前面日志时间满足条件时才设置log_entry值 if $LOG_DATE_MATCH;then log_entry="$log_entry $line" fi fi # 限制最大获取行数 if [[ "$LOG_NUM" -gt "$MAX_LOG" ]];then break fi done < $LOG_PATH # 输出全部日志 echo -n -e "$LOG_CONTENT"
前面的脚本按顺序读取的,但当日志文件比较大时,获取日志的效率就非常低了,所以推荐下面倒序读取日志的方法,更高效。
#!/bin/bash # 取得前5分钟时间 LAST_MINUTE=$(date -d '-5 minute' +%H%M%S) # 初始化日志条数 LOG_NUM=0 # 最大获取日志条数 MAX_LOG=3 # 初始化最终匹配日志 LOG_CONTENT="" # 设置日志路径 LOG_PATH="/data/log/glassfish/domain1/server.log" while read line;do # 匹配包含时间的行 if echo "$line" | grep -q '^[20';then # 根据包含时间行获取出特定时间格式,如181320 date_time=$(echo $line | grep -E -o "[0-9]{2}:[0-9]{2}:[0-9]{2}" | tr -d ':') # 当前行的时间是否大于5分钟前的时间 if [[ "$date_time" > "$LAST_MINUTE" ]];then ((LOG_NUM++)) log_entry="$line $log_entry" LOG_CONTENT="$LOG_CONTENT $log_entry" else break fi log_entry="" else log_entry="$line $log_entry" fi # 限制最大获取行数 if [[ "$LOG_NUM" > "$MAX_LOG" ]];then break fi done < <(tac $LOG_PATH) # 输出全部日志 echo -n -e "$LOG_CONTENT"
之后就可以在zabbix添加一个监控项用来获取日志内容,触发器就使用{itemName.strlen(0)}#0表达式来检测获取到的日志内容是否不为空。itemName为监控项名称。
zabbix监控Memcached状态
04-13
docker部署zabbix监控系统(nginx mysql)
06-28
使用zabbix监控K8s(kubernetes)异常POD
03-13
zabbix配置percona的插件获取更详细的mysql监控信息
03-16
使用zabbix自动发现自动监控多tomcat实例
05-16
使用 logstash + kafka + elasticsearch 实现日志监控
03-09
格式化MINI SD卡的方法?
03-20
zabbix3.0监控Apache2.4服务器状态
07-17
zabbix3监控Nginx性能状态
04-09
zabbix使用Pycurl模块监控web页面状态
06-23
Bouyei.Geo 1.0 GIS 空间格式处理解析发布
04-26
CentOS 7 时间同步
03-25
Docker run参考(1) – 一般格式
05-13
Dockerfile参考(2) – 格式
05-31
Docker命令行参考(21) – docker logs获取容器的日志
02-27
Fluentd日志同步软件入门教程
05-22
Flutter 日期时间DatePicker控件及国际化
03-19
Linux date显示或设定系统的日期与时间命令详解
04-04
Linux rdate显示其他主机的日期与时间命令详解
06-05
Linux系统SureHA 2.0集群磁盘资源/镜像磁盘资源FSCK设置导致启动时间过长的解决办法
05-18
Directory Monitor汉化版 (文件夹监控软件) v 2.12.1.3 汉化破解版
6.5M
下载OpenWebMonitor(网页监控软件) v4.3.5 破解版
51.1M
下载Sidebar Diagnostics(电脑硬件监控软件) v3.5.9 官方版
3.73M
下载TP-LINK安防系统(远程视频监控软件) v2.10.5.138 电脑版
107.4M
下载advanced rar password recovery(RAR文件格式密码破解工具) V4.54 官方版
4.3M
下载flv播放器(flv视频格式文件播放工具) 2021 免费版
1.10MB
下载mp3cutter(音频格式处理软件)v4.3.0 免费版
14.7M
下载sdformatter(SD卡格式化工具)V4.0 官方版
406.7K
下载vcf(文件格式转换软件) v1.0 官方版
2.1M
下载windmencoder(视频格式转换工具) v2.1.0.0 绿色版
19.2M
下载嗨格式录音大师(电脑录音软件) v1.0.33.97 免费版
48.39MB
下载效能时间管理下载
15.5MB
下载海康播放器(监控录像专用的视频播放器)V7.4.2 官方版
24.9M
下载烁光PDF转换器(文件格式转换工具) v1.2.2.0 免费版
42.46 MB
下载电脑时间同步器下载
895K
下载长角牛网络监控机下载
2.8M
下载闪电音频格式转换器下载
34.7MB
下载Apowersoft视频转换王下载
973KB
下载Desktopcal桌面日历 v2.2.32.4330
3.42 MB
下载Kainet LogViewPro下载
5.9M
下载