# alert-service **Repository Path**: miyosan/alert-service ## Basic Information - **Project Name**: alert-service - **Description**: 接收`Prometheus AlertManager`的告警消息,二次处理后,发送`钉钉通知`,支持`@具体应用负责人 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-07-23 - **Last Updated**: 2024-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 应用介绍 ## 主要功能: 1. 接收`Prometheus AlertManager`的告警消息,二次处理后,发送`钉钉通知`。 2. 支持`@具体应用负责人`(负责人信息从集群的`kubevela`的`application`里拿) 3. 提供一些问题排查的帮助信息,比如`容器日志`、`Pod运行状态`等(这部分是通过关联`KubePI`平台来做的) 4. 还关联了负责人的`Gitlab`账号信息,帮助钉钉通知群里其他人了解这个负责人的情况。 ## 其它功能: 1. 累计当月已发的消息通知数量,在达到阈值时,发送告警信息@集群负责人,并暂停提供通知服务。 2. 接收到新告警消息时,如果已存在同样告警信息且不超过N小时间隔,则不发送新的钉钉通知。(比Prometheus里配置更灵活,如果愿意,可以具体到某个应用) 3. 统计每个负责人下面的告警消息数量,方便做报表展示 ## 小Tips: 钉钉通知的markdown模板是`不支持`高亮@的人,但可以通过给它`加一个链接,来达成高亮`的目的。为了不让人点击高亮的负责人的时候,出现空白页面,所以特意加了负责人的Gitlab个人主页。 ## 钉钉通知效果图 ![告警中](./example/dingtalk.png) # 本地开发 ## 安装依赖 ```bash $ pnpm install ``` ## 启动应用 ```bash # 热更新模式 $ pnpm run start:dev ``` ## 调试接口 ```bash # 建议用Postman等工具,而不是命令行,更方便改JSON数据,JSON数据参考./example/alert.json curl -X POST \ -H "Content-Type: application/json" \ -d '{"key1":"value1", "key2":"value2"}' \ http://localhost:3000/dingtalk # 或者项目根目录下,直接执行命令 node debug.js ``` ## 测试 ```bash # unit tests $ pnpm run test # e2e tests $ pnpm run test:e2e # test coverage $ pnpm run test:cov ``` ## 构建镜像 ```bash # $ docker build -t alert-service:latest . ``` # 应用部署 ```bash # 1.准备kubeconfig信息,部署时将K8s凭证以secret形式挂载,这里使用kubectl先创建 kubectl create secret generic kubeconfig-secret --from-file=./local/kubeconfig.yaml -n monitor --dry-run=client --output=yaml > ./deploy/secret.yaml # 2.部署应用到集群 kubectl apply -f ./deploy ``` # 其它说明 目录`./src/dingtalk/initData`里的文件,是用来初始化应用配置的,属于一次性的工作。之所以会出现这个东西,是因为没用到数据库,又想持久化存储数据。 如果把数据都存到数据库,可以移除这种hack操作。 ## TODO [ ] 提供接口,动态查询与修改data里的几个json配置文件