引言
在服務(wù)器監(jiān)控領(lǐng)域, 我們以前使用過(guò)
zabbix + grafana
進(jìn)行配置并使用.
主要使用場(chǎng)景是監(jiān)控多臺(tái)服務(wù)器的硬件使用情況.(磁盤,CPU,內(nèi)存,帶寬等)今天登場(chǎng)的組合是
kong + prometheus + grafana
,
主要用途是監(jiān)控kong代理的服務(wù)接口壓力信息(使用頻率,接口響應(yīng)延時(shí)).
另外相比 zabbix而言, 在配置方面要省時(shí)省力很多了(官方提供了相關(guān)插件)
簡(jiǎn)單介紹一下, 三個(gè)角色的用途:
-
kong
: 看到這里的讀者, 都不需要解釋了. -
prometheus
: 主要通過(guò)讀取http://host/metrics
接口, 來(lái)收集相關(guān)服務(wù)的性能數(shù)據(jù) -
grafana
: 用于監(jiān)控?cái)?shù)據(jù)顯示的WebUI, 低調(diào)奢華有內(nèi)涵
本文編排方式 :
- 優(yōu)先介紹
prometheus
,grafana
的安裝流程. - 然后介紹一下整合配置流程
- kong-prometheus 插件配置,提供源頭數(shù)據(jù)
- 配置prometheus, 從kong讀取數(shù)據(jù)
- 配置grafana
- 添加 database (讀取 prometheus)
- 添加 dashboard模版( 用于展示 prometheus的數(shù)據(jù))
0x01 Grafana安裝
采用yum方式安裝
先增加yum源信息:
touch /etc/yum.repos.d/grafana.repo
vim /etc/yum.repos.d/grafana.repo
# 下面是grafana.repo文件內(nèi)容
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
后面就是一頓日常操作:
# 安裝文字/圖片顯示依賴
yum install fontconfig
yum install freetype*
yum install urw-fonts
# 安裝Grafana
yum install grafana
# 啟動(dòng)服務(wù)
systemctl start grafana-server
# 開機(jī)自動(dòng)啟動(dòng)
systemctl enable grafana-server.service
然后通過(guò)訪問(wèn)端口 3000
,打開登錄畫面:
進(jìn)入畫面:http://localhost:3000 完成管理員設(shè)置.
初始用戶名密碼為 admin/admin
,第一次登錄后, 會(huì)提示修改密碼.
0x02 Prometheus 安裝
Prometheus是用Go語(yǔ)言開發(fā),從官網(wǎng) 下載打包文件后,
解壓后就可以直接使用了. (這個(gè)使用體驗(yàn)真心要夸一下 ^ ^
cd /opt/
# 下載
wget https://github.com/prometheus/prometheus/releases/download/v2.11.1/prometheus-2.11.1.linux-amd64.tar.gz
# 解壓
tar -zxf prometheus-2.11.1.linux-amd64.tar.gz
# 創(chuàng)建軟鏈接
ln -s /opt/prometheus-2.11.1.linux-amd64 /opt/prometheus
# 目錄下已經(jīng)包含一個(gè)配置文件: prometheus.yml
# 進(jìn)入目錄
cd prometheus
# 創(chuàng)建工作目錄 data
mkdir -p /opt/prometheus/data
# 啟動(dòng)服務(wù):
# 日志保留時(shí)間默認(rèn)15天 --storage.tsdb.retention.time=15d
nohup /opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data 2>&1 &
服務(wù)啟動(dòng)成功后, 就可以通過(guò)
9090
端口進(jìn)行訪問(wèn)了:配置篇
0x03 打開kong的metrics支持
我們上面了解到, 要想讓prometheus 來(lái)收集數(shù)據(jù), 那么就要從這個(gè)服務(wù)上從/metrics
路由上取得數(shù)據(jù).
然后, 默認(rèn)情況下, 這個(gè)路由是沒(méi)經(jīng)過(guò)配置, 顯示是沒(méi)有結(jié)果的.
于是乎, 我們來(lái)打開這個(gè)任督二脈:
這里我們通過(guò)admin API, 添加 /metrics
支持
#
curl -XPOST http://localhost:8001/services -d name=prometheusEndpoint -d url=http://localhost:8001/metrics
curl -XPOST http://localhost:8001/services/prometheusEndpoint/routes -d paths[]=/metrics
這里有一個(gè)問(wèn)題, 這個(gè)
/metrics
是面向所有客戶端都開發(fā)訪問(wèn)的.所以, 通過(guò)下面這行命令, 為上面的配置, 添加一條IP白名單:
curl -XPOST http://localhost:8001/services/prometheusEndpoint/plugins -d name=ip-restriction -d config.whitelist=192.168.0.0/16
OK, 準(zhǔn)備工作已經(jīng)完成
開始我的表演!
0x04 為kong添加 prometheus插件
這個(gè)過(guò)程相信小伙伴們已經(jīng)非常熟悉了, 我們添加一個(gè)全局插件 prometheus,
表示這個(gè)插件會(huì)監(jiān)控所有的請(qǐng)求.
完美, 經(jīng)過(guò)這一步史詩(shī)級(jí)的配置, 我們的/metrics
已經(jīng)具備了不可估量的能力.
不信, 你再去刷新一下 cc/metrics
:
哇!!!, 好像真的多了好多數(shù)據(jù)呀, 好厲害的樣子 O_O
恩, 多請(qǐng)求幾次接口, 這里的數(shù)據(jù)會(huì)有些變化的 : )那么, 接口性能數(shù)據(jù)有了, 接下來(lái), 介紹如何把這些信息提供給
prometheus
0x05 配置 prometheus
打開 prometheus.yml
, 找到最后一行, 添加我們的kong
提供服務(wù)信息
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# 仔細(xì)看下面兩行注釋:
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090','cc']
配置完成后, 重啟prometheus
服務(wù).
為了驗(yàn)證prometheus
拿到了數(shù)據(jù), 我們需要在網(wǎng)頁(yè)上, 輸入kong
關(guān)鍵字,應(yīng)該看到如圖的一些信息:
很好, 我們已經(jīng)完成一大半工作了.
接下來(lái), 是時(shí)候在Grafana上Show一波操作了~~~
0x06 配置Grafana
grafana里的配置, 分兩部分:
- datasource: 負(fù)責(zé)采集數(shù)據(jù)
- dashboard: 負(fù)責(zé)UI展示
- datasource配置
如下圖所示: 我們?cè)黾右粋€(gè)數(shù)據(jù)源, 選擇類型為prometheus
:
配置數(shù)據(jù)源時(shí), 選擇本機(jī)的 9090 HTTP服務(wù)即可
測(cè)試保存.
- dashboard配置
通過(guò)import的方式添加一個(gè)dashboard
在ID處輸入7424
下一頁(yè): 選擇數(shù)據(jù)源
保存后, 會(huì)立即切換到dashboard頁(yè):
哇, 好酷,好酷!!!
居然不需要啥配置, 就能有這么帥氣的界面了!!!
夠我吹到新年了 _
等等, 好像哪里不對(duì)
上面的7424
什么鬼?
這當(dāng)然是模版的id啦,
這個(gè)帥氣的dashboard模版 還是kong官方出品的.
詳情請(qǐng)點(diǎn)這里
0x07 后記
這一篇信息量稍微有點(diǎn)大, 不過(guò)出來(lái)的效果還是非常感人的.
非常推薦小伙伴們?cè)囈徊? 因?yàn)榉?wù)端能拿出來(lái)show的東西真沒(méi)多少 :-)
遺留問(wèn)題:
- prometheus 生成的 data 如何控制文件體積