diff --git a/Observability/OpenTelemetry.md b/Observability/OpenTelemetry.md
index cdd7d31f..8acd8d5f 100644
--- a/Observability/OpenTelemetry.md
+++ b/Observability/OpenTelemetry.md
@@ -1,4 +1,4 @@
-# 9.3 可观测性大统一
+# 9.3 可观测性大一统
建设完善的可观测体系,很可能会形成链路监控、日志监控、指标监控等多套不同的监控系统,要打通是相当困难的。不同的业务线间,日志规则不互通,要完全互通也很困难。系统一旦过多,相关维护以及故障排除的时间成本就会大幅增加。
diff --git a/Observability/conclusion.md b/Observability/conclusion.md
index aa496a56..f4d2a1a5 100644
--- a/Observability/conclusion.md
+++ b/Observability/conclusion.md
@@ -10,4 +10,4 @@ https://github.com/cncf/tag-observability/blob/dec82aa5bd39a8834f58da0377d1e2b8f
- https://medium.com/lightstephq/observability-will-never-replace-monitoring-because-it-shouldnt-eeea92c4c5c9
-- https://blog.devgenius.io/what-is-inverted-index-and-how-we-made-log-analysis-10-times-more-cost-effective-with-it-6afc6cc81d20
\ No newline at end of file
+- 《What is inverted index, and how we made log analysis 10 times more cost-effective with it?》https://blog.devgenius.io/what-is-inverted-index-and-how-we-made-log-analysis-10-times-more-cost-effective-with-it-6afc6cc81d20
\ No newline at end of file
diff --git a/Observability/metrics.md b/Observability/metrics.md
index f0957d24..c2299c57 100644
--- a/Observability/metrics.md
+++ b/Observability/metrics.md
@@ -2,8 +2,8 @@
作为传统监控和告警领域的代名词,Metrics 最广为人知,也被各类可观测系统支持的最丰富。Metrics 一般是用来计算 Events 发生数量的数据集,例如服务 QPS、API 响应延迟、某个接口的失败数等。它们大部分都是以数字化指标出现,特征是可聚合性,在数据的处理上,Metrics 可以是实时的,也可能是区间范围的,是跟随着时间变化的时序数据。既能做常见的监控告警,也可以用来做趋势分析。
-- 实时监控和警报,Metrics 常见的用于是看板,并在系统在超过阈值或者行为异常时自动触发报警。
-- 趋势分析:Metrics 还用在趋势分析,同时还可以在事件发生后提供历史数据分析,修复或者监控以防止潜在问题再次发生。
+Metrics 提供的信息可用于系统整体行为和监控状况的分析,它不一定能揭示问题根本原因,但可以作为发现问题的起点。一个典型例子是你收到一条告警”请求成功率跌到了 10%“,你意识到不妙,立即开始处理,然后结合其他 Signals 去找到 root cause,从而解决问题。
+
由于目前并没有 Metrics 采集的标准 API,所以不同的监控系统在收集 Metrics 数据时采取的手段也可能不一样,但大部分无非都是通过 PUSH 到中心 Collector 方式采集 Metrics(比如各种 Agent 采集器,Telegraf 等); 又或者是中心 Collector 通过 PULL 的方式去主动获取 Metrics(比如 Prometheus)。
@@ -14,14 +14,48 @@
- 怎么收集和存储指标
- 怎么利用指标生成报表
+Prometheus 最初的定位是一个监控和报警系统。
+
+
+

+
+
+为了实现这个功能,需要实现几个独立的子功能。检测指标、收集指标、存储指标、查询指标、警报指标。每个子功能独立实现,通过搭积木的方式,就可以形成一个功能强大的监控告警系统。
+
-Exporter 用户采集费原生支持 prometheus 的第三方系统或者服务的指标数据,并将其转换为 prometheus 可以识别的格式。Exporter 运行为一个单独的服务,周期性的从目标系统中拉取原始指标,然后提供一个 HTTP 接口,使得 prometheus 可以从中抓取已经转换的指标数据。得益于 Prometheus 的良好社区生态,现在已经有大量各种用途的 Exporter,让 Prometheus 的监控范围几乎能涵盖所有用户所关心的目标。
+Prometheus 的架构设计中,Prometheus Server 主要任务负责数据的收集,存储并且对外提供数据查询支持,并不直接服务监控特定的目标。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到 Exporter。Prometheus 周期性的从Exporter(Exporter 实例称 target )暴露的 HTTP 服务地址(通常是/metrics)拉取监控样本数据。
+
+
+

+
+
+从上面的描述中可以看出 Exporter 可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以外,也可以是直接内置在监控目标中。只要能够向 Prometheus 提供标准格式的监控样本数据即可。得益于 Prometheus 的良好社区生态,现在已经有大量各种用途的 Exporter,涵盖了从基础设施、中间件以及网络等各个方面,让 Prometheus 的监控范围几乎能涵盖所有用户所关心的目标。
+
+| 范围 | 常用 Exporter |
+|:--|:--|
+ | 数据库 | MySQL Exporter、Redis Exporter、MongoDB Exporter、MSSQL Exporter 等 |
+ | 硬件 | Apcupsd Exporter、IoT Edison Exporter、IPMI Exporter、Node Exporter 等 |
+ | 消息队列 | Beanstalkd Exporter、Kafka Exporter、NSQ Exporter、RabbitMQ Exporter 等 |
+ | 存储 | Ceph Exporter、Gluster Exporter、HDFS Exporter、ScaleIO Exporter 等 |
+ | HTTP服务 | Apache Exporter、HAProxy Exporter、Nginx Exporter 等 |
+ | API服务 | AWS ECS Exporter、Docker Cloud Exporter、Docker Hub Exporter、GitHub Exporter 等 |
+ | 日志 | Fluentd Exporter、Grok Exporter 等 |
+ | 监控系统 | Collectd Exporter、Graphite Exporter、InfluxDB Exporter、Nagios Exporter、SNMP Exporter 等 |
+ | 其它 | Blockbox Exporter、JIRA Exporter、Jenkins Exporter、Confluence Exporter 等|
+Prometheus 的数据是典型的时序数据,Prometheus 本身会将。要注意的是,本地存储不可复制,无法构建集群,如果本地磁盘或节点出现故障,存储将无法扩展和建议。因此,一般只能把本地存储视为近期数据的短暂滑动窗口。
+
+Prometheus 的作者及社区核心开发者都秉承一个理念:Prometheus 只聚焦核心的功能,扩展性的功能留给社区解决,所以 Prometheus 自诞生至今都是单实例不可扩展的。
+
+
+尽管单实例的 Prometheus 已经足够强大,但还是存在部分需求是其无法满足的,如跨集群聚合、更长时间的存储等。为了扩展 Prometheus,社区给出了多种方案。
+
+2017 年,Prometheus 加⼊ Remote Read/Write API,自此之后社区涌现出大量长期存储的方案,如 Thanos、Grafana Cortex/Mimir、VictoriaMetrics、Wavefront、Splunk、Sysdig、SignalFx、InfluxDB、Graphite 等。
## Metrics 类型
@@ -52,8 +86,6 @@ TSDB 是专门用来存储随时间变化的数据,如股票价格、传感器
为了追求极致性能和极致成本,大家都在针对海量数据和使用场景,持续改进和优化数据的存储结构设计、各种高效索引机制、和查询效率。从单点技术或者关键技术上来讲,有趋同性和同质化的大趋势
-Metrics 提供的信息可用于系统整体行为和监控状况的分析,它不一定能揭示问题根本原因,但可以作为发现问题的起点。一个典型例子是你收到一条告警”请求成功率跌到了 10%“,你意识到不妙,立即开始处理,然后结合其他 Signals 去找到 root cause,从而解决问题。
-
prometheus-vs-victoriametrics[^1]
||Prometheus| VictoriaMetrics |
@@ -71,6 +103,15 @@ prometheus-vs-victoriametrics[^1]
https://db-engines.com/en/ranking/time+series+dbms
-## 告警
+## 生成报表
+
+Prometheus 定义了功能强大的 promQL,可以满足各种复杂的查询场景。
+
+Grafana提供了对PromQL的完整支持,如下所示,通过Grafana添加Dashboard并且为该Dashboard添加一个类型为“Graph”的面板。 并在该面板的“Metrics”选项下通过PromQL查询需要可视化的数据:
+
+
+

+
+
[^1]: 参见 https://last9.io/blog/prometheus-vs-victoriametrics/
\ No newline at end of file
diff --git a/assets/first_grafana_dashboard.png b/assets/first_grafana_dashboard.png
new file mode 100644
index 00000000..3e44e234
Binary files /dev/null and b/assets/first_grafana_dashboard.png differ
diff --git a/assets/prometheus-alert.png b/assets/prometheus-alert.png
new file mode 100644
index 00000000..2373140f
Binary files /dev/null and b/assets/prometheus-alert.png differ
diff --git a/assets/prometheus-exporter.png b/assets/prometheus-exporter.png
new file mode 100644
index 00000000..baaa5e1f
Binary files /dev/null and b/assets/prometheus-exporter.png differ