你可以通过 Zabbix 的报警动作来发送带有 Graphs 图表的邮件。在 Zabbix 中,你可以创建一个报警动作,该动作可以在触发器状态变为问题或恢复时发送邮件。你可以在报警动作中添加一个操作,该操作可以将 Graphs 图表添加到邮件中。下面是一个使用 Python 的 Zabbix API 创建报警动作并添加 Graphs 图表的示例代码:
import requests
import json
# 设置 Zabbix API 的 URL 和认证令牌
url = 'http://zabbix.example.com/api_jsonrpc.php'
headers = {'Content-Type': 'application/json-rpc'}
auth_token = 'your_auth_token'
# 创建一个 Zabbix 报警动作并添加 Graphs 图表
def create_zabbix_alert_action(alert_name, alert_description, graph_id, recipient_email):
# 构造 Zabbix API 请求
payload = {
'jsonrpc': '2.0',
'method': 'alert.create',
'params': {
'name': alert_name,
'description': alert_description,
'eventsource': 0,
'status': 0,
'esc_period': 120,
'filter': {
'evaltype': 0,
'conditions': [
{
'conditiontype': 16,
'operator': 7,
'value': graph_id
}
]
},
'operations': [
{
'operationtype': 0,
'esc_period': 0,
'esc_step_from': 1,
'esc_step_to': 1,
'evaltype': 0,
'opmessage_grp': [
{
'groupid': 1
}
],
'opmessage': {
'default_msg': 1,
'mediatypeid': 1,
'subject': 'Zabbix Alert: {TRIGGER.NAME}',
'message': 'Problem started at {EVENT.TIME} on {EVENT.DATE}\n\n{TRIGGER.NAME}: {TRIGGER.STATUS}\n\n{ITEM.NAME}: {ITEM.VALUE}\n\n{EVENT.ID}'
},
'opmessage_usr': [
{
'userid': 1
}
]
}
],
'recovery_operations': [
{
'operationtype': 0,
'esc_period': 0,
'esc_step_from': 1,
'esc_step_to': 1,
'evaltype': 0,
'opmessage_grp': [
{
'groupid': 1
}
],
'opmessage': {
'default_msg': 1,
'mediatypeid': 1,
'subject': 'Zabbix Alert: {TRIGGER.NAME}',
'message': 'Problem resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}\n\n{TRIGGER.NAME}: {TRIGGER.STATUS}\n\n{ITEM.NAME}: {ITEM.VALUE}\n\n{EVENT.ID}'
},
'opmessage_usr': [
{
'userid': 1
}
]
}
],
'recovery_notice': 1,
'correlation_mode': 0,
'correlation_tag': '',
'manual_close': 0,
'default_msg': 1,
'tags': [
{
'tag': 'email',
'value': recipient_email
}
]
},
'auth': auth_token,
'id': 1
}
# 发送 Zabbix API 请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 解析 Zabbix API 响应
result = json.loads(response.text)
# 返回报警动作 ID
return result['result']['alertids'][0]
在上面的代码中,你需要将 url
和 auth_token
替换为你的 Zabbix API 的 URL 和认证令牌。然后,你可以调用 create_zabbix_alert_action
函数来创建一个报警动作并添加 Graphs 图表。该函数接受四个参数:alert_name
、alert_description
、graph_id
和 recipient_email
,分别表示报警动作的名称、描述、Graphs 图表的 ID 和收件人的邮箱地址。函数将返回报警动作的 ID。
参考文档
(1) zabbix6.0开启邮箱告警 - 知乎. https://zhuanlan.zhihu.com/p/577499885.
(2) Zabbix实现电话、邮件、微信告警通知的实践分享 - 知乎. https://zhuanlan.zhihu.com/p/81288844.
(3) 2 自定义图表 - Zabbix. https://www.zabbix.com/documentation/current/zh/manual/config/visualization/graphs/custom.
(4) 在zabbix中实现发送带有图片的邮件和微信告警 - 知乎. https://zhuanlan.zhihu.com/p/446364200.