使用 docker 搭建 granfana+prometheus 監控平臺監控測試伺服器資源
網際網路發展的今天,人們對網際網路產品的使用者體驗要求也越來越高,企業為了能提供更優質的使用者體驗,就會絞盡腦汁想盡各種辦法。而對於伺服器的資源監控,搭建一個資源監控平臺,就是一個很好的維護優質服務的保障平臺。利用監控平臺,監控伺服器資源的使用情況,實時檢視使用者在使用企業產品服務時,基礎支撐能力情況,發現監控異常,能夠第一時間做出相應的調整決策,從而保障提供使用者優質體驗。《測試面試寶典》
今天,就給大家講解一種基於目前企業普遍使用的技術,快速搭建一個非常前沿、高大上的監控平臺:docker + grafana + prometheus
docker
docker 相信大家都已經在用了,因為現在大多企業中都在用。使用它來搭建環境,相比傳統方式,速度要快非常非常多,同時,服務執行起來後,對資源的消耗也少很多,而且還能方便對各種服務進行定向擴容。而它的安裝也非常的簡單,準備一臺 Linux 機器,如 CentOS7,只需要執行兩個命令,就可以安裝成功。
注意: 下面沒有特別說明,預設 Linux 機器防火牆是關閉的;Linux 機器與被測伺服器網路是通的。
# centos7 安裝docker
# 安裝依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
#安裝docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 設定開機啟動
systemctl enable docker
prometheus
Prometheus 是一套開源的監控 + 預警 + 時間序列資料庫的組合,現在越來越多的公司或組織開始採用 Prometheus,現在常見的 kubernetes 容器管理系統,也會搭配 Prometheus 來進行監控。
Prometheus 本身不具備收集監控資料功能,需要使用 http 介面來獲取不同的 export 收集的資料,儲存到時序資料庫中。
使用 docker 方式安裝 Prometheus 非常的簡單
# 下載Prometheus映象
docker pull prom/prometheus
# 建立Prometheus容器
docker run -itd --name=docker_prometheus --restart=always -p 9090:9090 prom/prometheus
容器建立成功後,即可通過瀏覽器訪問 http://prometheus 機器 ip:9090 檢視
grafana
Grafana 是一個跨平臺的開源的度量分析和視覺化工具,可以通過將採集的資料庫查詢後視覺化的展示,並及時通知。官方提供了非常多的視覺化模板,根據不同的資料來源,選擇不同的外掛或模板即可。
使用 docker 安裝,也是非常非常簡單
# 下載映象
docker pull grafana/grafana
# 建立容器
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v $PWD/grafana-storage:/var/lib/grafana \
grafana/grafana
容器建立成功後,即可通過瀏覽器訪問 http://grafana 機器 ip:3000,預設賬號密碼都是:admin
node_export
node_export 是 Prometheus 的一個 export,主要是用來收集伺服器硬體資源使用情況的。所以這個往往會部署再被監控的伺服器上。即:grafana、Prometheus 會獨立部署在一臺機器上,node_export 則被部署在被監控的伺服器上,收集被監控的伺服器資源資料,給 Prometheus,然後再通過 grafana 展示出來。
node_export 部署在被監控的伺服器上,可以根據伺服器的實際情況,選擇直接安裝,還是用 docker 安裝。
- 伺服器上直接安裝 node_export
- 首先,用瀏覽器訪問:https://github.com/prometheus/node_exporter/releases 這裡能獲得 node_export 所有的釋出版本,可以根據自己伺服器的實際情況,選擇要下載的包
- 下載包後,上傳到被監控的伺服器上,解壓
- 進入解壓資料夾,直接啟動 ./node_exporter
- 伺服器上用 docker 安裝 node_export
# 下載映象
docker pull prom/node-exporter
# 建立容器
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter
node-exporter 部署啟動好了後,在伺服器的防火牆上開放 9100 埠,則可以通過瀏覽器訪問 http://伺服器 ip:9100/metrics 檢視監控收集的資料。
配置 Prometheus+node_exporter
prometheus 本身沒有資料收集功能,需要用 node_exporter 收集,他們倆之間如何連線在一起呢?這就要修改 Prometheus 的配置檔案,這個檔案在 Prometheus 容器的
/etc/prometheus/prometheus.yml
# 從Prometheus容器中拷貝配置檔案到宿主機
docker cp docker_prometheus:/etc/prometheus/prometheus.yml $PWD
修改 prometheus.yml 檔案
vim prometheus.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['被監控的伺服器ip:9100']
labels:
instance: localhost
注意 :yml 檔案的編輯,注意格式;想新增多個監控伺服器時,可以在中括號中,用逗號分隔寫多個
# 把修改後的Prometheus配置檔案拷貝到容器中
docker cp $PWD/prometheus.yml docker_prometheus:/etc/prometheus/prometheus.yml
重啟 Prometheus 容器
docker restart docker_prometheus
配置 Grafana+Prometheus
現在,萬事俱備,只欠東風了,只需要配置 grafana+prometheus 就能看到監控結果了。
用瀏覽器訪問 http://grafana 機器 ip:3000 登入使用者密碼:admin
登入後,在首頁,選擇 "Add your first data source"
選擇 Prometheus,填寫相關資訊
點選 back 按鈕,回到首頁
再點選 import
輸入 12884,點選 load
再頁面底部,Prometheus 資料庫下拉框中,選擇自己新增的資料來源的名稱,點選 import 按鈕,所有工作就都完成。《測試面試寶典》