当前位置:  开发笔记 > 前端 > 正文

调试monit

如何解决《调试monit》经验,为你挑选了5个好方法。

我发现调试monit是一个很大的痛苦.Monit的shell环境基本上没有任何东西(没有路径或其他环境变量).此外,我找不到任何日志文件.

问题是,如果monit脚本中的start或stop命令失败,则很难辨别出它有什么问题.通常它不像在shell上运行命令那么简单,因为shell环境与monit shell环境不同.

人们使用什么技术来调试monit配置?

例如,我很乐意有一个monit shell,来测试我的脚本,或者一个日志文件,看看出了什么问题.



1> James Mead..:

我遇到了同样的问题.使用monit的详细命令行选项有点帮助,但我发现最好的方法是创建一个与monit环境尽可能相似的环境并从那里运行启动/停止程序.

# monit runs as superuser
$ sudo su

# the -i option ignores the inherited environment
# this PATH is what monit supplies by default
$ env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/sh

# try running start/stop program here
$

我发现最常见的问题是环境变量相关(特别是PATH)或与权限相关.你应该记住,monit通常以root身份运行.

此外,如果您as uid myusername在monit配置中使用,则应myusername在执行测试之前更改为用户.

我希望有所帮助.


@ s01ipsist这应该是`su myusername`

2> thodg..:

在让monit处理所有事情之前,请务必仔细检查您的conf并手动监控您的进程.systat(1),top(1)和ps(1)是您的朋友,可以确定资源使用情况和限制.了解您监控的过程也很重要.

关于启动和停止脚本,我使用包装器脚本来重定向输出并检查环境和其他变量.像这样的东西:

$ cat monit-wrapper.sh

#!/bin/sh
{
  echo "MONIT-WRAPPER date"
  date
  echo "MONIT-WRAPPER env"
  env
  echo "MONIT-WRAPPER $@"
  $@
  R=$?
  echo "MONIT-WRAPPER exit code $R"
} >/tmp/monit.log 2>&1

然后在monit:

start program = "/home/billitch/bin/monit-wrapper.sh my-real-start-script and args"
stop program = "/home/billitch/bin/monit-wrapper.sh my-real-stop-script and args"

你仍然需要弄清楚你想要在包装器中使用什么信息,比如进程信息,id,系统资源限制等.


非常感谢您的调试建议!

3> vimdude..:

monit -c /path/to/your/config -v



4> Linus Oleand..:

您可以通过添加在详细/调试模式启动monit的MONIT_OPTS="-v",以/etc/default/monit(别忘了重新启动; /etc/init.d/monit restart).

然后,您可以使用捕获输出 tail -f /var/log/monit.log

[CEST Jun  4 21:10:42] info     : Starting Monit 5.17.1 daemon with http interface at [*]:2812
[CEST Jun  4 21:10:42] info     : Starting Monit HTTP server at [*]:2812
[CEST Jun  4 21:10:42] info     : Monit HTTP server started
[CEST Jun  4 21:10:42] info     : 'ocean' Monit 5.17.1 started
[CEST Jun  4 21:10:42] debug    : Sending Monit instance changed notification to monit@example.io
[CEST Jun  4 21:10:42] debug    : Trying to send mail via smtp.sendgrid.net:587
[CEST Jun  4 21:10:43] debug    : Processing postponed events queue
[CEST Jun  4 21:10:43] debug    : 'rootfs' succeeded getting filesystem statistics for '/'
[CEST Jun  4 21:10:43] debug    : 'rootfs' filesytem flags has not changed
[CEST Jun  4 21:10:43] debug    : 'rootfs' inode usage test succeeded [current inode usage=8.5%]
[CEST Jun  4 21:10:43] debug    : 'rootfs' space usage test succeeded [current space usage=59.6%]
[CEST Jun  4 21:10:43] debug    : 'ws.example.com' succeeded testing protocol [WEBSOCKET] at [ws.example.com]:80/faye [TCP/IP] [response time 114.070 ms]
[CEST Jun  4 21:10:43] debug    : 'ws.example.com' connection succeeded to [ws.example.com]:80/faye [TCP/IP]



5> WattsInABox..:

默认情况下,monit会记录到系统消息日志中,您可以在此处查看发生了什么。

另外,根据您的配置,您可能会登录到其他位置

tail -f /var/log/monit

http://mmonit.com/monit/documentation/monit.html#LOGGING

假设默认值(与我使用的monit的任何旧版本相同),您都可以像这样尾随日志:

CentOS的:

tail -f /var/log/messages

Ubuntu:

tail -f /var/log/syslog

Mac OSX

tail -f /var/log/system.log

视窗

这是龙

但是出于病态的好奇心,我在搜索如何执行此操作时发现了一个neato项目:https : //github.com/derFunk/monit-windows-agent


不是完全。每个UNIX发行版都可以在开发人员选择的任何地方记录标准消息。显然,ubuntu登录到`/ var / log / syslog` [var / log / messages在哪里?](http://askubuntu.com/questions/51265/where-is-var-log-messages)
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有