说明:prometheus有很多部署方式,例如:宿主机二进制、docker,k8s平台,operater,本次先采用宿主机二进制部署,复习下prometheus的工作流程、配置,然后逐步使用k8s平台进行部署,部署方式只是实现手段,prometheus工作流程实现都是一样的

prometheus官网:

Download | 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:9093

rule_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函数用来计算一定范围内时间序列的每秒平均增长率,只能与计数器一起使用

        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 的磁盘
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