搭建nightngale监控体系

  nightngale,即夜莺,是由滴滴开源的监控系统,github地址为https://github.com/ccfos/nightingale。

  nightngale有一套很方便的监控告警系统可供使用,本身也有多项监控指标分析视图。本篇以下内容主要介绍夜莺系统的搭建、指标收集和监控告警等内容。

一、部署

1、服务端部署

  服务端部署为了方便,采用docker-compose的方式一键部署,这样比较方便重启等。

  •  从远程服务端拉取项目,方便后面的部署打包
mkdir /home/nightingale-master 
cd /home/nightingale-master
 ##远程地址为:https://github.com/didi/nightingale.git 
git clone https://github.com/didi/nightingale.git 
  •  安装docker-compose,如果存在略过
 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
cd /home/nightingale-master/nightingale/dockerfiles 
docker-compose up -d; 

  这里服务端就搭建完成。 web页面登录地址:http://{服务器IP}:8016,初始账号:root  密码:root.2020

  有几点注意:

  1.需要开放端口,比较多,具体需要查看dockerfiles/docker-compose.yaml,nginx 默认是80端口,需要修改的话,执行

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、客户端部署

  使用方式如下安装

  • 修改主机名,如已修改,跳过
hostnamectl set-hostname 主机名
  • 下载n9e安装包

  链接:https://pan.baidu.com/s/16u6u6TH51CH8_UM0OpDl4Q
  提取码:4eZW

  • 上传至客户端服务器并解压
mkdir /home/n9e
cd /home/n9e
tar -xzvf n9e.tar.gz
chmod 777 /home/n9e/n9e-agentx
  • 修改解压文件/n9e/etc/address.yml之中,夜莺服务端地址
  • 设置开机启动
mv /home/n9e/etc/agent.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start agent
systemctl status agent

  至此,客户端就算安装完成。可以登录夜莺管理web页面,将游离客户端挂载至组织资源树。

  

 

 二、业务指标监控方案

  根据自身业务监控需求,自定义指标收集方案,定期上传指标数据至服务端。

  业务指标通过http接口方式上报数据。

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监控告警系统模块创建

  

 

   数据推送,满足监控指标时,即可推送告警信息至报警接收人。

  信息接收可使用企业微信
  

 

posted @ 2023-02-23 11:36  阳光、大地和诗歌  阅读(178)  评论(0编辑  收藏  举报