ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

collectdとSplunkの連携について

こんにちは、ソリューション技術部 青木です。
今回はcollectdとSplunkを連携させたマシンデータの収集と可視化についてご紹介します。

collectdとは

多数のプラグイン(公式では100個以上)を活用することでハードウェア、システムサービスなど視覚的に監視することが出来るツールです。 collectdは以下の3つの機能により構成されています。

  • 統計データ収集デーモン
     └定期的システムの統計情報を収集して保存します。統計情報の保存はrrd形式で保存されます。
  • 統計データ収集プラグイン
     └収集データの項目ごとにプラグインが提供されています。(公式に100個以上)
  • Webインターフェース
     └収集したデータをグラフ化します。CGIプログラムとして動作します。
    f:id:imadafv:20181003125106p:plain

検証環境

検証環境について説明します。 KVM(Kernel-based Virtual Machine)上にゲストOSを2台構築し、ホストOS側にcollectdをインストールします。
データ収集の対象となるのはホストOSとゲストOS2台の計3台。
別のマシンにSplunkをインストールし、collectdで収集した3台分のマシンデータをhttp通信で受け取ります。
※SplunkのVer7.0.1からcollectdのデータを受信できる設定が追加されました。
f:id:imadafv:20180926121432p:plain

プラグインについて

collectdはマシンデータを収集するために様々なプラグインを使用します。
プラグインの情報は設定ファイルで所持しており、取集対象のプラグインを有効化することで収集可能となります。
それでは、今回使用したプラグインについてご紹介します。

  • CPU(CPU使用率)
     └CPUが使用されていない時間の割合、システム・ユーザレベルで使用されたCPU時間の割合、ソフト割り込みによるCPU時間の割合など
  • Disk(ディスク使用率)
     └ディスクの負荷率、ディスクI/Oのデータ量、1秒あたりのディスクI/Oの処理数、保留中I/O操作のキューサイズなど
  • Memory(メモリ使用率)
     └未割り当て領域の割合、キャシュサイズの割合、バッファサイズの割合、メモリ使用量の割合など
  • Interface(ネットワーク)
     └1秒あたりのパケット量、1秒あたりのトラフィック量、1回の処理にかかった時間、パケット損失量など
  • virt(仮想マシンのデータ)
     └メモリ使用量、仮想マシンCPU使用率、仮想ディスクI/Oのデータ量、1秒あたりのパケット量など
      ※virtプラグインを利用することでKVM上のゲストOSにcollectdをインストールしなくてもデータを収集することができます。

f:id:imadafv:20180926121455p:plain
※上図はvirtプラグインの設定箇所。
 有効化したい項目のコメントアウトを外すと設定が反映されます。

データ収集の間隔と保存方式

プラグインで収集するデータの収集間隔と保存期間はRRDtoolプラグインによって制御できます。
初期設定では10秒間隔でデータを収集し、メトリクスとして1時間、1日、1週間、1か月、1年の5つの期間に分けて保存しています。

閾値とアラート

collectdでは取得データに閾値を設けて、その値を超えるとアラートを出すことができます。
アラートの種類にはログファイル出力、デスクトップ通知、メール通知があります。

collectdにおけるデータの可視化

collectdで収集したデータをWebインターフェースで可視化することができます。
Webインターフェースを使用するにはWrite HTTPというプラグインを利用します。

f:id:imadafv:20180926121601p:plain 収集したデータは画像のようなグラフで表示されます。
ウェブブラウザで閲覧する場合、下に画面スクロールをすることで対象データのグラフを見ることができます。

Splunkとの連携

collectdのWebインターフェースで取得したデータ全てのグラフを見ようとすると画面スクロールが必要となり、操作が手間に感じます。
また、グラフの内容も分かりにくいため、パッと見で判断できないのが難点です。
そこで、Splunkと連携したらどのような見え方になるのか、実際に見ていきましょう。

collectdで収集したデータをSplunkに取り込んでみます。
Splunk側の設定は以下の手順で行います。
1.「設定」→「インデックス」でcollectd用に新規インデックスを作成します。 f:id:imadafv:20180926121619p:plain

2.「設定」→「データ入力」→「HTTPイベントコレクタ」からグローバル設定を行います。 f:id:imadafv:20180926121635p:plain

 全トークンを有効にし、デフォルトソースタイプのメトリックから「collectd_http」を選択します。 f:id:imadafv:20180926121646p:plain

3.トークンの発行を行います。
 ソースタイプに「collectd_http」、デフォルトインデックスに手順1で作成したインデックス名を選択します。 f:id:imadafv:20180926121758p:plain

 HTTPイベントコレクタに発行されたトークン値が表示されます。 f:id:imadafv:20181003134803p:plain

4.collectdのwrite-httpプラグインで必要な項目(※画像参照)のコメントアウトを外します。 f:id:imadafv:20181003134722p:plain

Splunkダッシュボードの作成

Splunkでグラフを表示させるためのダッシュボードを作成します。
画面上部のドロップダウンで対象のホスト名、見たいメトリクス、タイムスパンなどを選択し、実行ボタンを押すと 画面下部にグラフが表示されます。画面中央部で詳細のメトリクスを選択するとグラフも切り替わるようになってます。

collectdのWebインターフェースよりシンプルで分かりやすい表示になりました。
f:id:imadafv:20180926121837p:plain

ゲストOSについては画面上部のホストでゲストOSを選び、メトリクスをvirtにすることでグラフを見ることができます。
f:id:imadafv:20180926121850p:plain ※ご紹介したのは作成例です。

さいごに

collectdは扱えるプラグインが豊富なため、様々なデータを収集することができます。
ただし、グラフ化するとなると操作性が不便だったり、分かりにくい表示だったりします。
そこでグラフの可視化に特化したSplunkと連携することで苦手な分野を補うことが可能となり、 ひとつのデータ分析ツールとして十分に活用できるのではないでしょうか。