【夜鶯監(jiān)控】初識夜鶯,還是強!
前言
可觀測性是大部分中小公司比較頭疼的問題,主要表現(xiàn)以下幾個方面:
- 需要不同的開源軟件來組裝以實現(xiàn)不同的功能,比如使用 Skywalking 實現(xiàn)鏈路監(jiān)控,使用 ELK 實現(xiàn)日志收集監(jiān)控,使用 Grafana+Prometheus 來實現(xiàn)指標監(jiān)控。
- 每個開源軟件背后都是獨立的一套體系,它們之前是相互獨立的(Grafana 全家桶已經(jīng)實現(xiàn)組合)。
- 數(shù)據(jù)孤島,鏈路、日志、指標各玩各的,沒有建立聯(lián)系。目前市面上的解決方案要么是商業(yè)化產(chǎn)品,要么是自研。
本文的主角其實也沒有做大一統(tǒng),目前階段依然是不同的開源組件實現(xiàn)不同的功能,只不過N9e可以在同一個主面板查看它們,但是數(shù)據(jù)之間的聯(lián)系依然沒有實現(xiàn)。
那為什么還要學習研究N9e呢?
因為它正在向這方面發(fā)展。
上面提到 Grafana 其實已經(jīng)在做了,基于 Grafana+Loki+Tempo+Prometheus 組合可以實現(xiàn)監(jiān)控、指標、鏈路的聯(lián)動,N9e 和 Grafana 有什么不同呢?
用秦總的話說:Grafana更擅長監(jiān)控面板的管理,N9e更擅長告警規(guī)則的管理。
N9e 可以將不同的告警規(guī)則發(fā)送到不同的業(yè)務組,不同的群體,避免在一個群里產(chǎn)生大量的告警信息,久而久之就上演了狼來了的故事。
說了這么多,N9e到底長啥樣?
下面是我部署好的一套系統(tǒng)。
可以看到,在該面板上,我們可以實現(xiàn):
- 告警管理
- 時序指標查詢
- 日志分析
- 鏈路追蹤
- 告警自愈
- 人員管理
- .....
這樣就不用幾個應用來回切了,方面快捷。
系統(tǒng)架構
說一千到一萬,架構不懂都白干。
現(xiàn)在我們來看看 N9e 的架構到底是什么樣的,只有從架構邏輯上理清楚 N9e 是怎么玩的,不論是對部署還是維護都大有裨益。
N9e 主要有中心匯聚式部署方案以及邊緣下沉式混雜部署方案,下面會分別做解釋。
中心匯聚式部署方案
先上圖:
這種方案就是建立一個 N9e 集群,其他 region 的監(jiān)控數(shù)據(jù)都往這一個集群發(fā)送數(shù)據(jù),這要求中心集群和其他 region 要有很好的網(wǎng)絡連接。
對于中心集群來說,主要包括以下組件:
- MySQL:用于存放配置信息以及告警事件。
- Redis:用于存儲 JWT Token,機器元信息等數(shù)據(jù)。
- TSDB:時序數(shù)據(jù)庫,存放監(jiān)控指標。
- N9e:核心服務,處理 Web 請求、提供告警引擎
- LB:為多個 N9e 提供負載功能。
對于其他 Region,只需要部署 Categraf 即可,它會將本地的監(jiān)控數(shù)據(jù)推送到中心集群。
這個架構的特點是簡單,維護成本比較低。前提是要求機房之間的網(wǎng)絡鏈路要比較好,如果網(wǎng)絡不好就要用下面的方案了。
邊緣下沉式混雜部署方案
這種架構是對中心式部署方案的補充,主要是針對網(wǎng)絡不好的情況:
- 把時序數(shù)據(jù)庫 TSDB、轉發(fā)網(wǎng)關、告警引擎都下沉到具體的 Region,由 Region 自己的來處理。不過 Region 依然需要和中心集群建立心跳連接,用戶還是可以通過中心集群的監(jiān)控面板查看其他 Region 的監(jiān)控信息。
- 對于已有 Prometheus 的情況,也可以直接將 Prometheus 作為數(shù)據(jù)源接入即可。
邊緣機房,下沉部署時序庫、告警引擎、轉發(fā)網(wǎng)關的時候,要注意,告警引擎需要依賴數(shù)據(jù)庫,因為要同步告警規(guī)則,轉發(fā)網(wǎng)關也要依賴數(shù)據(jù)庫,因為要注冊對象到數(shù)據(jù)庫里去,需要打通相關網(wǎng)絡。
!! PS:對于這種方案,本身網(wǎng)絡不好,還要打通網(wǎng)絡,可能還是會受網(wǎng)絡問題影響。
單機部署
為什么這里要選擇單機部署呢?
其實我是想挨著部署各個組件,這樣對于理解整個 N9e 的運行模式有一定的幫助。
!! Tips:我這里使用的是 Ubuntu 22.04.1 系統(tǒng)
安裝 MySQL
!! Tips:為了快速我安裝的是 Mariadb
安裝完成后會自動啟動。然后為數(shù)據(jù)庫設置一個用戶密碼。
安裝 Redis
默認會自動啟動。
安裝 TSDB
N9e 的 TSDB 有多種選擇:
- Prometheus
- M3DB
- VictoriaMetrics
- InfluxDB
- Thanos
這里我選擇的是 VictoriaMetrics。
觀察8428是否啟動。
安裝 N9e
然后導入 N9e 的數(shù)據(jù)庫。
修改 N9e 的配置文件,在當前目錄 etc/config.toml 文件中。
然后啟動 N9e 服務。
在瀏覽器輸入http://127.0.0.1:17000,然后輸入用戶名root,密碼root.2020即可登錄系統(tǒng)。
安裝 Categraf
Categraf 是一個監(jiān)控采集 Agent,會將采集到的信息推送到 TSDB。
修改配置文件,在 conf/config.toml 中,修改的部分如下:
然后啟動 Categraf。
然后就可以在主界面看到基礎信息。
添加數(shù)據(jù)源
現(xiàn)在如果去查看時序數(shù)據(jù)指標,是查詢不到的,因為沒有添加數(shù)據(jù)源。
在系統(tǒng)配置->數(shù)據(jù)源處添加數(shù)據(jù)源,如下:
然后就能看到對應的指標數(shù)據(jù)了。
也可以通過內置的儀表盤查看主機的監(jiān)控數(shù)據(jù),如下:
總結
這篇文章主要是帶搭建對夜鶯(Nightingale )有一個初步的印象,對它的整體架構做了簡單的介紹,然后帶大家從 0 到 1 安裝了一遍,旨在讓大家對夜鶯的組件有一個清晰的認識。
目前夜鶯已經(jīng)更新迭代到 V6 版本,該版本有許多新的功能嘗試,比如接入 ELK,接入 Jaeger 等,后續(xù)會持續(xù)對這個系列進行更新。