莫尼特码头工人

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环境变量以配置命令

环境变量

VariableDescriptionDefault
^{}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'

H3>具有退出代码EH3>的集装箱信息

容器状态

运行命令以获得名为FuuHyPHPfFPM的容器的退出代码的状态:

monit-docker --name foo_php_fpm monit --rsc status

<>如果退出代码大于100,则会发生错误。

Exit codeDescription
0Running
10Created
20Paused
30Restarting
40Removing
50Exited
60Dead
114Not found

容器CPU使用率

运行命令,以容器的退出代码获取CPU使用百分比,称为FooHyPHPFFPM:

monit-docker --name foo_php_fpm monit --rsc cpu_percent

<>如果退出代码大于100,则会发生错误。

容器内存使用百分比

运行命令以获取名为FuuHyPHPfFPM的容器的退出代码的内存使用百分比:

monit-docker --name foo_php_fpm monit --rsc mem_percent

<>如果退出代码大于100,则会发生错误。

带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子命令

简单命令

以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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束