monit是一个跨平台的用来监控Unix/linux系统的工具。
主要针对于类Unix系统,好比Linux、BSD、OSX、Solaris等node
能够监控的主要内容:
服务器进程状态
HTTP/TCP状态码
服务器资源变化
文件系统变更linux
同时,能够针对监控的对象,根据条件设置相应的操做。
例如设定邮件报警、重启服务等等。nginx
Monit 易于安装、轻量,但其功能强大。
是充分体现Unix思想的一个理想的监控+自动恢复的工具。
“do one thing and do it well”服务器
注意:Monit是一个开源工具(单机),M/Monit(集中管理)是基于其的收费企业版网络
Linux的源现已经包括了Monit的包,直接使用包管理器安装便可。数据结构
yum install monit 或 sudo apt-get install monit工具
源码安装:
https://bitbucket.org/tildesl...ui
./configure make make installspa
很是简单,在此很少介绍3d
monit -t # 配置文件检测 monit # 启动monit daemon monit -c /var/monit/monitrc # 启动monit daemon时指定配置文件 monit reload # 当更新了配置文件须要重载 monit status # 查看全部服务状态 monit status nginx # 查看nginx服务状态 monit stop all # 中止全部服务 monit stop nginx # 中止nginx服务 monit start all # 启动全部服务 monit start nginx # 启动nginx服务 monit -V # 查看版本
监控对象
对象的详细信息以及告警策略
代码中主要的各个模块
全部监控对象以service进行组织,command 表示针对该service的操做, event表示在该对象上发生的事件(例如告警事件),info为不一样监控对象类型的检验(validate)结果.
Service(监控对象)有如下几种类型,同时列举出了每种对象所监控的内容:
Runtime是运行时相关的各项配置参数,环境变量,控制参数等,包含如下内容:
还有诸如"环境变量","邮箱列表"等其余众多运行时信息
Service info 是每个检查对象的当前检验周期的状态
根据service不一样的种类,又有不一样的结构;
以进程(process)监控举例,包括如下:
其短小精干的指标采集可以知足单机须要,以外,最重要的亮点在于其在监控的同时可以根据条件配置相应的操做(Aciton),
例如:
监控到某个服务在5个检验周期(cycle)挂掉,执行重启操做.
下图为另外一个例子,在检测到某日志文件大于100M时,执行清理脚本.
同时,你们已经发现,为啥其配置文件还带if断定的.这也正式其神奇之处,整个配置文件通过词法分析和语法分析这种黑科技,因此实现了自定义的语法.
对应的文件是:
l.l 词法分析 使用Flex进行处理
p.y 语法分析 使用Yacc进行处理
例如如下代码中,包括了检测进程(process)的配置项解析