チームビルディング

Project Management におけるチームビルディングの話を聞いたので、メモ。

いいチームとは?
いいチームとはどんなチームかを明確にしておく。例えば、「チームの目的や、それぞれの役割が明確で気兼ねなく助け合えるチーム」など
  • どうやっていいチームを作るのか?
    • 役割を明確にする(体制図など)
    • 苦労させる(本気にさせる)
    • 責任を広く持たせる(本気にさせる)
    • 通常は議論ベースでも非常時はトップダウン
    • チーム内の意思疎通が出来るように仕向ける
    • 出来ればお客さんを含めたチームにする

チームは意図的に設計して実装するものである。
勝手に出来るものではない。勝手に出来たとしてもそれはたまたま相性がよかっただけ。

  • キックオフ
    • チームの最初のイベント
    • PM が誰かを認識してもらう。
    • PM が決めたルールを守ってもらう。
    • チームメンバにお客さんがいても同様。

最後に「人に優しく、問題に厳しく」

仕事ってやつは

  • 仕事って何だろう?

通貨が無い時代の仕事ってなんだろう?たぶん昔は生きるために必要なことを優先的にやってたはず。例えば、自分は今 IT 業界でエンジニアとして働いているけど、インターネットなんて今日、明日生きるためには必要ない。でも今は生きていくために IT エンジニアとして働くことも出来る。昔と今の共通点は、なんだろう?

人が生きていくために働くことが仕事だとすると、仕事は誰かに必要とされているはずである。誰にも必要ないことをやってると、生きていけなくなる。ということは、誰かの役に立つことは仕事になるはずである。

人が共同生活をする上で、得意なことを得意な人に任せるようになり、それぞれが専門的に分化していくのは自然の流れでもあると思う。またちょっと話がそれるが、バックミンスターフラーによると時の権力者が、自らの権力を保つために能力のある人たちにより専門的なことを任せ、俯瞰的な視野を持てないようにしてきたらしい。

  • 仕事を創る

仕事が誰かの役に立つことだとわかったら、どうやったら仕事を創ることができるだろうか?

    • ニーズを満たす

単純に考えるとニーズを満たせば、必要とされる製品なりサービスなりを提供できる。

    • ニーズとは?

ニーズって何だろう?ニーズって実はよく見えないことが多い気がする。あからさまにみんながこういうものがほしい!って思っていて世の中に無いものは、ほぼまだ出来ないものだと思われる。例えばガンの特効薬とか。そういう、あからさまに必要なものでなくてもニーズはあるはずである。

例えば、最近流行の NetBook はただのノートPCだけど、小さくて安くするとこんなにヒットしてる。と言うように、すでにあるものでも少し何かを加えると隠れているニーズを満たすものが出来ることがある。もちろんソニーウォークマンみたいにこれまで無かったものの場合もある。

これらを踏まえると、ニーズを満たす製品やサービスとは全体的なバランスが悪いところを埋めるものじゃないかと考えられる。NetBook の例だと、ワイヤレス環境の普及によってニーズのバランスが崩れて、そこを埋める NetBook が登場したという訳である。

ということは、ニーズのバランスを崩すもの。上記の例だと「ワイヤレス環境の普及」から何が求められるかを見つけることがニーズを捉えることになると考えられる。こういうのを世のかなの流れを読むって言うんだろうね。まー言うのは簡単なんだけど、見つけるのは難しいよね。

Ruby irb

ちょっといいきっかけがあったので Ruby の勉強を始めてみようと思う。
手始めに irb を使ってみた。

Windowsruby を使うには、Cygwin を使うか、別途 Ruby の実行環境をインストールする必要がある。


Cygwin setup.exe を起動して、パッケージの選択画面まで進む。
選択画面で、Devel カテゴリを選択し、その中にある ruby を選択してインストールする。
頭文字が r なので、かなり下のほうにある。

ちなみに、Cygwin を使う場合は、Tera Term に付属している cyglaunch というターミナルが便利。

本題の irb ですが、インタラクティブということもあって、コマンドプロンプト(シェル)感覚でプログラムを実行できる。例えば、計算なんかは windows の計算機よりも便利。変数が使えるし、履歴も効くので。


irb(main):001:0> 5+10
=> 15
irb(main):002:0> 3*3
=> 9
irb(main):003:0> 3/3
=> 1
irb(main):004:0> a=(5-2)/3
=> 1
irb(main):005:0> b=(3-1)/2
=> 1
irb(main):006:0> a/b
=> 1
irb(main):007:0>

情報源

本家 Cacti サイト

http://www.cacti.net/

Tips

Gigabit Ether のトラフィックグラフを取得するには

Gigabit Ether 以上の帯域がある場合、32bit カウンターではすぐにカウンターが一回りしてしまうため、グラフが正常に描けないことがあります。そのため、Gigabit 以上のインターフェースのトラフィックグラフを取得する場合は 64bit カウンターを使ってください。32bit カウンタで Gigabit Ether を計測する場合は、bit のカウンタではなく byte のカウンタを利用してください。

  • 32bit の最大値


2の32剰:4,294,967,296

  • 64bit の最大値


2の64剰:18,446,744,073,709,551,615

スイッチの Description をグラフタイトルに表示させる

  • DataQueries を開く


Console タブにて DataQueries を選択
SNMP - Interface Statistics を選択
Associated Graph Templates の項目の中から対象のものを選択

  • グラフタイトルを変更


Suggested Values の Graph Template にグラフタイトルを入力


左側:|host_description| - Traffic - |query_ifDescr|-|query_ifAlias|
右側:title

VMwareCacti を動かす場合

VMware 上の Linux では時刻同期が出来ないため、VMware Tool をインストールする必要があります。

グラフがたまに欠ける場合

Console タブの Settings の General にて、SNMP Timeout の値を 500 から 1000〜2000 ぐらいにしてみる。
デフォルトだと、0.5 秒となっているため、タイムアウトでスキップされている可能性があります。

rra ファイルのデータ保存期間を延ばす

  • デフォルトの値
RRAs 参照単位 Rows 保存期間 解説
Hourly 1分毎 500 500分(8.3時間) 8.3時間以内であれば1分毎のデータを取り出し可能
Daily 5分毎 600 50時間 50時間(2日強)以内であれば5分毎のデータを取り取り出し可能
Weekly 30分毎 700 350時間 350時間(2週間強)以内であれば30分毎のデータを取り出し可能
Monthly 2時間毎 775 1550時間 1550時間(2ヶ月強)以内であれば2時間毎のデータを取り出し可能
Yearly 1日毎 797 797日 797日(2年強)以内であれば1日毎のデータを取り出し可能
  • 保存期間の延長


上記の表にある Rows の値を長くしてやれば保存期間を長くできます。
ただ、長くすると rra 内に格納できる値が増えるということなので、ファイルサイズが
大きくなります。また、この設定をする前に作成された rra ファイルは適用されないた
め、途中での変更は困難です。

  • 設定変更方法


Console タブの Data Source --> RRAs にて、Hourly, Daily, Weekly, Monthly, Yearly
のどれかを選択し、設定を Rows の項目を変更する。

LDAP の利用

  • 準備

php-ldap パッケージのインストール
httpd の再起動

  • 設定

settings --> Authentication にて設定を実施
LDAP 認証に変更した場合も、ローカルアカウントでログイン可能なので安心して設定が出来ます。

グラフデータが取得できない場合

  • cacti の Poller が取得している値を確認

settings の General タブにて Poller Logging Level を MEDIUM か HIGHT に変更ログを確認し、どのような値が取得されているか確認

  • 実際に snmpwalk の結果を確認


$ snmmpwalk -c -v 2c <ノード名>

  • 対応

snmpwalk で正常に取得できない場合は snmp 関連の設定や、ネットワーク上の経路を調査してください。
また、データテンプレートとグラフテンプレートの Max/Minmum 値を確認してください。値が Max/Min を超えている場合は rrd に格納されなかったり、グラフが表示されなかったりします。

運用管理

ここでは、Cacti が稼動するサーバの運用管理について記述します。

Cacti の監視

Cacti の稼動監視には下記の項目を監視する必要があります。

  • サーバ
    • 死活監視

サーバ自体の死活監視。監視サーバから ping などで実施。

    • ハードウェア監視

ハードウェア故障の監視。監視方法はハードウェアの実装次第。

    • リソース監視
      • Disk 使用率

パーティションの使用量を監視。閾値を設けて監視を行う。

      • CPU 使用率

CPU 使用率も閾値監視。

  • MySQL
    • プロセス監視
    • 稼動確認
  • HTTP(Apache)
    • プロセス監視
    • 稼動確認
  • cacti
    • cron
    • log

バックアップ

バックアップの対象として考えるべきものは下記の通りです。
要件により頻度が異なると思われますが、rra ファイルと MySQL のデータのバックアップが取れていれば復元は可能です。


cacti/ 以下のファイル群ですが、rra/, log/ は更新頻度が高いため別途バックアップし
てもよいと思います。

    • Config ファイル


下記のファイルには mysql のユーザ名とパスワードが記載されているので、バックアッ
プ対象です。
include/config.php
include/global.php

    • rra ファイル


データが蓄積されている RRD Tool のファイルです。通常 cacti/rra 以下にあります。

    • log ファイル


Cacti の出力する log ファイルです。通常 cacti/log 以下にあります。

    • MySQL データベース


MySQL 内に蓄積された設定情報です。通常 cacti というデータベースをバックアップします。
例:# mysqldump -u cactiuser -p -l --add-drop-table cacti > mysql.cacti


