目錄
一、概述
二、Prometheus的安裝
1、二進制方式
1.1、下載系統安裝包?編輯
1.2、解壓
1.3、創建數據目錄,服務運行用戶
1.4、設置為系統服務(創建服務運行腳本)
1.5、啟動服務,并通過瀏覽器訪問驗證
2、容器方式
2.1、安裝docker-ce
?編輯
2.2、下載Prometheus鏡像
2.3、直接使用官方鏡像啟動,并映射prometheus.yml配置文件到本地進行管理
2.4、瀏覽器訪問驗證
三、Prometheus監控案例
1、監控遠程linux主機:
1.1、在遠程linux主機(就是被監控端)上安裝node_exporter組件
1.2、驗證:瀏覽器訪問http://被監控端IP:9100/metrics就可以查看到node_exporrter在被監控端手機的監控信息?編輯
1.3、添加Prometheus相關配置,采集node_exporter數據
1.4、通過Prometheus管理界面查看:點擊status——>點擊targets——>發現多了一臺監控目標?編輯
2、監控Windows機器
2.1、安裝vmi-exporter
2.2、修改Prometheus主配置文件?/usr/local/prometheus/prometheus.yml
2.3、驗證
3、監控遠程MySQL?
3.1、下載并解壓mysqld_exporter組件
3.2、安裝mariadb數據庫,并授權
3.3、添加至系統服務
3.4、啟動服務
3.5、修改Prometheus的主配置文件?
3.6、驗證
一、概述
基本原理
????????通過HTTP協議周期性抓取被監控組件的狀態,任意組件只要提供對應的HTTP接口就可以接入監控。不需要任何SDK或者其他的集成過程。這樣做非常適合做虛擬化環境監控系統,比如VM、Docker、Kubernetes等。輸出被監控組件信息的HTTP接口被叫做exporter 。目前互聯網公司常用的組件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系統信息(包括磁盤、內存、CPU、網絡等等)。
基本組件
-
Prometheus Server 根據配置完成數據采集, 服務發現以及數據存儲,提供PromQL查詢語言的支持。
-
Alertmanager 警告管理器,用來進行報警。
-
Exporters(探針): 是Prometheus的一類數據采集組件的總稱。它負責從目標處搜集數據,并將其轉化為Prometheus支持的格式。與傳統的數據采集組件不同的是,它并不向中央服務器發送數據,而是等待中央服務器主動前來抓取。
-
Push Gateway 支持臨時性Job主動推送指標的中間網關。
Prometheus的特點??
-
多維度數據模型。
-
靈活的查詢語言PromQL。
-
不依賴分布式存儲,單個服務器節點是自主的。
-
通過基于HTTP的pull方式采集時序數據。
-
可以通過中間網關進行時序列數據推送。
-
通過服務發現或者靜態配置來發現目標服務對象。
-
支持多種多樣的圖表和界面展示,比如Grafana等。
二、Prometheus的安裝
【在防火墻SELinux關閉的情況下,操作系統:?cat /etc/centos-release? ?CentOS Linux release 7.9.2009 (Core) 】
1、二進制方式
1.1、下載系統安裝包
1.2、解壓
# tar xf prometheus-2.21.0.linux-amd64.tar.gz -C /usr/local/
創建軟鏈接
# ln -sv /usr/local/prometheus-2.21.0.linux-amd64/ /usr/local/prometheus
1.3、創建數據目錄,服務運行用戶
# mkdir /usr/local/prometheus/data
# useradd prometheus -M -s /sbin/nologin
修改權限
# chown -R prometheus.prometheus /usr/local/prometheus/*
1.4、設置為系統服務(創建服務運行腳本)
# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=prometheus
After=network.target[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-lifecycle --web.enable-admin-api --storage.tsdb.path=/usr/local/prometheus/data
Restart=on-failure
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
- --config.file:指定prometheus的配置文件路徑
- --web.enable-lifecycle:指定prometheus配置更改后可以進行熱加載
- --web.enable-admin-api
- --storage.tsdb.path:指定監控數據存儲路徑
- --storage.tsdb.retention:指定數據保留時間?
1.5、啟動服務,并通過瀏覽器訪問驗證
?瀏覽器訪問:? http://192.168.8.187:9090
2、容器方式
2.1、安裝docker-ce
1.安裝一些系統工具
yum install -y yum-utils device-mapper-persistent-data lvm22、添加軟件信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3、安裝docker-ce
yum -y install docker-ce4、開啟服務
systemctl start docker5、查看版本
docker --version
2.2、下載Prometheus鏡像
#拉取鏡像
docker pull prom/prometheus
查看:
2.3、直接使用官方鏡像啟動,并映射prometheus.yml配置文件到本地進行管理
(1)創建prometheus.yml文件
????????# mkdir /data
????????# vim /data/prometheus.yml
global:scrape_interval: 15s scrape_configs:- job_name: 'local'metrics_path: "/metrics"scrape_interval: 5sstatic_configs:- targets: ['192.168.8.189:9090']
(2)使用官方鏡像運行
[root@k8s-node02 ~]# docker run -d --name prometheus -v /data:/data -p 9090:9090 prom/prometheus --config.file=/data/prometheus.yml
22322ff646c0aad39a1521607b7fcc2f42855f8458e2a0bdd85e938248cb7dc3
2.4、瀏覽器訪問驗證
三、Prometheus監控案例
1、監控遠程linux主機:
1.1、在遠程linux主機(就是被監控端)上安裝node_exporter組件
下載軟件
[root@agent ~]# wget -c https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz解壓軟件
[root@agent ~]# tar xf node_exporter-1.0.1.linux-amd64.tar.gz -C /usr/local/
[root@agent ~]# ln -sv /usr/local/node_exporter-1.0.1.linux-amd64/ /usr/local/node_exporter
‘/usr/local/node_exporter’ -> ‘/usr/local/node_exporter-1.0.1.linux-amd64/’創建服務運行用戶
# useradd prometheus -M -s /sbin/nologin
修改權限
# chown -R prometheus.prometheus /usr/local/node_exporter/*添加系統服務
[root@agent ~]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure[Install]
WantedBy=multi-user.target啟動服務
[root@agent ~]# systemctl daemon-reload
[root@agent ~]# systemctl start node_exporter.service端口檢查(默認端口)
[root@agent ~]# netstat -lnupt | grep 9100
tcp6 0 0 :::9100 :::* LISTEN 62158/node_exporter
1.2、驗證:瀏覽器訪問http://被監控端IP:9100/metrics就可以查看到node_exporrter在被監控端收集的監控信息
1.3、添加Prometheus相關配置,采集node_exporter數據
?vim /usr/local/prometheus/prometheus.yml
????????在主配置文件的最后加上下面三行:????????? - job_name: 'agent1'
????????? ? static_configs:
? ????????? - targets: ['192.168.8.188:9100']
# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]# The label name is added as a label `label_name=<label_value>` to any timeseries scraped from this config.labels:app: "prometheus"- job_name: 'agent1'static_configs:- targets: ['192.168.8.188:9100']
1.4、通過Prometheus管理界面查看:點擊status——>點擊targets——>發現多了一臺監控目標
2、監控Windows機器
2.1、安裝vmi-exporter
首先在需要監控的Windows機器上安裝wmi_exporter。wmi_exporter下載地址:https://github.com/martinlindhe/wmi_exporter/releases
安裝完畢后,會自動創建一個開機自啟的服務,默認端口為9182。
2.2、修改Prometheus主配置文件?/usr/local/prometheus/prometheus.yml
2.3、驗證
3、監控遠程MySQL?
3.1、下載并解壓mysqld_exporter組件
#下載
wget -c https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz#解壓
tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
ln -sv /usr/local/mysqld_exporter-0.12.1.linux-amd64/ /usr/local/mysqld_exporter
‘/usr/local/mysqld_exporter’ -> ‘/usr/local/mysqld_exporter-0.12.1.linux-amd64/’
3.2、安裝mariadb數據庫,并授權
下載yum install -y mariadb-server
啟動服務
systemctl enable --now mariadb
授權用戶mysql -e "grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by '123'"
(注意:授權ip為localhost,因為不是prometheus服務器來直接找mariadb獲取數據,而是prometheus服務器找mysql_exporter,mysql_exporter再找mariadb。所以這個localhost是指的mysql_exporter的IP)
3.3、添加至系統服務
vim /usr/lib/systemd/system/mysql_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
Restart=on-failure[Install]
WantedBy=multi-user.target
3.4、啟動服務
# chown -R prometheus.prometheus /usr/local/mysqld_exporter/*
# systemctl daemon-reload
# systemctl start mysql_exporter.service# netstat -lnupt | grep 9104
tcp6 0 0 :::9104 :::* LISTEN 11295/mysqld_export
3.5、修改Prometheus的主配置文件?
vim /usr/local/prometheus/prometheus.yml
3.6、驗證
查看mysql_exporter在被監控端收集的監控信息:
web管理界面查看: