夜鶯Nightingale:打造高可用監(jiān)控平臺(tái)

一、夜鶯監(jiān)控簡介
夜鶯監(jiān)控(Nightingale)是一款集數(shù)據(jù)采集、可視化、監(jiān)控告警和數(shù)據(jù)分析于一體的開源云原生觀測分析工具。它采用All-in-One設(shè)計(jì)理念,與云原生生態(tài)緊密集成,為企業(yè)提供即插即用的監(jiān)控分析和告警能力。
二、夜鶯Nightingale高可用架構(gòu)

實(shí)現(xiàn)夜鶯的高可用性,只需將服務(wù)部署在不同的機(jī)器上,并確保配置文件一致,同時(shí)連接到同一個(gè)MySQL和Redis實(shí)例。通過在夜鶯前端配置虛擬IP(VIP)并部署集群或主從模式的中間件,即可實(shí)現(xiàn)高可用架構(gòu)。
三、部署步驟詳解
Redis集群部署
- 啟動(dòng)Redis容器:使用Docker在兩臺(tái)服務(wù)器上分別啟動(dòng)3個(gè)Redis容器。
- 配置Redis:在redis.conf中設(shè)置集群相關(guān)參數(shù),如開啟集群模式、配置文件、節(jié)點(diǎn)超時(shí)等。
Plain Text
protected-mode no
port 7001 #三個(gè)不同的端口即可
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip IP #服務(wù)器本機(jī)ip
cluster-announce-port 7001 #同port參數(shù)
cluster-announce-bus-port 17001 #三個(gè)不同的端口即可
appendonly yes- 創(chuàng)建集群:所有容器啟動(dòng)后,通過redis-cli命令創(chuàng)建集群。
Bash
redis-cli --cluster create n9e-01IP:7001 n9e-01IP:7002 1n9e-01IP:7003 n9e-02IP:7001 n9e-02IP:7002 n9e-02IP:7003 --cluster-replicas 1MySQL主從部署
- 部署MySQL服務(wù):在兩臺(tái)服務(wù)器上使用二進(jìn)制方式部署MySQL,確保server_id不同,并開啟gtid_mode。
- 創(chuàng)建同步賬戶:在主庫上創(chuàng)建從庫同步賬戶并授權(quán)。
SQL
CREATE USER 'slave'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'slave'@'%';- 開啟同步:在從庫上配置主庫信息,開啟數(shù)據(jù)同步。
SQL
CHANGE MASTER TO MASTER_HOST='n9e-01IP', MASTER_USER='slave', MASTER_PASSWORD='password', MASTER_PORT=3306,
MASTER_AUTO_POSITION=1, MASTER_CONNECT_RETRY=10;Prometheus部署
- 部署Prometheus:在服務(wù)器上部署Prometheus,作為數(shù)據(jù)源。
- 配置參數(shù):開啟熱重載和遠(yuǎn)程寫入監(jiān)控?cái)?shù)據(jù)接收。
YAML
--web.enable-lifecycle
--web.enable-remote-write-receiver夜鶯服務(wù)部署
- 部署夜鶯:在兩臺(tái)服務(wù)器上部署夜鶯服務(wù)。
- 配置日志:在config.toml中配置日志目錄、級別和輸出方式。
TOML
[Log]
Dir = "logs"
Level = "INFO"
Output = "file"- 配置Redis和MySQL:在config.toml中配置Redis集群地址和MySQL主庫地址,并導(dǎo)入夜鶯數(shù)據(jù)庫表結(jié)構(gòu)。
TOML
[Redis]
Address = "n9e-01IP:7001,n9e-01IP:7002,n9e-01IP:7003,n9e-02IP:7001,n9e-02IP:7002,n9e-02IP:7003"
[DB]
DSN = "root:password@tcp(n9e-01IP:3306)/n9e_v6?charset=utf8mb4&parseTime=True&loc=Local&allowNativePasswords=true"Bash
mysql -u root -p password < n9e.sqlKeepalived配置
- 安裝Keepalived:在兩臺(tái)服務(wù)器上安裝Keepalived。
- 配置搶占:配置為BACKUP模式,使用不同優(yōu)先級進(jìn)行搶占。
- 配置檢測腳本:配置檢測腳本檢測夜鶯進(jìn)程。
夜鶯平臺(tái)配置
- 訪問夜鶯:通過配置的VIP訪問夜鶯服務(wù),夜鶯服務(wù)的端口默認(rèn)為17000,使用http://vip:17000/進(jìn)行訪問,賬戶密碼默認(rèn)為root/root.2020。
- 添加數(shù)據(jù)源:在集成中心添加Prometheus-like數(shù)據(jù)源,URL填入http://n9e-01IP:9090。

集成grafana儀表盤
- 集成Grafana:如果有正在使用的Grafana,可以在夜鶯中集成。
- 配置Grafana:修改defaults.ini配置,允許嵌入式集成和匿名訪問,需要修改defaults.ini配置,將allow_embedding取消注釋并設(shè)為true,將[server]下的domain
設(shè)為grafana的服務(wù)器ip,將[auth.anonymous]下的配置取消注釋并將enabled設(shè)為true,然后即可將grafana中的儀表盤通過短鏈集成到夜鶯。


在本文中,我們詳細(xì)介紹了如何部署和配置夜鶯Nightingale監(jiān)控平臺(tái),以實(shí)現(xiàn)高可用性監(jiān)控架構(gòu)。通過精心設(shè)計(jì)的Redis集群、MySQL主從復(fù)制、Prometheus數(shù)據(jù)源集成,以及Keepalived的高可用配置,我們確保了監(jiān)控服務(wù)的穩(wěn)定性和可靠性。此外,通過集成Grafana儀表盤,我們進(jìn)一步增強(qiáng)了監(jiān)控?cái)?shù)據(jù)的可視化和分析能力。
隨著監(jiān)控平臺(tái)的成功部署和運(yùn)行,我們不僅提升了對IT基礎(chǔ)設(shè)施的實(shí)時(shí)監(jiān)控能力,還為未來的業(yè)務(wù)擴(kuò)展和性能優(yōu)化奠定了堅(jiān)實(shí)的基礎(chǔ)。我們期待夜鶯Nightingale監(jiān)控平臺(tái)在持續(xù)的運(yùn)營中發(fā)揮關(guān)鍵作用,幫助我們更好地理解和優(yōu)化系統(tǒng)性能,確保業(yè)務(wù)連續(xù)性和數(shù)據(jù)安全。

























