目录
前言
环境:centos7.9
prometheus 架构图
我们来解读一下prometheus 的架构图:
1、prometheus server是最重要的核心部分,它使用一个叫做TSDB的数据库(时间序列数据库)作为存储。
2、时间序列数据 (TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据 。
3、prometheus 可以有两种方式获取数据,一种是主动拉取数据,即pull拉取目标对象的数据指标,另外一种是在目标主机上编写采集脚本,将数据推送给pushgateway,pushgateway将数据推送给Prometheus Server。大多数情况下我们推荐prometheus 使用pull主动拉取数据的方式,这样可以减轻目标主机的业务负担,把负担交给prometheus server。
4、prometheus server要拉去哪些目标主机的数据呢,我们即可以在prometheus server中静态的配置要拉去的目标主机数据,也可以使用prometheus 的自动服务发现功能来自动获取目标主机,在k8s中就会使用服务发现机制来自动配置目标主机。
5、prometheus 获取到了指标数据,需要定义告警规则,然后根据构建规则产生告警,prometheus 会将告警发送给altermanager,由altermanager发送告警信息给邮箱、钉钉、微信等通信工具。
6、prometheus 的web UI并不是十分漂亮,所以需要一个展示数据的图形化界面,grafana就是用于展示数据的,grafana通过获取prometheus server的数据来展示友好的图形化页面。
下载prometheus 官方软件
prometheus 官方提供了预编译的二进制文件和Docker 镜像,这里我们下载预编译的二进制包即可,预编译的二进制包下载解压就可以直接使用,不需要编译安装。
prometheus 官方网站:https://prometheus.io/
下载prometheus的包:https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz
环境准备
准备3台服务器,都能上外网,IP与主机名如下所示:
#IP主机名
192.168.118.128 server
192.168.118.129 agent1
192.168.118.130 grafana
#同步时间关闭防火墙,3台都做同样的操作
systemctl enable --now ntpd
systemctl disable --now firewalld
安装prometheus
下面来安装prometheus服务端:
mkdir /prometheus_soft/
cd prometheus_soft/
wget https://github.com/prometheus/prometheus/releases/download/v2.5.0/prometheus-2.5.0.linux-amd64.tar.gz
tar -zxvf prometheus-2.5.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/prometheus-2.5.0.linux-amd64/
ll
#安装完成,由于prometheus提供的是二进制包,所以解压即可,都不需要编译安装
启动prometheus
启动prometheus 很简单,直接命令启动即可,默认加载配置文件就是当前目录的prometheus.yml配置文件,默认开启端口是9090,,如下所示:
cd /usr/local/prometheus-2.5.0.linux-amd64
#查看帮助文档
./prometheus --help
#启动普罗米修斯,后台运行
./prometheus &
lsof -i:9090
web网页访问普罗米修斯
以上,我们发现,需要执行查询语句(普罗米修斯有自己的查询语句),然后点击执行就能得到图形或控制台 输出结果。
client客户端安装node_exporter采集数据
prometheus的监控不同的应用需要不同的exporter包,如监控Linux的CPU负载等性能指标,就需要安装官网的node_exporter-0.16.0.linux-amd64.tar.gz
包,监控mysql服务器就需要安装mysqld_exporter
包。
下面开始安装node_exporter-0.16.0.linux-amd64.tar.gz
包,演示在客户端安装exporter,下载地址:https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
.
# 联网下载包
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xf node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/node_exporter-0.16.0.linux-amd64
#启动node_exporter,后台运行
nohup ./node_exporter &
#默认启动的端口是9100
lsof -i:9100
prometheus服务端配置pull拉取客户端指标数据
客户端的node_exporter已经安装完毕,下面来配置prometheus服务端,如下所示:
cd /usr/local/prometheus-2.5.0.linux-amd64
#编辑主配置文件,添加一个客户端的配置
vim prometheus.yml
# 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']
- job_name: 'client1' #复制一个job_name的标签,与上面那个job_name对其,client1是job_name,可自定义
static_configs:
- targets: ['192.168.118.135:9100'] #填写客户端的IP和node_export的端口
#注意:普罗米修斯的配置文件时yml格式的,yml语法标签对齐,空格等都要非常严格的语法
#关闭prometheus服务
kill -9 34937
#重启prometheus服务
./prometheus &
查看普罗米修斯能否正常监控客户端:
查看客户端的1分钟负载: