文档

ECS上通过脚本进行主动推送告警记录至标准集成

更新时间:

本文档介绍如何在ECS服务器上通过脚本,将异常记录主动推送至运维事件中心。

在服务器上主动推送异常事件是非常常见的场景,本文将以一段包含关键指标/异常信息的日志,通过shell/python脚本进行数据推送为例,在运维事件中心里以标准集成的方式完成事件生成及流转。

获取异常信息

本文档以推送某段日志为例,实际运行中,用户可通过shell/python自定义异常场景,仅需把异常场景的关键信息推送过来即可。

示例日志内容如下,并将日志保存为test.log。

{"summary":"Cpu_util at 85.16% on machine X.X.X.X","application":"xxx/yyy","name":"Cpu 使用超额预警","details":{"freeSpace":"1%","pingTime":"1500ms","loadAvg":"0.75"},"source":"X.X.X.X","priority":"P4","region":"shanghai","class":"Load","timestamp":"2021-07-17 T08:42:58.315+0000","group":"线上","tags":"{}"}
重要

为了便于说明,上述日志内容的字段已按照标准集成数据格式进行打印。

添加集成并进行异常推送

添加集成

1. 在运维事件中心控制台获取标准集成的密钥。

最佳实践-标准集成12. 将复制的链接替换成下述脚本里的URL

shell脚本:

#!/bin/bash
json=$(tail -n1 test.log)
curl -i -X POST \
' 
URL 
' \
-H 'Content-type':'application/json' \
-d "$json"
说明

请将上述脚本中的URL替换为控制台获取的推送URL地址。

python脚本:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import io
filename = 'test.log'
with io.open(filename,encoding='utf-8')as f:
    lines = f.readlines()
    last_line = lines[-1]
kv = json.loads(last_line)
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = " 
URL 
"
s = json.dumps(kv)
print(requests.post(api_url,data=s,headers=headers).content)
说明

请将上述脚本中的URL替换为控制台获取的推送URL地址。

3. 执行脚本或将脚本加入crontab中进行定期执行。脚本执行时将会把test.log的日志推送到运维事件中心。

配置事件流转规则

脚本执行后,在运维事件中心控制台的集成配置>标准集成里,可以看到此集成已是“已接收告警”状态,并且可查看最近一次告警记录。

标准集成-1116-1

按如下步骤进行流转规则的配置。

1. 进入流转规则>新增规则,填写规则名称,选择监控源为“标准集成”,选择对应的key、过滤规则、对应的value值,并关联具体的服务。

标准集成-1116-2

2. 按照实际需求,选择触发为事件或报警。本示例选择为事件。关于流转规则的更详细介绍,请查看如何配置流转规则

标准集成3

3. 按照实际需求,为事件配置对应的服务组及通知订阅。本示例将关联1个服务组并关联对应的通知订阅

标准集成6

4. 再次执行脚本进行数据推送。

执行脚本1
重要

流转规则仅对增量推送的告警生效,所以此处需再次执行脚本进行数据推送。

5. 在运维事件中心控制台的事件中心>事件,即可看到最新推送告警所生成的事件了。同时分派对象会接收到对应的短信、邮件通知。

标准集成4标准集成-1116-3image.png

其他

以上为在ECS服务上,如何以脚本的形式将服务器探测到的异常事件进行推送,其中脚本语言可以替换为其他语言(如集成在程序代码里)、原始记录不一定是日志(可以替换为其他方式所采集到的异常)、异常内容可以充分自定义(满足标准格式为前提)。

  • 本页导读 (0)