05 Prometheus 之监控主机和容器
Prometheus 使用 exporter 工具来暴露主机和应用程序上的指标,目前有很多可用于各种目的的 exporter。通过 tar 包来安装 Node Exporter,在部分操作系统上也可以通过软件包进行安装。可以从 Prometheus 官网下载 Node Exporter 的 tar 包。下载并解压缩 Node Exporter,然后将二进制文件移动到环境变量 path 包含的路径中。
Node Exporter 可以返回很多指标,也许你并不想把它们全部收集上来。除了通过本地配置来控制 Node Exporter 在本地运行哪些收集器之外,Prometheus 还提供了一种方式来限制收集器从服务器端实际抓取的数据,尤其是在你无法控制正抓取的主机的配置时。
过滤收集器
将被抓取的指标限制在上面的收集器列表中,使用 params 块中的 collect[]列表指定,然后将它们作为 URL 参数传递给抓取请求。
监控 Docker 容器推荐的方法是使用 Google 的 cAdvisor 工具。在 Docker 守护进程上,cAdvisor 作为 Docker 容器运行,单个 cAdvisor 容器返回针对 Docker 守护进程和所有正在运行的容器的指标。Prometheus 支持通过它导出指标,并将数据传输到其他各种存储系统,如 InfuxDB、Elasticsearch 和 Kafka。
抓取的生命周期
标签提供了时间序列的维度。它们可以定义目标,并为时间序列提供上下文。但最重要的是,结合指标名称,它们构成了时间序列的标识,如果它们改变了,那么时间序列的标识也会跟着改变。更改或添加标签会创建新的时间序列。
一个设定分类标准的好办法是利用拓扑标签和模式标签。拓扑标签(topological label)通过其物理或逻辑组成来切割服务组件。模式标签(schematic label)是 url、error_code 或 user 之类的东西,它们允许你将拓扑中同一级别的时间序列匹配在一起,例如创建数据间的比率。
我们有两个阶段可以重新标记。第一个阶段是对来自服务发现的目标进行重新标记,这对于将来自服务发现的元数据标签中的信息应用于指标上的标签来说非常有用。
第二个阶段是在抓取之后且指标被保存于存储系统之前。这样,我们就可以确定哪些指标需要保存、哪些需要丢弃以及这些指标的样式。这是在我们作业内的 metric_relabel_configs 块中完成的。记住这两个阶段的最简单方法是:在抓取之前使用 relabel_configs,在抓取之后使用 metric_relabel_configs。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/40cddc02cd224345077b9c31b】。文章转载请联系作者。
评论