EagleEyes-alarm是EagleEyes的报警模块,主要负责将来自BackEnd的报警信息通过邮件的方式(暂定)发送至处理人的邮箱。发送时可根据报警的优先级进行延迟打包发送邮件。
程序在进程开始时会进行一些初始化工作,包括读取配置的目的IP,初始化接受队列线程,创建管道,读取发件人的信息,然后会监听一个HTTP端口,只接受配置文件中的IP发来的消息。当BackEnd发来报警消息时,HTTP服务端会解析发来的JSON,打包成结构,根据其中的优先级信息将包发给不同的队列,每个队列之上有一个每隔N秒的取包线程,这个秒数根据报警级别而定,该线程会在计时器到后将队列中所有现有的包拿出,如果目标是同一收件人,就将消息打包后发送Email。
消息类型是JSON格式,以HTTP形式传输
消息格式 | 类型 | 说明 |
---|---|---|
alarmmsg | 数组 | 存储报警信息 |
host | 对象 | 存储发送主机信息 |
消息格式 | 类型 | 说明 |
---|---|---|
alarmname | 字符串 | 报警项名字 |
alarmvalue | 字符串 | 报警项指标 |
消息格式 | 类型 | 说明 |
---|---|---|
srcip | 字符串 | 主机IP |
hostname | 字符串 | 主机名 |
destemail | 字符串 | 收件人Email |
grade | 整型 | 报警级别 |
{
"alarmmsg":[{"alarmname":"cpu", "alarmvalue":"50"},{"alarmname":"mem", "alarmvalue":"70"}],
"host":{"srcip":"1.2.3.4", "hostname":"bj01", "dest":"xxx@xxx.com", "grade":3}
}
表示本次报警内容是cpu
和mem
报警,值分别是50
和70
,报警主机IP是1.2.3.4
, 主机名为bj01
, 收件人邮箱为xxx@xxx.com
, 报警级别为3
。