Monit
app-admin/monit 是一个管理和监控 UNIX 系统进程、程序、文件、目录和文件系统的工具。
配置
安装 monit
app-admin/monit 应用有以下 USE flags:
USE flags for app-admin/monit Monitoring and managing daemons or similar programs running on a Unix system
确定了 USE 标记后,可以通过 emerge 安装 app-admin/monit:
root #
emerge --ask app-admin/monit
Monit 配置文件
Monit 程序使用 /etc/monitrc 作为配置文件。
为了更方便地添加和删除监控选项,emerge 支持在配置文件中包含指定目录下的文件(通常是 /etc/monit.d)。若要启用此特性,可以像下面那样编辑 /etc/monitrc 文件:
## It is possible to include additional configuration parts from other files or
## directories.
include /etc/monit.d/*
当修改了 Monit 配置文件后,可以使用下面的命令让 emerge 重新读取配置设定:
root #
monit reload
开机自动启动 Monit
推荐通过 /etc/inittab 启动 monit,这样的话 init 会启动 monit,并且会在 monit 突然死掉的时候自动重启。通过 init 脚本启动 monit 将不会提供这一功能。
# Run monit in standard runlevels
mo:2345:respawn:/usr/bin/monit -Ic /etc/monitrc
更新 /etc/inittab 之后, 可以通过 telinit q 立即启动 monit。
用户管理
加入 monit 或者 users 用户组的用户可以通过 monit 的 web 界面进行操作。
使用 gpasswd 将用户添加到任一用户组:
root #
gpasswd -a $USER monit
root #
gpasswd -a $USER users
/etc/monitrc 文件中, allow
语句应当指向这些用户组,例如:
set httpd port 2812
allow @monit
allow @users
也可以在 monitrc 文件中使用硬编码的用户名和密码,但是不推荐这样设置。检查 monitrc 文件中的默认密码,删除它们,或者替换成更强大的、唯一的密码。使用的语法是 allow <username>:<password>
。
Monit web 界面
默认的 web 界面的地址是 localhost:2812,用户名是 admin
,默认密码是 monit
。请确保修改密码!
通过 monit 监控应用
Monit 使用 PID 文件来检查应用是否运行。这意味着要监控的程序“必须”有 PID 文件,否则 monit
无法保护它。如果一个守护进程不会创建 PID 文件,使用 wrapper 创建一个。
通过使用 /etc/monit.d/ 目录,可以很方便的添加额外的监控规则。
例如,在 MySQL 死掉的时候自动重启:
check process mysql with pidfile /var/run/mysqld/mysqld.pid
start program = "/bin/bash -c 'rc-service mysql start'"
stop program = "/bin/bash -c 'rc-service mysql stop'"
另一个例子是管理进程的内存使用量,在超过某一阈值的时候创建一个警告:
check process squid with pidfile /run/squid.pid
start program = "/bin/bash -c 'rc-service squid start'"
stop program = "/bin/bash -c 'rc-service squid stop'"
if totalmem > 512 MB then alert
调试 monit
前台运行 monit
使用 -Ivv
选项在前台运行 monit 并查看它检测到的一切反馈:
root #
monit -Ivv
... 'squid' total mem amount of 525748kB matches resource limit [total mem amount>524288kB]
外部资源
关于 Monit 的更多信息,下面的资源会有所帮助。
参考
- ↑ Greg Wooledge. Process management, Retrieved on January 1st, 2015