Files
docker_practice/19_observability/summary.md
T
yeasy 08e981018e fix(content): 修正四处书内自相矛盾的技术断言
1. FROM「必须是第一条指令」(4.5、7.16、summary 三处)与本书 7.7.4「FROM 之前的
   ARG」整节直接冲突。官方 Dockerfile 参考写的是 "A Dockerfile must begin with a
   FROM instruction. This may be after parser directives, comments, and globally
   scoped ARGs",且 "ARG is the only instruction that may precede FROM"。三处
   一并改成「第一条构建指令」并点明例外。

2. 12 章小结把 USER Namespace 列进「默认启用」的一档,并写「容器 root ≠ 宿主机
   root」;而同章 12.2.2 明写 USER Namespace 默认**不**启用、需 userns-remap 显式
   开启,18.1 更直说「在默认情况下,容器内的 root 用户(UID=0)就是宿主机上的
   root 用户」。小结按正文口径改回——这条读反了会直接误判容器逃逸的风险面。

3. 11.5「目前支持三种日志驱动类型」是 Compose 早期文本的残留。官方支持 json-file、
   local、syslog、journald、gelf、fluentd、awslogs、splunk、etwlogs、gcplogs、
   none 共十余种,本书 19 章小结自己就列了六种。改为给出常见取值并链到官方清单。

4. 7.8 与 7.5 的示例注释建议 postgres:latest / redis:latest,而 4.1、7.10、
   7.16、7 章小结、4.5 全都要求避免 latest(7.8 同一文件第 177 行也写「避免
   latest」)。按全书口径改掉这两处。

另:ENV 的空格分隔旧写法(7.6 的「格式一」、附录四的 PG_MAJOR/PATH 示例)改为等号
形式并加注。BuildKit 的 LegacyKeyValueFormat 检查会报
"ENV key=value" should be used instead of legacy "ENV key value" format,
而本书 10.2 与 07 章 README 正是在推荐 docker buildx build --check。
2026-08-07 23:26:12 -07:00

54 lines
2.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 本章小结
本章从三个维度介绍了容器可观测性
* **指标监控** Prometheus + Grafana 为主完成指标采集存储与可视化
* **日志管理** EFK/ELK 为例完成容器日志的集中采集检索与分析
* **性能优化与故障诊断**把观测到的数据落到资源限制瓶颈定位与线上排错上
生产环境中建议将可观测性当成一个完整闭环**采集 -> 存储 -> 展示 -> 告警 -> 排错 -> 容量治理**
## 扩展阅读Docker 日志驱动
Docker 提供了多种日志驱动 (Log Driver)用于将容器标准输出的日志转发到不同后端
常见的日志驱动包括
* `json-file`默认驱动将日志以 JSON 格式写入本地文件
* `syslog`将日志转发到 syslog 服务器
* `journald`将日志写入 systemd journal
* `fluentd`将日志转发到 fluentd 收集器
* `gelf`支持 GELF 协议的日志后端 ( Graylog)
* `awslogs`发送到 Amazon CloudWatch Logs
生产建议无论采用哪种驱动都要明确日志的保留周期容量上限与传输可靠性避免日志把磁盘写满链路抖动导致丢日志”。
## 19.4 日志平台选型对比与注意事项
日志平台通常由采集/处理/存储/查询展示几部分组成常见选型包括
* **EFK/ELK**Elasticsearch + Fluentd/Logstash + Kibana适合全文检索与结构化查询
* **Loki + Grafana**更偏日志像指标一样存储的思路部署与成本可能更友好但查询能力与使用习惯不同
选型时建议关注
* **写入压力与背压**当存储端变慢时采集端是否会缓冲落盘重试是否会影响业务
* **容量治理**是否具备按天/按大小滚动保留策略生命周期管理 (ILM) 等能力
* **安全与合规**鉴权TLS审计敏感字段脱敏
* **可运维性**升级策略备份恢复告警指标是否齐全
## 19.5 上线前检查清单
你可以用下面的清单快速检查是否具备最小生产可用性”:
* Prometheus 数据目录已持久化并设置了合理的保留周期
* Prometheus Targets 全部为 `UP`并且关键查询 (CPU/内存/容器指标) 有数据
* Grafana 已导入面板并能定位到具体实例/容器默认账号密码已修改
* 至少有一条关键告警已打通 Alertmanager 的接收链路并验证告警能被正确发送与抑制
* Elasticsearch 数据目录已持久化并有明确的日志保留周期与容量上限策略
* Kibana 能查询到最新日志 UI 异常时能用 Elasticsearch API 验证入库
* 可观测性组件未直接暴露到公网访问已加鉴权或置于内网
---
> 📝 **发现错误或有改进建议** 欢迎提交 [Issue](https://github.com/yeasy/docker_practice/issues) 或 [PR](https://github.com/yeasy/docker_practice/pulls)。