标签: monit

如何使用 monit 监控乘客

我想设置 monit 来监控乘客,但到目前为止我发现的所有内容基本上都说只是使用 monit 监控您的网站。如果可能的话,我想直接监控乘客,这样我就可以更好地控制它。

monitoring phusion-passenger monit

7
推荐指数
1
解决办法
1803
查看次数

在 Docker 容器中使用进程管理器有什么好处?

正如杰罗姆所说,

您还需要添加一个流程管理器;例如监视器或主管。这是因为 Docker 将监视一个进程。如果需要多个进程,则需要在顶层添加一个来处理其他进程。换句话说,您正在将一个精益简单的容器变成更复杂的东西。

我并不完全清楚为什么您需要在容器内使用进程管理器。

那么有人可以向我解释一下,在容器内安装进程管理器有什么好处?让 systemd 或 upstart 处理进程而不是向容器添加额外的服务不是更好吗?

monit supervisord docker

7
推荐指数
1
解决办法
2370
查看次数

Monit 无法通过 SSL IMAP 连接到 Dovecot

我运行 Monit 来检查 Debian 服务器上的进程。它对所有其他服务(Apache SSL、Postfix、SSH 等)正常工作,但 Monit 对 Dovecot 的检查反复失败。我认为这可能是在安装一些软件包更新后开始的,但我不确定何时开始。

由于电子邮件仍在工作,Dovecot 为客户端连接正常工作。我已经尝试过使用 open_ssl s_client 进行测试,并且对于 SSLv3、TLS1.1 和 TLS1.2 似乎也很好。

/etc/monit/monitrc 中的 Dovecot 部分: check process dovecot with pidfile /run/dovecot/master.pid start program = "/usr/sbin/service dovecot start" stop program = "/usr/sbin/service dovecot stop" if failed port 993 type tcpssl sslauto protocol imap then unmonitor

当我启用对 Dovecot 的监控时,我在 /var/log/monit 中收到此消息: 'dovecot' failed protocol test [IMAP] at INET[localhost:993] via TCPSSL -- IMAP: error receiving data -- Success

我认为它可能是这样的https://secure.kitserve.org.uk/content/ssl-tls-version-conflict-zarafa-monit但我已经尝试用所有这些选项依次替换“sslauto”,但没有运气:SSLV2|SSLV3|TLSV1|TLSV11|TLSV12

我一直在指的 Monit 文档在这里: …

ssl debian dovecot tls monit

7
推荐指数
2
解决办法
2598
查看次数

Monit:如何以最佳方式监控 URL

我的网络服务器使用 php5-fpm 运行 nginx。如果出现一些问题,通常是php5-fpm挂了,导致“bad gateway”服务器错误。当然,我永远不知道 nginx 是否会在某一天崩溃。

当发生某些事情时,这两个进程(广告它们的线程)通常都存在并且需要重新启动。我对当前问题的原因不太感兴趣,但想重新启动两个进程。为此,我创建了两个 bash 脚本 /etc/monit/webserver.start.sh 和 /etc/monit/webserver.stop.sh。

这是我的 monit 配置文件(在 conf.d 中):

