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