GeekFactory

int128.hatenablog.com

CloudForecastでL2スイッチのトラフィックを監視する

パフォーマンスの問題を調査するためにCloudForecastを使ってみることにしました。48ポートをざっくり眺めてみましょう。

CloudForecastの画面はこんな感じです。

ちょっと手狭ですね。Chromeデベロッパーツールで即席でCSSをいじると、2列×12行に並べたりできますw

CloudForecastのインストール

リソースモニタリングツール「CloudForecast」入門 - As a Futurist... を参考にしました。

L2スイッチの設定

Catalyst 2960Sを使っています。かなり適当ですがSNMP v3の場合はこんな感じです。

snmp-server group hoge v3 auth read v1default
snmp-server user cloudforecast hoge v3 auth sha ********

CloudForecastでSNMP v3を使う

SNMP v3では認証や暗号化を設定する必要があります。CloudForecastのSNMPコンポーネントに手を入れました。

diff --git a/lib/CloudForecast/Component/SNMP.pm b/lib/CloudForecast/Component/SNMP.pm
index 4dad24d..ea0625d 100644
--- a/lib/CloudForecast/Component/SNMP.pm
+++ b/lib/CloudForecast/Component/SNMP.pm
@@ -10,6 +10,10 @@ sub session {
         DestHost => $self->address,
         Community => $self->config->{community},
         Version => $self->config->{version},
+        SecLevel => $self->config->{level},
+        SecName => $self->config->{username},
+        AuthPass => $self->config->{password},
+        AuthProto => $self->config->{proto},
         Timeout => 1000000,
     );
     $self->{session};

今回は authNoPriv に必要な設定しか渡していませんが、同じようにキーを追加すれば他の方式に対応できます。SNMP::Session() の使い方は http://search.cpan.org/~hardaker/SNMP-5.0401/SNMP.pm に書いてあります。

CloudForecastの設定

cloudforecast.yamlSNMPを設定します。

---
config:
# gearmanを利用する場合、enableを1にして、germandのhost名とportを指定します
  gearman_enable: 0
  gearman_server:
    host: localhost
    port: 7003
# rrdのファイルを設置する場所。「/」から始まると絶対パスとなります
  data_dir: data
# 監視項目の設定ファイルを設置するディレクトリ。「/」から始まると絶対パス
  host_config_dir: host_config

component_config:
# SNMPでデータを取得する時のオプション。communityとversion
  SNMP:
    version: 3
    level: authNoPriv
    proto: SHA
    username: ********
    password: ********
# MySQLを監視する場合のuser名とパスワード
  MySQL:
    user: root
    password: ********

server_list.yaml にL2スイッチのIPアドレスを書きます。

---
servers:
  - config: catalyst.yaml
    hosts:
      - 10.20.30.251 l2sw-01 active L2SW
      - 10.20.30.252 l2sw-02 backup L2SW

host_config/catalyst.yaml に監視項目を書きます。basic.yaml と同じように traffic で値が取れました。

---
component_config:
resources:
  - traffic:10101
  - traffic:10102
  - traffic:10103
  - traffic:10104
  - traffic:10105
  - traffic:10106
  - traffic:10107
  - traffic:10108
  - traffic:10109
  - traffic:10110
  - traffic:10111
  - traffic:10112
  - traffic:10113
  - traffic:10114
  - traffic:10115
  - traffic:10116
  - traffic:10117
  - traffic:10118
  - traffic:10119
  - traffic:10120
  - traffic:10121
  - traffic:10122
  - traffic:10123
  - traffic:10124

CloudForecastはいろいろ使い道がありそうですね。面白い。