Gangliaでクラスタのパフォーマンスを監視

6230 ワード

概要:インフラストラクチャのモニタリングには、ステータス、パフォーマンス、可用性の3つの側面があります.通俗的に言えば、仕事をしているかどうか、どれだけの仕事をしているか、まだどれだけできるかということです.Gangliaは、Cacti、Nagios、Zabbixなどのツールに比べて、クラスタ全体のパフォーマンスと可用性に注目しています.クラスタのパフォーマンスモニタリング、分析、最適化に使用できます.
文書ディレクトリ
Gangliaの概要
Gangliaアーキテクチャ
Ganglia計画
インストールと構成
インストールファイアウォールの構成規則モニタノード(/etc/ganglia/gmond.conf)を構成する
センタノード(/etc/ganglia/gmetad.conf)の構成
Web の構成
拡張モニタ機能
プラグイン機構NginXプラグインの配備
TODO:Nagiosとの併用
Gangliaの概要
インフラストラクチャのモニタリングには、主に3つの側面があります.ステータス、パフォーマンス、可用性です.通俗的に言えば、仕事をしているかどうか、どれだけの仕事をしているか、まだどれだけできるかということです.
Cacti、Nagios、比較的新しいShinken、Zabbixなど、オープンソースの強力なツールがたくさんあります.これらのツールの主な機能は、ステータスモニタリングとアラームです.合格した監査役のように、インフラが働いているかどうかを随時把握し、誰が働いていないかを発見したらすぐに報告します.
従来のメンテナンス作業であれば、これらのツールがあれば十分です.しかし分散システムの開発+運営者(DevOps?)については、さらに関心を持っているのは、分散システムの性能と可用性を把握し、データに基づいて性能調整、アップグレード、拡張などの意思決定を行い、インフラストラクチャサービスが成長するビジネスニーズを満たすことを保証することです.
Gangliaはこのようなツールです.GangliaはUC Berkeleyが発起したオープンソース監視プロジェクトで、数千個のノードを測定するために設計されています.Gangliaは主にクラスタの性能指標を監視し、例えばcpu、mem、ハードディスク利用率、I/O負荷、ネットワークトラフィック状況など、カスタムの性能指標を監視することができる.Gangliaによって描画された曲線は各ノードの動作状態を容易に見ることができ,システムリソースの合理的な調整,割り当て,システム全体の性能向上に重要な役割を果たす.
gmondがもたらすシステム負荷は非常に少なく、これにより、ユーザのパフォーマンスに影響を与えることなく、クラスタ内の各コンピュータ上で実行されるコードとなる.
Gangliaアーキテクチャ
Gangliaの全体的なアーキテクチャを下図に示します.
検出されたノードまたはクラスタごとにgmondプロセスが実行され、監視データの収集、要約、送信が行われます.gmondは、送信者(自機データ収集)としてもよいし、受信者(複数のノードをまとめたデータ)としてもよい.
通常、モニタリングシステム全体に1つのgmetadプロセスしかありません.このプロセスは定期的にすべてのgmondsをチェックし、アクティブにデータを収集し、RRDストレージエンジンに格納します.
ganglia-webはphpを用いて作成されたwebインタフェースであり、RRDに格納されたデータをグラフで示す.通常、gmetadプロセスと一緒に実行されます.
ここで、RRDtool(ラウンドロビンデータベースツール)は、RRDデータを操作するAPIのセットであり、データのグラフィックス化をサポートする.RRDは,固定数のデータのみを格納する環状データベース技術であり,新しいデータは最も古いデータを上書きする.詳細については、RRDtool簡体字中国語チュートリアルv 1を参照してください.01.
Ganglia計画
Gangliaの導入に着手する前に、まず監視システムの初歩的な計画を行う必要があります.主に2つの問題を考慮します.
単一クラスタorマルチクラスタノードが少ない場合、単一クラスタを使用して構成するのが容易である.ノードが多い場合、マルチクラスタを使用すると、ブロードキャスト嵐を回避できます.ただし、クラスタごとに異なるマルチキャストチャネル(ポートで区別)を構成し、gmetadを構成して複数のチャネルを同時に傍受する必要があります.
マルチキャストモードorユニキャストモードマルチキャストモードはgangliaのデフォルトモードであり、同じクラスタの複数のgmond間で互いにデータを交換し、gmetadではクラスタ内の任意の1つ以上のノードを「data_source」として指定することができる.マルチキャストモードは、ネットワークの「ジッタ(Jitter)」をもたらす可能性があります.ノードのクロック同期を設定することで、ジッタの問題を避けることができるという.しかし、ネットワーク環境がマルチキャスト(Amazon’s AWS EC 2など)をサポートしていない場合は、ユニキャストモードを使用する必要があります.ユニキャストモードの場合、ほとんどのノードのgmond.confでglobalのdeaf設定を「yes」に変更すると、これらのノードはデータのみが発生し、他のノードのデータは受信されず、同様にgmetadの「data_source」としても機能しない.ユニキャストモードでは、30秒などの「send_metadata_interval」も設定する必要があります.を選択して、メタデータを強制的に送信します.
gangliaは、gmetadで上書きされたすべてのクラスタ/ノードをgridと呼ぶ./etc/ganglia/gmetad.confではgridnameで名前を指定します.複数のgridのデータを1つの上位gmetadに集約することもできます.
インストールと構成
インストール
RHEL/centOSにEPELソースが配置されていると、インストールが非常に簡単になります.yumで以下のパッケージを調べることができます.
ganglia.i686 : Ganglia Distributed Monitoring System
ganglia.x86_64 : Ganglia Distributed Monitoring System
ganglia-devel.i686 : Ganglia Library
ganglia-devel.x86_64 : Ganglia Library
ganglia-gmetad.x86_64 : Ganglia Metadata collection daemon
ganglia-gmond.x86_64 : Ganglia Monitoring daemon
ganglia-gmond-python.x86_64 : Ganglia Monitor daemon python DSO and metric modules
ganglia-web.x86_64 : Ganglia Web Frontend
異なるノードで対応するパッケージを選択してインストールすればよい.
ファイアウォール規則の設定
gmondとgmetadの間では、デフォルトではUDPの8649ポートを使用して通信されます.複数のクラスタが構成されている場合は、他のポートもあります.これらのポートがスムーズであることを保証します.
モニタリング対象ノード(/etc/ganglia/gmond.conf)の構成
最も重要な構成はクラスタ名(cluster.name)です.
複数のクラスタを構成する場合は、クラスタごとに異なるポートが使用されます.全部で3つの場所:
udp_send_channel.port
udp_recv_channel.port
tcp_accept_channel.port
センタノード(/etc/ganglia/gmetad.conf)の構成
最も重要なのは、データ・ソースの構成です.例:
data_source "NginX" a.a.a.101:8661 a.a.a.102:8661
data_source "LVS"   b.b.b.101 b.b.b.102