check process webserver with pidfile /var/run/nginx.pid
   start program = "/etc/monit/webserver.start.sh"
   stop program  = "/etc/monit/webserver.stop.sh"
   if failed (url https://www.myserver.com/example/ and content == 'test string' and timeout 20 seconds)
     then alert
   if failed (url https://www.myserver.com/example/ and content == 'test string' and timeout 20 seconds)
     for 2 cycles
     then restart
   if failed (url https://www.myserver.com/example/ and content == 'test string' and timeout 20 seconds)
     for 4 …
Run Code Online (Sandbox Code Playgroud)

monitoring web-server monit

7
推荐指数
1
解决办法
1万
查看次数

Monit 与 exec 一起使用警报

我有这样的规则:

if memory usage > 85% for 10 cycles then alert
Run Code Online (Sandbox Code Playgroud)

我不仅想通过电子邮件通知,还想通过 slack 通知。所以我可以像这样添加第二行:

if memory usage > 85% for 10 cycles then exec /path/to/slack.rb
Run Code Online (Sandbox Code Playgroud)

当您有多个规则并且必须复制每一行时,这很烦人。可以一起使用alert和exec吗?像这样的东西:

if memory usage > 85% for 10 cycles then alert and exec /path/to/slack.rb
Run Code Online (Sandbox Code Playgroud)

monit

7
推荐指数
1
解决办法
1653
查看次数

Monit 检测不到 MySQL,但我可以

Monit 配置为在 localhost 的端口 3306 上监视 MySQL。

check process mysqld with pidfile /var/lib/mysql/li175-241.pid
  start program = "/etc/init.d/mysql start"
  stop program = "/etc/init.d/mysql stop"
  if failed port 3306 protocol mysql then restart
  if 5 restarts within 5 cycles then timeout
Run Code Online (Sandbox Code Playgroud)

我的应用程序配置为通过 localhost:3306 连接到 MySQL,运行良好并且可以访问数据库。我什至可以使用 MySQL Query Browser 通过端口 3306 远程连接到数据库。该端口是完全开放的,可以连接。因此,我非常确定它正在运行。

但是,运行monit -v显示 Monit 无法在该端口上检测到 MySQL。

'mysqld' failed, cannot open a connection to INET[localhost:3306] via TCP
Run Code Online (Sandbox Code Playgroud)

这种情况一直发生,直到 Monit 决定不再按照配置跟踪 MySQL。

如何开始解决此问题?


sudo netstat -lnp | grep mysql 返回以下内容:

tcp        0 …
Run Code Online (Sandbox Code Playgroud)

mysql linux monitoring monit

6
推荐指数
1
解决办法
2852
查看次数

安装 monit 后,当我执行 monit status myproc 时,我收到“连接到 monit 守护程序时出错”

安装 monit 后,当我执行 monit status myproc 时,我收到“连接到 monit 守护程序时出错”

我在某处读到

如果 monit 在没有 http 支持的情况下运行 indaemon 模式,则 status 命令将不起作用 - 在这种情况下,命令“monit status”会尝试通过 http/tcp 从守护程序获取状态。要启动 http 接口,您需要在配置中添加“set httpd ...”语句。

那还是正确的吗?那个帖子是2005年的

linux monit

6
推荐指数
2
解决办法
2万
查看次数

配置 Monit 以通过 Office365 发送邮件

我想配置的monit通过Office365发送电子邮件。以下是相关配置:

set mailserver smtp.office365.com port 587 username "username" password "password" using tlsv1 with timeout 30 seconds

不幸的是,它不起作用。这是来自的相关错误/var/log/monit.log

[PST Feb 27 06:40:48] error : Sendmail error: 534-5.7.9 Please log in with your web browser and then try again. Learn more at

(是的,错误被截断了。)

凭据正确 - 我已成功使用它们登录到 Office 365/Outlook。我还使用此帐户通过 Rails 应用程序发送邮件,因此我假设配置问题是 Monit 的问题,而不是 Microsoft 的问题。

似乎有人在这里遇到了类似的障碍。虽然我找不到任何确认 Monit 支持 TLS v1.1 的文档,但如果它不支持我会感到惊讶(该规范现在已有 8 年历史)。

有什么我想念的吗?

outlook smtp monit microsoft-office-365 outlook-web-app

6
推荐指数
1
解决办法
2861
查看次数

如何将 monit 配置为仅警报而不是重新启动?

我正在寻找一种方法,让 monit 仅在特定进程出现故障时发出警报。例如:

check process apache
  with pidfile /var/run/httpd.pid
  group www
  start program = "/usr/sbin/apachectl start"
  stop  program = "/usr/sbin/apachectl stop"
  alert operations@example.com with reminder 5
Run Code Online (Sandbox Code Playgroud)

使用该配置,apache 将随着进程消失而重新启动。而不是发生这种情况,我想保持低调,直到有人可以手动干预。

对于那些好奇为什么的人:

我们的生产环境使用 monit 来控制应用程序。我们的非生产环境没有。这导致了一个问题,因为我们的开发人员更改了特定应用程序的启动方法。在它进入生产环境之前,它一直通过我们的非生产环境,monit 最终导致应用程序关闭,因为它没有在预生产中被捕获。

我想在非生产环境中设置 monit,这样我们就可以捕捉到这样的故障,但由于它不是关键任务,我们不需要自动重启服务。

linux monit

6
推荐指数
1
解决办法
4880
查看次数

如何使用容器自动删除功能自动重启我的 Docker 容器?

我有一个通用的 VPS,并且正在对它的应用程序进行 Dockerising。上面将有大约 5-6 个容器,其他很少,因此可以根据需要对盒子进行简单的重建。

对于每个应用程序,我都有一个启动脚本。WordPress 容器如下所示:

#!/bin/bash

# Get the host IP address
export DOCKER_HOSTIP=`ifconfig docker0 | grep "inet addr" | cut -d ':' -f 2 | cut -d ' ' -f 1`
echo "Connecting to database on Docker host ${DOCKER_HOSTIP}"

docker run \
    --add-host=docker:${DOCKER_HOSTIP} \
    --network dockernet \
    --network-alias jonblog \
    --detach \
    --restart always \
    --rm \
    jonblog
Run Code Online (Sandbox Code Playgroud)

但是,这会返回错误:

冲突选项:--restart 和--rm

有几张 Docker 票说这是明智的,但我不明白。我想我的意思很明确:如果一个容器没有运行(例如在启动时),那么我想启动它。如果它死了,那么我希望容器被删除,并从基础映像创建一个新的容器。无论如何,容器应该是不可变的——我希望保留的任何状态,如媒体文件和日志,都将被写入卷。

所以,我想我应该放弃这个--restart标志,然后使用进程管理器来停止和启动 Docker 容器。我可以在这里使用Monit吗?我希望能够做这样的事情:

CHECK PROCESS jonblog MATCHING jonblog
  START PROGRAM = …
Run Code Online (Sandbox Code Playgroud)

monit docker

6
推荐指数
1
解决办法
9176
查看次数