DUICUO

毎日 CRUD 操作を実行する者として、より洗練された Prometheus も試してみたいと思っています。

Prometheus:その名前自体が壮大な雰囲気を醸し出していますね。では、Prometheusは具体的に何をするのでしょうか?簡単に言うと、 Prometheusはオープンソースのサービス監視システムと時系列データベースです。

オープンソース、監視、時系列データベースという 3 つのキーワードに焦点を当てます。

オープンソースとは、無料で使用でき、問題が発生した場合にはコミュニティに問題を提起して支援を求め、新しい機能やバグ修正の PR を送信して強力なエコシステムを共同で構築できることを意味します。

監視: これは、Prometheus を使用して、サーバー、データベース、アプリケーションなどのさまざまなシナリオを監視できることを意味します。

時系列データベース:Wikipediaでは、時系列とは「時系列順に並べられた一連のデータポイント」と定義されています。これは本質的に、特定の時点における情報であり、変更不可能です。現在、監視シナリオで広く利用されています。

Zabbixのような既存の監視ソリューションと比較して、Prometheusは近年のコンテナ監視において優れたパフォーマンスを発揮しています。まさにそれがPrometheusの特長です。新しい監視オプションとして、Prometheusは検討する価値があると思います。

監視は運用保守(O&M)部門の管轄であり、理想的には専任のO&Mエンジニアが担当すべきですが、バックエンド開発者としては、監視に関する知識とスキルも必要だと考えます。スタートアップに入社すれば、ほぼすべての業務を担当することになるかもしれません。

プロメテウスのいくつかの概念

プロメテウスサーバー

Prometheus サーバーは Prometheus のコア コンポーネントであり、監視データの取得、保存、クエリを担当します。

輸出業者

エクスポーターは監視対象データを収集し、HTTP サービス経由で Prometheus サーバーに公開します。

公開されたデータは定期的に取得され、監視されます。

公式ドキュメントには、MySQL などの多くのエクスポーターが掲載されています。ダウンロードリンク: https://prometheus.io/download/

当社のアプリケーションを監視している場合は、公式 SDK をアプリケーションに統合し、独自の追跡ポイントを追加して、監視する必要があるメトリックを公開することができます。

プッシュゲートウェイ

スタンドアロンサービスであるPushGatewayは、主にプルモードで使用され、Prometheusサーバーがエクスポーターからデータをプルします。プッシュモードを使用する場合は、データをPushGatewayにプッシュし、そこからサーバーにデータを送信します。

サービス検出

サービスディスカバリは非常に重要な機能であり、特にマイクロサービスシナリオにおける監視において重要です。サービスディスカバリがなければ、サービスが起動されるたびにPrometheusの設定ファイルを修正し、対応する設定を追加する必要があります。

サービスディスカバリ機能を使用すると、手動で設定を変更することなく、サービス情報を動的に検出できます。サービスディスカバリにはConsulが公式に推奨されていますが、Nacosは現在これをサポートしておらず、定期的に情報を取得してファイルに同期するなどの追加のソリューションが必要です。

三銃士

Prometheusは現在、GrafanaおよびAlertManageと標準的に連携して使用されており、「三銃士」アプローチを形成しています。ELKと同様に、「三人の頭は一つより優れている」という格言を体現しています。

  • プロメテウス

監視データの取得と保存を担当します。

  • グラファナ

さまざまな監視指標をグラフィカルに表示します。

プロメテウスは家族を養うためにお金を稼ぐ責任があり、グラファナは美しくある責任があります。

  • アラート管理

異常アラートを担当し、DingTalk などのさまざまなメッセージ通知に接続できます。

生態系の構成


プロメテウスの魔法を体験しよう

最近少し時間ができたので、Prometheusを勉強してみることにしました。まずは知識を広げること、そして仕事に応用できるかどうか試すためです。

ホストやデータベース関連の側面を監視するために、多くの企業がクラウドを使用しており、クラウド プラットフォーム自体が優れた監視およびアラート システムを提供しているため、Prometheus を使用して別のシステムを作成する必要はありません。

メトリック監視、アプリケーションメトリック監視など、他のシナリオにも使用できます。ビジネスメトリック監視にも使用できます。つまり、使い方は様々で、すべては使い方次第です。

学習や体験を始めたばかりなら、Docker を使ってイメージをプルして作成するだけです。シンプルで高速、そして便利です。

Prometheusのデプロイ

  1. docker run -d -p 9090:9090 -v /Users/yinjihuan/Downloads/prometheus/prometheus.yml:/etc/Prometheus/Prometheus.yml prom/prometheus

プロメテウス.yml

  1. グローバル:
  2. scrape_interval: 15秒
  3. 外部ラベル:
  4. モニター: 'codelab-monitor'  
  5. scrape_configs:
  6. - ジョブ名: 'プロメテウス'  
  7. scrape_interval: 5秒
  8. 静的設定:
  9. - ターゲット: [ 'localhost:9090' ]
  10. - ジョブ名: beta_node
  11. 静的設定:
  12. - ターゲット: [ '10.111.83.8:9100' ]

2 つのタスクが定義されています。1 つは Prometheus 独自の監視であり、これもサービスであり、いくつかのメトリック情報を公開します。

1つはマシン監視タスクです。ターゲットにはIPアドレスとポート番号が設定されており、対応するマシンにはnode_exportがインストールされている必要があります。node_exportを介してマシンのメトリックデータを公開することで、Prometheusはそれを監視用に取得できます。

Grafanaをデプロイする

  1. docker run -d -p 3000:3000 --name=grafana -v /Users/yinjihuan/Downloads/Grafana-storage:/var/lib/grafana grafana/grafana  

node_exportをデプロイする

公式ウェブサイトから対応する node_export をダウンロードします: https://prometheus.io/download/#node_exporter

解凍後、`nohup ./node_exporter &` で起動してください。デフォルトのポートは9100です。このマシンのIPアドレスは、上記のbeta_nodeのIPアドレス10.111.83.8と同じです。

Grafanaチャートを設定する

localhost:3000 にアクセスすると、Grafana のホームページが表示されます。設定で、Prometheus のアドレスを指すデータソースを作成します。


気に入ったチャートをインポートしてリンクしてください。チャートはhttps://grafana.com/grafana/dashboards?search=nodeで検索できます。例えば、「node」を検索すると、「node_export」に関連するすべてのチャートが表示されます。各チャートには番号が振られているので、番号で直接読み込むことができます。インターネット接続が必要です。


機械監視効果