Prometheus配置解析(2)

本文详细解读了Prometheus配置文件Prometheus.yml的内容,包括全局设置(如scrape_interval和evaluation_interval)、告警管理器配置、规则文件、scrape_config的结构以及job_name、metrics_path等关键参数。

当运行Prometheus时,我们会通过--config.file配置项来指定Prometheus配置文件(Prometheus.yml)。Prometheus自带默认的配置文件Prometheus.yml,该配置文件位于上一章解压目录中。那我们来看看它的内容吧。

去到部署的配置目录

$ cd /application/prometheus/
$ pwd
/application/prometheus

$ cat 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"]

global

Global模块是全局配置信息,它定义的内容会被scrape_configs模块中的每个Job单独覆盖

  1. scrape_configs:该参数来指定应用程序或服务抓取数据的间隔时间。这个值是时间序列的颗粒度,即该序列中每个数据点所覆盖的时间段。
  2. evaluation_interval:该参数来指定Prometheus评估规则的频率。目前主要有两种规则:记录规则(recording)和告警规则(alerting rule)。
  3. 记录规则:允许预先计算使用频繁且开销大的表达式,并将结果保存为一个新的时间序列数据。
  4. 告警规则:允许定义告警条件。
  5. scrape_timeout:抓取target的超时时间,默认值为10秒
  6. external_labels:与外部系统通信时添加到任意时间序列或告警所用的外部标

alerting

alerting用来配置Prometheus告警系统AlertManager,当触发告警规则后,Prometheus会将告警信息发送给AlertManager进行告警通知。

  1. alertmanagers:该参数下会列出Prometheus使用的每个AlertManager
  2. static_confgs:该参数用于静态配置AlertManager的地址,也可以依赖服务发现动态识别
  3. targets:该参数下是各个AlertManager的地址,可以配置多个地址

rule_files

rule_files参数是用来指定记录规则与告警规则的配置文件列表。

scrape_confgs

scrape_configs参数用来配置Prometheus抓紧的所有目标。

  1. job_name:该参数来指定抓取任务名称,Prometheus会将该名称作为Label追加到抓紧每天时序中
  2. metrics_path:该参数用来自定义抓取指标的http path
  3. scheme:该参数用来指定抓取指标协议,默认是http
  4. param:该参数用来指定抓取指标相关参数
  5. static_confgs:该参数用于静态配置抓取目标的地址,也可以依赖服务发现动态识别
### Prometheus 指标的含义 Prometheus 使用四种主要类型的指标来收集监控数据: - **Counter(计数器)**: 表示单一方向增加的累积值,可以重置为0。通常用于记录事件的数量或总量[^1]。 - **Gauge(仪表盘)**: 可以上升也可以下降的数值,适合表示瞬时状态,比如温度、内存使用量等。 - **Histogram(直方图)**: 通过可配置区间统计观测值分布情况,并提供样本总数和所有观测值总和。这有助于计算百分位数和其他统计数据。 - **Summary(摘要)**: 类似于直方图,但是它直接存储分位数而不是桶边界;同样也保存了样本数量及其求和结果。这对于实时分析非常有用。 每种类型都有特定的应用场景,在设计监控系统时可以根据需求选择合适的度量标准。 ### Prometheus 指标的具体用法 为了更好地理解如何应用这些概念,下面给出一段简单的 Go 代码作为例子,展示如何定义并暴露自定义指标给 Prometheus 抓取服务: ```go package main import ( "net/http" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" ) func init() { // 定义一个新的计数器实例 requestCount := prometheus.NewCounter(prometheus.CounterOpts{ Name: "myapp_http_requests_total", Help: "Total number of HTTP requests made.", }) prometheus.MustRegister(requestCount) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { requestCount.Inc() w.Write([]byte("Hello world")) }) } func main() { http.Handle("/metrics", promhttp.Handler()) http.ListenAndServe(":8080", nil) } ``` 这段程序创建了一个名为 `myapp_http_requests_total` 的 Counter 来跟踪应用程序接收到的HTTP请求次数,并将其注册到默认的 Prometheus 注册表中。每当有新的请求到达根路径 (`/`) ,就会对该计数器加一操作。最后设置 `/metrics` 路径供 Prometheus Server 进行抓取。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值