前言
可观测性是大部分中小公司比较头疼的问题,主要表现以下几个方面:
- 需要不同的开源软件来组装以实现不同的功能,比如使用 Skywalking 实现链路监控,使用 ELK 实现日志收集监控,使用 Grafana Prometheus 来实现指标监控。
- 每个开源软件背后都是独立的一套体系,它们之前是相互独立的(Grafana 全家桶已经实现组合)。
- 数据孤岛,链路、日志、指标各玩各的,没有建立联系。目前市面上的解决方案要么是商业化产品,要么是自研。
本文的主角其实也没有做大一统,目前阶段依然是不同的开源组件实现不同的功能,只不过N9e可以在同一个主面板查看它们,但是数据之间的联系依然没有实现。
那为什么还要学习研究N9e呢?
因为它正在向这方面发展。
上面提到 Grafana 其实已经在做了,基于 Grafana Loki Tempo Prometheus 组合可以实现监控、指标、链路的联动,N9e 和 Grafana 有什么不同呢?
用秦总的话说:Grafana更擅长监控面板的管理,N9e更擅长告警规则的管理。
N9e 可以将不同的告警规则发送到不同的业务组,不同的群体,避免在一个群里产生大量的告警信息,久而久之就上演了狼来了的故事。
说了这么多,N9e到底长啥样?
下面是我部署好的一套系统。
可以看到,在该面板上,我们可以实现:
- 告警管理
- 时序指标查询
- 日志分析
- 链路追踪
- 告警自愈
- 人员管理
- .....
这样就不用几个应用来回切了,方面快捷。
系统架构
说一千到一万,架构不懂都白干。
现在我们来看看 N9e 的架构到底是什么样的,只有从架构逻辑上理清楚 N9e 是怎么玩的,不论是对部署还是维护都大有裨益。
N9e 主要有中心汇聚式部署方案以及边缘下沉式混杂部署方案,下面会分别做解释。
中心汇聚式部署方案
先上图:
这种方案就是建立一个 N9e 集群,其他 region 的监控数据都往这一个集群发送数据,这要求中心集群和其他 region 要有很好的网络连接。
对于中心集群来说,主要包括以下组件:
- MySQL:用于存放配置信息以及告警事件。
- Redis:用于存储 JWT Token,机器元信息等数据。
- TSDB:时序数据库,存放监控指标。
- N9e:核心服务,处理 Web 请求、提供告警引擎
- LB:为多个 N9e 提供负载功能。
对于其他 Region,只需要部署 Categraf 即可,它会将本地的监控数据推送到中心集群。
这个架构的特点是简单,维护成本比较低。前提是要求机房之间的网络链路要比较好,如果网络不好就要用下面的方案了。
边缘下沉式混杂部署方案
这种架构是对中心式部署方案的补充,主要是针对网络不好的情况:
- 把时序数据库 TSDB、转发网关、告警引擎都下沉到具体的 Region,由 Region 自己的来处理。不过 Region 依然需要和中心集群建立心跳连接,用户还是可以通过中心集群的监控面板查看其他 Region 的监控信息。
- 对于已有 Prometheus 的情况,也可以直接将 Prometheus 作为数据源接入即可。
边缘机房,下沉部署时序库、告警引擎、转发网关的时候,要注意,告警引擎需要依赖数据库,因为要同步告警规则,转发网关也要依赖数据库,因为要注册对象到数据库里去,需要打通相关网络。
!! PS:对于这种方案,本身网络不好,还要打通网络,可能还是会受网络问题影响。
单机部署
为什么这里要选择单机部署呢?
其实我是想挨着部署各个组件,这样对于理解整个 N9e 的运行模式有一定的帮助。
!! Tips:我这里使用的是 Ubuntu 22.04.1 系统
安装 MySQL
!! Tips:为了快速我安装的是 Mariadb
# 更新镜像源 $ sudo apt-get update # 更新软件 $ sudo apt-get upgrade # 安装Mariabd $ sudo apt-get install mariadb-server-10.6
安装完成后会自动启动。然后为数据库设置一个用户密码。
# 连接数据库 $ sudo mysql # 设置权限和密码 > GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234'; >flush privileges;
安装 Redis
# 更新镜像源 $ sudo apt-get update # 更新软件 $ sudo apt-get upgrade # 安装Redis $ sudo apt install redis-server
默认会自动启动。
安装 TSDB
N9e 的 TSDB 有多种选择:
- Prometheus
- M3DB
- VictoriaMetrics
- InfluxDB
- Thanos
这里我选择的是 VictoriaMetrics。
# 下载二进制包 $ wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.90.0/victoria-metrics-linux-amd64-v1.90.0.tar.gz # 解压 $ tar xf victoria-metrics-linux-amd64-v1.90.0.tar.gz # 启动 $ nohup ./victoria-metrics-prod &>victoria.log &
观察8428是否启动。
安装 N9e
# 下载最新版本的二进制包 $ wget https://github.com/ccfos/nightingale/releases/download/v6.0.0-ga.3/n9e-v6.0.0-ga.3-linux-amd64.tar.gz # 解压 $ mkdir n9e $ tar xf n9e-v6.0.0-ga.3-linux-amd64.tar.gz -C n9e/ # 检验目录如下 $ ll total 35332 drwxrwxr-x7 jokerbai jokerbai 40964月 12 14:05 ./ drwxr-xr-x4 jokerbai jokerbai 40964月 12 14:05 ../ drwxrwxr-x3 jokerbai jokerbai 40964月 12 14:05 cli/ drwxrwxr-x 10 jokerbai jokerbai 40964月 12 14:05 docker/ drwxrwxr-x4 jokerbai jokerbai 40964月 12 14:09 etc/ drwxrwxr-x 20 jokerbai jokerbai 40964月 12 14:05 integrations/ -rwxr-xr-x1 jokerbai jokerbai 252805124月6 19:05 n9e* -rwxr-xr-x1 jokerbai jokerbai 108380164月6 19:05 n9e-cli* -rw-r--r--1 jokerbai jokerbai297844月6 19:04 n9e.sql drwxrwxr-x6 jokerbai jokerbai 40964月 12 14:05 pub/
然后导入 N9e 的数据库。
# 导入数据库 $ mysql -uroot -p <n9e.sql
修改 N9e 的配置文件,在当前目录 etc/config.toml 文件中。
[[Pushgw.Writers]] # Url = "http://127.0.0.1:8480/insert/0/prometheus/api/v1/write" Url = "http://127.0.0.1:8428/api/v1/write"
然后启动 N9e 服务。
# 启动服务 $ nohup ./n9e &>n9e.log & # 检测17000端口是否启动 $ ss -ntl | grep 17000 LISTEN 04096 *:17000*:*
在浏览器输入http://127.0.0.1:17000,然后输入用户名root,密码root.2020即可登录系统。
安装 Categraf
Categraf 是一个监控采集 Agent,会将采集到的信息推送到 TSDB。
# 下载 $ wget https://download.flashcat.cloud/categraf-v0.2.38-linux-amd64.tar.gz # 解压 $ tar xf categraf-v0.2.38-linux-amd64.tar.gz # 进入目录 $ cd categraf-v0.2.38-linux-amd64/
修改配置文件,在 conf/config.toml 中,修改的部分如下:
[[writers]] url = "http://127.0.0.1:17000/prometheus/v1/write" [heartbeat] enable = true
然后启动 Categraf。
$ nohup ./categraf &>categraf.log &
然后就可以在主界面看到基础信息。
添加数据源
现在如果去查看时序数据指标,是查询不到的,因为没有添加数据源。
在系统配置->数据源处添加数据源,如下:
然后就能看到对应的指标数据了。
也可以通过内置的仪表盘查看主机的监控数据,如下:
总结
这篇文章主要是带搭建对夜莺(Nightingale )有一个初步的印象,对它的整体架构做了简单的介绍,然后带大家从 0 到 1 安装了一遍,旨在让大家对夜莺的组件有一个清晰的认识。
目前夜莺已经更新迭代到 V6 版本,该版本有许多新的功能尝试,比如接入 ELK,接入 Jaeger 等,后续会持续对这个系列进行更新。
以上是【夜莺监控】初识夜莺,还是强!的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3汉化版
中文版,非常好用