为什么 Icinga2 电报通知在特定服务中失败?
Why Icinga2 telegram notification fails in specific services?
我创建了与电子邮件通知非常相似的自定义电报通知。问题是它适用于主机和大多数服务,但不适用于所有服务。
我不post scripts
文件夹中的 *.sh
个文件,因为它正常工作!
在 constants.conf
我添加了机器人令牌:
const TelegramBotToken = "MyTelegramToken"
我想在用户文件中管理电报频道或聊天 ID,所以我 users/user-my-username.conf
如下:
object User "my-username" {
import "generic-user"
display_name = "My Username"
groups = ["faxadmins"]
email = "my-username@domain.com"
vars.telegram_chat_id = "@my_channel"
}
在templates/templates.conf
中我添加了以下代码:
template Host "generic-host-domain" {
import "generic-host"
vars.notification.mail.groups = ["domainadmins"]
vars.notification["telegram"] = {
users = [ "my-username" ]
}
}
template Service "generic-service-fax" {
import "generic-service"
vars.notification["telegram"] = {
users = [ "my-username" ]
}
}
在 notifications
我有:
template Notification "telegram-host-notification" {
command = "telegram-host-notification"
period = "24x7"
}
template Notification "telegram-service-notification" {
command = "telegram-service-notification"
period = "24x7"
}
apply Notification "telegram-notification" to Host {
import "telegram-host-notification"
user_groups = host.vars.notification.telegram.groups
users = host.vars.notification.telegram.users
assign where host.vars.notification.telegram
}
apply Notification "telegram-notification" to Service {
import "telegram-service-notification"
user_groups = host.vars.notification.telegram.groups
users = host.vars.notification.telegram.users
assign where host.vars.notification.telegram
}
这就是我的全部。正如我之前所说,它适用于某些服务,不适用于其他服务。我在 service
或 host
文件中没有针对 telegram notification
.
的任何配置
为了测试我使用 Icinga web2
。转到主机中的特定服务并发送自定义通知。当我发送自定义通知时,我检查日志文件以查看是否有任何错误,它显示 completed
:
[2017-01-01 11:48:38 +0000] information/Notification: Sending reminder 'Problem' notification 'host-***!serviceName!telegram-notification for user 'my-username'
[2017-01-01 11:48:38 +0000] information/Notification: Completed sending 'Problem' notification 'host-***!serviceName!telegram-notification' for checkable 'host-***!serviceName' and user 'my-username'.
我应该注意到电子邮件已按预期发送。 12 项服务中有 2 项服务的电报通知存在问题。
知道罪魁祸首是什么吗?这里有什么问题? return 的脚本(命令)会影响此行为吗?
任何服务中都没有 Telegram 配置。
某些电报命令可能会因 Markdown 解析器而失败。
我遇到过这个问题:
如果服务名称有一个下划线('_'),那么解析器会抱怨没有关闭 markdown 标签并且不会发送消息
我创建了与电子邮件通知非常相似的自定义电报通知。问题是它适用于主机和大多数服务,但不适用于所有服务。
我不post scripts
文件夹中的 *.sh
个文件,因为它正常工作!
在 constants.conf
我添加了机器人令牌:
const TelegramBotToken = "MyTelegramToken"
我想在用户文件中管理电报频道或聊天 ID,所以我 users/user-my-username.conf
如下:
object User "my-username" {
import "generic-user"
display_name = "My Username"
groups = ["faxadmins"]
email = "my-username@domain.com"
vars.telegram_chat_id = "@my_channel"
}
在templates/templates.conf
中我添加了以下代码:
template Host "generic-host-domain" {
import "generic-host"
vars.notification.mail.groups = ["domainadmins"]
vars.notification["telegram"] = {
users = [ "my-username" ]
}
}
template Service "generic-service-fax" {
import "generic-service"
vars.notification["telegram"] = {
users = [ "my-username" ]
}
}
在 notifications
我有:
template Notification "telegram-host-notification" {
command = "telegram-host-notification"
period = "24x7"
}
template Notification "telegram-service-notification" {
command = "telegram-service-notification"
period = "24x7"
}
apply Notification "telegram-notification" to Host {
import "telegram-host-notification"
user_groups = host.vars.notification.telegram.groups
users = host.vars.notification.telegram.users
assign where host.vars.notification.telegram
}
apply Notification "telegram-notification" to Service {
import "telegram-service-notification"
user_groups = host.vars.notification.telegram.groups
users = host.vars.notification.telegram.users
assign where host.vars.notification.telegram
}
这就是我的全部。正如我之前所说,它适用于某些服务,不适用于其他服务。我在 service
或 host
文件中没有针对 telegram notification
.
为了测试我使用 Icinga web2
。转到主机中的特定服务并发送自定义通知。当我发送自定义通知时,我检查日志文件以查看是否有任何错误,它显示 completed
:
[2017-01-01 11:48:38 +0000] information/Notification: Sending reminder 'Problem' notification 'host-***!serviceName!telegram-notification for user 'my-username'
[2017-01-01 11:48:38 +0000] information/Notification: Completed sending 'Problem' notification 'host-***!serviceName!telegram-notification' for checkable 'host-***!serviceName' and user 'my-username'.
我应该注意到电子邮件已按预期发送。 12 项服务中有 2 项服务的电报通知存在问题。
知道罪魁祸首是什么吗?这里有什么问题? return 的脚本(命令)会影响此行为吗?
任何服务中都没有 Telegram 配置。
某些电报命令可能会因 Markdown 解析器而失败。 我遇到过这个问题: 如果服务名称有一个下划线('_'),那么解析器会抱怨没有关闭 markdown 标签并且不会发送消息