BT

Your opinion matters! あなたのご意見でInfoQが変わる!

CloudFlareのグローバルネットワークをPrometheusで監視する

| 作者: Hrishikesh Barua フォローする 5 人のフォロワー , 翻訳者 h_yoshida フォローする 0 人のフォロワー 投稿日 2017年12月6日. 推定読書時間: 5 分 |

あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

原文(投稿日:2017/10/28)へのリンク

Matt Bostock氏がSREcon 2017 Europeで行なった講演で、メトリックベースの監視ツールであるPrometheusが、CDNとDNS、およびDDoS対策プロバイダであるCloudFlareの持つ世界規模の分散インフラストラクチャおよびネットワーク監視においてどのように利用されているか、という話題が取り上げられた。

メトリックベース監視プロジェクトであるPrometheusは、2012年頃に立ち上げられたオープンソースプロジェクトで、Cloud Native Computing Foundation (CNCF)のメンバである。Prometheusは、動的構成と問合せ言語のPromQLを備えているため、警告に複雑なクエリを記述することができる。CloudFlareはCDN(Content Delivery Network)と分散DNS、およびDDoS対策サービスを提供するプロバイダであり、そのインフラストラクチャは世界規模に広がっている。このようなインフラストラクチャとネットワークの監視はいきおい複雑なものになる。講演では、この中でPrometheusが果たす役割が説明がされた。CloudFlareでは、それまでNagiosが使用されていた部分の87パーセントがPrometheusにリプレースされている。

CloudFlareはAnycastを使用して、CDNと同じようなサービスを提供する。Anycast DNSはユーザに最も近いサーバからのDNSクエリ配信を、Anycast HTTPはユーザに最も近いサーバからのコンテンツ提供を、それぞれ可能にする。ユーザとWebサイトの中間で動作することで、CloudFlareは、ビジタのトラフィックに脅威パターンがあるかどうかも同時にチェックできる。同サービスには150ヶ国に116ヶ所のデータセンタがあり、毎秒500百万のHTTPリクエストと120万のDNSリクエストを処理している。これは世界中のインターネットリクエストの10パーセントを占める数値である。各PoP(point-of-presence)ではHTTP、DNS、攻撃緩和(attack mitigation)、キーバリューストアを提供する。これを監視するため、講演の時点で188のPrometheusサーバが稼働されている。

画像提供 - https://promcon.io/2017-munich/talks/monitoring-cloudflares-planet-scale-edge-network-with-prometheus/

Prometheusはメトリクスベースである。すなわち、時系列メトリクスを収集し、他の機能はこのメトリクスを基盤として構築されている。監視対象の各サーバ上でエクスポータ(exporter)と呼ばれるプロセスが動作し、収集したメトリクスをHTTP経由で提供する、というプルモデルで動作する。CloudFlareではサービスドメイン毎にひとつのエクスポータを展開し、システム(CPU、メモリ、TCP、ディスク)、ネットワーク(HTTP、ping)、ログ検索(エラーメッセージ)、およびコンテナとネームスペースのメトリクスを収集している。最終段階では、Googleのオープンソースプロジェクトであるcadvisorが使用されている。Prometheusのデータ保持期間は無期限ではなく、今この時点(here-and-now)の監視という観点がより重視される。CloudFlareのセットアップでは、ダウンサンプリングなしで15日間のデータが保持されている。

CloudFlareコアデータセンタのサービスリストには、Marathon、Mesos、Chronos、Docker、Sentry、Ceph(ストレージ用)、Kafka、Spark、Elasticsearch、Kibanaで構成されるスタックによるログアクセス、分析、APIなどが挙げられている。各PoPではPrometheusが、エクスポータを通じてサーバおよびサービスのメトリクスを問い合わせる。PoP単位の高可用性は、複数のPrometheusサーバを使用することによって担保する。

Prometheusの警告マネージャは、アラートマネージャ(Alertmanager)という分かりやすい名前だ。CloudFlareのデプロイメントでは、Prometheusサーバがプッシュするイベント毎にひとつのアラートマネージャが用意されている。このセットアップの高可用性については現在作業中である。警告は過去データを使ってテストし、正常な動作を確認する。この機能は、Bosunなどの新しい監視ツールの一部でもある。その他の警告に関する優れた特徴としては、説明的な(descriptive)名称、明確性、受信者が即座に対応可能な情報量、などが挙げられる。

CloudFlareチームはjiralertsを使って、JIRAチケットシステムをアラートマネージャに統合している。JIRAはワークフローをカスタマイズできるので、警告を監視するために、監視ワークフロー用の特別なステートを含めることが可能だ。別のツールであるalertmanagere2sが警告を受信してElasticsearchに取り込むことにより、後で検索や解析を行なうことが可能になる。CloudFlareではアラートマネージャ用に、unseeという独自のダッシュボードを開発している。

Prometheus自体の監視はどうするのだろう?2つのアプローチがある。ひとつは、同じデータセンタ内のPrometheusが相互に監視する、メッシュ的なアプローチである。もうひとつは、トップレベルのPrometheusサーバがデータセンタレベルのPrometheusサーバ群を監視するという、トップダウンのアプローチだ。

CloudFlare SREチームが現在取り組んでいることのひとつは、環境やクラスタなどのようなラベルの早期の標準化と、それによるグループ化である。その他としては、可視性の確立や、同業者やステークホルダによるバイインを生み出すことに関連するものがある。立ち上げ時にチームが関与することにより、監視システムのサービスへの統合が短期間で可能になる。警告の内容自体のチューニングや改善には複数のイテレーションを必要とするため、現在も進行中のプロセスである。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT