Articles of monit

Monit:如何在每次testing失败时停止运行exec语句的monit?

每次testing失败时,如何停止运行exec语句的monit? 我的monitrc中的声明是: check filesystem tmpfs with path /var if space > 90% then exec "/usr/bin/logger -p daemon.crit 'MAJOR: space test'" 这似乎很奇怪,因为有人问了一个问题,他正在做一个警戒,它有我想要的行为。 我已经准备好开始窒息linux框。 编辑:这里是相反的情况重复监控警报 是因为他使用alert而不是exec吗?

monit不能用sock监视mysql

以防万一,如果你正在使用Monit版本5.1.1,并尝试用袜子来监视MySQL,它将总是失败,“连接失败” 我的监控configuration文件是: check process mysql with pidfile /var/lib/mysql/mysql.pid group database start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed unixsocket /var/lib/mysql/mysql.sock protocol MYSQL then restart if 5 restarts within 5 cycles then timeout 日志没有显示任何明确的错误,在互联网上的所有职位是关于使用TCP到MySQL。 我find的解决scheme是将monit升级到5.6,升级后monit将能够监视mysql sock而没有任何问题。 使用:epel库中的CentoOS 6 Monit 5.1.1-4.el6

进程“clamd”“未监控”

monit摘要的输出说clamav不被监视。 configuration说: check process clamd with pidfile /var/run/clamav/clamd.pid start program = "/etc/init.d/clamav-daemon start" stop program = "/etc/init.d/clamav-daemon stop" if failed unixsocket /var/run/clamav/clamd.ctl then restart if 5 restarts within 5 cycles then timeout 我可以确认pid文件exsists,通过testing时启动和停止命令工作 monit start clamd 然而,monit总结如下: Process 'clamd' Not monitored 我怎样才能进一步解决这个问题?

当monit启动时,mysql服务状态不会显示

我在我的Ubuntu 14.04服务器上安装了monit,并将其configuration为使用monitrc中的以下configuration来监视mysql。 check process mysqld with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" 现在来testing我closuresmysql用户 service mysql stop Monit确实重启了服务器,但问题是当我像下面那样服务于mysql状态的时候 service mysql status 表明 mysql stop/waiting 但是当我这样做 ps -e | grep "mysql" 我看到mysqld服务正在运行。 任何想法,为什么服务MySQL状态不会显示我运行? 谢谢!

如何使基于docker run args的docker内部有条件的Monit“check process”?

我想使Monit的“检查过程”有条件地基于envvariables工作。 这里是我想达到的伪代码(不是一个有效的监视configuration语法): [ -n "$run_foo" ] && check process foo …. 我的用例:我有一个docker镜像,像这样开始监视进程: CMD ["/bin/monit", "-c","/config/monit.conf"] Monit然后启动各种守护进程。 现在,我希望能够在运行时告诉哪些守护进程我想从这个映像创build的特定容器中启动,如下所示: docker run –env="run_foo=1;run_bar=1" … 我知道monit unmonitor和类似的args,但是我相信它们不符合我的目的。 想到这样的事情: start program="/bin/bash -c '[ -n \"$run_foo\" ] && /bin/foo .." 但是,似乎会导致监控不断尝试启动和监控不应该开始的事情。 我意识到使用不同的监视器configuration文件或使用不同的泊坞窗图像的可能性 – 这些不符合答案。 其他想法赞赏。

如何在系统日志中显示任何内容时configurationMonit来提醒我

我希望Monit提醒我,如果有任何东西出现在系统日志中 – 因为任何东西都会出现exception。 我已经尝试了以下操作,并且在手动向syslog echo testing >> /var/log/syslog添加内容时,我没有收到任何警报电子邮件。 我已经validation了警报电子邮件正在工作。 check file syslogd_file with path /var/log/syslog if match ".*" then alert if match .* then alert if changed timestamp then alert

当文件的校验和改变时,使用监视重新启动进程

当文件的校验和失败时,我想重新启动由monit监视的进程。 目前我使用 check process prosody with pidfile /var/run/prosody/prosody.pid depends certificate_file start program "/etc/init.d/prosody start" stop program "/etc/init.d/prosody stop" restart program "/etc/init.d/prosody restart" check file certificate_file with path /etc/prosody/certs/fullchain.pem if changed checksum then exec "/usr/bin/monit restart prosody" 但我想有一些命令,如if changed checksum then restart prosody而不是通过exec使用monit二进制。 restart操作似乎被限制为重新启动当前受监视的进程,因此check file块中的操作不会执行任何操作。

Monit无法确定比特币守护程序是否正在运行

我正在设置Monit来监视比特币守护进程,确保它运行24/7,并在出现问题时重新启动它。 比特币二进制文件位于/usr/local/bin/bitcoind ,数据目录位于/home/bitcoin/.bitcoin 。 我已经告诉/var/run/bitcoind.pid每隔2分钟通过pid文件/var/run/bitcoind.pid来监控守护进程,并以用户bitcoin开始/停止守护进程。 然而,这是我花了无数小时试图弄清楚什么是错的地方。 因为我没有bitcoind的启动脚本, bitcoind我直接将命令传递给二进制文件,这可以通过/etc/monit/monitrc文件来看到: set daemon 120 set logfile /var/log/monit.log check process bitcoind with pidfile "/var/run/bitcoind.pid" start program "/usr/local/bin/bitcoind -pid=/var/run/bitcoind.pid -datadir=/home/bitcoin/.bitcoin -daemon" as uid bitcoin and gid bitcoin stop program "/usr/local/bin/bitcoind stop" as uid bitcoin and gid bitcoin if failed port 8332 for 2 cycles then restart 当系统初创时,我以用户bitcoinlogin并启动ps -u bitcoin 。 […]

getaddrinfo:找不到命令

可能重复: 如何解决telnet服务器的“getaddrinfo:localhost名称或服务未find”? 我已经在AWS EC2实例上安装了一个新的Ubuntu 12.04,一切正常。 我遵循这个伟大的教程中的说明: http : //www.exratione.com/2012/05/a-mailserver-on-ubuntu-1204-postfix-dovecot-mysql/ 现在我在“安装监视”点,当我重新启动服务,我现在得到这个错误信息: monit: Cannot translate '(none)' to FQDN name — Name or service not known 我开始使用Google,并且有人在那里写信,monit在启动过程中使用getaddrinfo来确定主机名。 好的,所以我想我自己试试getaddrinfo是什么,然后我得到: getaddrinfo: command not found 我想,我的系统上缺less一些东西。 谁能帮忙?

新贵:为什么两个进程作为不同的用户运行?

我想保持一个nodejs应用程序运行,所以我遵循这个: http ://howtonode.org/deploying-node-upstart-monit并安装了Monit和Upstart已经完美的工作了几个月。 我刚刚添加了一个function,我的应用程序,允许磁盘写入和获取权限错误。 我去寻找一切,因为它似乎权限错误不应该是问题。 事实certificate,我从Upstart开始的用户实际上并不是正在运行应用程序的用户! 当我运行: sudo -u deploy NODE_ENV=production node /srv/www/[name of my app]/dist/app.js 无论是通过Monit / Upstart,还是通过SSH,它都会创build2个进程。 从ps ax : 2869 ? Ss 0:00 sudo -u deploy node /srv/www/[name of my app]/dist/app.js 2878 ? Sl 0:01 node /srv/www/[name of my app]/dist/app.js 当我以deploy用户身份login并运行: NODE_ENV=production node /srv/www/[name of my app]/dist/app.js 只有一个过程! 3131 pts/1 Sl+ 0:04 […]