Prometheus的安装部署
目录
一、概述
二、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管理界面查看: