标签: monit

Monit具有相同名称的多个进程

我是Monit的新手,并试图了解它是否提供了一种处理PID未知的同名多个进程的方法.我理想的Monit行为是:

观察名为"x"的每个进程,并重新启动任何内存使用率超过X的进程

如果那是不可能的,我也会满足于:

观察名为"x"的每个进程,如果其中任何内存使用量超过X,则重新启动所有进程

我看到的大多数Monit示例都依赖于PID,或者只希望一个进程具有指定的名称.

我也对其他可能比Monit更适合的工具的建议感兴趣.

谢谢!

process-monitoring monit

5
推荐指数
1
解决办法
449
查看次数

如何在Grafana表(或singlestat)中显示InfluxDB测量的最新时间戳?

我正在使用Telegraf / InfluxDB / Grafana注册和查看服务器的指标。有时,这些组件之一崩溃并且指标停止流入InfluxDB。

为了能够注意到发生这种情况的时间(在使用Monit重新启动服务的基础上),我想创建一个Grafana仪表板,其中每个主机都有一个singlestat面板,该面板显示最近的时间戳(或者更好的是,有多少时间自最后一个指标以来)。我还想根据singlestat的背景着色。我希望能够对任何InfluxDB指标执行此操作,因为不同的指标可能有不同的滞后原因。

现在,我已经在InfluxQL中尝试了类似的方法,但是我得到一个错误,即查询中必须至少存在一个非时间字段:

SELECT last(time) FROM "system" WHERE "load1" > -1 GROUP BY "host"

如果尝试将其更改为此,则会收到“多个系列错误”:

SELECT last(time), last("load1") FROM "system" GROUP BY "host"

我想做的事不容易做到吗?还是我遗漏了一些明显的东西?

monit influxdb grafana telegraf

5
推荐指数
1
解决办法
2572
查看次数

如何使用Amazon SES设置Monit

我在设置monitrc文件时遇到了困难。我使用Capistrano在Amazon EC2上设置Monit,并使用本教程作为指导:

http://railscasts.com/episodes/375-monit

set daemon 30

set logfile /home/deployer/apps/example/shared/log/monit.log
set idfile /var/lib/monit/id
set statefile /var/lib/monit/state

set eventqueue
    basedir /var/lib/monit/events
    slots 100

set mailserver email-smtp.us-east-1.amazonaws.com port 587
   username "amazon_username" password "amazon_password"
   using TLSV1
   with timeout 30 seconds

set alert alerts@example.com

set httpd port 2812
    allow admin: "admin_password"

check system example_server
  if loadavg(5min) > 2 for 2 cycles then alert
  if memory > 95% for 2 cycles then alert
  if cpu(user) > 75% for 2 cycles then alert

