現在、数百ものサーバー監視ツールが存在しますが、そのすべてがカスタマーサポートや機能のレベルが微妙に異なります。今日の開発環境では、多くのエンジニアが、より自由にカスタマイズできるオープンソースの監視を選択し、重宝しているのは事実です。
正しい方法で適切なサーバー監視ツールを使用することで、コストを節約することもできます。もちろん、オープンソースを使用すると、通常はオープンソースソフトウェアを動作させるために必要な時間と専門知識に起因するヘッドカウントコストが高くなるため、コストが高くなる可能性があります。しかし、特定の集中的なタスクにオープンソースを使用すると、大幅に節約することができます。
ユーザーは、オープンソースの監視ツールを他のオープンソースのツールと組み合わせて、あるいはプロプライエタリなツールと組み合わせて適用することがよくあります。例えば、AWS CloudWatchのユーザーは、既に様々なツールを自由に使えるようになっていますが、より良いダッシュボードを実現するためにGrafanaを使用したりします。同様に、PrometheusとElasticsearchを同時に使い、一方を時系列に、もう一方をログに使うのが一般的です。
それでは、現在利用可能なオープンソースの監視ツールの中で最も優れた、いくつかのツールを見てみましょう。これらのツールはいずれも現在メンテナンスが行われており、貢献者やユーザーの巨大なコミュニティを持っています。(大きなコミュニティーが存在すると、そのツールの利用方法やインテグレーションなどの資料が多く存在することを意味します。)
#Graphite
Graphiteは2008年に初めてリリースされた、真の時系列監視ツールです。GitHubには5,000人以上のスターゲイザーがいて、300人の貢献者達がいます。このツールは、最初のオープンソースのサーバー監視ツールの1つであり、それ以来、この分野で強力なプレイヤーとなっています。
Graphiteは、監視スタックとして機能するサブコンポーネントのセットの上に構築されている。Carbon、Whisper、Graphiteサーバー、Graphite Web UIがあります。それぞれのコンポーネントは特定の役割を果たし、開発者が他の技術を希望する場合には他の技術との互換性を保有しています。
Graphiteでは、クライアントがメトリクスをプッシュすることを要求し、Graphiteがメトリクスをリッスンして受信することを要求します。これは通常、StatsDやcollectdのようなデーモンの使用を必要とします。Graphite アーキテクチャについての詳細は こちらを参照してください。
最近、GraphiteをDockerやKubernetesとの互換性を高めようという動きがあります。公式のdockerイメージやテストスクリプトなど、GitHubプロジェクトで対応状況を確認することができます。しかし、Graphiteにはデータの集約やクラスタネイティブストレージ、アラートがうまく出ないなどの課題がいくつか残っています。
Hosted Graphite by MetricFireはGraphiteを改善し、Graphiteの最大の問題点を解決するソリューションを提供します。Graphiteに興味のある方はぜひMetricFireのHosted Graphiteをチェックしてみてください。
#Prometheus
Prometheusは2012年にSoundcloudが開発した新製品です。Prometheusは時系列モニタリングのためのワンストップショップです。1つのインストールで、データコレクター、Prometheusサーバー、複雑なラベリングシステムによるデータ集計、可視化、クエリー、インデックス、アラート、通知を手に入れることができます。
PrometheusはKubernetesとDockerを監視するために構築されており、可視化のためにGrafanaと一緒に使用されることがほとんどです。Prometheusには、Prometheus Expression Browserと呼ばれる独自のダッシュボードがあり、メトリクスを深く掘り下げるのに適したコンソールです。PromQLと呼ばれるPrometheus独自のクエリ言語でクエリを行うことができ、Prometheusの多次元データ構造と組み合わせることで強力なツールとなります。しかし、長期的なデータの監視、アラート、通知のためのExpression Browserに取って代わるダッシュボードツールとしては、Grafanaの方が優れています。
Prometheusにはいくつかの欠点があります。第一の問題は長期保存で、オープンソースプロジェクトでは最大14日間しかデータを保存できないように設定されています。数ヶ月から数年の長期ストレージを得るためには、リモートストレージを設定する必要があります。これには時間と費用がかかります。2つ目の問題は、多くのPythonウェブアプリに見られるようなマルチプロセスアプリケーションを監視する場合に発生します。Prometheusはマルチプロセス・マルチスレッド・アプリケーション用に構築されていませんが、回避策はあります。
リモートストレージと社内でのPrometheusセットアップを独立して管理する方法で問題を解決するために、MetricFireはHosted Prometheusを提供しています。アプリ内で直接Prometheusを使用することができ、インストールやリモートストレージの設定などの手間を省くことができます。
#Grafana
Grafanaはダッシュボードツールに過ぎず、完全なサーバー監視ツールではありませんが、あらゆる監視スタックにおいて重要な役割を果たします。Grafanaは、時系列データベースではできないことができます。例えば、優れたグラフを作成したり、複雑なアラートルールをアラートしたり、アラート情報をスマートフォンに直接プッシュして通知したりすることができます。
Grafanaは使いやすく、設定も簡単です。Grafanaの設定方法の詳細については、「Getting Started With Grafana」の記事をご覧ください。また、サーバー監視時に監視している内容を正確に示した記事「Our Favorite Grafana Dashboards」もご覧ください。
Grafanaでは、パネルからダッシュボードを構築することができ、各パネルは1種類の可視化で構成されています。単一統計、ヒストグラム、ゲージ、バーゲージ、ポリスタット、テーブル、アラートリストなどのパネルから選ぶことができます。各パネルは、モニタリングスタック内の任意のデータソースからの特定のメトリクスを監視するように設定することができます。データソースは、Prometheus、Elasticsearch、AWSなど何でも構いません。
#ELK stack
Elasticsearch、Logstash、Kibanaで構成されているELKスタックは、機械のログを監視するのに最適なツールです。しかし、ELKスタックは時系列データに関してはPrometheusやGraphiteには勝てません。
KibanaはGrafanaとの類似点もありますが、より具体的な役割を担っています。KibanaはElasticsearchとLogstashのコンソールとUIであり、これら2つの技術をデータソースとして利用しなければ存在できません。Grafanaの方が独立性が高く、より幅広い技術を監視することができます。Kibanaはログを監視するのに非常に効果的ですが、Grafanaは時系列的なデータに大きく焦点を当てています。ただ、Grafana7のGrafana Lokiのリリースにより、Grafanaでもログを監視できるようになりました。GrafanaとKibanaの比較については、Grafana vs Kibanaの記事をご覧ください。また、PrometheusとELKの比較もご覧ください。
#Nagios
Nagiosは2002年にオープンソース・ソフトウェアとしてリリースされ、現在では複数の製品を提供するエンタープライズ向けの製品へと発展しています。オープンソース・ソフトウェアはまだ存在していますが、Graphite、Prometheus、Grafanaと比較すると、比較的小さなコミュニティではあります。
オープンソース・ソフトウェアはC言語で書かれており、GNU General Public Licenseのもとで公開されています。このソフトウェアは、ネットワークサービス(SMTP、POP3、HTTP、PINGなどを介して)とホストリソース(プロセッサの負荷、ディスク使用量など)の監視を提供します。ソフトウェアは、開発者がカスタムツールを追加することができるプラグインインターフェースを持っているという点でも汎用性があります。
Nagiosの詳細については、GitHubのページと企業向けのホームページを参照してください。
#MetricFire
MetricFireは、オープンソースの監視ツールを使用してインフラストラクチャ、システム、アプリケーションの監視を行うエンタープライズ向けのマネージド監視ツールです。このプラットフォームでは、PrometheusまたはGraphite-as-a-Serviceのいずれかを使用して、美しいGrafanaのダッシュボードにメトリクスを表示することができます。
MetricFireを使用すると、その強力なモニタリング機能により、複雑なシステムを一目で理解することができます。MetricFireは、オープンソースのメリットをすべて享受しながら、企業向けモニタリング製品の顧客サービスを提供しています。
無料トライアルにサインアップして、MetricFireを使い始めましょう。簡単なエージェントをインストールするだけで、メトリクスを直接クラウドプラットフォームにパイプすることができます。メトリクスデータがプラットフォームに入ったら、Grafanaのダッシュボードを使い始めることができます。MetricFireには、サーバーの監視、kubernetesの監視など、さまざまな目的のために数百ものデフォルトのダッシュボードがすでに設定されています。Raspberry Pi 4の監視など、MetricFireのクールなアプリケーションをチェックすることもできます。
MetricFireの無料トライアルにサインアップして、オープンソースのテクノロジーを使用して、マネージされたプラットフォームでメトリクスのモニタリングを開始してみてはいかがでしょうか。また、MetricFireチームのデモを予約して、モニタリングのニーズについて直接お問い合わせください(日本語でも受付中)。
それでは、またの記事で。