说明:prometheus有很多部署方式,例如:宿主机二进制、docker,k8s平台,operater,本次先采用宿主机二进制部署,复习下prometheus的工作流程、配置,然后逐步使用k8s平台进行部署,部署方式只是实现手段,prometheus工作流程实现都是一样的
prometheus官网:
# 1) 创建部署目录
mkdir /usr/local/prometheus
# 2) 下载二进制包
cd /tmp/ && \
wget https://github.com/prometheus/prometheus/releases/download/v2.39.1/prometheus-2.39.1.linux-amd64.tar.gz
# 3) 解压安装
cd /tmp/prometheus-2.39.1.linux-amd64 && mv ./* /usr/local/prometheus/
cd /usr/local/prometheus && cp -rpf prometheus.yml{,.bak}
# 4) 启动服务
nohup ./prometheus &
#5) 默认端口 9090
netstat -tunpl | grep 9090
tcp6 0 0 :::9090 :::* LISTEN 1781/./prometheus
2) prometheus通用配置解释
global: #全局配置
scrape_interval: 15s #服务抓取数据时间间隔
evaluation_interval: 15s #prometheus评估规则频率。当前有2种规则: 记录规则和警报规则
#记录规则: 允许预先计算使用频繁且开销大的表达式,并将结果保存为一个新的时间序列数据# Alertmanager configuration #警报配置
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093rule_files: #记录规则或者警报规则的文件列表
# - "first_rules.yml"
# - "second_rules.yml"scrape_configs: #指定要抓取的所有的目标
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
1.1 prometheus配置文件检查: 使用promtool工具
[root@lvm-test prometheus]# ./promtool check config prometheus.yml
Checking prometheus.yml
SUCCESS: prometheus.yml is valid prometheus config file syntax[root@lvm-test prometheus]#
1.2 web页面展示
1.3 graph指标演示
1.4 查看prometheus服务器抓取所产生的HTTP请求总数
1.5 PromQL表达式
sum函数:按照作业汇总HTTP请求指标列表
sum(promhttp_metric_handler_requests_total)
按照job进行分组
sum(promhttp_metric_handler_requests_total) by (job)
转化为速率rate
一定范围内时间序列的每秒平均增长率,只能与计数器一起使用
rate函数适合用于增长较慢的计数器或用于警报的场景
sum(rate(promhttp_metric_handler_requests_total[5m])) by (job)
irate函数:计算增长较快的计时器的瞬时增长率
1.6 Prometheus容量规划
1) 查看样本收集率。最后一分钟添加到数据库的每秒样本率
rate(prometheus_tsdb_head_samples_appended_total[1m])
2) 收集指标的数量
sum(count by (__name__)({__name__=~'.+'}))
#每个样本1~2个字节,假设12个小时内每秒接收10000个样本,name计算内存的使用情况:
10000 * 2 bytes * 53200 seconds
3) 磁盘规划
建议使用SSD磁盘作为时间序列数据盘
容量规划示例:
每秒 10 万个样本的示例,我们知道按时间序列收集的每个样本在磁盘上占用大约 1 到 2 个字
节。假设每个样本有 2 个字节,那么保留 15 天的时间序列意味着需要大约 259 GB 的磁盘