1ランク上のサーバー管理者になるためには?

2009年8月28日(金)
馬場 俊彰

サーバー管理者のピンチはチャンスとして考える

 1回目を担当した馬場です。再びこんにちは。連載の4回目は管理にまつわるいくつかの内容について、前向きで明るい話をしたいと思います。

 サーバー管理者であれば誰でも、日々の運用、監視、管理やシステムの手直し、トラブル対応などに追われていると思います。

 システムが利用されている限り、望む望まないにかかわらず新たな要求が生まれますし、トラブルも発生するからです。

 ところで、とかく私はものぐさで飽きっぽいので、常に外部からの刺激に飢えているのですが、そんな私にとって、トラブルは刺激そのものです。刺激に対して対処し、再発しないよう手を打つところまでキッチリとやっつけるよう心がけています。

 キッチリやっつけられればとても爽快(そうかい)。逆に打ち負かされたら反省しきり。でも失敗から学ぶことも多く、それはそれでとてもためになります。

 ……と、かなりわざとらしく大げさに書いてみましたが、実際に障害対応を本気で続けていると、要求・要望(アラートを含む)に応えてサービスを育てているうちに自分が育っていた、という結果になります。

 運用、監視、管理の現場では、ともすると「何も起きないでくれ~」とお祈りしたくなりがちですが、祈るだけでは成果は出ませんし、実はみすみすパワーアップのチャンスを逃しているのです。運用、監視、管理の現場はとかく暗くなりがちですが、必要以上に気負わず前向きに日々を過ごしましょう。

 弊社では違いますが、運用、監視、管理の現場は、なぜか減点法で評価されることが多いようです。減点法で評価される場合、チャレンジして難易度の高い課題に取り組むのはかなり勇気がいる判断です。

 減点法でしか評価できない人は、はっきり言って相手にする必要ありません。恋人も結婚相手も、減点法の人と長く付き合うのは無理ですよね。会社も一緒です。サヨナラするのが賢明です。

 チャレンジせずに高評価を獲得するのもひとつの生き方ですが、それはとてももったいないことだと私は思います。チャレンジする対象があり、成長するチャンスが目の前にあるのであればぜひ取り組んでみてください。

 チャレンジすることで知識が深まり、経験が豊かになります。チャレンジしたあなたには、次のような力が備わっていることでしょう。

 ・対象領域に対する深い知識
 ・トラブルを切り分け、原因を特定する深い洞察力・思考力
 ・トラブル中でも取り乱さず、冷静に対応する判断力
 ・トラブルを解決するために勇気をもって進める決断力

 そしてその結果は、サーバー管理者としての自信と誇りとして、間違いなく自分に返ってきます。

手早く問題を解決するためのワンライナー(1行プログラム)

 とはいえ、オールも舵もない状態で大海原にこぎ出すのは、現実的にはかなり厳しいと思います。そこで、典型的な問題のパターンとその時の思考法について何点かご紹介します。

 まずは定番のワンライナー(1行のシンプルなプログラム)です。 Linux(UNIX)サーバーの場合、シェルが使えるのがとても便利ですよね。

 例えば、「どのIPアドレスからのアクセスが多いか確認して、アタックがきているようであれば接続元をブロックしたい」というケースの場合、私であれば下記のようなワンライナーを使って状況を確認します。

$ netstat -ntu |grep '^\(t\|u\)'|awk '{print $5,$6}'|sed "s/:[^ ]\+//"|sort|uniq -c|sort -nr|head -n 10

 これを細かく見てみると、以下のようになっています。

 ・netstat -ntu: netstatで外部アドレス、状態を取得
 ・|grep '^\(t\|u\)': tかuで始まる行を抽出(ヘッダ部分などを排除)
 ・|awk '{print $5,$6}': 外部アドレス、状態のみを表示
 ・|sed "s/:[^ ]\+//": ポート番号部分を削除
 ・|sort|uniq -c|sort -nr|head -n 10: top10を表示

 ワンライナーを書く時のポイントは以下のとおりです。

 ・まずコマンドのオプションで知りたい情報が得られるかどうか、 manを一度さっと読んで確認する
 ・コマンドのオプションで対応できない場合、すぐに頭を切り替える
 ・フォーマットや実行効率にこだわりすぎない

 何度かやっていると、自然と手になじんでスムーズに書けるようになるはずです。このような「ちょっと便利なワンライナー」を手元に置いておくととても便利です。

 管理するサーバーが限られている場合には、エイリアスに登録する・コマンドを作るなどで省力化すると、さらに楽になるでしょう。

 ワンライナーは「入力に対して処理を実施して結果を出力する」という、プログラミングの基本をシンプルに実施するだけでスゴいことができてしまいます。ぜひ活用してください!

※Think IT編集部注(2009.08.10):文中のコードに一部誤りがありましたため、修正しました。
文中に誤りがありましたこと、お詫び申し上げます。

株式会社ハートビーツ
電気通信大学の学生時代に運用管理から業界入り。MSPベンチャーの立ち上げを手伝った後に、中堅SIerにて大手カード会社向けJavaプログラマーを経て現職。現在インフラエンジニアとして活動中。最近の興味はPythonプログラミングとクラウドの活用。大好物はカレー。静岡県の清水出身。http://heartbeats.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています