2009年12月11日

ドメインの有効期限を監視するシェルスクリプト

先日参加してきた hbstudy#6 で、@matsuuさんがドメイン監視の必要性(重要性)について発表していました。
僕も以前勤めていた会社でドメインの有効期限が切れて大変な目にあったので、これには大変共感できました。
@matsuuさんはNagiosでドメインの監視をされているようですが、僕は当時「忘れなければいいか」くらいに
考えていたので、以下のサイトを参考にスクリプトを改造しました。
今思えば、matsuuさんのブログだったんですね…。

http://d.hatena.ne.jp/tmatsuu/20070928/1190940248

要件としては、

  • 確認は週に1回程度でいい
  • 複数ドメインを確認したい
  • 有効期限を60日切ったら注意、30日切ったら警告させたい

こんな感じです。
恥ずかしいと知りつつ公開してみます。
突っ込み大歓迎です。

check-domain-jp.sh
オリジナルとのdiffが以下になります。
% diff -u check-domain.sh check-domain-jp.sh
--- check-domain.sh
+++ check-domain-jp.sh

@@ -2,11 +2,11 @@

 PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`

-. $PROGPATH/utils.sh
+#. $PROGPATH/utils.sh

 # Default values (days):
-critical=7
-warning=30
+critical=30
+warning=60
 whois="/usr/bin/whois"
 host=""

@@ -14,6 +14,7 @@
         echo "check_domain - v1.01p1"
         echo "Copyright (c) 2005 Tom〓s N〓〓ez Lirola <tnunez@criptos.com> under GPL License"
         echo "Modified by MATSUU Takuto <matsuu@gentoo.org>"
+        echo "Modified by Tateoka Mamoru <qphoney@gmail.com>"
         echo ""
         echo "This plugin checks the expiration date of a domain name."
         echo ""
@@ -70,16 +71,22 @@

 # Calculate days until expiration
 TLDTYPE=`echo ${domain##*.} | tr '[A-Z]' '[a-z]'`
-echo "debug: host = $host"
+echo "host:$domain"
 if [ "${TLDTYPE}" == "in" -o "${TLDTYPE}" == "info" -o "${TLDTYPE}" == "org" ]; then
         expiration=`$whois $host $domain | awk '/Expiration Date:/ { print $2 }' |cut -d':' -f2`
 elif [ "${TLDTYPE}" == "biz" ]; then
         expiration=`$whois $host $domain | awk '/Domain Expiration Date:/ { print $6"-"$5"-"$9 }'`
+elif [ "${TLDTYPE}" == "sc" ]; then
+        expiration=`$whois -h whois2.afilias-grs.net $host $domain | awk '/Expiration Date:/ { print $2 }' | awk -F : '{ print $2 }'`
 elif [ "${TLDTYPE}" == "jp" -o "${TLDTYPE}" == "jp/e" ]; then
         expiration=`$whois $host $domain | awk '/Expires/ { print $NF }'`
+    if [ -z $expiration ]; then
+            expiration=`$whois $host $domain | awk '/State/ { print $NF }' | tr -d \(\)`
+    fi
 else
         expiration=`$whois $host $domain | awk '/Expiration/ { print $NF }'`
 fi
+echo $expiration
 expseconds=`date +%s --date="$expiration"`
 nowseconds=`date +%s`
 ((diffseconds=expseconds-nowseconds))
このスクリプトを外から呼び出す形で、もう一個スクリプトを作りました。
(ちょっとスマートではない気が…)

domain-mail.sh

このスクリプトの中で複数のドメインを指定しています。
cronに登録して、適当にメールアドレスを指定して出来上がり。
ただ単に、check-domain-jp.shをまわしてるだけなんですけどね。
posted by qphoneyとかiaraとか at 11:29| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2009年12月05日

hbstudy#6 勉強会に参加してきました

第6回: 監視について(仮)、インフラエンジニアLT大会
http://heartbeats.jp/hbstudy/


* 監視について ハートビーツ 坂口利樹 tsakaguchi
インフラエンジニアのおしごと
    定例業務&非定例業務
        いぱーいあるね

    監視とは
        ストーカーじゃないよ

    監視が必要な理由
        ビジネス、サービスが動いているか確認するため
        すべての障害を予期することは困難よ
            機能監視や性能監視が必要

    監視ツールを使うと便利よ
        Zabbix、Hinemos、Nagios、Hobbit
            Hobbit キタ━(゚∀゚)━!!!!!
            googletrendによると世界的にはHobbitもたくさんつかわれてるよ
            日本ではNagios、Hinemosが多いみたい
            ハートビーツではnagiosですよ。
            実績ベースで、約3年前のサーバで400台くらいのクライアントを監視

    監視のポイント
        監視項目をむやみに増やしすぎない
            最適な監視が重要らしい

    監視サーバのネットワーク
        サービスを提供しているiDCの中にはおかない
            ユーザ視点の監視を行う

    監視項目
        外部
            サービス(HTTP、HTTPS)
            表示されるまでの時間
                3〜5秒
            ログイン
            シナリオ
            文字列
            回線使用状況

        内部
            リソース(CPU、DISK、RAM等)
            プロセス、プロセス総数
            ログ出力
            DBレプリケーション
            DiskのI/O

        監視項目
            WebサーバからDBサーバに接続が可能か監視する
                これは確かに重要

        目的
            監視することが目的ではなく、ビジネスが正常に稼働しているか監視する
                これももっとも
                ただ、我々は往々にして忘れがちだからね...

    誤報
        なくすことはできないけど、減らすことはできそうだ
            でも根本的な解決が必要ね

    閾値
        どこまでが正常なのかの定義をする
            これがなかなか難しい気がす
            ただ、いくらでも調整可能なので最適化して誤報を減らせる
        
    性能監視
        変化の把握
            ボトルネックの把握
        キャパシティプランニング
            後々の参考になる

    監視チームを作る
        監視と障害対応は切り離せない
        一人ではできない(24/365はキツい…)
            チームを作って対応する
        アラートメールの送信先
            営業やPGにも飛ばしちゃえ
        障害復旧ドキュメントを充実させる
            ネットワーク構成図
            アプリケーション構成図
            対応フロー
            監視項目ごとの現況確認
        操作ログの保存
            Puttyを標準で使用している
            hbさん標準の設定ファイルがあり、全員で共有している
            起動時から終了時までのログが自動で共有サーバに保存されている
                Windowsの操作ログはRDPなので保存してない、できないのかな?

        対応する人の決定
            お見合いが一番怖い…
            誰がボールを持っているか、常に明確に!
            hbさんはひとりずつ電話確認するのでボールの持ち主が明確

        サーバ台数あたり何人の担当者がいるの?
            150台/1人、常に1システム(1サービス)に2人

        障害発生率?
            hbさんが把握している場合と、お客さん側でのみ把握する場合があるので
            なんとも言えない
            ただ、障害等の連絡(メールも含む)は1時間あたり2件とか

    質疑応答のまで手がまわらない…

* インフラエンジニアLT大会
    坪井さん(@ytsuboiさん)
    ドメインの有効期限、SSLサーバ証明書の有効期限を監視しよー
        やっぱり忘れがちだけど、一番重要な部分はどこも一緒なんだなー
        whoisを叩くタイミングは何分おきなんだろうか?
        あんまり叩きすぎると良くないという噂を聞いたが…

    yuzorockさん
    インフラエンジニアのお仕事と何種かの神器
        仕事を便利にするツール(yumとかpuppetとか)便利に使おうね
        ただ、エンジニアなので裏で動いてるテクノロジにも興味を持とうね

    よしおかさん @hyoshiok
        no スライド is かっこいい

    スカイホビット 越川さん
    Xymonのグラフの改良
        これは期待
        rrdtoolsのデータベースをやはりいじる必要があるらしい
        ふむ、確かにぱっと見で分かりたいときはあるのでいいかも

    matsuuさん
        タイル型ウィンドウマネージャawesomeの紹介
            あっけに取られた
            これは面白い
            是非、「日本タイル」でぐぐってみようw

    think-tさん
    サーバーメンテナンスについて考える
        幸せなメンテナンスとは
            これは難しい
            見積りとか時間とか
            バックアップの時間見積りが一番難しい希ガス

    ながやす さとしさん (uptime)
        postgresql conference 2009の報告
            これは参加したかったなー
            なんだけど、LTで報告は難しいのではないかと思った

    ハートビーツの馬場さんがまとめ
        定期的に勉強会を開催しているので、ネタの提供をお願いします。
        色々、聞きたいことがあるので、そのうち提供しますw

感想
    全員が全員、インフラエンジニアではないにしても、質疑応答が飛び交う熱い2時間半でした。
    特に障害発生時の原因切り分けとか、ドキュメント管理などが熱くなってました。
    個人的にも興味のある内容で、もうちょっと話を聞きたかった(したかった)です。
    時間の関係で、参加されている方達とあまり話もできず、懇親会にも参加できませんでしたが、
    今度はLTとか発表する側になってみたいなーと思いました。

    あ、間違いとかあったら指摘してください。

posted by qphoneyとかiaraとか at 23:59| Comment(2) | TrackBack(0) | 勉強会 | このブログの読者になる | 更新情報をチェックする

2009年12月01日

sshdがPort Forwarding Gatewayの接続を切っちゃう場合の対応


poderosaに標準搭載(?)されているSSHのポートフォワーダ、Port Forwarding Gatewayを使おうとしたら、
sshdサーバ側で以下のようなログを吐いてSSH接続が切られてしまいました。
ちなみにsshdサーバはopenssh-server-4.3p2-36.el5_4.2(CentOS5.4)という環境です。

fatal: buffer_consume_end: trying to get more bytes than in buffer

Google先生に聞いてみても的確な答えは見つからず困っていたら、会社の目の前の席の人は
接続できているらしいのです。
その人の環境を調べたら、Port Forwarding Gatewayのバージョンが3.0、僕の環境が4.0。
Port Forwarding Gatewayを3.0にバージョンダウンしたら正常に接続できました。
根本的な解決じゃないけど、ひとまず解決。

これってうちの環境だけなのかな。
posted by qphoneyとかiaraとか at 13:30| Comment(0) | TrackBack(0) | SSH | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。