莫尼特码头工人
monit-docker的Python项目详细描述
monit docker项目
monit docker是一个免费的开源程序,我们开发它来监视容器状态或资源 并在容器内执行一些命令或使用dockerd管理容器,例如:
- 如果内存使用率过高,请重新加载php fpm
- 如果状态不是running,则重新启动容器
- 取出所有容器
快速启动
在docker中使用monit docker和crond
docker-compose up -d
请参阅docker-compose.yml和MONIT_DOCKER_CRONS环境变量以配置命令
环境变量
Variable | Description | Default |
---|---|---|
^{ | Configuration file contents (e.g. ^{ | |
^{ | Configuration file path | /etc/monit-docker/monit-docker.yml |
^{ | Log file path | /var/log/monit-docker/monit-docker.log |
监视子命令
简单命令
如果内存使用率为60%或cpu使用率为90%,则重新启动名称以foo开头的容器:
monit-docker monit --name 'foo*' --cmd-if 'mem_percent > 60 ? restart' --cmd-if 'cpu_percent > 90 ? restart'
停止名称以bar或foo开头且CPU使用率大于60%且小于70%的容器:
monit-docker monit --name 'bar*' --name 'foo*' --cmd-if '60 > cpu_percent < 70 ? stop'
终止名称以bar开头且状态等于pause或running的容器:
monit-docker monit --name 'bar*' --cmd-if 'status in (pause,running) ? kill'
您还可以使用状态参数,例如,重启具有状态暂停或退出状态的容器:
monit-docker -s paused -s exited monit --cmd 'restart'
在图像名为contains/php fpm/的容器中运行命令,如果内存使用量为>;100 mib:
monit-docker --image '*/php-fpm/*' monit --cmd-if 'mem_usage > 100 MiB ? (kill -USR2 1)'
带有配置文件或环境变量monit_docker_config的高级命令
使用配置文件中声明的别名运行命令(例如:monit-docker.yml.example):
如果条件alias@status\u not\u running为true,则重新启动容器id 4c01db0b339c:
monit-docker monit --id 4c01db0b339c --cmd-if '@status_not_running ? restart'
执行命令alias@start_如果condition alias@status_not_running为真,则名称以foo开头的暂停容器将以foo开头:
monit-docker monit --name 'foo*' --cmd-if '@status_not_running ? @start_pause'
如果状态等于running:
monit-docker --ctn-group php monit --cmd-if 'status == running ? @remove_force'
如果内存使用百分比>;10%和CPU使用百分比>;60%,则重新启动容器组nodejs:
monit-docker --ctn-group nodejs monit --cmd-if '@mem_gt_10pct_and_cpu_gt_60pct ? restart'
移除强制所有容器:
monit-docker monit --cmd '@remove_force'
容器状态
运行命令以获得名为FuuHyPHPfFPM的容器的退出代码的状态:
monit-docker --name foo_php_fpm monit --rsc status
Exit code | Description |
---|---|
0 | Running |
10 | Created |
20 | Paused |
30 | Restarting |
40 | Removing |
50 | Exited |
60 | Dead |
114 | Not found |
容器CPU使用率
运行命令,以容器的退出代码获取CPU使用百分比,称为FooHyPHPFFPM:
monit-docker --name foo_php_fpm monit --rsc cpu_percent
容器内存使用百分比
运行命令以获取名为FuuHyPHPfFPM的容器的退出代码的内存使用百分比:
monit-docker --name foo_php_fpm monit --rsc mem_percent
带M/monit
的monit docker我们还可以使用M/Monit监视容器cpu%和mem%资源
配置示例
check program docker.foo_php_fpm.status with path "/usr/bin/monit-docker --name foo_php_fpm monit --rsc status"
group monit-docker
if status = 114 for 2 cycles then alert # container not found
if status != 0 for 2 cycles then exec "/usr/bin/monit-docker --name foo_php_fpm monit --cmd restart" # container not running
check program docker.foo_php_fpm.cpu with path "/usr/bin/monit-docker -s running --name foo_php_fpm monit --rsc cpu_percent"
group monit-docker
if status > 100 for 2 cycles then alert
if status > 70 for 2 cycles then alert
if status > 80 for 4 cycles then exec "/usr/bin/monit-docker --name foo_php_fpm monit --cmd reload"
check program docker.foo_php_fpm.mem with path "/usr/bin/monit-docker -s running --name foo_php_fpm monit --rsc mem_percent"
group monit-docker
if status > 100 for 2 cycles then alert
if status > 70 for 2 cycles then alert
if status > 80 for 4 cycles then exec "/usr/bin/monit-docker --name foo_php_fpm monit --cmd '(kill -USR2 1)'"
stats子命令
简单命令
check program docker.foo_php_fpm.status with path "/usr/bin/monit-docker --name foo_php_fpm monit --rsc status"
group monit-docker
if status = 114 for 2 cycles then alert # container not found
if status != 0 for 2 cycles then exec "/usr/bin/monit-docker --name foo_php_fpm monit --cmd restart" # container not running
check program docker.foo_php_fpm.cpu with path "/usr/bin/monit-docker -s running --name foo_php_fpm monit --rsc cpu_percent"
group monit-docker
if status > 100 for 2 cycles then alert
if status > 70 for 2 cycles then alert
if status > 80 for 4 cycles then exec "/usr/bin/monit-docker --name foo_php_fpm monit --cmd reload"
check program docker.foo_php_fpm.mem with path "/usr/bin/monit-docker -s running --name foo_php_fpm monit --rsc mem_percent"
group monit-docker
if status > 100 for 2 cycles then alert
if status > 70 for 2 cycles then alert
if status > 80 for 4 cycles then exec "/usr/bin/monit-docker --name foo_php_fpm monit --cmd '(kill -USR2 1)'"
以json格式获取所有容器的所有资源统计信息:
monit-docker stats --output json
{"flamboyant_chaplygin":{"status":"running","mem_percent":0.03,"net_tx":"0.0 B","cpu_percent":0,"mem_usage":"2.52 MiB","io_read":"3.5 MB","io_write":"0.0 B","net_rx":"25.2 kB","mem_limit":"7.27 GiB"}}{"practical_proskuriakova":{"status":"running","mem_percent":0.04,"net_tx":"0.0 B","cpu_percent":0,"mem_usage":"2.61 MiB","io_read":"24.6 kB","io_write":"0.0 B","net_rx":"25.0 kB","mem_limit":"7.27 GiB"}}
以文本格式获取所有容器的所有资源统计信息:
monit-docker stats --output text
flamboyant_chaplygin|mem_usage:2.52 MiB|mem_limit:7.27 GiB|mem_percent:0.03|cpu_percent:0.0|io_read:3.5 MB|io_write:0.0 B|net_tx:0.0 B|net_rx:43.5 kB|status:running
practical_proskuriakova|mem_usage:2.61 MiB|mem_limit:7.27 GiB|mem_percent:0.04|cpu_percent:0.0|io_read:24.6 kB|io_write:0.0 B|net_tx:0.0 B|net_rx:43.3 kB|status:running
带有配置文件或环境变量monit_docker_config的高级命令
获取组nodejs的状态和内存使用情况:
monit-docker --ctn-group nodejs --rsc status --rsc mem_usage