Webの構成
httpサービスがデフォルトで開始されると、http://IP/gangliaからアクセスできます.パーミッションに関する質問が表示された場合は、次のことを確認します.
selinux設定ファイアウォール設定/etc/httpd/conf.d/ganglia.confにおけるDeny from all制限拡張モニタ機能
Gangliaのデフォルトでは、共通のパフォーマンス指標のみが監視されます.カスタム指標を監視するには、Gangliaを拡張する必要があります.
プラグインメカニズム
Ganglia 3.1からpythonが開発したプラグインを使用してGangliaを拡張できます./etc/ganglia/gmond.confの構成には、通常、次のものが含まれます.
include ('/etc/ganglia/conf.d/*.conf')
ganglia-gmond-pythonパッケージがインストールされている場合は、/etc/ganglia/conf.d/modpython.confファイルが作成されます.
modules {
  module {
    name = "python_module"
    path = "modpython.so"
    params = "/usr/lib64/ganglia/python_modules"
  }
}

include ('/etc/ganglia/conf.d/*.pyconf')

これによりpythonでカスタムプラグインを作成できます.
GangliaはGitHub上で一般的なpythonプラグインをいくつか収集しています.
NginXプラグインの配備
よく使われるpythonプラグインにはnginx_が含まれています.statusプラグインで、このプラグインはNginXの状態監視機能を利用してデータを取得します.
nginx_を確認statusがアクセスできる前提の下で、以下の構成を行うだけです.
python_をmodules/ディレクトリの下のファイルは、gmondノードの/usr/lib64/ganglia/python_modulesディレクトリにコピーされます.これは、データ収集を実行するスクリプトです.
conf.d/ディレクトリの下のファイルをgmondノードの/etc/ganglia/conf.d/ディレクトリにコピーします.これらのファイルはcollectionを定義しています.groupおよびmetric gmond を再起動
graph.d/ディレクトリの下のファイルは、gmetadノードの/usr/share/ganglia/graph.dディレクトリにコピーされます.これらのファイルは、metricのグラフィックを描画する方法を定義します.
gmetadを再起動すると、対応するnginxノードの詳細にnginx metric対応の7つのグラフが表示されます.
NginXプラグインを理解し、基本的に自分でGangliaプラグインを開発できるようになりました.
TODO:Nagiosとの併用
NagiosはGangliaをNagiosと組み合わせて使用するのが一般的な方法である良いアラームメカニズムを提供した.
http://thinkinside.tk/2013/07/30/ganglia.html