Skip to content

Commit

Permalink
update summary
Browse files Browse the repository at this point in the history
  • Loading branch information
yunlzheng committed Jan 10, 2018
1 parent 5f4b646 commit ce26acb
Show file tree
Hide file tree
Showing 5 changed files with 833 additions and 56 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,28 @@

Prometheus实战

### 全书组织

我们假定你已经对Linux系统以及Docker技术有一定的基本认识,也可能使用过像Java,Golang这样的编程语言,所以我们不会像对任何一个没有任何基础的初学者那样事无巨细的讲述所有事。

第1章,是Prometheus基础的综述,通过一个简单的(使用Prometheus采集主机的监控数据)例子来了解Prometheus是什么?能做什么?以及Prometheus的基础架构。希望读者能从这一章中能对Promentheus有一个基本的理解和认识。

第2章中我们先讲述Prometheus的数据模型以及,以及时间序列存储方式。并且利用Prometheus的数据查询语言(Prometheus Query Language)对监控数据进行查询,聚合以及计算等。

第3章,我们重点放在监控告警部分,作为监控系统的重要能力之一,我们需要及时了解系统环境的变化,因此这一章,我们会介绍如何在Prometheus中定义告警规则,并且结合Prometheus中的另外一个重要组件AlertManager来对告警进行处理。

第4章,"You can't fix what you can't see"我们讨论可视化,如何基于Grafana这一可视化工具自定义我们的可视化仪表盘,介绍Grafana作为一个通用的可视化工具是如何与Prometheus进行配合。

可以看出,从第1章到第4章的部分是基础性的,读者通过前5章对于大部分的研发或者运维人员能够很快的掌握,并且能够使用Prometheus来完成一些基本的日常任务。余下的章节我们会关注到Prometheus的高级用法部分。

第5章,我们会介绍一些常用的Prometheus Exporter的使用场景以及用法。最本章的最后部分我们会带领读者通过Java和Golang实现我们的Exporter,以及如何在现有应用系统上添加Prometheus支持,从而实现应用层面的监控对接。

第6章,我们会了解如何通过Prometheus的服务发现能力,实现动态监控。特别是在云平台或者容器平台中,资源的创建和销毁成本变得如此的低的情况下,通过服务发现如何自动化的去动态发现监控目标,能够充分简化Prometheus的运维和管理难度。

第7章,Prometheus在单个节点的情况下能够轻松完成对N级别资源的监控,但是监控的目标资源以及数据量变得更大的时候,我们如何实现对Prometheus的扩展。这一章节我们重点在Prometheus的数据管理和高可用方面。

第8章,这一章节中我们的另外一位重要成员Kubernetes将会登场,这里我们会带领读者对Kubernetes有一个基本的认识,并且通过Prometheus构建我们的容器云监控系统。并且介绍如何通过Prometheus与Kubernetes结合实现应用程序的弹性伸缩。

### 目录结构

