Skip to content

Commit

Permalink
improve translate
Browse files Browse the repository at this point in the history
  • Loading branch information
1046102779 committed Apr 17, 2017
1 parent da8bfe5 commit 01e8df9
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 27 deletions.
22 changes: 13 additions & 9 deletions introduction/comparison.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,31 @@
## 监控系统产品比较
### Prometheus vs. Graphite
#### 范围
Graphite专注于查询语言和图表特征的时间序列数据库。其他需求都需要依赖外部组件实现
Graphite专注于查询语言和图表特征的时间序列数据库。其他都需要依赖外部组件实现

Prometheus是一个基于时间序列数据的完整监控系统和趋势系统,包括内置和主动抓取、存储、查询、图表和警告。它懂得监控系统和趋势系统应该是什么样的(哪些目标机应该存在,哪些时间序列模型存在问题等等),并积极地试着找出故障
Prometheus是一个基于时间序列数据的完整监控系统和趋势系统,包括内置和主动抓取、存储、查询、图表展示和报警功能。它懂得监控系统和趋势系统应该是什么样的(哪些目标机应该存在,哪些时间序列模型存在问题等等),并积极地试着找出故障

#### 数据模型
Graphite和Prometheus一样,存储时间序列数值采样点。然而,Prometheus的元数据模型更加丰富:Graphite的度量指标名称是由隐式地编码多维度的点分隔命名的,而Prometheus的度量指标是可以自定义名称的,并以key-value键值对的标签,赋给度量指标。通过这些标签,我们使用Prometheus查询语言,可以方便地进行时间序列数据的过滤、分组、匹配操作
Graphite和Prometheus一样,存储时间序列数值样本。但是Prometheus的元数据模型更加丰富:Graphite的度量指标名称是由"."分隔符,隐式地编码多维度。而Prometheus度量指标是可以自定义名称的,并以key-value键值对的标签形式,成为度量指标的标签属性列表。并在此基础上,使用Prometheus查询语言可以轻松地进行过滤,分组和匹配操作

进一步地,当Graphite与StatsD结合使用时,Graphite就只是对一个聚合数据的存储系统了,而不是把目标实例作为一个维度,并深入分析目标实例出现的各种问题。

例如:我们用Graphite/StatsD监控系统存储api-server服务Http请求的数量,前置条件包括:返回码是`500`,请求方法是`POST`,访问URL为`/tracks` , 度量指标自动隐式地编码,如下所示:
> stats.api-server.tracks.post.500 -> 93
例如:我们用Graphite/StatsD统计HTTP请求api-server服务的数量,前置条件:返回码是`500`,请求方法是`POST`,访问URL为`/tracks` , key如下所示:
```
stats.api-server.tracks.post.500 -> 93
```

但是在Prometheus中同样的数据存储可能像下面一样(假设有三个api-server):
> api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample1>"} -> 34
> api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample2>"} -> 28
> api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample3>"} -> 31
```
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample1>"} -> 34
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample2>"} -> 28
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample3>"} -> 31
```

由上可以看到,三个api-server各自的度量指标数据,Prometheus把api-server也作为了一个维度,便于分析api-server服务出现的各种问题

