感觉邮件和管道

时间:2013-07-23 00:56:58

标签: mailer sensu

我正在从nagios切换到sensu。我正在使用厨师来自动化这个过程。一切都很好,除了邮件程序或实际上,我把它缩小到“管道”,假设将json输出从检查重定向到处理程序。它没有。当我使用

{
  "handlers": {
    "email": {
      "type": "pipe",
      "command": "mail -s \"sensu alert\" alert@example.com",
      "severities": [
        "ok",
        "critical"
      ]
    }
  }
}

我收到一封空白的电子邮件。当我使用mailer.rb处理程序时,我没有收到任何电子邮件。我确保在mailer.json中包含邮件和邮件。我看到日志包含处理程序和电子邮件参数的正确信息。

所以我得出结论“管道”不起作用。任何人都可以帮忙吗?我将不胜感激。我希望有一个感觉社区,但它可能太新了。

6 个答案:

答案 0 :(得分:2)

关于mailer.rb,您是否检查过服务器日志(默认情况下在/var/log/sensu/sensu-server.log中)是否有错误?如果任何处理程序中存在错误,它们将显示在这些日志中。

mailer.rb需要多个宝石才能运行。要了解您是否使用了sensu的嵌入式ruby,请检查/etc/default/sensu以获取EMBEDDED_RUBY。如果这是错误的,您需要确保您的系统ruby安装了所有这些gem(sensu-handler,mail,timeout)。如果设置为true,则使用sensu的嵌入式ruby执行相同的操作:

/opt/sensu/embedded/bin/gem list

确保安装了gem,再试一次,并检查sensu-server.log是否有错误。

如果您有更多问题,实际上有一个社区 - 请查看Freenode上的#sensu。

答案 1 :(得分:2)

您可以自己编写event data JSON并通过PIPE传递,如下所示:

cat event.json | /opt/sensu/embedded/bin/ruby mailer.rb

获取event.json文件的最简单方法来自sensu-server.log。

答案 2 :(得分:1)

要使用mailer.rb,您需要自己的邮件服务器!如果您发布sensu服务器日志,我想我可以帮助您。

答案 3 :(得分:0)

我已经完成了一些测试,使用GNU mail / mailx将邮件发送到管道(假设您使用的是Ubuntu或其他什么?)。

两种解决方案:

1)安装BSD邮件:

sudo apt-get install bsd-mailx

2)或者修改命令稍微从stdin读取邮件你需要做的事情:

{
  "handlers": {
    "email": {
      "type": "pipe",
      "command": " echo $(cat) > /tmp/mail.txt;  mail -s \"sensu alert\" alert@example.com < /tmp/mail.txt"
    }
  }
}

通常,您可以在脚本语言中从stdin读取事件json,然后提取要发送的event.json的位。以上将通过电子邮件发送整个json文件。

答案 4 :(得分:0)

您可以使用感知邮件处理程序。请找到以下步骤进行设置: -

  1. sensu-install -p sensu-plugins-mailer
  2. apt-get install postifx
  3. /etc/init.d/postfix start
  4. cd /etc/sensu/conf.d/
  5. 当我们安装此插件时,将获得3个ruby文件。

    这次我们使用的是这个文件: - handler-mailer.rb

    首先我们需要在这个位置创建处理程序文件/etc/sensu/conf.d/: -

    1. vim handler-mailer.json

        

      { "mailer": { "admin_gui": "http://127.0.0.1:3000/", "mail_from": "localhost", "mail_to": ["yourmailid-1","yourmailid-2"], "smtp_address": "localhost", "smtp_port": "25" } }

    2. 现在我们需要在这个位置创建一个邮件处理程序文件/etc/sensu/conf.d /: -

      1.   

        { "handlers": { "mymailer": { "type": "pipe", "command": "/opt/sensu/embedded/bin/handler-mailer.rb", "severities": [ "critical", "unknown" ] } } }

      2. 在上面的文件处理程序名称是mymailer,我们需要在我们的检查中使用这个处理程序名称。

答案 5 :(得分:0)

使用bin/handler-mailer-mailgun.rbbin/handler-mailer-ses.rbbin/handler-mailer.rb

示例:

echo '{
"id": "ef6b87d2-1f89-439f-8bea-33881436ab90",
"action": "create",
"timestamp": 1460172826,
"occurrences": 2,
"check": {
  "type": "standard",
  "total_state_change": 11,
  "history": ["0", "0", "1", "1", "2", "2"],
  "status": 2,
  "output": "No keepalive sent from client for 230 seconds (>=180)",
  "executed": 1460172826,
  "issued": 1460172826,
  "name": "keepalive",
  "thresholds": {
    "critical": 180,
    "warning": 120
  }
},
"client": {
  "timestamp": 1460172596,
  "version": "1.0.0",
  "socket": {
    "port": 3030,
    "bind": "127.0.0.1"
  },
  "subscriptions": [
    "production"
  ],
  "environment": "development",
  "address": "127.0.0.1",
  "name": "client-01"
} }' | /opt/sensu/embedded/bin/handler-mailer-mailgun.rb

输出:

mail -- sent alert for client-01/keepalive to your.email@example.com