Appearance
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
- https://httpd.apache.org/docs/2.4/programs/htpasswd.html
- https://hub.docker.com/r/prom/prometheus
- https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-config.yml
- https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
- https://prometheus.io/docs/prometheus/latest/configuration/https/#https-and-authentication
- https://prometheus.io/docs/concepts/metric_types/