#### 存储
Graphite存储以[Whisper](http://graphite.readthedocs.org/en/latest/whisper.html)把时间序列数据存储到本地磁盘,这种数据存储格式是RRD风格的数据库,它期望采样点定期地到达。 任何时间序列在一个单独的文件中存储,一段时间后新采集的样本会覆盖老数据
Graphite存储以[Whisper](http://graphite.readthedocs.org/en/latest/whisper.html)方式把时间序列数据存储到本地磁盘,这种数据存储格式是RRD格式数据库,它期望样本能够定期到达。 任何时间序列在一个单独的文件中存储,一段时间后新采集的样本会覆盖老数据

Prometheus也为每一个时间序列创建了一个本地文件,但是它允许时间序列以任意时间到达。新采集的样本被简单地追加到文件尾部,老数据可以任意长的时间保留。Prometheus对于短生命周期、且经常变化的时间序列集也可以表现得很好

Expand Down
39 changes: 21 additions & 18 deletions introduction/install.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,43 @@
## 安装
---
### 使用预编译二进制文件
我们为大多数Prometheus的官方组件,提供了预编译二进制文件。可用版本[下载](https://prometheus.io/download)列表
我们为Prometheus大多数的官方组件,提供了预编译二进制文件。可用版本[下载](https://prometheus.io/download)列表

### 源码安装
对于源码安装Prometheus组件,可以查看`Makefile`目标文件。
如果要从源码安装Prometheus的官方组件,可以查看各个项目源码目录下的`Makefile`
> 注意点:在web上的文档指向最新的稳定版(不包括预发布版)。[下一个版本](https://github.com/prometheus/docs/compare/next-release)指向master分支还没有发布的版本
### Docker安装
所有的Prometheus服务在Docker镜像[prom](https://hub.docker.com/u/prom/)仓库中,都是可用的
所有Prometheus服务的Docker镜像在官方组织[prom](https://hub.docker.com/u/prom/),都是可用的

在Docker上运行Prometheus服务,只需要简单地执行`docker run -p 9090:9090 prom/prometheus`即可。这条命令会启动Prometheus服务,使用的是默认配置文件,并暴露出web可以访问的9090端口
在Docker上运行Prometheus服务,只需要简单地执行`docker run -p 9090:9090 prom/prometheus`命令行即可。这条命令会启动Prometheus服务,使用的是默认配置文件,并对外界暴露9090端口

Prometheus镜像使用Volumn存储实际度量指标。在生产环境上使用[数据卷容器](https://docs.docker.com/engine/userguide/containers/dockervolumes/#creating-and-mounting-a-data-volume-container)模式达到轻松管理Prometheus升级数据的目的,它是被强烈推荐的
Prometheus镜像使用docker中的volumn卷存储实际度量指标。在生产环境上使用[容器卷](https://docs.docker.com/engine/userguide/containers/dockervolumes/#creating-and-mounting-a-data-volume-container)模式, 可以在Prometheus更新和升级时轻松管理Prometheus数据, 这种使用docker volumn卷方式存储数据,是被docker官方强烈推荐的.

为了提供你自己的配置,这儿有几个选项。下面有两个例子。
通过几个选项,可以达到使用自己的配置的目的。下面有两个例子。

#### 卷&绑定挂载
在运行Prometheus服务的主机上,绑定挂载你的prometheus.yml配置文件:
在运行Prometheus服务的主机上,做一个本地到docker容器的配置文件关系映射。
> docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
或者为这个配置文件使用另外的卷

或者为这个配置文件使用一个独立的volumn
> docker run -p 9090:9090 -v /prometheus-data \
prom/prometheus -config.file=/prometheus-data/prometheus.yml

#### 自定义镜像
为了避免在主机绑定和挂载配置文件,配置直接打包到镜像中。如果配置是静态的,并且在所有环境中配置都是一样的话,这种把配置文件直接打包到镜像中的方式是非常直接推荐的。

例如:在Prometheus配置和Dockerfile中,创建一个新目录:
> FROM prom/prometheus
> ADD prometheus.yml /etc/prometheus/
现在编译和运行它:
> docker build -t my-prometheus .
> docker run -p 9090:9090 my-prometheus
为了避免在主机上与docker映射配置文件,我们可以直接将配置文件拷贝到docker镜像中。如果Prometheus配置是静态的,并且在所有服务器上的配置相同,这种把配置文件直接拷贝到镜像中的方式是非常好的。

例如:利用Dockerfile创建一个Prometheus配置目录, Dockerfile应该这样写:
```
FROM prom/prometheus
ADD prometheus.yml /etc/prometheus/
```

然后编译和运行它:
```
docker build -t my-prometheus .
docker run -p 9090:9090 my-prometheus
```

一个更高级的选项是可以通过一些工具动态地渲染配置,甚至后台定期地更新配置

Expand Down

0 comments on commit 01e8df9

Please sign in to comment.