【夜鶯監控】初識夜鶯,還是強!

【夜鶯監控】初識夜鶯,還是強!

前言

可觀測性是大部分中小公司比較頭疼的問題,主要表現以下幾個方面:

  1. 需要不同的開源軟件來組裝以實現不同的功能,比如使用 skywalking 實現鏈路監控,使用 elk 實現日志收集監控,使用 grafana+prometheus 來實現指標監控。
  2. 每個開源軟件背后都是獨立的一套體系,它們之前是相互獨立的(Grafana 全家桶已經實現組合)。
  3. 數據孤島,鏈路、日志、指標各玩各的,沒有建立聯系。目前市面上的解決方案要么是商業化產品,要么是自研。

本文的主角其實也沒有做大一統,目前階段依然是不同的開源組件實現不同的功能,只不過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 即可,它會將本地的監控數據推送到中心集群。

這個架構的特點是簡單,維護成本比較低。前提是要求機房之間的網絡鏈路要比較好,如果網絡不好就要用下面的方案了。

邊緣下沉式混雜部署方案

【夜鶯監控】初識夜鶯,還是強!

這種架構是對中心式部署方案的補充,主要是針對網絡不好的情況:

  1. 把時序數據庫 TSDB、轉發網關、告警引擎都下沉到具體的 Region,由 Region 自己的來處理。不過 Region 依然需要和中心集群建立心跳連接,用戶還是可以通過中心集群的監控面板查看其他 Region 的監控信息。
  2. 對于已有 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><p>修改 N9e 的配置文件,在當前目錄 etc/config.toml 文件中。</p> <pre class="brush:sql;toolbar:false;">[[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 &amp;&gt;n9e.log &amp;  # 檢測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 &amp;&gt;categraf.log &amp;

然后就可以在主界面看到基礎信息。

【夜鶯監控】初識夜鶯,還是強!

添加數據源

現在如果去查看時序數據指標,是查詢不到的,因為沒有添加數據源。

【夜鶯監控】初識夜鶯,還是強!

在系統配置->數據源處添加數據源,如下:

【夜鶯監控】初識夜鶯,還是強!

然后就能看到對應的指標數據了。

【夜鶯監控】初識夜鶯,還是強!

也可以通過內置的儀表盤查看主機的監控數據,如下:

【夜鶯監控】初識夜鶯,還是強!

總結

這篇文章主要是帶搭建對夜鶯(Nightingale )有一個初步的印象,對它的整體架構做了簡單的介紹,然后帶大家從 0 到 1 安裝了一遍,旨在讓大家對夜鶯的組件有一個清晰的認識。

目前夜鶯已經更新迭代到 V6 版本,該版本有許多新的功能嘗試,比如接入 ELK,接入 Jaeger 等,后續會持續對這個系列進行更新。

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享