monit-日志监控工具
前段时间,CTO下达了一个brief,需要搭建monit日志监控应用,匹配日志中的异常信息,自动发送邮件/微信告警。具体的要求如下:
1.监控***项目的各个应用,nginx的日志,匹配到错误时发送告警
2.监控***项目的各个应用,NGINX的日志,匹配到错误时发送告警
3.搭建mmonit的商业版本dashboard,开放到内网可以访问
于是,开始了我的monit搭建和使用。首先简单介绍下monit的特点:
Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,适用于Linux/Unix平台。 它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原因导致的软件错误,同时Monit 包含一个内嵌的 HTTP(S) Web 界面,你可以使用浏览器方便地查看 Monit 所监视的服务器
日志告警的需求:
定期监控日志文件,如每个3s一次;
检查日志文件是否有匹配某些关键词的内容,如 error, warning, exception;
每次只做增量检查,满足检查条件时发送告警;
告警条件可以排除某些条件,减少误报;
避免泛洪式告警:每一个周期的检查,即使命中多行,也只发送一次告警,告警中把当前周期检查到的匹配内容全部发出;
告警同时发送到邮件,以及实时IM,如Slack;
在centos7下安装monit也特别简单。
yum -y install monit
需要注意的是CentOS 可能需要安装epel源才能有这个软件包,所以这里加入一个epel源。
查看默认配置文件:
# vim /etc/monitrc
set
daemon 120
# 默认每隔两分钟检测一次
set
logfile syslog facility log_daemon
#默认monit日志为syslog
set
idfile
/var/
.monit.
id
#设置Monit监控项目的唯一id文件位置,默认在$HOME/.monit.id
set
statefile
/var/
.monit.state
#默认存储每个周期内monitorinig 状态的文件
set
mailserver mail.bar.baz,
# 默认的主邮件服务器
mailserver 支持格式为:
SET MAILSERVER <
hostname
|ip-address [PORT number] [USERNAME string] [PASSWORD string] [using SSLAUTO|SSLV2|SSLV3|TLSV1|TLSV11|TLSV12] [CERTMD5 checksum]>, ...
[with TIMEOUT X SECONDS]
[using HOSTNAME
hostname
]
例如:
set
mailserver smtp.gmail.com port 587 username
"user@domain.com"
password
"password"
using tlsv1 with timeout 30 seconds
set
eventqueue
#默认当邮件服务器不可用时使用eventqueue存储报警事件
basedir
/var/monit
slots 100
#限制队列大小
set
mail-
format
{
from: monit@foo.bar
reply-to: support@domain.com
subject: $SERVICE $EVENT at $DATE
message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
Yours sincerely,
monit
}
set
alert sysadm@foo.bar
# receive all alerts
set
httpd port 2812 and
# 引用monit自己封装的web server来监控monit的监控项目状态;
use address localhost
# only accept connection from localhost
allow localhost
# allow localhost to connect to the server and
allow admin:monit
# require user 'admin' with password 'monit'
allow @monit
# allow users of group 'monit' to connect (rw)
allow @
users
readonly
# allow users of group 'users' to connect readonly
include
/etc/monit
.d/*
# cat /etc/monitrc
set daemon 15 # check services at 2-minute intervals
set logfile /var/log/monit.log
set idfile /var/.monit.id
set statefile /var/.monit.state
set mailserver smtp.bsitt.cn
username "bs_monitor@bsitt.cn" password "*****"
with timeout 15 seconds
set eventqueue
basedir /var/monit # set the base directory where events will be stored
slots 100 # optionally limit the queue size
set mail-format {
from: bs_monitor@bsitt.cn
subject: Monit Alert -- Host $HOST 's $SERVICE $DESCRIPTION
message:
Date: $DATE
Action: $ACTION
Host: $HOST
Description:
Host $HOST 's $SERVICE $DESCRIPTION
$EVENT Service $SERVICE
$DESCRIPTION
}
#set alert 821903919@qq.com # receive all alerts
#set alert 1683804030@qq.com
set alert pmp.operating@boldseas.com
set httpd port 2812 and
allow localhost
allow 116.90.**.**
allow 116.90.**.**
# allow 192.168.3.0/24
allow boldseas:boldseas
include /etc/monit.d/*
这里需要注意的是,上面配置的邮件服务server需要用到用户名密码认证,能力强的同学可以内网搭建一个邮件系统,觉得麻烦的同学可以用腾讯邮箱或者126...balabala
最后一项include /etc/monit.d/* 是定义监控项目配置文件放置的位置;我们需要监控哪些项目其配置文件就可以放在这里
下面是各个monit.d下的配置
# cat /etc/monit.d/pmp_web.conf
check file nginx_pmpweb_error_log with path /data/logs/nginx/pmp_web_error.log
ignore match "^monit"
if match "(warning|error)" then alert
# cat /etc/monit.d/nginx.conf
#check file nginxlog with path /data/tengine/logs/access.log
check file nginx_error_log with path /data/tengine/logs/error.log
ignore match "^monit"
if match "(warn|error)" then alert
配置文件有了,接下来检测一下语法对不对呢:
[root@PMP-DB pmpuser]# monit -t
Control file syntax OK
启动monit:
[root@PMP-DB pmpuser]# systemctl restart monit
注意:
如果你的系统里有防火墙,这里需要添加防火墙规则;
monit的配置文件中有一个自带的web server用来监控monit里面的监控项目的状态,有个默认端口2812,如果没修改的话就添加2812端口的规则,如果修改了就添加你修改后的端口防火墙规则;
monit默认2812端口规则:
# vim /etc/sysconfig/iptables
-A INPUT -p tcp --dport 2812 -j ACCEPT
接下来在浏览器里测试访问monit的状态:
http:
//192
.168.3.5:11111/
输入配置文件中的账号和密码:username password
尽情enjoy吧!
附带一张monit 日志报警邮件
monit-日志监控工具的更多相关文章
- Tomcat日志监控工具——Probe
今天遇到项目运行过程中需要查看用户访问日志,log4j.properties配置好,将log日志输出到tomcat的log文件夹下,但不可能每次都去服务器上拉取log文件查看,网上找了下,发现一个日志 ...
- Monit : 开源监控工具介绍
· Monit 简介 Monit是一个轻量级(500KB)跨平台的用来监控Unix/linux系统的开源工具.部署简单,并且不依赖任何第三方程序.插件或者库. Monit可以监控服务器进程.文件.文件 ...
- Nginx日志监控工具
ngxtop是一个基于python的程序,可以在Python上安装.ngxtop通过实时解析nginx访问日志, 并将结果(nginx服务器的有用指标)输出到终端. 主要的功能 当前有效请求 总请求计 ...
- 日志监控工具安装:windows上安装elk
Elasticsearch + Kibana + logstash for windows 安装 https://blog.csdn.net/u011781521/article/de ...
- 80 多个 Linux 系统管理员的监控工具
原文出处: serverdensity 译文出处:Linux中国 随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中 ...
- 80 多个 Linux 系统管理员必备的监控工具
随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...
- Linux系统管理员必备的监控工具(88款)
随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...
- 88个 Linux 系统管理员必备的监控工具
随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...
- 非常实用的Linux 系统监控工具
随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...
随机推荐
- finereport连接mysql8.0的解决办法
1.具体连接操作 首先将mysql-connector-java-8.0以上的jar包放到FindReport安装目录下的webapps下的WEB-INF下的lib下. 打开finereport,找到 ...
- JS 数组的常用方法详解归纳之改变原数组方法
shift() 把数组的第一个元素从其中删除,并返回第一个元素的值, 如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值.请注意,该方法不创建新数组,而是直接修改 ...
- sprintf()函数可能发生的错误
接收到如下数据: GET http://app.tdvpn.com/heartbeat?mac=898607B81017AT+CIPSTATUS? &status=/ HTTP/1.1 Hos ...
- 解决IDEA中自动生成返回值带final修饰的问题
修改配置文件: Editor--Code Style--Java--Code Generation--将Make generated local variables final勾选上
- Python 入门之 推导式
Python 入门之 推导式 推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式 1.推导式 (1)列表推导式 : <1> 普通循环: [变量 for循环] print([i f ...
- JVM — 性能调优
概念: 一:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.” ...
- linux:shell脚本格式
shell脚本格式: #!/bin/bash //第一行指定bash 命令群..... 例子: #!/bin/bash DESCDIR='/tmp/t ...
- 批处理遍历文件夹执行git pull
echo off & color 0A for /d %%f in (D:\www\*) do ( D: cd %%f chdir git pull ) pause 遍历D:\www\这个文件 ...
- 如何将一个.NET Core类库发布到NuGet
包治百病 | 如何将一个.NET Core类库发布到NuGet 写文章 包治百病 | 如何将一个.NET Core类库发布到NuGet Edi Wang发表于汪宇杰博客订阅 77 NuGet是.NET ...
- SQLSERVER还原数据库失败:错误: 3154
在SQL Server 2008版本中还原从sql server 2005备份出来的数据库时,提示错误:“备份集中的数据库备份与现有的 '***' 数据库不同.RESTORE DATABASE 正在异 ...