在10分钟内理解《普罗米修斯》

Prometheus 是谁?

这是由SoundCloud主导开发的拉取式资源监控软件。

アーキテクチャ

看起来架构复杂的,但 Prometheus 的设置非常简单。

理解整体

在中文中,以下是对“Prometheus でできること”的释义:

Prometheus 能做什么

在这个设计中,虽然监视的功能不是非常新颖,但考虑到监视对象可能动态变化的可扩展环境资源监视功能。

    • 監視対象のサーバーから情報を取得 & 保管

 

    • 保管済みデータに対して集計クエリを発行できる

 

    • しきい値を超えた場合のアラート (メール、Slack、がんばればTwilioで電話)

 

    柔軟なアラート設定 (同じエラーはまとめて通知とかの設定ができる)

主要角色

如果要在 Prometheus 中实施监控机制,只需了解以下两点即可开始使用。

名称説明exporter監視対象サーバー上で動かすプログラム
テキスト形式でリソース情報を公開するWeb API のようなもの
監視対象のリソース毎に exporter が用意されているprometheus監視サーバーのプログラム
定期的に全ての exporter をポーリングしてリソース情報を収集する
監視したデータは prometheus 内の DB に保持される

因为每个都提供了 Docker 镜像,所以只需按照以下步骤进行操作,无需额外复杂的配置即可运行:
– 在要监视的服务器上运行 exporter 的 Docker 容器
– 在用于存储监视数据的服务器上运行 Prometheus 的 Docker 容器

出口商的种类

在要监视的服务器上,将根据想要监视的资源类型来运行exporter。
每个中间件供应商都会提供exporter,并且有很多种类。
https://prometheus.io/docs/instrumenting/exporters/

顺便提一下,过去我们在GPU机器上安装了资源监控,并在每台GPU机器上运行了以下两个导出程序。

名称説明node_exporterCPU、メモリなど物理マシンの情報を取得するための exporter
https://github.com/prometheus/node_exporternvidia_exporterGPUの利用使用状況を取得するための exporter
https://github.com/Nextremer/nvidia_exporter
nvidia-smi で表示されるデータを取得できる
tankbusta/nvidia_exporter をフォークして GPU のデバイスIDも取得できるように改良

从出口商获取的数据 de

如果直接使用curl访问node_exporter提供的数据,您将收到这样的数据返回

只返回以文本形式呈现的访问时点资源的测量值

Prometheus服务器会定期收集这些数据,并将这个值存储到数据库中。

$ curl http://hogehoge:9100/metrics
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.000111075
go_gc_duration_seconds{quantile="0.25"} 0.000244251
go_gc_duration_seconds{quantile="0.5"} 0.000264236
go_gc_duration_seconds{quantile="0.75"} 0.000295209
go_gc_duration_seconds{quantile="1"} 0.000693045
go_gc_duration_seconds_sum 187.504344849
go_gc_duration_seconds_count 237336
・・・

我也想将应用程序的信息导出为类似导出器的方式!

如果理解了概要,可能会想做这样的事情。像用户数量或注册数量这样的时点。

只要准备一个以 Json 格式的 API 来获取应用程序的统计信息,与 exporter 进行整合就很简单。

在Kibana中经常做的事情是从应用程序日志中输出的数据进行汇总,如果查看Prometheus的常见问题解答页面,会写着”可以使用mtail!”。
mtail是将日志收集并转换为度量指标的工具。
https://prometheus.io/docs/introduction/faq/#how-to-feed-logs-into-prometheus?
https://github.com/google/mtail

将数据可视化

从监视对象中获取的数据将被存储在Prometheus内的时序数据库中。通过使用Prometheus服务器默认附带的图形用户界面(GUI),可以展示类似这样的图表。

prometheus.png

使用 Prometheus 查询来获取数据。虽然这很困难,但是只要在谷歌搜索一下,就会发现别人已经解释了大部分内容,所以即使无法自己设计查询,暂时应该也不会遇到麻烦。

比如,要获取每台机器的CPU使用率,可以编写以下查询。

100 - (avg by (instance) (irate(node_cpu{mode="idle", instance=~"^%s:.+"}[5m])) * 100)

用Grafana进行可视化

Prometheus的默认GUI界面非常简陋且功能有限。
由于Prometheus本身主要是作为监控服务器和数据库的角色,所以这是可以理解的。

当与可视化工具Grafana结合使用时,会变得非常酷炫且易于使用。

grafana.png

Prometheus 和 Grafana 的关系类似于 Elasticsearch 和 Kibana 的关系。

我已经写了一篇关于Grafana的文章,可以在这里阅读并在10分钟内理解它。【链接】

如果想进一步深入的话

这篇文章非常易懂,所以让我们接着看这篇!下一代监控的首选!尝试实际使用 Prometheus 运营

享受一个舒适的资源监视生活!

广告
将在 10 秒后关闭
bannerAds