{
"handlers": {
"email": {
"type": "pipe",
"command": "mail -s \"sensu alert\" alert@example.com",
"severities": [
"ok",
"critical"
]
}
}
}
我收到一封空白的电子邮件。当我使用mailer.rb处理程序时,我没有收到任何电子邮件。我确保在mailer.json中包含邮件和邮件。我看到日志包含处理程序和电子邮件参数的正确信息。
所以我得出结论“管道”不起作用。任何人都可以帮忙吗?我将不胜感激。我希望有一个感觉社区,但它可能太新了。
答案 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)
您可以使用感知邮件处理程序。请找到以下步骤进行设置: -
sensu-install -p sensu-plugins-mailer
apt-get install postifx
/etc/init.d/postfix start
cd /etc/sensu/conf.d/
当我们安装此插件时,将获得3个ruby文件。
这次我们使用的是这个文件: - handler-mailer.rb
首先我们需要在这个位置创建处理程序文件/etc/sensu/conf.d/: -
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" } }
现在我们需要在这个位置创建一个邮件处理程序文件/etc/sensu/conf.d /: -
{ "handlers": { "mymailer": { "type": "pipe", "command": "/opt/sensu/embedded/bin/handler-mailer.rb", "severities": [ "critical", "unknown" ] } } }
在上面的文件处理程序名称是mymailer,我们需要在我们的检查中使用这个处理程序名称。
答案 5 :(得分:0)
使用bin/handler-mailer-mailgun.rb
或bin/handler-mailer-ses.rb
或bin/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