背景少し前に、WeChatの公式アカウントで「募集要項:新しいオープンソースプロジェクトを一緒に立ち上げましょう」という投稿を偶然見つけました。投稿者は、現在市場に散在する様々な輸出業者を統合し、一元的に管理することを目指す「cprobe」というオープンソースプロジェクトのアイデアを紹介していました。 たとえば、よく使用されるものとしては blackbox_exporter や mysqld_exporter などがあります。
また、Prometheus エコシステムと完全に互換性があり、既存の監視パネルを再利用できます。 当時、私はたまたま会社で可観測性関連の業務に携わっていたのですが、これがまさに問題点であることに気づきました。 そのため、私はこのプロジェクトを綿密に追跡し、いくつかの貢献をしてきました。プロジェクトの中核はエクスポーターを統合することであるため、そのためのプラグインを作成することも非常に重要な貢献です。 プラグインの開発プロジェクト全体の実行フローチャートは次のとおりです。 ご覧のとおり、プラグイン作成の中核は、カスタム構成ファイルを解析してメトリックをキャプチャするようにプラグインをカスタマイズするロジックです。 たとえば、クロール対象のドメイン名とクロール ルールを設定で指定する必要があります。 ここで、cprobe はすでに 2 つのインターフェースを抽象化しているので、対応するインターフェースを実装するだけで済みます。 次の例では、以前に書いた Consul を使用しています。 各プラグインには異なる構成があるため、構成を特定の構造に解析する必要があります。 構成ファイルの解析については特に説明する必要はなく、独自のロジックに従って実装し、いくつかのデフォルト値を構成するだけで済みます。 以下はコア スクレイピング ロジックです。基本的には、対応するプラグインのクライアントを使用していくつかのコア メトリックを取得し、それらを Prometheus メトリックにカプセル化してから、cprobe を使用してそれらをリモート Prometheus データベース (または Prometheus 互換データベース) に書き込むというものです。 すべてのメトリック データは、対応するクライアントを通じて取得されます。 既存のエクスポートを cprobe に移行する場合は、これらのスクレイピング操作の対応するリポジトリからコードを直接コピーできます。 たとえば、私は以下を参照しました: https://github.com/prometheus/consul_exporter プラグインを書き直さない限り、いくつかの一般的なライブラリやミドルウェアには対応するエクスポーターが既に存在します。 詳細なリストについては、次のリンクを参照してください: https://prometheus.io/docs/instrumenting/exporters/ 次に、対応するプラグイン ディレクトリ (./conf.d) に設定ファイルを作成する必要があります。 テストを容易にするために、cprobe を起動するときに `-no-writer` を追加してメトリックをコンソールに出力することができ、デバッグが容易になります。 要約以前、簡単に始められるオープンソース プロジェクトを知っているかと尋ねられたことがありますが、ここにそのプロジェクトがあります。 このプロジェクトは比較的新しいもので、コードと機能がシンプルで、経験豊富なシステム開発者が主導しているため、初心者にとって非常に適したオープンソース プロジェクトとなっています。 プロジェクトアドレス: https://github.com/cprobe/cprobe |