DigitalOcean インタビュー

2016年9月14日筆者: Brian Brazil

Prometheus ユーザーへのインタビューシリーズの次として、DigitalOcean が Prometheus をどのように使用しているかについて語ります。Carlos Amedee は、PromCon 2016 でのロールアウトの社会的側面についても語りました。外部サイトへのリンク

ご自身と DigitalOcean について教えていただけますか?

私の名前は Ian Hansen といいます。プラットフォームメトリクスチームで働いています。DigitalOcean はシンプルなクラウドコンピューティングを提供しています。現在までに、13 のリージョンで 2,000 万個の Droplet(SSD クラウドサーバー)を作成しました。また、最近新しいブロックストレージ製品もリリースしました。

DigitalOcean logo

Prometheus導入前のモニタリング経験について教えてください。

Prometheus 導入前は、GraphiteOpenTSDB を実行していました。Graphite は小規模なアプリケーションに使用され、OpenTSDB は Collectd を介して、すべての物理サーバーからメトリクスを収集するために使用されていました。Nagios はこれらのデータベースからデータを取得してアラートをトリガーしていました。現在も Graphite は使用していますが、OpenTSDB はもう実行していません。

Prometheusを検討することにした理由は何ですか?

OpenTSDB には不満がありました。クラスターをオンラインに保つ責任がありましたが、メトリクスストームを防ぐのが難しいと感じていました。時々、チームが新しい(非常にうるさい)サービスを起動すると、クラスターの総容量に影響を与え、私の SLA を損なうことがありました。

OpenTSDB に入ってくる新しいメトリクスをブラックリスト/ホワイトリスト登録することはできましたが、組織的なプロセス(変更や強制が困難だった)以外に、うるさいサービスを防ぐための優れた方法はありませんでした。他のチームは、当時のクエリ言語と利用可能な可視化ツールに不満を持っていました。Julius Volz とプッシュ対プルメトリクスシステムについて話していたところ、Prometheus が、プルする対象とその頻度を自分で決定できることで、SLA を完全に管理できると知り、試してみたくなりました。それに、クエリ言語が本当に気に入りました。

どのように移行しましたか?

Collectd を通じてメトリクスを収集し、OpenTSDB に送信していました。Node Exporter を既に稼働していた Collectd セットアップと並行してインストールしたことで、Prometheus の実験を開始することができました。また、Droplet メトリクスを公開するためのカスタムエクスポーターも作成しました。すぐに OpenTSDB サービスとの機能同等性を達成し、Collectd を停止してから OpenTSDB クラスターを停止しました。

人々は Prometheus とそれに付属する可視化ツールを非常に気に入りました。突然、私の小さなメトリクスチームは、人々を満足させるのに十分な速さで対応できないバックログを抱えるようになり、人々が利用するための Prometheus を提供・維持する代わりに、他のチームが独自の Prometheus サーバーを可能な限り簡単に実行できるようにするためのツールを作成することを検討しました。また、会社で一般的に使用されるエクスポーターも実行できるようにしました。

一部のチームは Alertmanager を使用し始めていますが、既存の監視ツールから Prometheus をプルするという概念はまだあります。

切り替え以降、どのような改善が見られましたか?

ハイパーバイザーマシンの洞察力を向上させました。Collectd と Node Exporter から取得できるデータはほぼ同じですが、Go 言語開発者のチームにとって、各ハイパーバイザーで実行しているサービスに固有のデータを公開する新しいカスタムエクスポーターを作成することがはるかに簡単になりました。

より優れたアプリケーションメトリクスを公開しています。後で正しく集計できる Prometheus メトリクスを作成する方法を学び、教えるのが簡単になりました。Graphite では、ドット区切りの名前が正しく構造化されていなかったために、後で特定の方式で集計できないメトリクスを作成するのは簡単でした。

アラートの作成は以前よりもはるかに迅速かつ簡単になり、使い慣れた言語で記述できます。これにより、チームはサービスを迅速に反復できるため、自身が理解しているサービスに対してより優れたアラートを作成できるようになりました。

DigitalOcean と Prometheus の将来について、どのようにお考えですか?

DigitalOcean のチームがメトリクスを収集するのを可能な限り容易にする方法を引き続き検討しています。現在、チームは自分たちが関心のあるものに対して独自の Prometheus サーバーを実行しており、これにより、そうでなければ迅速に得られなかったであろう可観測性を獲得することができました。しかし、すべてのチームが Prometheus の実行方法を知っている必要はありません。Prometheus を可能な限り自動化するために、チームがサービスやデータベースに関するクエリとアラートに集中できるように、何ができるかを検討しています。

また、Vulcan を作成し、Prometheus クエリ言語を維持しながら長期的なデータストレージを確保できるようにしました。この言語については、ツールを構築し、人々が使い方をトレーニングしています。