简介
monit是一个跨平台的用来监控Unix/linux系统的工具。
主要针对于类Unix系统,比如Linux、BSD、OSX、Solaris等
可以监控的主要内容:
服务器进程状态
HTTP/TCP状态码
服务器资源变化
文件系统变动
同时,可以针对监控的对象,根据条件设置相应的操作。
例如设定邮件报警、重启服务等等。
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...
./configure make make install
非常简单,在此不多介绍
基本命令
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(监控对象)有以下几种类型,同时列举出了每种对象所监控的内容:
- 文件系统:容量,uid/gid, 权限,inode, 读写速率
- 目录: 权限,uid/gid
- 进程: 时间,cpu, mem, 子进程,磁盘读写等
- 主机: 端口拨测
- 系统: 系统的基本指标
- Fifo:待补充
- 程序: 脚本返回状态
- 网络: link up/down, link capacity changes, bindwidth等
Runtime是运行时相关的各项配置参数,环境变量,控制参数等,包含以下内容:
- 状态文件:id,pid,状态文件(state),control(配置文件),日志
- 运行状态:运行中,停止,守护进程等等
- 检查周期:检查周期,初次启动时的延迟时间
- 系统基本:基础系统信息
- HTTP API:HTTP设置
还有诸如"环境变量","邮箱列表"等其他众多运行时信息
Service info 是每一个检查对象的当前检验周期的状态
根据service不同的种类,又有不同的结构;
以进程(process)监控举例,包括以下:
- 进程的各项id
- 内存
- cpu
- uptime
- I/O
- 等等
亮点
其短小精干的指标采集能够满足单机需要,之外,最重要的亮点在于其在监控的同时能够根据条件配置相应的操作(Aciton),
例如:
监控到某个服务在5个检验周期(cycle)挂掉,执行重启操作.
下图为另一个例子,在检测到某日志文件大于100M时,执行清理脚本.
同时,大家已经发现,为啥其配置文件还带if判定的.这也正式其神奇之处,整个配置文件经过词法分析和语法分析这种黑科技,所以实现了自定义的语法.
对应的文件是:
l.l 词法分析 使用Flex进行处理
p.y 语法分析 使用Yacc进行处理
例如以下代码中,包括了检测进程(process)的配置项解析
- 待补充
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。