開発者ドキュメント

Ubuntu14.04でのGangliaの紹介

序章

Gangliaは、スケーラブルな分散監視システムです。 非常に多数のサーバーで適切に拡張でき、パフォーマンスメトリックをほぼリアルタイムで表示するのに役立ちます。

バックエンドでは、Gangliaは次のコンポーネントで構成されています。

基本的に、監視するすべてのノード(サーバー)にはGmondがインストールされています。 すべてのノードはGmondを使用して、Gmetadを実行している単一のマスターノードにデータを送信します。Gmetadはすべてのノードデータを収集し、保存するためにRRDツールに送信します。 その後、PHPスクリプトとApacheを使用して、Webブラウザーでデータを表示できます。

これは、機能しているGangliaグリッドの図であり、マスターノードはGmetadデーモンを実行しているGangliaサーバーとして示され、他のノードはGmondデーモンを実行している接続サーバーとして示されています。

Webインターフェイスを使用して監視対象データを表示すると、データはいくつかのレベルで編成されます。 Gangliaは、個々の監視対象マシンであるノードを、類似したノードのグループであるクラスターに編成します。 より高いレベルでは、クラスターのコレクションをグリッドに編成することもできます。 Webインターフェイスにログインすると、この組織が表示されます。

この記事では、最初に2つのノードを持つ myclusterという単一のクラスターをセットアップします。 後で、Londonという名前の単一のグリッドをServersDatabasesの2つのクラスターでセットアップします。 例では、各クラスターに2つのノードが表示されます。

前提条件

必要になるだろう:

各ドロップレットにsudoユーザーを作成します。 まず、ユーザーを作成します adduser コマンド、ユーザー名を使用したい名前に置き換えます。

adduser username

これにより、ユーザーと適切なホームディレクトリおよびグループが作成されます。 新しいユーザーのパスワードを設定し、パスワードを確認するように求められます。 また、ユーザーの情報を入力するように求められます。 ユーザー情報を確認してユーザーを作成します。

次に、ユーザーにsudo権限を付与します。 visudo 指図。

visudo

これにより、 /etc/sudoers ファイル。 の中に User privilege specification セクションで、作成したユーザーに別の行を追加して、次のようにします(代わりに選択したユーザー名を使用) username):

# User privilege specification
root       ALL=(ALL:ALL) ALL
username   ALL=(ALL:ALL) ALL

ファイルを保存して、新しいユーザーに切り替えます。

su - username

システムパッケージを更新およびアップグレードします。

sudo apt-get update && sudo apt-get -y upgrade

インストール

マスターノードに、Gangliaモニター、RRDtool、Gmetad、およびGangliaWebフロントエンドをインストールします。

sudo apt-get install -y ganglia-monitor rrdtool gmetad ganglia-webfrontend

インストール中に、Apacheを再起動するように求められます。 [はい]を選択します。 システムによっては、2回尋ねられる場合があります。 もう一度[はい]を選択します。

Ganglia Webフロントエンド構成ファイルをApacheにコピーして、オンラインのグラフィカルダッシュボードをセットアップします。 sites-enabled フォルダ。

sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf

オプション:セキュリティを強化するために、このサイトをパスワードで保護することをお勧めします。 それ以外の場合は、インターネットに公開され、サーバー構成とIPアドレスを公開したくない場合があります。

注:このセクションとクライアントのインストールセクションは、 myclusterという名前の単一のクラスターを含むより簡単なセットアップを示しています。 グリッドと両方のクラスターをすぐにセットアップする場合は、グリッドセクションの設定も参照することをお勧めします。

Gmetad構成ファイルを編集して、クラスターをセットアップします。 このファイルは、Getadデーモンがデータを収集する場所と方法を構成します。

sudo vi /etc/ganglia/gmetad.conf

で始まる行を見つける data_source、以下に示すように:

data_source "my cluster" localhost

編集します data_source クラスターの名前、秒単位のデータ収集頻度、およびサーバーの接続情報をリストする行。 以下の例では、データソースは次のように呼び出されます。 my cluster、およびローカルホスト(それ自体)から1分に1回メトリックを収集します。 さらに追加できます data_source 必要な数のクラスターを作成するための行。

data_source "my cluster" 60 localhost

変更を保存します。

次に、Gmond構成ファイルを編集します。 これはマスターノードですが、「マイクラスター」クラスターの最初のノードとして監視用に設定しています。 The gmond.conf fileは、ノードが情報を送信する場所を構成します。

sudo vi /etc/ganglia/gmond.conf

の中に cluster セクションでは、名前をで設定したものと同じに設定していることを確認してください gmetad.conf この例ではファイルです。 my cluster. 残りのフィールドはオプションであり、そのままにしておくことができます unspecified.

参考までに、 owner valueは、クラスターの管理者を指定します。これは、連絡の目的で役立ちます。 The latlong valueは、グローバルに分散されたクラスターの緯度と経度の座標を設定します。 The url 値は、クラスターに関する詳細情報を提供するためのリンク用です。

[...]
cluster {
  name = "my cluster" ## use the name from gmetad.conf
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
[...]

の中に udp_send_channel セクション、新しいを挿入します host 値と一致する localhost、これは情報を送信するサーバーです。 コメントアウト mcast_join ライン。

参考までに、 mcast_join valueはマルチキャストアドレスを提供しますが、データを1つのホストにのみ送信する必要があるため、これは不要です。 (後でこのクラスターのグリッドを作成することにした場合は、再度有効にします。)

[...]
udp_send_channel   {
  #mcast_join = 239.2.11.71 ## comment out
  host = localhost
  port = 8649
  ttl = 1
}
[...]

の中に udp_recv_channel セクション、コメントアウト mcast_joinbind 行。 (ここでも、このクラスターをグリッドに追加する場合は、これらの行を再度有効にします。)

The bind valueはバインドするローカルアドレスを提供しますが、クラスターは情報を送信するだけなので、これは不要です。

[...]
udp_recv_channel {
  #mcast_join = 239.2.11.71 ## comment out
  port = 8649
  #bind = 239.2.11.71 ## comment out
}
 
/* You can specify as many tcp_accept_channels as you like to share
   an xml description of the state of the cluster */
tcp_accept_channel {
  port = 8649
}
[...]

Ganglia-monitor、Gmetad、およびApacheを再起動します。

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart

Webインターフェイス

これで、Gangliaがセットアップされ、 http:// ip-address /gangliaでアクセスできるようになります。

メインページには、監視対象ノードの概要であるグリッドビューが表示されます。 現在、localhostの1つだけが存在するはずです。

メインタブでは、セットおよびカスタムの時間増分からのデータを表示できます。 右上のGetFresh Data ボタンをクリックして、データを手動で更新することもできます。

時間範囲の選択の下で、 –ノードの選択というラベルの付いたドロップダウンメニューから特定のノードを選択できます。 現在、ローカルホストが表示される唯一のノードである必要があります。

リストからlocalhostを選択すると、ローカルホストノードに固有の情報が表示されます。 localhostが監視されている唯一のノードであるため、localhostノードページとメインタブの情報は同じになります。

ここから、右上のノードビューボタンをクリックして、ノードに関するコンテキスト情報を表示することもできます。

メインページの残りの部分には、ノードのクラスターの概要が表示されます。 グラフをクリックすると、1時間から1年までのさまざまな時間単位で詳細情報が表示され、CSVまたはJSON形式でグラフデータがエクスポートされます。

ノードが大きくなり、メインページですべてを表示することが難しくなると、[検索]タブを使用して、正規表現を使用して特定のホストまたはメトリックを見つけることができます。 また、ホストを比較したり、カスタム集計グラフを作成したりすることもできます。

クライアントのインストール

my cluster クラスターでモニターする2番目のノードに、Gangliaモニターをインストールします。

sudo apt-get install -y ganglia-monitor

ノードを監視するためにGmond構成ファイルを編集します。

sudo vi /etc/ganglia/gmond.conf

マスターノードで行ったのと同じように、クラスター名を更新します(my cluster この例では) cluster セクションなので、マスターノードの名前と一致します。

[...]
cluster {
  name = "my cluster"     ## Cluster name
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
[...]

に行を追加します udp_send_channel のブロック host、これはマスターGangliaノードのIPアドレスである必要があります(例: 1.1.1.1). コメントアウト mcast_join ライン。

[...]
udp_send_channel {
  #mcast_join = 239.2.11.71   ## Comment
  host = 1.1.1.1   ## IP address of master node
  port = 8649
  ttl = 1
}
[...]

全体をコメントアウトする udp_recv_channel のセクション /* ... */ このサーバーは何も受信しないため、構文。

[...]
/* You can specify as many udp_recv_channels as you like as well.
udp_recv_channel {
  mcast_join = 239.2.11.71
  port = 8649
  bind = 239.2.11.71
}
*/
[...]

監視サービスを再起動します。

sudo service ganglia-monitor restart

数分待ってから、Webインターフェイスをリロードします。 新しいノードがクラスターに自動的に表示されます。

このクラスターで監視する他のノードで、これらの手順を繰り返します。

これでクラスターができました! Webインターフェイスでクラスターの概要を表示し、特定のノードと特定のメトリックにドリルダウンできます。

グリッド

グリッドを使用すると、複数のクラスターをまとめて編成できます。 たとえば、さまざまなアプリケーションにサービスを提供するMySQLデータベースのクラスターが複数ある場合、それらのクラスターをすべて同じグリッドに編成して、すべてのMySQLサーバーのパフォーマンスを表示できます。 または、世界中にアプリケーションサーバーがある場合は、ロンドンなどの場所ごとにグリッドに配置できます。

グリッドを作成するには、 /etc/ganglia/gmetad.conf Gangliaマスターノード上のファイル。

Gmetadごとに作成できるグリッドは1つだけであることに注意してください。 複数のグリッドを作成する場合は、Gmetadを別のサーバーにインストールする必要があります。 この例では、グリッドをLondonと呼びます。

sudo vi /etc/ganglia/gmetad.conf

コメントを外して、グリッドセクションでグリッドに名前を付けます。 gridname ラインと交換 MyGrid 選択したグリッド名を使用します。 この例では、グリッドにLondonという名前を付けます。

# The name of this Grid. All the data sources above will be wrapped in a GRID
# tag with this name.
# default: unspecified
# gridname "MyGrid"

たとえば、すべてのロンドンサーバーのグリッドを作成する場合:

gridname "London"

新しいものを追加または編集する data_source このグリッドに必要なすべてのクラスターの行。

クラスタの名前を更新してから、そのクラスタに追加する各サーバーのホストとポートの情報を追加します。 クラスターはポート番号で識別されるため、新しいクラスターはそれぞれポート番号であることに注意してください。 data_source 回線またはクラスターは、別のポート番号を使用する必要があります。

たとえば、以下の例では、ServersおよびDatabasesという2つのクラスターをロンドンのグリッドに追加しています。 サーバーのすべてのノードはポート8556を使用しており、データベースのすべてのノードはポート8857を使用しています。

data_source "Servers" localhost 1.1.1.2:8556
data_source "Databases" 1.2.1.1:8557 1.2.1.2:8557

Gmetad構成ファイル(この例では、localhost、1.1.1.2、1.2.1.1、および1.2.1.2)で指定された各サーバー(またはノード)で、Gmond構成ファイルを編集します。

sudo vi /etc/ganglia/gmond.conf

を更新します name クラスター名と一致するクラスターセクションの値。 ここでは、Databasesクラスターの一部となるノードを設定します。 (以前の方法を使用して2つのノードを設定した場合は、戻って編集する必要があることに注意してください。 /etc/ganglia/gmond.conf 新しい設定に一致するように、それぞれにファイルを作成します。)

/* If a cluster attribute is specified, then all gmond hosts are wrapped inside
 * of a <CLUSTER> tag.  If you do not specify a cluster tag, then all <HOSTS> will
 * NOT be wrapped inside of a <CLUSTER> tag. */

cluster {
  name = "Databases"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

また、前のセクションとは異なり、コメントアウトしないでください mcast_join 行。

君の udp_send_channel ブロックは次のようになります。 必ず更新してください port 番号! この例では、これは Databases クラスターの一部であるため、ポートは8557である必要があります。 他の行は同じままにすることができます。

udp_send_channel {
mcast_join = 239.2.11.71
port = 8557
ttl = 1
}

君の udp_recv_channel 適切なポート番号を使用すると、ブロックは次のようになります。 他の行は同じままにすることができます。

udp_recv_channel {
mcast_join = 239.2.11.71
port = 8557
bind = 239.2.11.71
}

最後に、あなたの tcp_accept_channel 適切なポート番号を使用すると、ブロックは次のようになります。

tcp_accept_channel {
port = 8557
}

各ノードで監視サービスを再起動します。

sudo service ganglia-monitor restart

GangliaホストサーバーまたはマスターノードでGanglia-monitor、Gmetad、およびApacheを再起動します。

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart

Webインターフェイスに、グリッドの名前とクラスターを選択するオプションが表示されます。 そこから、ノードを選択してドリルダウンできます。

結論

Gangliaは、セットアップと1つのノードから数百または数千へのスケールアップが非常に簡単です。 高いパフォーマンスレベルを備えており、必要な数のサーバーを監視するのに役立ちます。

モバイルバージョンを終了