サーバー監視ツールを作ろう – 9日目「対話式コマンド対策」

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

サーバー監視がキチンとできているWEBサービスと、サーバー監視をやっていないWEBサービスでは、サービスクオリティに明確な差が発生してきます。
 

しっかりとしたサーバー監視をしているかどうかは、WEBサービスを構築しているエンジニアに対して、「そのサービスはどのくらいのキャパシティを持っているの?」と聞いてみるとよく分かります。
 

これまでの経験上、CTOという肩書を持っているエンジニアでも、多くの回答が「それはサーバーエンジニアに任せています」という返答でした。
 

もちろん、サーバースペックを詳細に説明してくれるエンジニアもいたし、素直に「わかりません」という返答も少なくありませんでした。
 

この質問がサービスにおけるビジネスクオリティの基本であることを知っていると知らないで大きく差が出るので、是非この記事を機会に、よく理解できていないエンジニアは、覚えてもらいたいです。

そのサーバーでどのくらいの売り上げが出せるのか?

僕がこの質問を最初に受けたのは、前職で有償のB2B系のWEBサービスを構築していて、ロンチ直前にその時の上司から「その製品で何社ぐらい売れるの?」と聞かれた時でした。
 

その時僕は「100アカウントぐらいは1サーバーで耐えられると思いますよ」という返答をしましたが、その根拠は全くありませんでした。
 

単純に100アカウントぐらいの登録であれば、耐えられるであろうという肌感だけでしたが、この時の上司の質問の意図は、サーバーを増やすタイミングや、営業を加速させた時のサーバー台数における売り上げ予測をしていたんだそうですが、「開発部門は売り上げに関係が無い」と考えていた僕としては、この質問にあまり魅力を感じませんでした。
 

ただ、このプライマリーサーバーがダウン対策としてセカンダリとの2台でフェイルオーナー(冗長構成)でホットスタンバイして運用開始した半年後に数回のサーバーダウンを経験し、
 

見事にフェイルオーバーが正常動作せずにサービスを停止させてしまった事故がありました。
 

この時のユーザー数はなんと10社にも満たない状態で、サーバー負荷なのか、ハードウェアトラブルなのか全く原因も分からずじまいで事故が数件発生して、ようやくサーバー監視の重要性を理解し始めました。
 

サーバー監視で重要なポイントは2点

キチンとサーバー監視を行いたければ、そのサーバーで動いているプログラム群を理解する必要もあります。
 

どういう頻度で、その程度の負荷の処理が発生し、ライフサイクルはどのくらいなのかを理解し、アクセスするであろうユーザー数などを割り出し、秒間、分足、時足などの段階でサーバーのスペックをオーバーしていないかを理解するのが1点。
 

そして、実際のサーバーがどういう負価値を出しているかのロギングがもう1点。
 

この2つが分かってくれば、そのサービスが動作しているサーバーの適正スペックが理解できてきます。
 

もう少しCPUを増やしたほうがいいのか、メモリが足りていないのか、ストレージは何日(何ヶ月)ぐらいでいっぱいになるのか・・・
 

こうした視点でサーバー監視に取り組むと障害が発生しにくいサービス構築の基礎ができあがります。
あとはプログラムでの不具合がなくなれば、非常に安定したサービス提供ができるというワケです。

パスワードなどを聞いてくるコマンド対応

冒頭の話が長くなりましたが、今回のサーバー監視ポイントは「コマンド対話」です。
 

基本的にコマンドラインでなんでもできてしまうサーバー処理ですが、別サーバーにsshでアクセスした時にパスワードを聞いてきますが、これはバッチ処理でやるのは簡単にはできません。
 

また、インストールコマンドなどを実行した時に、選択肢を求められたり、インストール場所を入力しなければいけないような処理がたまにあります。
 

shellバッチなどを作成した時に、こういう対話コマンドに当たると、バッチ処理がその場で停止してしまいます。
 

これを解消してくれるのが「expect」というアプリケーションです。
 

サーバーにも簡単にインストールできるので、バッチサーバーなどを作って標準インストールしておくといいでしょう。

「expect」を使ってみよう

 

激長です。機能が多いことも理解できます・・・
 

長いのでヘルプだけを見てみましょう。
 

 

今度はシンプルすぎて使い方がよくわかりません。
 

とりあえず、僕の使ったコマンドは以下の通りです。コピペしてお使いください。
 

任意のサーバーにsshした時に、分岐が合った場合は”yes”を選択して、パスワードを入力するサンプルです。
 

もっと色々な対話ができるので、試してみるといいでしょう。
 

「sshアクセスは鍵使えばいいじゃん!」というツッコミは無しでお願いします。

関連記事

サーバー監視ツールを作ろう – 8日目「Process数」
サーバー監視ツールを作ろう – 7日目「CPU検知」
サーバー監視ツールを作ろう – 6日目「LoadAverage検知」
サーバー監視ツールを作ろう – 5日目「メモリ利用率検知」
サーバー監視ツールを作ろう – 4日目「ディスク容量検知」
サーバー監視ツールを作ろう – 3日目
サーバー監視ツールを作ろう – 2日目
サーバー監視ツールを作ろう – 1日目
 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です