Nightingale改造
修改说明
1、新增tools工具类:
nightingale-6.2.0/toolUtils
该工具类实现了DES加解密功能、私密数据模糊功能
2、修改user相关类:
以DecryptUserGetsByIds为例:
1 | func DecryptUserGetsByIds(ctx *ctx.Context, ids []int64) ([]User, error) { |
同时修改前端调用后端接口。将其指向加密后函数(decrypt、encrypt开头函数)
目前采用的是通知脚本的形式去对接基础服务的相关api:通知脚本更方便修改publickey和sysid。要是写死在代码中,不方便配置和修改。
记得配置预警模板,否则发送内容将显示错误。
相关文件说明
前端调取后端接口文件:nightingale-6.2.0/center/router/router.go
添加同步数据库对外暴露http接口
1 | //添加同步数据库http接口 |
相关代码
1 | package router |
前端静态文件本地存储
原方式
后端二进制部署的时候会跑bash脚本
1 |
|
- 复制 SQL 文件:
- 使用
cp
命令,它将./docker/initsql/a-n9e.sql
文件复制到当前目录并重命名为n9e.sql
。
- 使用
- 检查目录存在性:
- 检查当前目录中是否存在名为
./pub
的目录。如果不存在,它会执行以下步骤。
- 检查当前目录中是否存在名为
- 获取最新的发布标签:
- 通过
curl
命令从 GitHub API 获取n9e/fe
仓库的最新发布信息,并通过awk
命令解析出标签名(TAG
)。
- 通过
- 下载发布的文件:
- 使用
curl
命令下载与最新发布标签对应的n9e-fe-${TAG}.tar.gz
文件。如果下载失败,它会打印错误消息并退出脚本。
- 使用
- 解压缩文件:
- 使用
tar
命令解压缩刚刚下载的.tar.gz
文件。如果解压缩失败,它会打印错误消息并退出脚本。
- 使用
- 设置 GOPATH:
- 通过
go env GOPATH
命令获取 Go 语言的工作目录路径,如果未设置GOPATH
环境变量,则使用默认路径/home/runner/go
。
- 通过
- 嵌入文件到 Go 二进制:
- 使用
statik
工具将./pub
目录中的文件嵌入到./front
目录的 Go 二进制中。如果失败,它会打印错误消息并退出脚本。
- 使用
现在处理:
直接下载fe代码放在pub文件夹下
用statik嵌入本地代码front文件夹中
Nightingale使用规范
项目二进制部署
进入cmd\enter\main.go文件夹
1 | go build -ldflags "-w -s" -o n9e main.go |
1、二进制部署的时候,记得服务器安装python3.x。
2、脚本相关依赖库安装:
1 | pip install cryptography |
1 | pip install pyDes |
1 | pip install requests |
相关日志查看命令:
journalctl -u n9e –since “10 minutes ago” > n9e.log
3、在前端界面中进入:系统配置——通知配置——通知媒介。点击添加按钮:标识固定填写sms、jxccEmail。
4、进入系统配置——通知模板。自定义通知模板内容。通知模板标识为sms、jxccEmail。
5、人员组织配置中只可查看,不可新增
用户数据同步
相关http接口:
1 | http://127.0.0.1:17000/api/n9e/users/sync |
数据类型:
1 | [ |
Nightingale返回格式
{
‘event’ :
{
‘id’ : 179,
‘cluster’ : ‘Default’,
‘group_id’ : 1,
‘hash’ : ‘7b22c43787c64e7c410f33be0eac1ddc’,
‘rule_id’ : 1,
‘rule_name’ : ‘cpu使用率告警’,
‘rule_note’ : ‘当CPU使用率超出50%后告警’,
‘severity’ : 2,
‘prom_for_duration’ : 60,
‘prom_ql’ : ‘cpu_usage_active{cpu=”cpu-total”}>=50’,
‘prom_eval_interval’ : 15,
‘callbacks’ : [],
‘runbook_url’ : ‘’,
‘notify_recovered’ : 1,
‘notify_channels’ : [ ‘email’, ‘wecom’, ‘sms’ ],
‘notify_groups’ : [ ‘1’ ],
‘notify_groups_obj’ :
[{ ‘id’ : 1,
‘name’ : ‘demo-root-group’,
‘note’ : ‘’,
‘create_at’ : 1638845941,
‘create_by’ : ‘root’,
‘update_at’ : 1638845941,
‘update_by’ : ‘root’ }
],
‘notify_repeat_next’ : 1639136081,
‘target_ident’ : ‘sinoc’,
‘target_note’ : ‘bgs_clickhouse’,
‘trigger_time’ : 1639132481,
‘trigger_value’ : ‘77.95272’,
‘tags’ : [ ‘name=cpu_usage_active’, ‘cpu=cpu-total’, ‘ident=sinoc’ ],
‘is_recovered’ : FALSE,
‘notify_users_obj’ :
[
{ ‘id’ : 1,
‘username’ : ‘root’,
‘nickname’ : ‘超管’,
‘phone’ : ‘13811345679’,
‘email’ : ‘cjd@i314.net.cn‘,
‘portrait’ : ‘’,
‘roles’ : [ ‘Admin’ ],
‘contacts’ : { ‘wecom_user_id’ : ‘ChaiJinDong’ },
‘create_at’ : 1638845941,
‘create_by’ : ‘system’,
‘update_at’ : 1639043948,
‘update_by’ : ‘root’,
‘admin’ : FALSE }
],
‘last_eval_time’ : 1639132481
},
‘tpls’ : {
‘dingtalk.tpl’ : ‘级别状态: S2 Triggered\n规则名称: cpu使用率告警\n规则备注: 当CPU使用率超出50%后告警\n监控指标: [name=cpu_usage_active cpu=cpu-total ident=sinoc]\n触发时间: 2021-12-10 18:34:41\n触发时值: 77.95272’,
‘feishu.tpl’ : ‘游戏项目: bgs_clickhouse\n告警级别: S2\n当前状态: 进程异常\n告警信息: cpu使用率告警\n规则备注: 当CPU使用率超出50%后告警\n监控指标: [name=cpu_usage_active cpu=cpu-total ident=sinoc]\n触发时间: 2021-12-10 18:34:41\n触发时值: 77.95272\n’,
‘mailbody.tpl’ : ‘\n\n
cpu使用率告警
\n \n\n\n
级别状态: | \nS2 告警 | \n
---|---|
策略备注: | \n当CPU使用率超出50%后告警 | \n
设备备注: | \nbgs_clickhouse | \n
监控指标: | \n[name=cpu_usage_active cpu=cpu-total ident=sinoc] | \n
触发时值: | \n77.95272 | \n
触发时间: | \n\n 2021-12-10 18:34:41\n | \n
PromQL: | \n\n cpu_usage_active{cpu="cpu-total"}>=50\n | \n
\n\n \n
‘subject.tpl’: ‘告警: cpu使用率告警 [name=cpu_usage_active cpu=cpu-total ident=sinoc]\n’,
‘wecom.tpl’: ‘级别状态: S2 Triggered\n规则标题: cpu使用率告警\n规则备注: 当CPU使用率超出50%后告警\n监控指标: [name=cpu_usage_active cpu=cpu-total ident=sinoc]\n触发时间: 2021-12-10 18:34:41\n触发时值: 77.95272’
}
}