```
Expand Down
10 changes: 9 additions & 1 deletion REFERENCES.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
## 参考资料

### Install & Configuration

* https://www.digitalocean.com/community/tutorials/how-to-install-prometheus-on-ubuntu-16-04

### Storage

* https://coreos.com/blog/prometheus-2.0-storage-layer-optimization

### Others

* https://news.ycombinator.com/item?id=12455045
* https://github.com/digitalocean/vulcan
* https://github.com/coreos/prometheus-operator/blob/master/Documentation/high-availability.md
* https://github.com/katosys/kato/issues/43
* https://www.robustperception.io/tag/tuning/
* https://www.robustperception.io/how-much-ram-does-my-prometheus-need-for-ingestion/
* https://www.digitalocean.com/community/tutorials/how-to-install-prometheus-on-ubuntu-16-04
139 changes: 85 additions & 54 deletions SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,76 @@
# Summary
This is the summary of my book.
# 目录

* [Introduction](README.md)
* [版本变更历史](CHANGELOGS.md)
* [第一章 天降奇兵](./chapter0/README.md)
* [Prometheus是什么](./sources/what-is-prometheus.md)
* [Prometheus简介](./sources/what-is-prometheus.md)
* Prometheus是什么
* 前世今生
* 适用场景
* 百里挑一
* Prometheus Vs Graphite
* Prometheus Vs InfluxDB
* Prometheus Vs OpenTSDB
* Prometheus Vs Nagios
* Prometheus的核心组件
* Prometheus Server
* Exporters
* AlertManager
* PushGateway
* Pull Vs Push
* [在Linux环境下安装Prometheus](./sources/install_prometheus_in_with_binary.md)
* 安装Prometheus Server
* 安装NodeExporter采集主机信息
* 启用Basic Auth认证
* [在Docker环境下安装Prometheus](./sources/install_prometheus_in_docker.md)
* Docker简介
* 运行Prometheus容器
* 初识Prometheus配置
* 使用NodeExporter采集主机信息
* 配置Prometheus采集目标
* 重新加载配置
* Pull Vs Push
* Promethues生态系统
* AlertManager
* Exporters
* Prometheus PushGateway
* Prometheus Operator
* Grafana
* 百里挑一
* Prometheus Vs Graphite
* Prometheus Vs InfluxDB
* Prometheus Vs OpenTSDB
* Prometheus Vs Nagios
* [本章总结](./chapter0/SUMMARY.md)
* 使用Docker容器启动Prometheus
* 使用Docker Compose启动Prometheus
* [小结](./chapter0/SUMMARY.md)
* 第二章 理解Prometheus模型
* 什么是Metrics和Lables
* Metrics类型
* 任务和实例
* [Promethues查询语言](./sources/prometheus-query-language.md)
* 总结
* 第三章 Prometheus告警
* Prometheus与AlertManager
* 定义Prometheus告警
* 安装AlertManager
* 基于Label的告警规则
* 与邮件系统集成
* 与Slack集成
* 与Webhook集成
* 总结
* 数据存储模型
* 新的存储层
* 最佳实践
* [Prometheus Query Language](./sources/prometheus-query-language.md)
* 基础
* 过滤
* 聚合
* 使用
* Metrics类型以及使用场景
* Counter
* Gauges
* Histograms
* Summaries
* 小结
* 第三章 Prometheus告警处理
* AlertManaer简介
* 部署AlertManager
* 使用二进制包部署AlertManager
* 使用容器部署AlertManager
* 自定义Prometheus告警规则
* 基于Label的动态告警处理
* 通知对象Receivers
* 告警路由规则Route
* 抑制机制 inhibit
* 告警模板
* 第三方集成
* 与邮件系统集成
* 自定义邮件模板
* 与Slack集成
* 与Webhook集成
* 示例:基于Webhook创建自定义扩展
* 小结
* 第四章 可视化一切
* Grafana简介
* 自定义仪表盘
* 自定义图表
* 告警配置
* 共享你的仪表盘
* 总结
* 安装Grafana
* 使用二进制包安装Grafana
* 使用容器安装Grafana
* 使用Prometheus数据源
* 创建监控Dashboard
* 自定义Panel
* 共享你的仪表盘
* 基于Grafana的告警配置
* 小结
* 第五章 扩展Prometheus
* 常用Exporter
* 使用NodeExporter采集主机数据
Expand All @@ -56,34 +80,41 @@ This is the summary of my book.
* 使用Java创建自定义Metrics
* 使用Golang创建自定义Metrics
* 扩展Spring Boot应用支持应用指标采集
* 总结
* 小结
* 第六章 Prometheus服务发现
* 基于DNS的服务发现
* 基于文件的服务发现
* 创建文件
* 配置Prometheus使用基于文件的动态发现
* 定义刷新时间
* 基于Consul的服务发现
* 基于Kubernetes的服务发现
* 总结
* Consul介绍
* Consul的安装和使用
* 注册Exporter到Consul
* 配置Prometheus使用Consul动态发现
* 小结
* [第七章 运行和管理Prometheus](./chapter7/READMD.md)
* 数据管理
* 本地存储
* 远端数据存储
* 创建快照
* 远程数据存储
* 远程读
* 远程写
* [分片](./sources/scale-promethues-with-functional-sharding.md)
* [联邦集群](./sources/scale-prometheus-with-federation.md)
* 使用Prometheus Opertor管理Prometheus
* 使用Promgen管理Prometheus
* [功能分片](./sources/scale-promethues-with-functional-sharding.md)
* [联邦集群](./sources/scale-prometheus-with-federation.md)
* 从1.0迁移到2.0
* [总结](./chapter4/SUMMARY.md)
* 第八章 Kubernetes监控实战
* Kubernetes简介
* 搭建Kubernetes本地测试环境
* Prometheus Vs Heapster
* [采集集群级别指标](./sources/expose-cluster-level-metrics-with-kube-state-metrics.md)
* 采集Pod指标
* 采集Kubelet指标
* 采集集群Node指标
* 采集运行运行指标
* 采集应用监控指标
* 弹性伸缩
* 在Kubernetes下部署Prometheus
* 采集Kubelet状态
* [采集集群状态](./sources/expose-cluster-level-metrics-with-kube-state-metrics.md)
* 采集应用资源用量
* 采集集群节点状态指标
* 使用Grafana创建可视化仪表盘
* 基于Prometheus实现应用的弹性伸缩
* 总结
* [参考资料](./REFERENCES.md)
2 changes: 1 addition & 1 deletion Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Vagrant.configure("2") do |config|

# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "ubuntu/trusty64"
config.vm.box = "ubuntu/xenial64"

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
Expand Down

0 comments on commit ce26acb

Please sign in to comment.