読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます。新機能の詳細をご覧ください。
不動産販売者が不動産のリストを作成して、その不動産の見積もり価格を取得できるようにするウェブサイトであるMeilleursAgentsは、Celeryベースの分散タスクキューの監視方法の詳細を共有した。Python、StatsD、Bucky、Graphite、Grafanaの組み合わせによりパイプラインが形成され、タスクのライフサイクルと実行速度が監視される。
この記事では、Celeryワーカをどのように監視するかに焦点を当てる。CeleryはPythonで書かれた分散タスクキューであり、ブローカ/クライアントモデルを使用してワーカにタスクを割り当てる。分散タスクキューの監視は困難である。それは、ワーカノードが分散しており、特に複数のシステムを通過する場合、特定の要求のステータスを追跡することは困難なためである。ただし、この場合の監視は、全体の成功/失敗と実行率に関するものである。各ステージでの受信、処理の累積数も、いずれかのキューに処理速度低下があるかどうかを示す。InfoQは詳細を知るため、MeilleursAgentsのEngineering ManagerであるPierre Boeuf氏と連絡を取った。
メトリクスコレクションパイプラインはPythonエージェントで構成されており、Celeryイベントを監視し、StatsD APIを使用してStatsDにデータをプッシュする。これがBuckyに送信され、BuckyはGraphiteにデータを書き込む。Buckyは、サーバプロセスとして実行され、入力メトリックをGraphiteが理解できる形式に変換するツールである。Buckyのメトリックは、StatsDやCollectdのようなメトリクス収集ツールからのものを利用することができる。これは、受信メトリック形式がGraphiteによって認識されない場合に便利である。MeilleursAgentsにおけるGraphiteインストールでは、Whisperをバックエンドデータベースとして使用する。Boeuf氏によると、チームはGraphiteとのスケーリングの問題にまだ直面していない。
我々が遭遇した唯一のスケーリングの問題は、StatsDとGraphiteを同じサーバにホストしたことによるものでした。リクエストで高負荷となったため、現在は、メトリックをプッシュする各マシンでローカルのBuckyプロセスが動きます。
Grafanaは、フロントエンドとして使用され、メトリックをクエリする。監視には、タスク、ブローカ、およびワーカが含まれる。Boeuf氏によると、ダッシュボードはウェブとデータチームによって使われる。
diffseries(Graphiteにおいて別の時系列から1つの時系列を減算する方法)とGrafanaの色付け設定の組み合わせにより、考えられる問題を視覚的に強調する。例えば、ゼロでなければならないメトリックに対してゼロ以外の値がある場合、赤い背景にするなどがある。NewRelicとGoogle Cloud Monitoring(1つは外部ツールで、もう1つは製品がホストされているクラウドの一部)は、アラート部分を処理する。さらに、NewRelicはCeleryプロセス自体を監視し、Celeryプロセスが実行されていることを確認する。GrafanaにはPagerdutyやOpsGenieのようなサービスとの統合だけでなくアラートに対するサポートが組み込まれている。しかし、チームはこれらを使用していない。
Rate this Article
- Editor Review
- Chief Editor Action