搭建nightngale监控体系
nightngale,即夜莺,是由滴滴开源的监控系统,github地址为https://github.com/ccfos/nightingale。
nightngale有一套很方便的监控告警系统可供使用,本身也有多项监控指标分析视图。本篇以下内容主要介绍夜莺系统的搭建、指标收集和监控告警等内容。
一、部署
1、服务端部署
服务端部署为了方便,采用docker-compose的方式一键部署,这样比较方便重启等。
-
从远程服务端拉取项目,方便后面的部署打包
1 2 3 4 | mkdir /home/nightingale-master cd /home/nightingale-master ##远程地址为:https: //github.com/didi/nightingale.git git clone https: //github.com/didi/nightingale.git |
-
安装docker-compose,如果存在略过
1 2 3 | curl -L https: //github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose # 添加读写权限 chmod +x /usr/local/bin/docker-compose |
-
执行docker-compose
1 2 | cd /home/nightingale-master/nightingale/dockerfiles docker-compose up -d; |
这里服务端就搭建完成。 web页面登录地址:http://{服务器IP}:8016,初始账号:root 密码:root.2020
有几点注意:
1.需要开放端口,比较多,具体需要查看dockerfiles/docker-compose.yaml,nginx 默认是80端口,需要修改的话,执行
1 2 | docker exec -it nginx-n9e /bin/sh # 进入容器 vi /etc/nginx/nginx.conf # 修改默认端口 |
同时修改docker-compose.yaml 的中nginx-n9e对应的端口。
2.重启n9e的时候会重置数据库,所以在重启该服务的时候,需要进入容器修改 entrpoint.sh,注释到数据库重置的那几句脚本。
3.docker-compose.yaml中数据库没有映射到宿主机,需要自己修改 。
2、客户端部署
使用方式如下安装
- 修改主机名,如已修改,跳过
1 | hostnamectl set-hostname 主机名 |
- 下载n9e安装包
链接:https://pan.baidu.com/s/16u6u6TH51CH8_UM0OpDl4Q
提取码:4eZW
- 上传至客户端服务器并解压
1 2 3 4 | mkdir /home/n9e cd /home/n9e tar -xzvf n9e.tar.gz chmod 777 /home/n9e/n9e-agentx |
- 修改解压文件/n9e/etc/address.yml之中,夜莺服务端地址
- 设置开机启动
1 2 3 4 | mv /home/n9e/etc/agent.service /usr/lib/systemd/system/ systemctl daemon-reload systemctl start agent systemctl status agent |
至此,客户端就算安装完成。可以登录夜莺管理web页面,将游离客户端挂载至组织资源树。
二、业务指标监控方案
根据自身业务监控需求,自定义指标收集方案,定期上传指标数据至服务端。
业务指标通过http接口方式上报数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private void pushDataToFalcon(String metric, int count, Integer step){ MetricVo vo = new MetricVo(); vo.setCounterType( "GAUGE" ); // 策略名称 vo.setMetric(metric); // 监控间隔 秒 vo.setStep(step); // 客户端ip vo.setEndpoint(endPoint); vo.setTimestamp(System.currentTimeMillis()/ 1000 ); vo.setValue(( double ) count); HttpHeaders header = new HttpHeaders(); header.setContentType(MediaType.APPLICATION_JSON); // 服务端秘钥,可在夜莺web页面查看 header.add( "X-User-Token" ,token); HttpEntity<List<MetricVo>> entity = new HttpEntity<>(Lists.newArrayList(vo), header); try { String ret = httpTemplate.postForObject( "http://{服务器IP}:8016/api/transfer/push" , entity, String. class ); FalconResult result = JSONObject.parseObject(ret, FalconResult. class ); if (!Constants.SUCCESS.equals(result.getDat())){ log.error( "指标{}推送数据失败,参数{},返回信息{}" , metric, vo, ret); } } catch (Exception e) { log.error( "指标{}推送接口访问失败" , metric, e); } } |
告警策略在夜莺web监控告警系统模块创建
数据推送,满足监控指标时,即可推送告警信息至报警接收人。
信息接收可使用企业微信
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)