最近準備把我前段時間研究的多套常見的監控工具整理出來,分享給大家。先整理一篇Prometheus的,希望能幫助到需要的朋友。
一、簡介
1.1 prometheus監控框架工具介紹
prometheus是由谷歌研發的一款開源的監控軟體,它通過安裝在遠程機器上的exporter,通過HTTP協議從遠程的機器收集數據並存儲在本地的時序資料庫上。目前已經被雲計算本地基金會託管,是繼k8s託管的第二個項目,號稱是下一代監控。
1.2 優缺點
prometheus存儲的是時序數據(時序列數據由metric名和一組key/value組成),即按相同時序(相同名稱和標籤),以時間維度存儲連續的數據的集合。
metric名表示metric的功能,如http_request_total。時序的名字由 ASCII 字符,數字,下劃線,以及冒號組成,它必須滿足正則表達式 [a-zA-Z_:][a-zA-Z0-9_:]*, 其名字應該具有語義化,一般表示一個可以度量的指標,例如 http_requests_total, 可以表示 http 請求的總數。
Prometheus使用在多維度上靈活的查詢語言(PromQl)。PromQL (Prometheus Query Language) 是 Prometheus 自己開發的數據查詢 DSL 語言。
Prometheus具有易管理、易集成、可擴展、支持自動發信等優勢。
同時Prometheus後端用 golang語言開發,前端是 Grafana,二次開發需要掌握相關語言。
1.3 支持類型
Prometheus為了支持各種中間件以及第三方的監控提供了exporter,大家可以把它理解成監控適配器,將不同指標類型和格式的數據統一轉化為Prometheus能夠識別的指標類型。
例如Node exporter主要通過讀取Linux的/proc以及/sys目錄下的系統文件獲取作業系統運行狀態,reids exporter通過Reids命令行獲取指標,mysql exporter通過讀取資料庫監控表獲取MySQL的性能數據。他們將這些異構的數據轉化為標準的Prometheus格式,並提供HTTP查詢接口。
Prometheus的流行和Kubernetes密不可分,支持對Kubernetes、容器、OpenStack的監控。
二、部署過程
2.1 安裝包下載
1.安裝包github下載
https://prometheus.io/download/
Github下載各個組件包,通過命令行方式安裝配置。
2.容器鏡像下載
https://hub.docker.com/u/prom
容器鏡像在線拉取
docker pull prom/prometheus
2.2 prometheus安裝部署
1.上傳已下載的各組件安裝包
2.部署到/usr/local/目錄
tar -zxvf prometheus-2.18.1.linux-amd64.tar.gz -C /usr/local/
3.修改文件夾名稱
mv prometheus-2.18.1.linux-amd64 prometheus
4.驗證,查看版本號
cd prometheus/
./prometheus --version
5.修改prometheus.yml配置文件vi prometheus.yml,配置相關監控項
6.設置prometheus用戶
groupadd prometheus
useradd -g prometheus -s /sbin/nologin prometheus
7.給prometheus用戶賦權
cd ~
chown -R prometheus:prometheus /usr/local/prometheus/
8.創建prometheus運行數據目錄
mkdir -p /var/lib/prometheus
chown -R prometheus:prometheus /var/lib/prometheus/
9.設置開機啟動
touch /usr/lib/systemd/system/prometheus.service
chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service
vi /usr/lib/systemd/system/prometheus.service
添加下面內容,設置prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
[Service]
# Type設置為notify時,服務會不斷重啟
Type=simple
User=prometheus
# --storage.tsdb.path是可選項,默認數據目錄在運行目錄的./dada目錄中
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/Prometheus --web.listen-address=:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target
10.設置iptables(有防火牆要求的設置)
vi /etc/sysconfig/iptables
配置下面這段話:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT
service iptables restart
2.3 prometheus部署完成
1.啟動prometheus,並查看狀態
systemctl enable prometheus
systemctl start prometheus
systemctl Prometheus status
netstat -tunlp | grep 9090
2.查看prometheus自帶的web界面
http://192.168.43.221:9090
在Status菜單下,Configuration,Rule,Targets等,Statu-->Configuration展示prometheus.yml的配置
在Statu-->Targets展示監控具體的監控目標,這裡監控目標「linux」暫未設置node_exporter,所以沒有數據
3.查看數據抓取情況
訪問http://192.168.43.221:9090/metrics,查看exporter具體能抓到的數據
2.4 grafana安裝部署
1. grafana下載
登陸https://grafana.com/grafana/download官網,下載安裝包
wget https://dl.grafana.com/oss/release/grafana-7.0.1-1.x86_64.rpm --no-check-certificate
2. grafana 安裝
yum install grafana-7.0.1-1.x86_64.rpm
3. 修改配置文件
配置文件位於/etc/grafana/grafana.ini,這裡暫時保持默認
4.設置開機啟動
systemctl enable grafana-server
systemctl start grafana-server
5.檢查服務啟動狀態
service grafana-server status
6.設置iptables(需要防火牆的設置)
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT
service iptables restart
7.登陸grafana界面
瀏覽器訪問http://192.168.43.221:3000,默認登陸帳號密碼admin/admin
8.添加數據源
點擊設置按鈕,通過「Add data source」添加數據源
根據配置項添加prometheus數據源相關配置
三 使用方法
3.1 node_exporter方式監控伺服器
1. 部署到/usr/local/目錄
tar -zxvf node_exporter-1.0.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv node_exporter-1.0.0.linux-amd64 node_exporter
2. 設置用戶
groupadd prometheus
useradd -g prometheus -s /sbin/nologin prometheus
chown -R prometheus:prometheus /usr/local/node_exporter/
3. 設置開機啟動
vi /usr/lib/systemd/system/node_exporter.service
輸入下面內容,配置node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
4. 啟動和檢查服務
systemctl enable node_exporter
systemctl start node_exporter
service node_exporter status
5. 設置iptables(需要用到防火牆的配置)
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9100 -j ACCEPT
service iptables restart
6.檢查監控界面
可見node1主機已經可被監控
7.下載node_exporter監控的dashboard
從官網https://grafana.com/dashboards/下載需要的dashboard到本地
8.導入dashboard
通過import入口,上傳導入已下載的dashboard
9.查看grafana監控展示情況
OK,搞定