Wednesday, September 3, 2014

YAPC::Asia Tokyo 2014 でスタッフをさせていただきました


※画像は、入り口の看板です。

http://yapcasia.org/2014/
YAPC::Asia Tokyo 2014 でスタッフをさせていただきました。
スタッフをやるのは、2012, 2013と3回目です。


なぜ、ボランティアに応募したかというと。Perlは、一番初めの仕事で使った言語です。なので、社会人になってからの生活を支えてくれたプログラミング言語ともいえます。ボランティアに応募したのは、その、Perlへの貢献がしたかったからです。
今は、バリバリPerlを書いているわけではありませんが、いつ必要になるかわからないので、トレンドくらいは抑えておきたいなというところもあります。
また、他の言語(Scala, Java, Go, PHP, Ruby & etc..)、DevOps、インフラ・ネットワーク的な話も多岐に渡っていますし、それぞれの最新情報もざっくりキャッチしておきたいと考えて参加しています。(こんかいは、まさかのアイドル登壇があった・・・)


スタッフというと結構忙しいのかな?と思いますが、けっこうセッションを見る時間があるのです。
それはなぜか?というと、大体のスタッフは、セッションのための部屋にそれぞれ専属で仕事(ボランティア活動といったほうが適切?)をするのですが、部屋の仕事のキャパ以上の人的リソースを投入するからですね。だいたい2人位で足りるところを5人位投入という感じです。
これが、普通のWeb開発などをしている目から見ると意外と、目からうろこ的な感じなのです。それぞれの人に余裕が生まれることによって、人の目の数が増えるといいますか、細かいところに気がつくようになってきます。
例えば、他の部屋も見に行けるくらい余裕があるので、他の部屋では、どうやって進行しているのか、ホワイトボードをこんなかんじに使っているぞとか、ブラインドはこんなかんじで下げているぞとか、Twitter見てたら、寒いと行っている人がいるぞ、部屋のエアコン調節しよう、とか、色々あります。
サボる時間ができていながら、イベントのことを気にしてしまう。
こういうのができるのは、やっぱりスタッフのモチベーションが高いからでしょうね。
もちろん、オープン前やクローズ時などで急に仕事が増大した時にも、人手が多いのでスケールします。普通のシステム開発とは、まったく別の人的リソースの投入方法です。面白いです。




来年も多分やるんじゃないかな?との情報なので、来年、時間に余裕がある人は、スタッフに応募してみてはいかがでしょうか。
今年は、すぐに人が集まったようで、けっこうはやく募集の締め切りをしていました。
なので、春くらいの季節になったら、YAPCの情報を逐一チェックしておくといいかもしれないです。
スタッフ応募資格は、たぶんあんまり厳しくないんじゃあないかな?応募した時点で「やる気」のところはクリアしているでしょうし。
プログラムの言語が全くわからなくても大丈夫です。

Monday, September 1, 2014

SlackをNagiosに連携させる方法

Jeriff Cheng

チャットツールのSlackと、システム監視ソフトのNagiosを連携させる方法です。
Nagiosでアラートを検知した時に、Slackに通知します。

こんなイメージです。


SlackのNagiosサービスを有効にする


https://<グループID>.slack.com/services/new/nagios
を開く。
ページの下の [Add Integration] をクリック。



" New integration added! " と出たらOKです。
設定のためのチュートリアルが表示されます。基本的にこのまま従っていけばOKです。

トークンをメモっておきましょう。チュートリアルと、左側に表示されています。
---
TOKEN
The token for this integration is:
XXXXXXXXXXXXXXX <- これがトークンです。
---

---
my $opt_token = "XXXXXXXXXXXXXXX"; <- これがトークンです。
---

Slackに、naigosチャンネルを作っておきます。

Slack通知スクリプトを用意する



Perlモジュールをインストール
# yum install perl-libwww-perl perl-Crypt-SSLeay

公式スクリプトを取得&設置
# wget https://raw.github.com/tinyspeck/services-examples/master/nagios.pl --no-check-certificate 
# cp nagios.pl /usr/local/bin/slack_nagios.pl
# chmod 755 /usr/local/bin/slack_nagios.pl

slack_nagios.plを編集して、グループIDと、トークンを設定
# emacs /usr/local/bin/slack_nagios.pl
---
my $opt_domain = "<グループID>.slack.com"; # Your team's domain
my $opt_token = "<トークン>"; # The token from your Nagios services page
---

テスト投稿をしてみましょう。
# /usr/local/bin/slack_nagios.pl -field slack_channel=#nagios -field HOSTALIAS="HOSTNAME" -field SERVICEDESC="SERVICEDESC" -field SERVICESTATE="SERVICESTATE" -field SERVICEOUTPUT="SERVICEOUTPUT" -field NOTIFICATIONTYPE="NOTIFICATIONTYPE"



こんな感じで出てきたでしょうか?

Nagiosの設定ファイルを編集する


通知先のメンバーにslackを追加。
# emacs /etc/nagios/objects/contacts.cfg
---
define contact {
      contact_name                             slack
      alias                                    Slack
      service_notification_period              24x7
      host_notification_period                 24x7
      service_notification_options             w,u,c,r
      host_notification_options                d,r
      service_notification_commands            notify-service-by-slack
      host_notification_commands               notify-host-by-slack
}

define contactgroup {
  contactgroup_name admins
  alias             Nagios Administrators
  members           root, slack
}
---

通知コマンドを追加。slack_channel=<チャンネル名>を便宜設定します。
# emacs /etc/nagios/objects/commands.cfg
---
define command { 
command_name notify-service-by-slack 
command_line /usr/local/bin/slack_nagios.pl -field slack_channel=#nagios -field HOSTALIAS="$HOSTNAME$" -field SERVICEDESC="$SERVICEDESC$" -field SERVICESTATE="$SERVICESTATE$" -field SERVICEOUTPUT="$SERVICEOUTPUT$" -field NOTIFICATIONTYPE="$NOTIFICATIONTYPE$"
}

define command { 
command_name notify-host-by-slack 
command_line /usr/local/bin/slack_nagios.pl -field slack_channel=#nagios -field HOSTALIAS="$HOSTNAME$" -field HOSTSTATE="$HOSTSTATE$" -field HOSTOUTPUT="$HOSTOUTPUT$" -field NOTIFICATIONTYPE="$NOTIFICATIONTYPE$"
}
---

Nagiosの設定チェック
# /usr/sbin/nagios -v /etc/nagios/nagios.cfg

問題なかったらNagiosをリスタート
# /etc/init.d/nagios restart

テスト的にアラートを投げてみましょう。



こんな感じで色分けしてSlackに通知してくれます。
簡単ですね!