部署Prometheus監控報警系統
一、Prometheus介紹
Prometheus是由SoundCloud開發的開源監控報警系統和時序列數據庫(TSDB);Prometheus使用Go語言開發,是Google BorgMon監控系統的開源版本;2016年由Google發起Linux基金會旗下的原生雲基金會(Cloud Native Computing Foundation), 將Prometheus納入其下第二大開源項目;Prometheus和Heapster(Heapster是K8S的一個子項目,用於獲取集群的性能數據),相比功能更完善、更全面;Prometheus性能也足夠支撐上萬台規模的集群
1.1 Prometheus的特點
- 多維度數據模型。
- 靈活的查詢語言。
- 不依賴分布式存儲,單個服務器節點是自主的。
- 通過基於HTTP的pull方式采集時序數據。
- 可以通過中間網關進行時序列數據推送。
- 通過服務發現或者靜態配置來發現目標服務對象。
- 支持多種多樣的圖表和界面展示,比如Grafana等。
1.2 架構圖
1.3 基本原理
Prometheus的基本原理是通過HTTP協議周期性抓取被監控組件的狀態,任意組件只要提供對應的HTTP接口就可以接入監控。不需要任何SDK或者其他的集成過程。這樣做非常適合做虛擬化環境監控系統,比如VM、Docker、Kubernetes等。輸出被監控組件信息的HTTP接口被叫做exporter 。目前互聯網公司常用的組件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系統信息(包括磁盤、內存、CPU、網絡等等)。
1.4 服務過程
- Prometheus Daemon負責定時去目標上抓取metrics(指標)數據,每個抓取目標需要暴露一個http服務的接口給它定時抓取。Prometheus支持通過配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目標。Prometheus采用PULL的方式進行監控,即服務器可以直接通過目標PULL數據或者間接地通過中間網關來Push數據。
- Prometheus在本地存儲抓取的所有數據,並通過一定規則進行清理和整理數據,並把得到的結果存儲到新的時間序列中。
- Prometheus通過PromQL和其他API可視化地展示收集的數據。Prometheus支持很多方式的圖表可視化,例如Grafana、自帶的Promdash以及自身提供的模版引擎等等。Prometheus還提供HTTP API的查詢方式,自定義所需要的輸出。
- PushGateway支持Client主動推送metrics到PushGateway,而Prometheus只是定時去Gateway上抓取數據。
- Alertmanager是獨立於Prometheus的一個組件,可以支持Prometheus的查詢語句,提供十分靈活的報警方式。
1.5 三大套件
- Server 主要負責數據采集和存儲,提供PromQL查詢語言的支持
- Alertmanager 警告管理器,用來進行報警
- Push Gateway 支持臨時性Job主動推送指標的中間網關
二、基礎環境
環境/組件 | 版本 | 下載地址 |
操作系統 | CentOS7 | http://archive.kernel.org/centos-vault/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso |
Prometheus | 2.17.1 | https://prometheus.io/download/#prometheus |
go | 1.14.2 | https://golang.org/dl/ |
Grafana | 6.7.2 | https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm |
三、CentOS組件安裝、更新及配置
3.1 防火牆設置
1 systemctl stop firewalld //關閉防火牆 2 systemctl disable firewalld //關閉防火牆自啟
3.2 Selinux設置
1 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config //關閉Selinux 2 sestatus //查詢Selinux狀態(需重啟后查詢)
3.3 組件安裝
1 yum install -y net-tools //安裝Ifconfig工具 2 yum install bash-completion -y //安裝命令補全工具 3 yum -y install lrzsz //安裝文件管理工具
3.4 更新系統及源碼庫
1 yum -y update && yum -y upgrade
四、Prometheus服務端安裝
4.1 安裝Go環境
Prometheus是由go語言開發的,安裝Prometheus之前需要先安裝go環境
1 cd /opt //進入opt文件夾目錄下 2 rz //上傳go安裝文件(下圖中為上傳了本次部署需要用到的所有安裝包)
1 tar -xvf go1.14.2.linux-amd64.tar.gz //解壓縮Go安裝包
4.2 配置環境變量
添加/opt/go/bin目錄到PATH變量中(添加到/etc/profile 或$HOME/.profile都可以)
1 vi /etc/profile //編輯Profile文件
1 export GOROOT=/opt/go //添加在最后一行 2 export PATH=$PATH:$GOROOT/bin
1 source /etc/profile
1 go version //檢查Go版本號(如果顯示版本號,則Go環境安裝成功)
五、安裝Prometheus
1 tar -xvf prometheus-2.17.1.linux-amd64.tar.gz //解壓縮Prometheus安裝包 2 mv prometheus-2.17.1.linux-amd64/ prometheus //移動文件至prometheus文件夾
1 cd prometheus //進入prometheus文件夾 2 ./prometheus --config.file=/prometheus/prometheus.yml & //啟動prometheus
1 瀏覽器打開:http://12.172.1.15:9090 //正常打開說明安裝沒問題
1 vi /etc/systemd/system/prometheus.service //創建prometheus服務
將以下內容寫入文件中: [Unit] Description=Prometheus Monitoring System Documentation=Prometheus Monitoring System [Service] ExecStart=/prometheus/prometheus \ --config.file=/prometheus/prometheus.yml \ --web.listen-address=:9090 Restart=on-failure [Install] WantedBy=multi-user.target
1 systemctl daemon-reload //啟動服務 2 systemctl enable prometheus //設置開機自啟動 3 systemctl start prometheus //啟動服務 4 systemctl status prometheus //檢查Prometheus服務開啟狀態
六、安裝Gafana
Prometheus自帶的監控頁面顯示的內容沒有那么直觀,需要安裝grafana來使監控數據看起來更加直觀
6.1 安裝Grafana軟件包(之前已上傳至OPT文件夾)
1 cd /opt //進入OPT文件夾下
1 yum localinstall grafana-6.7.2-1.x86_64.rpm -y //YUM本地安裝Grafana
6.2 啟動Grafana
1 systemctl daemon-reload 2 systemctl enable grafana-server.service 3 systemctl start grafana-server.service
6.3 訪問Grafana
瀏覽器訪問http://12.172.1.15:3000即可打開grafana頁面,默認用戶名密碼都是admin,初次登錄會要求修改默認的登錄密碼
七、添加Prometheus數據源
7.1 點擊主界面“Add data source”
7.2 選擇Prometheus
7.3 填寫數據源設置項
URL處填寫Prometheus服務所在的IP地址,此處我們將Prometheus服務與Grafana安裝在同一台機器上,直接填寫localhost即可
點擊下方 【Save & Test】按鈕,保存設置
7.4 Dashboards頁面選擇“Prometheus 2.0 Stats”
7.5 查看監控
點擊Grafana圖標,切換到Grafana主頁面,然后點擊Home,選擇我們剛才添加的Prometheus 2.0 Stats,即可看到監控數據