为什么不像这样的语法进行监视

为什么不像这样的语法进行监视

我正在尝试设置监控对于我的 Debian 服务器。我有一个主要的 monitrc 文件,/etc/monit其中最后有include /etc/monit/conf.d/*.

在 conf.d 中,我有两个用于 apache 和 mysql 服务器的文件:

# ls -al /etc/monit/conf.d
total 16
drwxr-xr-x 2 root root 4096 Apr 15 16:03 .
drwxr-xr-x 3 root root 4096 Apr 15 16:02 ..
-rwx------ 1 root root  272 Apr 15 15:38 apache2.conf
-rwx------ 1 root root  264 Apr 15 15:47 mysql.conf

当我运行monit -t(测试配置语法)时,我得到:

/etc/monit/conf.d/apache2.conf:1: Error: syntax error 'check process '

如果我删除/移动 apache2.conf 文件,mysql 配置文件也会出现相同的错误。

# cat apache2.conf
check process apache2 with pidfile /var/run/apache2.pid
  start program = "/usr/sbin/service apache2 start"
  stop program = "/usr/sbin/service apache2 stop"
  if failed
    host localhost
    port 80
    protocol http
    request "/catalog/"
    then restart and alert

以及内容mysql.conf

# cat mysql.conf


  check process mysqld with pidfile /var/run/mysqld/mysqld.pid
    group database
    start program = "/usr/sbin/service mysqld start"
    stop program = "/usr/sbin/service mysqld stop"
    if failed host localhost port 3306 protocol mysql then restart and alert

我有:

  • 尝试了conf文件的许多变体
  • 文档看了20遍以上
  • 替换 mysqld.conf 文件中的公共 monit 配置文件的公共存储库并删除 apache2 配置文件
  • 查看十六进制文件,没有有趣的字符。
  • 尝试了制表符和空格。
  • 删除除第一行以外的所有内容。
  • 仔细检查/var/run/mysqld/mysqld.pid确实存在。
  • 确保两个monitrcconf.d文件的权限都是0700。

此时我完全困惑于可能导致(不是很有帮助)错误消息的原因,/etc/monit/conf.d/apache2.conf:1: Error: syntax error 'check process '

答案1

我今天遇到了这个问题。我能够将问题追溯到第二个 monit 配置文件。从 5.17.1 开始,如果配置文件未正确关闭,它将在尝试加载下一个文件时立即抛出语法错误。

就我而言,我有一个警报以数字结尾repeat every 10,并且缺少数字后的“周期”。即使该文件无效,它也会导致完全不同的文件显示为无效。

答案2

老问题,不知道是否相关,但我不确定你可以写then restart and alert

很确定alert它已经隐式作为restart无论如何的一部分,因此不需要。

相关内容