目录
前言 1
第I 部分 概述
第1 章 什么是Prometheus 7
什么是监控? 9
监控简史 10
监控分类 11
Prometheus 架构 16
客户端库 16
导出器 18
服务发现 18
数据抓取 19
存储 20
仪表盘 20
记录规则和告警 21
告警管理 21
数据持久化22
Prometheus 不是什么 22
第2 章 开始使用Prometheus 24
运行Prometheus 24
使用表达式浏览器 27
运行Node Exporter 33
告警 35
第Ⅱ部分 应用监控
第3 章 测控 47
一个简单的程序 47
Counter 数据类型 49
统计异常 52
统计大小 53
Gauge 数据类型 54
使用Gauge 类型 54
回调 56
summary 数据类型 57
histogram 数据类型 59
桶 60
测控单元测试 63
使用测控 64
需要测控什么内容 64
需要测控多少 66
要怎么给指标命名 67
第4 章 展示 71
Python 72
WSGI72
Twisted 73
Gunicorn 多进程 74
Go 77
Java 78
HTTPServer 78
Servlet 80
Pushgateway 81
桥接 85
解析器 86
展示格式 86
指标类型 87
标签 88
Escaping 88
时间戳 89
检查指标 89
第5 章 标签 91
什么是标签 91
测控和目标标签 92
测控 93
指标 94
多标签 95
子项 95
聚合 97
标签模式 99
枚举 99
信息 101
什么时候使用标签 103
基数 104
第6 章 Grafana 仪表盘 107
安装 108
数据源 110
仪表盘和面板 110
避免图形墙 112
图形面板 113
时间控件 115
单一统计面板 116
表格面板 118
模板变量 119
第Ⅲ部分 基础设置监控
第7 章 Node 导出器 127
CPU 收集器 129
文件系统收集器 129
磁盘状态收集器 130
Netdev 收集器 132
Meminfo 收集器 132
hwmom 收集器 133
stat 收集器 134
uname 收集器 134
loadavg 收集器 135
文本文件收集器 135
使用文本文件收集器 136
时间戳 138
第8 章 服务发现 139
服务发现机制 140
静态配置 141
文件 142
Consul 145
EC2 146
重置标签 147
选择要抓取的内容 148
目标标签 151
如何拉取 159
metric_relabel_configs 161
标签冲突和honor_labels 164
第9 章 容器和Kubernates 166
cAdvisor 166
CPU 168
内存 168
标签 169
Kubernetes 170
在 Kubernetes 中运行 170
服务发现 172
kube-stat-metrics 182
第10 章 常见导出器 183
Cousul 184
HAProxy 185
Grok 导出器 188
黑盒 191
ICMP 193
TCP 196
HTTP 198
DNS 201
Prometheus 配置 203
第11 章 与其他监控系统协同 207
其他监控系统 207
InfluxDB 209
StatsD 210
第12 章 编写导出器 214
Consul 遥测 214
自定义收集器 218
标签 222
指南 223
第Ⅵ部分 PromQL
第13 章 PromQL 概述 229
聚合基础知识 229
Gauge 229
counter 231
summary 232
histogram 234
选择器 236
匹配器 236
瞬时向量 238
范围向量 239
偏移 241
HTTP 接口 242
query 242
query_range 245
第14 章 聚合运算符 248
分组 248
without 249
by 250
操作符 252
sum 252
count 253
avg 254
stddev 和stdvar 255
min 和max 256
topk 和bottomk 256
quantile 257
count_values 259
第15 章 二元运算符 261
处理标量 261
算术运算符262
比较运算符263
向量匹配 266
一对一 266
多对一和group_left 269
多对多和逻辑运算符 272
运算优先级 277
第16 章 函数 279
改变类型 279
vector280
scalar 280
数学函数 281
abs 282
ln,log2 和log10 282
exp 283
sqrt 283
ceil 和floor 283
round 284
clamp_max 和 clamp_min 284
时间和日期 285
time 285
minute, hour, day_of_week, day_of_month, days_in_month, month 和year 286
timestamp 287
标签 288
label_replace 288
label_join 289
缺失系列和absent 290
使用sort 和sort_desc 进行排序 290
Histogram 类型与histogram_quantile291
计数器 292
rate 292
increase294
irate 294
resets 295
改变gauge 值 296
changes 296
deriv 297
predict_linear 297
delta 298
idelta 298
holt_winters 298
随时间聚合 299
第17 章 记录规则 301
使用记录规则 301
何时使用记录规则 304
降低基数大小 304
编写范围向量函数 306
API 规则 307
如何不使用规则 307
记录规则的命名 309
第Ⅴ部分 告警
第18 章 告警 315
告警规则 316
for 318
告警标签 321
注释和模板323
什么是好的告警? 326
设置Alertmanager 327
外部标签 328
第19 章 Alertmanager 330
通知管道 330
配置文件 331
路由树 332
接收器 340
抑制 350
Alertmanager Web 界面 351
第Ⅵ部分 部署
第20 章 整合 357
计划推出 357
Prometheus 规模增长 358
使用联合机制监控全局 360
长期存储 363
运行Prometheus 365
硬件 365
配置管理 367
网络和身份验证 369
为失败做准备 370
Alertmanager 集群 373
元监控和交叉监控 374
管理性能 375
检测问题 376
寻找昂贵的指标和目标 376
减少负载 378
水平分片 379
管理变革 380
获得帮助 381