mirror of
https://github.com/aaPanel/aaPanel.git
synced 2026-08-17 21:25:47 +02:00
告警模板目录
本目录存放内置告警任务的 JSON 模板文件。
添加新模板
1. 编写任务类
创建一个继承 BaseTask 的类,必须实现以下方法:
from mod.base.push_mod.base_task import BaseTask
from typing import Union, Optional, Tuple
class MyAlertTask(BaseTask):
def __init__(self):
super().__init__()
self.source_name = "my_alert" # 告警来源标识
self.template_name = "My Alert" # 模板名称
def check_task_data(self, task_data: dict) -> Union[dict, str]:
"""校验用户输入的告警参数,返回修正后的 dict 或错误字符串"""
return task_data
def get_keyword(self, task_data: dict) -> str:
"""返回唯一关键字,用于查询/执行任务"""
return "my_keyword"
def get_push_data(self, task_id: str, task_data: dict) -> Optional[dict]:
"""判断是否触发告警,触发返回包含 msg_list 的 dict,否则返回 None"""
return {"msg_list": ["alert message"]}
def filter_template(self, template: dict) -> Optional[dict]:
"""过滤模板(如依赖环境不存在则返回 None 隐藏该模板)"""
return template
def to_sms_msg(self, push_data: dict, push_public_data: dict) -> Tuple[str, dict]:
"""短信格式化,返回 (type, args)"""
return '', {}
其他
to_xxx_msg方法(钉钉/飞书/邮件/Telegram 等)由BaseTask提供默认实现,一般无需重写。
2. 创建 JSON 模板
新建文件 <your_module>_push_template.json,命名以 _push_template.json 结尾:
[
{
"id": "999",
"ver": "1",
"used": true,
"source": "my_alert",
"title": "My Alert Title",
"load_cls": {
"load_type": "path",
"cls_path": "mod.base.push_mod.your_module",
"name": "MyAlertTask"
},
"template": {
"field": [],
"sorted": []
},
"default": {},
"advanced_default": {
"number_rule": {"day_num": 3}
},
"send_type_list": ["dingding", "feishu", "mail", "weixin", "webhook", "tg", "..."]
}
]
字段说明
| 字段 | 说明 |
|---|---|
id |
唯一 ID(字符串),不要与已有模板冲突 |
ver |
版本号 |
used |
是否启用 |
source |
告警来源,与任务类的 source_name 对应 |
title |
模板显示名称 |
load_cls |
类加载配置:load_type 为 path(模块路径)或 func(函数调用) |
template.field |
前端表单字段定义 |
template.sorted |
表单字段分组排序 |
default |
表单默认值 |
advanced_default |
高级设置默认值(频率/时间规则) |
send_type_list |
支持的告警通道列表 ('ALL' 为全部, 增加通道后自动增加, 默认'ALL'即可) |
3. 放入本目录
将 JSON 文件放入此目录即可,update_mod() 自动扫描
4. 注意事项
id必须全局唯一cls_path中的模块必须存在且可导入- 任务类必须放在
load_cls.cls_path指定的模块中 - 若模板依赖特定插件/环境,在
filter_template中返回None可隐藏该模板