Prometheus 是一套開源的系統(tǒng)監(jiān)控和報(bào)警系統(tǒng)冲粤。支持多種exporter采集數(shù)據(jù),尤其是我們常見的MySQL、Redis桐汤、MongoDB,等等都有相關(guān)的exporter靶壮,對于DBA來說怔毛,可以非常方便的監(jiān)控我們的數(shù)據(jù)庫。
這里我們就部署問題腾降,做一些簡單的整理拣度。
服務(wù)器及部署組件:
10.2.17.137 Prometheus,redis螃壤,redis_exporter
10.2.34.31 consul
部署 Prometheus
Prometheus部署也比較簡單抗果,官網(wǎng)有二進(jìn)制包,下載后奸晴,直接解壓就可以使用冤馏。
Prometheus下載:
https://prometheus.io/download/
redis_exporter下載:
https://github.com/oliver006/redis_exporter/releases
選擇對應(yīng)的系統(tǒng),我們使用的是Linux寄啼,amd64的二進(jìn)制包逮光。
tar -zxf prometheus-2.44.0-rc.2.linux-amd64.tar.gz
mv prometheus-2.44.0-rc.2.linux-amd64 /usr/local/prometheus
#啟動(dòng)
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus --web.listen-address=:9090 &
啟動(dòng)成功,可以通過瀏覽器打開墩划,進(jìn)行數(shù)據(jù)查詢
http://10.2.17.137:9090/
如:
到這里涕刚,簡單的 prometheus server 就安裝完成了,是不是灰匙叩灰常的簡單副女。
監(jiān)控
監(jiān)控具體的實(shí)例
服務(wù)部署好了,下面就是監(jiān)控?cái)?shù)據(jù)了。
打開配置文件 /usr/local/prometheus/prometheus.yml
增加一個(gè)最簡單的job:
- job_name: "redis"
static_configs:
- targets: ["10.2.17.137:11210"]
上面這個(gè)示例碑幅,就是監(jiān)控10.2.17.137上11210的metrics戴陡,這個(gè)并不是redis 的實(shí)例地址,
還需要啟動(dòng) redis_exporter沟涨,11210 是exporter的監(jiān)聽端口
redis_exporter -web.listen-address :11210 -redis.addr 10.2.17.137:6380 -redis.password xxx &
#可以通過這個(gè)命令查看redis的監(jiān)控指標(biāo)
curl http://10.2.17.137:11210/metrics
自動(dòng)發(fā)現(xiàn)式監(jiān)控
上面只是一個(gè)redis實(shí)例恤批,如果我們的生產(chǎn)有上百上千套redis,總不能一個(gè)一個(gè)地址配置吧裹赴?
這時(shí)候喜庞,我們就需要有自動(dòng)發(fā)現(xiàn)式的監(jiān)控。
這里采用注冊consul的方式棋返。
首先延都,我們在10.2.34.31上,部署consul
wget https://releases.hashicorp.com/consul/1.6.1/consul_1.6.1_linux_amd64.zip
unzip consul_1.6.1_linux_amd64.zip
#測試情況睛竣,我們只啟動(dòng)一個(gè)單點(diǎn)consul
./consul agent -dev -client 10.2.34.31 -ui >/tmp/consul.log 2>&1
#瀏覽器打開consul晰房,查看是否正常
http://10.2.34.31:8500/
重新配置prometheus.yml,再增加一個(gè)job
- job_name: "consul"
consul_sd_configs:
- server: '10.2.34.31:8500'
services: []
#使用 consul_sd_configs 來配置使用Consul服務(wù)發(fā)現(xiàn)類型射沟,server 為 Consul 的服務(wù)地址
prometheus會(huì)更加consul中的redis地址來進(jìn)行抓取數(shù)據(jù)殊者,所以接下來,就是我們需要想辦法验夯,自動(dòng)化的猖吴,把所有的redis實(shí)例,來啟動(dòng)對應(yīng)的exporter(該部署省略了)挥转,同時(shí)注冊到consul中海蔽。
#注冊consul
curl -s -X PUT -d '{"id":"10.2.17.137:6381","name": "redis","address": "10.2.17.137","tags":["人民銀行redis"],"port": 4444,"Meta": {"app": "redis","group": "北京分行", "project": "借貸","clusterid": "借貸redis"}}' http://10.2.34.31:8500/v1/agent/service/register
# 此時(shí)我們從 http://10.2.17.137:9090/,查詢 "redis_up"扁位,只能查到如下信息
redis_up{instance="10.2.17.137:4444", job="redis"}
默認(rèn)情況下准潭,只顯示instance趁俊,job兩個(gè)標(biāo)簽域仇,我們自己打的很多標(biāo)簽都沒有顯示。而且看到的instance 不是redis端口寺擂,而是exporter的監(jiān)聽端口暇务,怎么辦?
- job_name: "consul"
consul_sd_configs:
- server: '10.2.34.31:8500'
services: []
relabel_configs:
- regex: __meta_consul_service_metadata_(.+)
action: labelmap
#通過正則怔软,把匹配到的__meta_consul_service_metadata標(biāo)簽顯示出來
- source_labels: [__meta_consul_service_id]
target_label: instance
action: replace
# 我們希望在監(jiān)控中看到的redis 實(shí)例標(biāo)簽 instance 是實(shí)例的ip:port垦细,這里對標(biāo)簽 __meta_consul_service_id進(jìn)行重寫
Prometheus允許用戶在采集任務(wù)設(shè)置中通過relabel_configs來添加自定義的Relabeling過程。
replace/labelmap/labelkeep/labeldrop對標(biāo)簽進(jìn)行管理
重啟 prometheus后挡逼,再次查看
redis_up{app="redis", clusterid="借貸redis", group="北京分行", instance="10.2.17.137:6381", job="consul", project="借貸"}
到這里括改,就是prometheus如何部署及監(jiān)控redis的過程。
圖標(biāo)展示
那監(jiān)控到的數(shù)據(jù)家坎,如何展示嘱能?
還需要配合grafana圖標(biāo)進(jìn)行展示吝梅,這里不再贅述,上一章惹骂,我們主要講了grafana李如何設(shè)置同比苏携、環(huán)比的圖標(biāo),數(shù)據(jù)源使用的是MySQL數(shù)據(jù)对粪。
原理是一樣的右冻,只需要把數(shù)據(jù)源 MySQL改為prometheus即可。