概述

prometheus作为时序列数据库(TSDB)

prometheus是一个开源的服务监控系统,可用于收集、存储和查询各种应用指标。与此同时,Prometheus 还提供了强大的数据查询和处理能力。基本原理是通过HTTP协议周期性抓取被监控组件的状态, 任意组件只要提供对应的HTTP接口就可以接入监控. 不需要任何SDK或者其他的集成过程。

loki作为日志聚合系统

官方的介绍就是:Like Prometheus, but for logs,类似于 Prometheus 的日志系统。 用于日志的存储和解析,并提供查询 API 给下游展示。不对日志进行全文索引。通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。

n9e作为告警平台

夜莺监控(n9e)是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。

categraf作为监控采集器,将数据传输给TSDB

categraf是一个开源的监控采集 Agent,类似 Telegraf、Grafana-Agent、Datadog-Agent,对所有常见监控对象提供高质量的监控数据采集能力,采用了 All-in-one 的设计理念,可以同时支持指标、日志、链路追踪数据的采集。

promtail作为日志收集代理

Promtail 会监视目标日志文件、目录或系统日志流,并将其发送到 Loki 数据源。它还支持标签化日志以使其更易于查询,类似于 Prometheus 的标签数据模型。

grafana作为webUI界面,补偿n9e对于展示层面的短板

Grafana是一种流行的开源数据可视化和监测工具,它提供了许多功能强大的仪表盘和图形来帮助用户更好地理解其数据。

构建Docker网络

docker network create --driver bridge --subnet 172.1.100.0/24 monitor

docker network ls

docker network inspect monitor

以下安装都已172.1.100.0/24 monitor网络环境为例。

如果安装环境已使用对应网段,则可使用其他网段,要注意修改docker-compose.yml中的networks配置。

构建监控服务端工作目录

#进入工作目录

cd /home/appManager/

#创建监控服务工作目录

mkdir -p monitor/prometheus monitor/grafana monitor/loki monitor/etc-nightingale

构建prometheus

#进入prometheus工作目录

cd /home/appManager/monitor/prometheus

#将规则和数据挂载,并给data授权777

mkdir rules data

chmod -R 777 /home/appManager/monitor/prometheus/data

将docker-config工程下prometheus的yml文件放到prometheus目录中,并修改line10,监听本地端口

构建loki

#配置进入loki工作目录

cd /home/appManager/monitor/loki

#将数据挂载并给对应文件授权777

mkdir conf index index-cache chunks rules

chmod -R 777 index index-cache chunks rules

cd /home/appManager/monitor/loki/conf

将docker-config工程下loki的local-config.yaml放在loki/conf目录中,修改line11,绑定本机ip

构建n9e

选择一台mysql机器,执行gitlab中docker-config服务下n9e的ini_sql/n9e.sql

#配置进入n9e工作目录

cd /home/appManager/monitor/etc-nightingale/

mkdir logs

chmod -R 777 logs

将docker-config工程下n9e的内容放在etc-nightingale目录中

修改config.toml配置文件中的内容:

  1. line80:连接Mysql地址;
  2. line98\100:连接redis地址和密码;
  3. line147:推送prometheus地址;

构建grafana

#配置进入grafana工作目录

cd /home/appManager/monitor/grafana

#将数据挂载,并给grafana-storage授权777

mkdir grafana-storage

chmod -R 777 /home/appManager/monitor/grafana/grafana-storage

将docker-config工程下grafana的ini文件放到grafana目录中,不用修改

启动监控服务

使用docker-compose.yml拷贝到服务器/home/appManager/monitor/目录下

cd /home/appManager/monitor/

docker compose up loki -d

docker compose up prometheus -d

docker compose up nightingale -d

docker compose up grafana -d

docker-compose.yml文件可以在附件中获取

以192.170.1.97为例,进行已部署环境的验证步骤:

  1. 访问 http://192.170.1.97:3100/metrics 验证loki是否已经安装好;(无账密)
  2. 访问 http://192.170.1.97:9080/graph 验证prometheus是否安装好;(无账密)
  3. 访问 http://192.170.1.97:17000/ 验证nightingale是否安装好;
  4. 访问 http://192.170.1.97:3000/login 验证grafana是否安装好;

构建采集客户端工作目录

如果客户端没有Docker网络请参考【构建Docker网络】

#进入工作目录

cd /home/appManager/

#创建采集客户端工作目录

mkdir -p exporter/etc-categraf exporter/promtail

构建categraf

#进入promtail工作目录

cd /home/appManager/exporter/etc-categraf/

将docker-config工程下categraf/common的内容放在etc-categraf目录中,用于采集服务器信息,

然后根据客户端上安装了哪些中间件到categraf/special中去人工选择放在etc-categraf目录中。(比如:客户端上安装了mysql就把categraf/special/input.mysql放在etc-categraf目录中)

修改config.toml配置文件,line11修改hostname为部署机器ip不然只会显示容器内的地址;line34\line57\line81,绑定n9e地址;

构建promtail

#进入promtail工作目录

cd /home/appManager/exporter/promtail/

将docker-config工程下promtail的配置文件promtail.yaml放在promtail目录中

修改promtail.yaml配置文件,line11,指向loki地址

修改promtail.yaml配置文件中的job_name,还有labels中的__path__要与后面docker-compose中的对应

启动采集服务

将docker-config工程下monitor中的docker-compose.yml拷贝到服务器/home/appManager/exporter/目录下,docker-compose.yml中promtail挂在目录要与promtail.yaml配置文件labels中的__path__对应

cd /home/appManager/exporter/

docker compose up promtail -d

docker compose up categraf -d

  1. 输入命令 docker ps |grep promtail 验证promtail是否已经安装好;
  2. 访问命令 docker ps |grep categraf 验证categraf是否已经安装好;

至此,监控服务端和采集客户端相关组件已安装完毕。

配置n9e监控告警

1、登录n9e,数据源中连接prometheus和loki

2、配置钉钉机器人,直接参照Nightingale 夜莺监控系统 - 告警篇(3)_夜莺告警-CSDN博客

3、配置告警规则。

采集指标

采集器

采集目标

采集目的

categraf

cpu

cpu飙高告警

categraf

内存

内存飙高告警

categraf

IO

IO飙高告警

categraf

存储

存储空间不足告警

categraf

ping客户端agent

判断客户端机器是否存活

categraf

mysql

是否存活

categraf

mysql

连接数过高告警

categraf

nginx

是否存活

categraf

nginx

错误率告警

categraf

nginx

响应时长过久告警

categraf

redis

是否存活

categraf

redis

内存飙高告警

categraf

java应用

是否存活

promtail

nginx

指定客户无访问量

promtail

gateway

指定错误码告警

promtail

gateway

指定接口错误告警

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