新聞中心
我們都知道天下沒(méi)有“永不宕機(jī)”的系統(tǒng),但每次線上出問(wèn)題都要拉出一個(gè)程序員“祭天”。所以一款靠譜、好用的監(jiān)控工具就顯得十分重要,它可以在生產(chǎn)環(huán)境出故障的第一時(shí)間發(fā)出告警,并提供詳實(shí)的數(shù)據(jù),幫助程序員盡早發(fā)現(xiàn)故障、盡快定位問(wèn)題。

可以毫不夸張地說(shuō),監(jiān)控就是運(yùn)維的眼睛、研發(fā)的“免死金牌”,程序員“明哲保身、自證清白”的必備利器!
一、夜鶯監(jiān)控
今天 HelloGitHub 給大家?guī)?lái)的是一款開(kāi)箱即用、默認(rèn)中文、界面美觀的開(kāi)源監(jiān)控系統(tǒng)——夜鶯監(jiān)控(Nightingale),100% 國(guó)產(chǎn)更懂你的苦。你還在為搭建/配置/調(diào)優(yōu)「Prometheus + AlertManager + Grafana」的監(jiān)控平臺(tái)而煩惱嗎?開(kāi)箱即用的夜鶯監(jiān)控輕松解決你的問(wèn)題。
GitHub:https://github.com/ccfos/nightingale
夜鶯監(jiān)控是一款先進(jìn)的開(kāi)源云原生監(jiān)控分析系統(tǒng),采用 All-In-One 的設(shè)計(jì),集數(shù)據(jù)采集、可視化、監(jiān)控告警、數(shù)據(jù)分析、權(quán)限管理于一體,擁有企業(yè)級(jí)的監(jiān)控分析和告警能力。
圖片
圖片
圖片
夜鶯監(jiān)控在運(yùn)維圈里很有名,它“出身名門(mén)”最初是由滴滴孵化并開(kāi)源,在此期間沉淀了一線互聯(lián)網(wǎng)公司可觀測(cè)性的最佳實(shí)踐,有大廠的實(shí)踐背書(shū)可靠性和實(shí)用性上毋庸置疑。之后則捐贈(zèng)給了中國(guó)計(jì)算機(jī)學(xué)會(huì)(CCF)進(jìn)行托管,由運(yùn)維圈的“老炮”秦曉輝等人設(shè)計(jì)、開(kāi)發(fā)和維護(hù)。截止到發(fā)文前,夜鶯監(jiān)控已在 GitHub 上獲得了 7200+ 個(gè) Star、1200+ 次 Fork,發(fā)展勢(shì)頭迅猛、開(kāi)源社區(qū)活躍,并且已經(jīng)服務(wù)了上千家分布在各行各業(yè)的企業(yè)。
圖片
接下來(lái),就和 HelloGitHub 一起上手這款開(kāi)箱即用的開(kāi)源監(jiān)控利器吧!
二、安裝啟動(dòng)
最簡(jiǎn)單的部署方式是使用 docker-compose,可實(shí)現(xiàn)一鍵啟動(dòng),執(zhí)行下面的命令即可:
git clone https://github.com/ccfos/nightingale.git
cd nightingale/docker
docker-compose up -d
# 成功后會(huì)有以下輸出
# Creating mysql ... done
# Creating redis ... done
# Creating prometheus ... done
# Creating ibex ... done
# Creating agentd ... done
# Creating n9e ... done
# Creating telegraf ... done啟動(dòng)之后瀏覽器直接訪問(wèn):127.0.0.1:17000,輸入賬號(hào) root 密碼:root.2020,登陸后就能看到管理界面啦!
圖片
不過(guò),我還是更推薦大家使用二進(jìn)制方式部署,因?yàn)檫@種方式不依賴(lài) Docker、更穩(wěn)定、升級(jí)也方便,可用于生產(chǎn)環(huán)境(官方推薦),部署起來(lái)也不麻煩,也就多幾行命令的事。下面是 linux x86 環(huán)境的示例和注解:
# 創(chuàng)建個(gè) n9e 的目錄,后面把 n9e 相關(guān)的文件解壓到這里
mkdir -p /opt/n9e && cd /opt/n9e
# 下載 n9e 發(fā)布包,amd64 是 x84 的包,下載站點(diǎn)也提供 arm64 的包,如果需要其他平臺(tái)的包則要自行編譯了
tarball=n9e-v6.1.0-linux-amd64.tar.gz
urlpath=https://download.flashcat.cloud/${tarball}
wget -q $urlpath || exit 1
# 解壓縮發(fā)布包
tar zxvf ${tarball}
# 解壓縮之后,可以看到 n9e.sql 是建表語(yǔ)句,導(dǎo)入數(shù)據(jù)庫(kù)
mysql -uroot -p1234 < n9e.sql
# 啟動(dòng) n9e,先使用 nohup 簡(jiǎn)單測(cè)試,如果需要 systemd 托管,請(qǐng)自行準(zhǔn)備 service 文件
nohup ./n9e &> n9e.log &
# 檢查 n9e.log 是否有異常日志,檢查端口是否在監(jiān)聽(tīng),正常應(yīng)該監(jiān)聽(tīng)在 17000
ss -tlnp|grep 17000至此,安裝部分就結(jié)束了,接下來(lái)就是上手體驗(yàn)了。
三、快速上手
3.1 配置數(shù)據(jù)源
夜鶯不生產(chǎn)日志,只是日志的“監(jiān)工”。所以安裝完第一件事就是配置日志數(shù)據(jù),用法類(lèi)似 Grafana 可直接接入數(shù)據(jù)源,菜單位置:「系統(tǒng)配置」-「數(shù)據(jù)源」,目前支持:prometheus、victoriametrics、thanos、m3、elasticsearch、loki 等數(shù)據(jù)源。
圖片
完成數(shù)據(jù)源接入之后,就可以十分方便地通過(guò)可視化的方式查看日志了。
圖片
夜鶯默認(rèn)提供了一些可視化大盤(pán)(菜單位置:「儀表盤(pán)」-「內(nèi)置儀表盤(pán)」)和內(nèi)置告警規(guī)則(菜單位置:「告警管理」-「內(nèi)置規(guī)則」),導(dǎo)入自己的業(yè)務(wù)組(這是個(gè)管理概念,不同的告警規(guī)則和儀表盤(pán)可以使用不同的業(yè)務(wù)組分門(mén)別類(lèi)管理 + 控制權(quán)限)就能使用啦。
3.2 好看的儀表盤(pán)
夜鶯的儀表盤(pán)展示效果美觀、性能出眾、功能豐富,雖然還沒(méi)有 Grafana 的全面,但基本可以作為 Grafana 的國(guó)產(chǎn)化平替了。夜鶯的儀表盤(pán)支持暗黑主題,效果如下:
圖片
前端 GitHub 地址:https://github.com/n9e/fe
3.3 采集器
如果之前沒(méi)有做過(guò)監(jiān)控?cái)?shù)據(jù)收集,可以使用夜鶯團(tuán)隊(duì)提供的采集器 categraf,這同樣是一款開(kāi)源的 telemetry 數(shù)據(jù)采集器,它內(nèi)置了 OS、SNMP、IPMI、MySQL、Redis、MongoDB、Oracle、Kafka、ElasticSearch、cAdvisor 等多種采集插件。
GitHub:https://github.com/flashcatcloud/categraf
當(dāng)然,也可以使用其他采集器,比如 telegraf、grafana-agent 等,但是 categraf 的對(duì)接最為絲滑。夜鶯支持多種數(shù)據(jù)接入?yún)f(xié)議,比如 prometheus remote write、OpenTSDB、Datadog 等,接收到數(shù)據(jù)之后做統(tǒng)一轉(zhuǎn)換,然后轉(zhuǎn)發(fā)給后端時(shí)序庫(kù),具體轉(zhuǎn)發(fā)給哪些時(shí)序庫(kù)可以在夜鶯的配置文件中配置。
3.4 告警管理
靈活的告警是優(yōu)秀監(jiān)控系統(tǒng)的標(biāo)配,夜鶯在這方面做得十分出色。它可以將一套規(guī)則應(yīng)用于多個(gè)數(shù)據(jù)源,支持級(jí)別抑制、生效時(shí)間、告警屏蔽、告警訂閱、告警自愈等規(guī)則。
- 級(jí)別抑制:高級(jí)別抑制低級(jí)別告警,比如磁盤(pán)利用率超過(guò) 95% 產(chǎn)生 P1 告警,超過(guò) 85% 產(chǎn)生 P2 告警,如果某一時(shí)刻磁盤(pán)利用率跑到 100%,就只會(huì)觸發(fā) P1 告警,P2 被抑制,避免告警打擾;
- 生效時(shí)間:可配置告警規(guī)則判定的生效時(shí)間,支持配置不同的多個(gè)日期和時(shí)段;
- 告警屏蔽:減少已知告警的干擾,比如某個(gè)機(jī)器要維護(hù),可以提前屏蔽相關(guān)告警;
- 告警訂閱:告警消息分組通知;
- 告警自愈:告警可觸發(fā)預(yù)先設(shè)定好的腳本,自動(dòng)解決故障;
菜單「告警管理」-「規(guī)則配置」的界面和示例如下:
圖片
四、深入了解
監(jiān)控并不僅僅是可視化+告警那么簡(jiǎn)單,里面有很多道道,下面讓我們“往下”走一點(diǎn),深入了解下夜鶯監(jiān)控的架構(gòu)和解決的痛點(diǎn)。
4.1 架構(gòu)介紹
夜鶯作為一款 Go 寫(xiě)的監(jiān)控系統(tǒng),不僅部署方便,而且整體設(shè)計(jì)上非常開(kāi)放和靈活,可以和開(kāi)源生態(tài)上其他軟件組合使用,適用于已有監(jiān)控系統(tǒng)升級(jí)或從零搭建監(jiān)控平臺(tái)等場(chǎng)景。
- 采集器:可對(duì)接 telegraf、categraf、grafana-agent、datadog-agent、以及各類(lèi) exporter;
- 存儲(chǔ):可對(duì)接 prometheus、thanos、m3、victoriametrics 等;
架構(gòu)圖如下:
圖片
從依賴(lài)上看,夜鶯就只依賴(lài) MySQL 和 Redis,它倆對(duì)于技術(shù)人員來(lái)說(shuō),都是非常熟悉的。除此之外,夜鶯在部署時(shí)只需一個(gè)二進(jìn)制文件 + 配置文件,將開(kāi)箱即用的精神貫徹到底!
4.2 項(xiàng)目結(jié)構(gòu)
下面簡(jiǎn)單介紹一下夜鶯的項(xiàng)目結(jié)構(gòu),即核心功能模塊介紹,方便想要深入了解夜鶯的同學(xué)快速進(jìn)入源碼。
# 夜鶯的目錄結(jié)構(gòu)介紹
.
├── ...
├── alert 告警引擎相關(guān)邏輯,對(duì) Prometheus、Loki、TDEngine 等數(shù)據(jù)源做異常數(shù)據(jù)判斷并產(chǎn)生告警事件。
├── center Web 后端的邏輯。
├── cli 命令行工具,用于 v5 版本升級(jí) v6 版本時(shí)的數(shù)據(jù)遷移。
├── cmd 入口包,所有的二進(jìn)制的 main 函數(shù)入口都在這里。
├── conf 配置文件在內(nèi)存里映射的數(shù)據(jù)結(jié)構(gòu)。
├── docker 容器相關(guān)的文件,包括 Dockerfile 和 docker-compose 等,數(shù)據(jù)庫(kù)的建表 SQL 也在這里。
├── etc 配置文件,重點(diǎn)關(guān)注 config.toml,如果使用了邊緣機(jī)房的部署方案,還需要關(guān)注 edge.toml。
├── integrations 集成目錄,包含比如 MySQL、Redis、Elasticsearch 等各個(gè)監(jiān)控目標(biāo)的內(nèi)置儀表盤(pán)、告警規(guī)則等。
├── models 數(shù)據(jù)庫(kù)操作相關(guān)的代碼。
├── pkg 通用 lib 庫(kù)。
├── prom Prometheus 相關(guān)的代碼,包括 remote write 寫(xiě)數(shù)據(jù)以及查詢(xún)接口的封裝。
├── tdengine 查詢(xún) TDEngine(時(shí)序數(shù)據(jù)庫(kù))相關(guān)的代碼。
├── storage MySQL 和 Redis 的初始化連接相關(guān)的代碼。
└── pushgw Pushgateway 相關(guān)的代碼,用于接收 remote write 數(shù)據(jù)、opentsdb 格式的數(shù)據(jù)、datadog 格式的數(shù)據(jù)、open-falcon 格式的數(shù)據(jù),然后統(tǒng)一做格式轉(zhuǎn)換寫(xiě)入后端存儲(chǔ)。4.3 多機(jī)房場(chǎng)景
你是否遇到過(guò)需要監(jiān)控多機(jī)房的場(chǎng)景?
目前,大多數(shù)公司都有很多機(jī)房,它們分布在不同的區(qū)域,這讓監(jiān)控變得不再簡(jiǎn)單。因?yàn)槿绻麢C(jī)房之間網(wǎng)絡(luò)鏈路很好,那么只需要部署一套監(jiān)控系統(tǒng)就搞定了。但如果機(jī)房之間的網(wǎng)絡(luò)不太好,無(wú)法做到監(jiān)控?cái)?shù)據(jù)實(shí)時(shí)、可靠的上傳,但是告警規(guī)則又想在一個(gè)中心管理。
這個(gè)時(shí)候就需要高級(jí)部署方案,夜鶯提供了現(xiàn)成的邊緣機(jī)房部署方案,可以方便地解決上面的問(wèn)題。架構(gòu)圖如下:
圖片
通過(guò)夜鶯提供的高級(jí)部署方案,即在網(wǎng)絡(luò)不好的機(jī)房(邊緣)部署(下沉)時(shí)序數(shù)據(jù)庫(kù)和告警引擎(n9e-edge),從而保證數(shù)據(jù)不丟失和告警規(guī)則的同步,輕松構(gòu)建統(tǒng)一的監(jiān)控中心,實(shí)現(xiàn)多機(jī)房監(jiān)控只需管理一套告警規(guī)則和可視化平臺(tái)。
真·企業(yè)級(jí)監(jiān)控和告警一體化解決方案!
五、最后
開(kāi)源的監(jiān)控系統(tǒng),目前用的比較廣泛的是 Zabbix 和 Prometheus,但它們或多或少都有一些不擅長(zhǎng)的場(chǎng)景。
Zabbix 擅長(zhǎng)設(shè)備監(jiān)控,對(duì)各類(lèi)操作系統(tǒng)、網(wǎng)絡(luò)設(shè)備有較好的兼容適配,但是不擅長(zhǎng)微服務(wù)和云原生環(huán)境的監(jiān)控。
- 不擅長(zhǎng)動(dòng)態(tài)變化對(duì)象的監(jiān)控:Zabbix 是資產(chǎn)管理式,在云原生環(huán)境下,資產(chǎn)是動(dòng)態(tài)變化的,比如 Pod、Service、Deployment 等。
- 不擅長(zhǎng)微服務(wù)的監(jiān)控:在微服務(wù)和云原生環(huán)境下,監(jiān)控指標(biāo)爆炸性增長(zhǎng),而且指標(biāo)有不同的維度描述,Zabbix 使用關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)序數(shù)據(jù),不擅長(zhǎng)處理這種大規(guī)模的多維度的指標(biāo)數(shù)據(jù)。
Prometheus 擅長(zhǎng)微服務(wù)和云原生環(huán)境的監(jiān)控,基本已經(jīng)成為 Kubernetes 的標(biāo)配,在云原生環(huán)境下非常流行,但它也有缺點(diǎn)。
- 設(shè)計(jì)上偏工具化,使用配置文件來(lái)管理規(guī)則,缺少權(quán)限化管理的 WebUI。
- 使用 Prometheus 的公司通常會(huì)不止一套,比如每個(gè) Kubernetes 一套 Prometheus,多個(gè) Prometheus 可能有很多相同的規(guī)則,管理起來(lái)比較重復(fù)。
- 其他一些小點(diǎn):告警引擎是單點(diǎn),告警事件沒(méi)有持久化;告警規(guī)則缺乏一些更為靈活的配置,比如生效時(shí)間。
夜鶯作為一款開(kāi)源的云原生監(jiān)控系統(tǒng),在云原生方面有著先天優(yōu)勢(shì),而且使用國(guó)外的開(kāi)源監(jiān)控項(xiàng)目,最擔(dān)心的就是沒(méi)有技術(shù)支持,夜鶯作為“100% 國(guó)產(chǎn)”開(kāi)源項(xiàng)目,在技術(shù)支持上分為社區(qū)支持和商業(yè)支持(響應(yīng)更及時(shí))兩種,服務(wù)的企業(yè)用戶已有上千家,比如移動(dòng)、聯(lián)通、電信、米哈游、莉莉絲、方正證券、國(guó)泰君安、海底撈、海康、搜狐、新浪等,分布在各行各業(yè)。
圖片
最后,還是那句話:開(kāi)源不易如果覺(jué)得夜鶯監(jiān)控不錯(cuò)的話,就請(qǐng)給個(gè) Star 支持一下,試用反饋遇到的問(wèn)題,也是對(duì)開(kāi)源的一種支持!
GitHub:https://github.com/ccfos/nightingale
官網(wǎng):https://flashcat.cloud/
新聞名稱(chēng):這款7kStar的國(guó)產(chǎn)監(jiān)控系統(tǒng),真不錯(cuò)!
文章來(lái)源:http://www.dlmjj.cn/article/codecdo.html


咨詢(xún)
建站咨詢(xún)
