从一开始通俗地解释了Prometheus [亲手实操]

概况
Prometheus是一个开源的系统监控和警报工具包,由SoundCloud服务的工程师开发。它内置了一个时间序列数据库,并采用了Pull模型的数据模式。
请参阅 https://prometheus.io 以获取详细信息。
特点
Prometheus的主要功能包括如下内容。
-
- 柔軟なクエリ言語であるPromQLを持つ
-
- Pull型(over HTTP)の監視サービスで時系列の収集
-
- 独自のデータストア
- グラフ化とダッシュボードのサポートの複数のモード(ただしGrafanaを使うことが多いです)
生态系统
普羅米修斯系統有一些非常出色的優點。
-
- 時系列データをスクレイプして保存するメインのPrometheusサーバー
アプリケーションコードを計測するためのクライアントライブラリ
短命の仕事をサポートするためのプッシュゲートウェイ
HAProxy、StatsD、Graphiteなどのサービス用の専用エクスポーター
アラートを処理するalertmanager
以下是一种可能的汉语表述:”架构”

一开始看到架构可能会觉得复杂,但实际上非常容易上手。
作为上图中流程的一个示例,首先,左下角的JobExporters(Prometheus Target)向中间的Prometheus Server拉取指标。然后,从收集的数据中使用Alertmanager检测错误并发送到Slack,使用PromQL进行日志的可视化和分析。
出场的角色
这部分内容的引述是关于Prometheus的,虽然需要花费10分钟来理解,但非常易懂。因此,我将它放在这里。
尽管上面的架构图涉及多个组件,但只需先了解以下两个,就可以暂时解决问题。
テキスト形式でリソース情報を公開するWeb API のようなもの
監視対象のリソース毎に exporter が用意されているprometheus監視サーバーのプログラム
定期的に全ての exporter をポーリングしてリソース情報を収集する
監視したデータは prometheus 内の DB に保持される
出口 → 架构图左下角
普罗米修斯 → 架构图的中央位置
普罗米修斯的优势
以下是介绍使用Prometheus的几个优点,并与综合监控工具ZABBIX进行比较。
-
- 時系列DBにデータを格納するのでI/Oが速く、画面表示が軽快(ただしGrafana経由が多い) ⇦ ZABBIXはRDBMSのため、重くなって画面表示が遅くなることがある。
-
- 分散管理が容易で、Diskやメモリの追加でスケールアップできる。 ⇦ ZABBIXはRDBMSのレプリケーションやDBのメモリチューニングが必要
-
- APIを介してホストの自動検出、削除が標準機能で可能であり、環境変更への対応が容易。
-
- エンドポイントを登録すればホストに紐づかなくても監視可能、柔軟性が高い。 ⇦ ZABBIXでもWEBを使えばできるが設定が必要
- Grafanaの機能だが、グラフやダッシュボードUIの作成が綺麗で容易
Prometheus的缺点
在中国,也存在一些缺点。
-
- データの長期保存を前提としていないので、別途に長期保存用のサーバが必要 ⇦ RDBMSなら問題ない
-
- デフォルトの設定だとID/PassなしのWEBアクセスでデータの閲覧や監視の無効化などができてしまうので、接続制限やBasic認証が必要
- ストレージ問題 ⇦ 一つ目と被りますが、Prometheusは、デフォルトではTSDB(Time Series Database)というローカルのストレージを利用するのですが、これは冗長化や可用性が考慮されていません。対策として、Metricsの容量設計やRemoteStorageという機能を用い、外部のDBに保存する必要があります。
我认为虽然有长有短,但总体来说它是一款相当优秀的软件。
图形用户界面
我們將輕鬆地貼上實際儀表板的屏幕。
图表等

这种隐约的动作已经被视觉化了。
所有的目标

正常系 – xì

警报

实例停止了嘛,如果使用AlertManager还可以通过Slack进行通知。⬇︎

有很多警报正不断发送过来。
Grafana 是一种数据可视化工具。
如果使用日志数据可视化工具Grafana,可以很酷地实现数据可视化。(重要)
这个设计看起来很好。
如果你因为有点了解而觉得没关系的话,那么到这里为止辛苦了。
如果你真的想亲自体验一下,就再迈出一步吧!
动手实践
目标
-
- Prometheusなんとなく触れるようになる
環境が構築できる
起動できる
targetとかなんとなくわかるようになる
前提的认知
本次我们将使用Docker-compose,因此需要基本知识。
- Docker-compose
设置环境
虽然您可以选择在本地环境中进行安装,但由于通常使用容器,我们将使用Docker进行设置。
文件夹结构
tree
.
├── docker-compose.yaml
└── prometheus
└── prometheus.yml
1 directory, 2 files
我们将使用docker-compose.yaml和prometheus.yml。在实际的开发环境中,我们还会创建和定制alert manager、grafana.env和alert规则等内容。
创建docker-compose.yaml文件
version: "3"
services:
prometheus:
image: prom/prometheus
container_name: prometheus
volumes:
- ./prometheus:/etc/prometheus/
ports:
- 127.0.0.1:9090:9090
grafana:
image: grafana/grafana
container_name: grafana
ports:
- 3000:3000
在9090端口启动Prometheus服务器,并在3000端口启动Grafana服务器。通过volumes:将本地的Prometheus配置文件挂载到容器内。
创建prometheus.yml文件
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
external_labels:
monitor: "codelab-monitor"
rule_files:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
这是用来描述Prometheus的详细设置的文件。您可以在static_configs的位置上设置要测量的端点。此外,监视间隔和异常检测的定义(如alert_rules等)也需要在这个文件中进行记录。
启动
docker-compose up -d
我想Prometheus服务器和Grafana服务器已经启动了。
当您转到 http://localhost:9090,您可以访问Prometheus。
另外,当你点击状态标签中的目标时,你会发现http://localhost:9090/metrics正常工作。

那么,现在让我们访问Grafana吧!
当您转至 http://localhost:3000,即可访问 Grafana。在首次启动时,会要求您输入用户名和密码,但您可以使用 admin 登录。
为了与Prometheus进行协作,需要从数据源中添加Prometheus。
请点击”Save&Test”,然后再点击”Prometheus Status”按钮,查看图表是否绘制成功!
我完成了
最终
在本次的Hands-on中,我们进行了一些并不太有意义的Prometheus服务器监控,但是Prometheus可以监控各种服务,如API服务器、缓存服务器、基础设施等等。如果有任何疑问,请随时留下评论。
文献引用
官方网站
在grafana上展示prometheus的数据图表试试看
在10分钟内了解Prometheus
下一代监视器的首选!尝试实际操作Prometheus
在10分钟内了解Grafana
开始使用可观测性!(后篇)~Metrics/Logs/Traces教程~