
最近は、クラウドサービスを利用し始める企業も増え始めました。個人情報保護法などが厳しくなってきた現在、クラウドに預けたデータを安全な状態で保管することが一つの課題となっています。アマゾン社のawsを利用している場合はEC2オプションをつけない限りセキュリティー面ではユーザーが監視する必要があります。
今回はそんな時に役立つprometheusについて紹介します。
関連:awsを運用するときに重要なcloudwatchとcli
prometheusとは?
Prometheusは、SoundCloudという企業が開発しているプル型のリソース監視ソフトウエアです。もちろん、awsでも利用可能です。セットアップがとても簡単なことが一つの特色です。Prometheusを利用すると、awsなどの監視対象のサーバーから情報を取得しそのデータを保存も可能です。
ここで保管されたデータを集計できるため、サーバーの運用の仕方の計画を立てるのに役立ちます。メール数やSlack数などについてしきい値を設定でき、それを超えた場合にはメールなどでアラートを自動配信してくれます。
そのアラート設定についても、お知らせ方法などを自由にカスタマイズできます。このシステムで、取得された監視データは、Prometheus内に時系列で保存され、その結果をグラフという形で可視化してくれます。
また、PrometheusにGrafanaという可視化ツールをアドオンすることで、グラフはさらにみやすくなります。
prometheusのアーキテクチャー
次に、prometheusのアーキテクチャーについてご紹介しましょう。prometheusでは、先にも少し記載しましたが、いわゆる「プル型」のアーキテクチャが採用されていて、クラウドサーバーに対して「データ収集」・「データ保管」・「データ管理」のためにアクセスした時に各種データを取得する仕組みです。
上記のようなアーキテクチャのため、監視対象にはデータを送信する仕組み造りをあらかじめしておく必要があります。
そのために「exporter」と呼ばれるコンポーネントが用意されています。この仕組み作りはユーザー自身で設計することも可能で、それを支援するための、Client Librariesと呼ばれるライブラリも用意されています。
一般的にバッジ処理などの一時的な処理の場合は、監視しづらいのですが、それを監視するための「Pushgateway」という機能も用意されています。警告通知については、Prometheusの場合は「Alertmanager」というコンポーネントが使用されています。
prometheusによる監視設定の仕方

次に、実際にprometheusを使用した監視設定の方法について紹介しましょう。最初にするアクションはprometheusの公式ホームページにてリリースされている最新のプログラムをダウンロードします。初期段階では、オプションパッケージをダウンロードする必要はなく、prometheus本体のダウンロードのみでOKです。
ダウンロードされた、prometheusのプログラムは圧縮されています。任意のフォルダを指定して、そのフォルダに解凍しましょう。デフォルトで設定ファイル(拡張子yml)が付属していますが、このファイルは初期段階では編集する必要はありません。
その後、コンソール画面にていくつかのコマンドを実行すると、ローカルの監視データの収集や閲覧が可能になります。インストールされた時点で、すぐに実行される便利なプログラムに仕上がっています。次に、収集されたデータを確認してしっかりと動いているか確認します。
そのためには「prometheus_target_interval_length_seconds」というコマンドを入力します。確認画面が表示されるため「実行」ボタンを押します。その後、Graphタブをクリックすると、データがグラフィカルに表示されます。
収集するデータの種類を設定するには、「prometheus.yml」という設定ファイルを、viエディタなどで編集します。このファイルを編集することで、scrapeに関するコンフィギュレーションを編集すると、詳細な設定が可能です。
prometheusを利用するメリット
prometheusを利用するメリットとしては、人気が高いため安心感があることです。
定員の120名に対して、申し込みが240名もあるほどの人気ぶりです。公式サイトのコミュニティメンバーについても600人を超えています。
世界中での評判を見ると、PrometheusのTwitterのフォロワー数は約20,000人もいます。構築が容易であるのもメリットです。prometheusの場合はバイナリを動かすだけで起動できます。これまでのシステム管理ツールは、インストール時にエラーが出まくるなど構築がとても大変でした。
このシステムでは、構造が比較的複雑ではないため、運用や保守についても容易です。アーキテクチャがしっかりしているのも大きなメリットと言えるでしょう。たった一つのバイナリを動かせば起動できるシンプルさや、標準的なHTTPのプロトコルで監視対象を選べることと、監視対象のメトリックスをプル型で収集すること、時系列でのデータ処理が可能なことなどが魅力となっています。
その他のメリットとしては、グラフィカルによるデータ解析ができることです。先に少し紹介した、Grafanaと呼ばれる可視化ソフトウエアを組み合わせることで、完成度の高いビジュアルにてグラフを表示してくれます。
動作速度が速いのも魅力です。何度か紹介していますが、prometheusはプル型です。そのため、サーバー側からポーリングをかけることで動作する仕組みです。そのため、どのIPアドレスのどのポートを調査すればいいのか、Prometheusに設定する必要がありますが、Prometheusの場合はあまり詳細に設定する必要がありません。
Service Discoveryという機能を使って探させることが可能です。どの機能も構造がシンプルですので、サクサクと高速動作してくれるのも良いところです。Prometheusでは、ネットワーク監視までできるのが凄いところです。
Prometheusを利用すると、snmp_exporterや独自開発のexporterを使いこなすことで、ネットワークのレスポンスやリソース監視が可能となるのです。基本的には、PrometheusやGrafanaはオープンソースとなっているので、無料で利用できるのもユーザーにとってはありがたいことです。
ただし、Grafanaについては手厚いサポートが受けられるEnterprise版などの有料サービスもあります。
prometheusの性能
性能面については、Prometheusはプル型が採用されているため、サーバーの負荷が高まった時には、自動的にポーリングの回数を減らすなど、調整をしてくれるため、サーバーの動作速度が落ちることがない設計となっています。
ただし、ディスク容量面については少々貧弱です。このシステムを動かすために、数百MBものメモリ消費量です。しかし、CPU負荷は少なく、 t2.mediumでも問題なく高速動作してくれます。
Prometheusを活用して安全な運営を
Prometheusは、クラウドサーバーなどを監視するシステムとして、とても人気があり高性能であることもわかりました。近年、大事なデータをクラウドにアップすることが多い中、データのセキュリティー管理や、サーバダウン監視などが大切です。
今回紹介したような、Prometheusを利用することで、安全なサーバー運営をしてみてはいかがでしょうか。