下記の二つのディレクトリには、独自に作成・配置したスクリプトXML ファイルがあ
るため、このディレクトリもバックアップ対象となります。
resource/
scripts/


プラグインを利用している場合は下記のディレクトリもバックアップ対象です。
plugins/

  • ファイルバックアップ


バックアップが必要なファイルどディレクトリは下記の通りです。
cacti/include/config.php
cacti/include/global.php
cacti/log/
cacti/rra/
cacti/resource/
cacti/scripts/
cacti/plugins/

  • データベースバックアップ


MySQL のデータベースはいくつかの方法でバックアップ可能です。
mysqldump には様々なオプションがあるので、必要に応じてオプションを追加してください。
<例>
# mysqldump -u cactiuser -p -l --add-drop-table cacti > mysql.cacti

リストア

  • データベースのリストア

MySQL をリストアする場合は、dump ファイルからのリストアを実施してください。

  • その他ファイルのリストア

その他のファイルに関しては、取得したバックアップをそのまま元に戻すだけです。

アップグレード

Cacti のアップグレードを行う際の手順を記載します。バージョンがあがるにつれて変わる部分があると思われますので、注意してください。

  • Requirement の確認

ApacheMySQL, RRDTool のバージョンがサポートされているか確認してください。
Cacti0.8.7 では下記の通りです。


# RRDTool 1.0.49 or 1.2.x or greater
# MySQL 4.1.x or 5.x or greater
# PHP 4.3.6 or greater, 5.x greater highly recommended for advanced features
# A Web Server e.g. Apache or IIS

  • MySQL のバックアップ


# mysqldump -u cactiuser -p -l --add-drop-table cacti > mysql.cacti

  • 新しいバージョンの取得

下記のページより新しいバージョンの Cacti を取得します。
http://www.cacti.net/index.php
プラグインを利用している場合はプラグインアーキテクチャもダウンロードします。
http://cactiusers.org/index.php

ダウンロードした cacti のファイルを適当な作業用ディレクトリで解凍し、プラグインアーキテクチャを適用します。


tar -zxvf cacti-X.X.X.tar.gz
tar -zxvf cacti-plugin-arch.tar.gz
パッチファイルと sql ファイルをコピー

cd cacti-plugin-arch
cp cacti-plugin-X.X.X-PA-vX.X.diff ../cacti-X.X.X
cp pa.sql ../cacti-X.X.X
パッチ適用

cd ../cacti-X.X.X
patch -p1 -N < cacti-plugin-0.8.7b-PA-v2.1.diff
sql ファイル適用(必要な場合のみ)

mysql -u XXX -p cacti < pa.sql

  1. 既存ファイルのコピー(rra ディレクトリ以外)

下記の既存 cacti のファイルを新しい cactiディレクトリ内にコピー


cacti/resource/
cacti/scripts/
cacti/plugins/

新旧 cacti のオーナーとパーミションをあわせておく

ここまで終わったら後は、rra と log ディレクトリのみなので、cacti のポーリングが終わったところを見計らって rra と log ディレクトリをコピーする。
※ここでもオーナーとパーミションに注意する。

新旧 cactiディレクトリを入れ替え

Web からアクセスすると、バージョンアップスクリプトが実行される

  • 動作確認

Web GUI 上から動作確認をして作業完了。
グラフが更新されていない場合は、log を確認する。

SPINE のアップグレード

こちらは新しい rpm ファイルをダウンロードし、アップグレードすればOKです。

便利なプラグイン

よく利用するプラグインを紹介します。
http://forums.cacti.net/about14985.htmlプラグインの情報はまとめられています。

Thold

  • 機能

閾値監視を行うプラグインです。Cacti のポーラーが取得したデータをチェックし、閾値
を超過した場合は、メールや syslog にエラーを出力することが可能です。

Network Weathermap

  • 機能

Network Traffic を可視化することが可能です。
物理結線図を作成し、リンクごとにインターフェーストラフィックのデータを登録する
と、物理結線図上のリンクの色が帯域により変化します。

  • Screen Shot
  • 環境

※Weathermap を使うには、gd と php-gd パッケージが必要です。
※それぞれ、yum でインストール可能です。

boost

  • 機能

グラフ表示の高速化を行うプラグインです。

discovery

  • 機能

指定したセグメント内のノードを自動的に見つけてくれるプラグインです。

hostinfo

monitor

バイスの死活確認を行うプラグイン。簡単な監視が可能。

settings

いくつかのプラグイン(例えば thold)を使う際に必要となるプラグイン設定用プラグイン

Aggregate

複数のデータをまとめてひとつのグラフを作ることができるプラグイン
例えば、Switch の複数ポートの traffic をまとめてひとつのグラフにするとか、コアごとの CPU 使用率をまとめてひとつのグラフにするとかすることが可能。