include /etc/monit/conf.d/*
Run Code Online (Sandbox Code Playgroud)

查看我的日志,出现以下错误:

Sendmail错误:554邮件被拒绝:电子邮件地址未验证。 …

capistrano ruby-on-rails amazon-ec2 monit amazon-ses

4
推荐指数
1
解决办法
2207
查看次数

postgres 的监控配置

我正在尝试在我的 postgres 上使用 monit。我的monit配置文件是

使用pidfile /var/lib/postgresql/9.3/main/postmaster.pid 检查进程postgresql

start program = "/etc/init.d/postgresql start"
stop program = "/etc/init.d/postgresql stop"
如果失败 unixsocket /var/run/postgresql/.s.PGSQL.5432 协议 pgsql 然后
如果失败就重启主机本地主机端口 5432 协议 pgsql 然后重新启动,
如果 5 次在 5 个周期内重新启动,则超时`

当我跑cat /var/lib/postgresql/9.3/main/postmaster.pid。结果是

10271
/var/lib/postgresql/9.3/main
1418738148
5432
的/ var /运行/ PostgreSQL的
本地主机
5432001 720899

但是我的 monit 不会重新启动 postgres。我指的是http://mmonit.com/wiki/Monit/ConfigurationExamples#postgresql

谁能告诉我我做错了什么?

postgresql monit

4
推荐指数
1
解决办法
2250
查看次数

CentOS上的Monit导致无法创建httpd.pid

解决方案是替换这一行:

check process apache with pidfile /var/run/httpd.pid
Run Code Online (Sandbox Code Playgroud)

有了这条线:

check process httpd with pidfile /var/run/httpd/httpd.pid
Run Code Online (Sandbox Code Playgroud)

我还删除了'组apache'.

原帖:

在CentOS上安装Monit并为Apache(httpd)服务设置警报后,该服务不再创建/var/run/httpd.pid文件.

httpd服务IS正常运行.

最重要的是,好像这还不够,Monit将服务状态报告为:执行失败

当然,重启这种服务的唯一方法就是杀死它,因为'restart'脚本看不到任何正在运行的进程.

这些是/etc/monit.d/monitrc文件的内容:

set daemon  10
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: me@server.com }
set alert bugs@server.com
set httpd port 2812 and
#     SSL ENABLE
#     PEMFILE  /var/certs/monit.pem
allow user:password

check process apache with pidfile /var/run/httpd.pid
group apache
start program = "/etc/init.d/httpd start"
stop program  = "/etc/init.d/httpd stop"
if cpu is greater …
Run Code Online (Sandbox Code Playgroud)

apache pid monit

3
推荐指数
1
解决办法
7349
查看次数

Monit不会使用kill命令停止脚本

我使用monit来监控几个进程.这些过程包括乘客实例和我编写的守护进程,为乘客实例生成pidfiles.Monit将启动这些过程没有问题.它不会阻止他们.以下是守护进程的Monit配置:

check process passenger_monitor with pidfile <%= passenger_monitor_pid %>
   group <%= application %>
   start program = "/bin/su - rails_apps -c 'source /home/rails_apps/.rvm/scripts/rvm; /home/rails_apps/passenger_monitor.rb'"
   stop program = "/bin/kill `/bin/cat <%= passenger_monitor_pid %>`"
Run Code Online (Sandbox Code Playgroud)

这是一个通过capistrano生成的erb模板.如果我通过终端以最小的环境以root身份运行stop命令,那么它可以工作,但当我请求Monit停止进程时,我收到以下错误:

[ADT Sep 17 10:38:31] error    : 'passenger_monitor' failed to stop
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我能想到的一切.我无法找到或生成stop命令输出的任何日志.

passenger monit

3
推荐指数
1
解决办法
7477
查看次数

为自定义脚本运行"检查程序"时出现Monit错误

当我尝试使用monit的"检查程序"检查bash脚本的退出状态时,我收到语法错误.如果我手动运行bash脚本,则不会出错.但是如果我在配置中使用我的monit check程序进行monit reload,monit会给我错误.

这是我目前的monit .conf文件 -

check program myscript with path "/etc/monit.d/script_to_run.sh"
  if status != 0 then alert
Run Code Online (Sandbox Code Playgroud)

如果我将其更改为此以确保monit使用bash来解析文件...

check program myscript with path "/usr/bash /etc/monit.d/script_to_run.sh"
  if status != 0 then alert
Run Code Online (Sandbox Code Playgroud)

然后我得到这个错误

Warning: Program does not exist: '"/bin/bash /etc/monit.d/script_to_run.sh"'
Run Code Online (Sandbox Code Playgroud)

即使是测试脚本也会导致错误 - 如果我在script_to_run.sh中有这个:

#!/bin/bash
exit 0
Run Code Online (Sandbox Code Playgroud)

莫妮特会抱怨

Error: syntax error 'exit'
Run Code Online (Sandbox Code Playgroud)

如果我在script_to_run.sh中有这个:

#!/bin/bash
echo "hello"
Run Code Online (Sandbox Code Playgroud)

莫妮特会抱怨

Error: syntax error 'echo'
Run Code Online (Sandbox Code Playgroud)

作为参考 - 我有monit 5.4,已经按照man monit doc中的"check program"示例,并且能够在同一台服务器上配置/使用monit"check process ...".

monit

3
推荐指数
1
解决办法
9431
查看次数

Monit可以用来释放内存吗?

我已经使用 monit 来监视和重新启动 Apache 和 MySQL 几个月了,一切都工作正常,直到今天,当服务器上的某些内容导致内存利用率超过 90% 时,MySQL 停止并 monit 然后尝试不断重新启动,但是有内存不足,无法重新启动。

完整的服务器重新启动对所有内容进行了排序,因此现在再次正常运行。

我的问题是,例如,当超过 90% 时,我可以让 monit 监控服务器 RAM 利用率并释放 RAM 或重新启动服务器等吗?

memory monitoring restart monit

3
推荐指数
1
解决办法
2839
查看次数

如何远程访问monit http

我已经尝试了几个小时来配置monit,以便可以从Web浏览器从http://:2812远程访问它,但是它总是超时。我的Nexus在http :: 8081的同一实例上运行,因此我知道基本的连接方式有效:我的monitrc包含

set httpd port 2812
#     use address localhost  # only accept connection from localhost
     allow localhost        # allow localhost to connect to the server and
     allow admin:monit      # require user 'admin' with password 'monit'
     allow 50.67.165.130    # remote host
Run Code Online (Sandbox Code Playgroud)

我试图从哪里连接远程主机。还有其他一些特殊的魔术可以远程访问monit httpd吗?

奇怪的是,这必须如此艰巨。

monit

3
推荐指数
2
解决办法
2846
查看次数

没有pidfile的Monit memcached配置

我有经典的情况.需要在CentOS7上为memcached配置monit.问题是,我可以在谷歌找到的所有配置包含这一行:

check process memcached with pidfile /var/run/memcached/memcached.pid
Run Code Online (Sandbox Code Playgroud)

但是,/ var/run中没有memcached.pid文件,没有/ var/run/memcached文件夹.我检查了/usr/lib/systemd/system/memcached.service

[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/memcached
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS
Run Code Online (Sandbox Code Playgroud)

因此,没有.pid文件的路径.问题是我可以在没有.pid文件的情况下检查memcached吗?第二个问题 - 可以将此.pid文件放在另一个位置吗?

memcached monit centos7

3
推荐指数
1
解决办法
3928
查看次数