Skip to content

Prometheus

  • 功能:主要用于指标监控和告警。
  • 特点:擅长处理时间序列数据,提供强大的查询语言 PromQL。
  • 用途:适用于监控系统性能、应用程序指标等。

Install Prometheus On Mac

mac下启动报错

Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/xxx/Library/LaunchAgents/homebrew.mxcl.prometheus.plist` exited with 5.

可以restart再启动一次

bash
brew services restart prometheus

同时查看services status

brew services list

如果仍然是error,尝试查看端口是否占用

bash
lsof -i:9090

或者修改数据权限

bash
sudo chown -R $(whoami) /opt/homebrew/var/prometheus

修改启动参数

Prometheus默认端口是9090,假设设置成19090,我使用brew安装的Prometheus,开启参数放在 /opt/homebrew/etc/prometheus.args 目录下

--config.file /opt/homebrew/etc/prometheus.yml
--web.listen-address=127.0.0.1:9090
--web.listen-address=127.0.0.1:19090
--storage.tsdb.path /opt/homebrew/var/prometheus
--storage.tsdb.retention.time=7d

--storage.tsdb.retention.time=7d 数据只保留7天内的

修改配置

默认配置文件 /etc/prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    metrics_path: "/metrics"
    static_configs:
    - targets: ["localhost:9090"]

prometheus配置文件参数很多,具体可以查看这里

  • job_name: "prometheus",指定job名称
  • targets: ["host:9090"],指定endpoint
  • metrics_path: "/metrics" 默认15s请求一次 localhost:9090/metrics 获取数据

basic_auth_users

prometheus新增加参数 --web.config.file,指向文件,用来对 web 页面配置,通过 basic_auth_users可以设置 basic auth,具体查看这里

basic_auth_users:
  root: $2y$05$R0Wd8Ofrus6d2R.T/KJjqOThkiih4W227DAxh7D10.qhfX6QTNNYi

其中 root 是用户名,冒号后面的是 htpasswd 加密后的密文,htpasswd是 httpd 的一个工具,mac下可以使用 brew install httpd 安装,使用下面命令生成一对用户名密码

⚠️注意

增加配置后同时影响 prometheus 的 /metrics接口访问

bash
$ htpasswd -nB -C 10 prometheus
New password:
Re-type new password:
prometheus:$2y$05$T/TbRclF.B.9stXazAIaz.SlWOTnhhzC0cM1R/U5nbDMuqi4KoG/a

如果复制生成的内容很容易出现下面错误

caller=main.go:968 level=error msg="Unable to validate web configuration file" err="yaml: unmarshal errors:\n line 2: cannot unmarshal !!str `prometh...` into map[string]config.Secret"

原因是 yml 文件中冒号(:)和值需要使用空格隔开,否则不识别。

Metric Types

prometheus有 4 种核心 matric type,可以进行不同维度的统计分析

Counter

Counter 是一个只增(或归零)的计数器。它用于表示某个事件发生的次数。它的值只能增加,通常用于记录事件的累计总数,如请求次数、错误数等, 以下是一些常用函数

  • rate()

    5 minutes 请求次数平均增长率

rate(http_requests_total[5m])

Gauge

Gauge 是一个可以随时增减的指标,用于表示某个量的当前值。它可以增加也可以减少,适用于监控实时值,如当前活跃的用户数、温度等, 以下是一些常用函数.

  • avg_over_time()

    计算在给定时间窗口内的平均值。

avg_over_time(redis_waiting_num[5m])
  • stdvar_over_time(), stddev_over_time()

    计算窗口时间内的方差和标准差, 用来判断时间段内增长幅度

stdvar_over_time(redis_waiting_num[5m])
  • min_over_time(), max_over_time()

    计算在给定时间窗口内的最小值和最大值

max_over_time(redis_waiting_num[5m])

Histogram

Histogram 用于测量和记录某些事件的分布情况。它可以将值分成不同的桶(buckets)进行统计,并且可以计算累积频次。通常用于衡量请求的延迟或响应时间的分布。

Summary

Summary 用于记录事件的分布情况,并计算一些统计信息(如均值、百分位数)。它与 Histogram 类似,但 Summary 提供了更多关于数据分布的统计信息。Summary 在每个时间区间内计算统计数据,因此可能会有较高的开销。

推荐库

有官方和三方推荐,查看这里 https://prometheus.io/docs/instrumenting/clientlibs/

Reference