[Server] サーバー管理ツールを作る #1「複数サーバー管理」

2015年5月4日

サーバー プログラミング 特集

Chef、Asibleという今どきのサーバー管理ツールを使ってみて、どうしてももう少し改良できないかと思ってしまったので、いっその事自分で作ってみました。

現状ツールの不満点

サーバー管理ツールは、管理対象が複数サーバーあって、一括で一元管理できるという事がサーバー管理者のリソースを圧迫しない為を目的にしていますが、この点は、大いに賛成です。 僕が問題視しているのは、サーバー管理する親サーバーと管理される子サーバーに別れると思いますが、子サーバーに対してもう少しパッケージモジュールのリソースを省略できないかという点です。 ChefやNagios、Zabbix、どれも同じパッケージをインストールして、パッケージ間でデータなどのやりとりをするパターンで機能を担保してますが、 Ansibleがいいと感じたのは、「子サーバーにはパッケージのインストールが必要ない」という仕様が非常に気に入りました。 だが、古いサーバーに対して管理対象にすると、どうしてもアクセスできない場合があり、調べてみると、Pythonがインストールされていないと動作しないという事でした。 やはりパッケージ依存していた・・・

解決方法は簡単

基本的には、Linuxサーバーという事を条件にして、OSの持っている機能だけで管理できれば、問題ないという安易な考えですが、基本的にsshアクセスをすれば、全く問題ないと考えました。

β版をGITHUBにアップしました

https://github.com/yugeta/serverHealth 今現在は、コマンドを叩いてヘルスチェックと、shellコマンドの実行ができるというレベルですが、ansibleで行えることは大体できるのではないかと考えてます。

使い方

1. Githubよりcloneしたデータを任意の階層に置いておきます。(どこでもOK) 2. 「src/servers.list」に管理対象サーバーを改行区切りで入力する。(ドメインも可) 3. 対象サーバーに対して、sshの秘密鍵でアクセスできるようにセットする。   ※今のベージョンではssh-addして、鍵を付与しないようにしてください。   ※ヘルスチェックだけであれば、root権限は入りません。 4. コマンドを実行するとヘルスチェックができます。 # 対象サーバーにping $ ./src/health-ping.sh ## 結果(パケットが通らないとerror表示されます) > 192.168.33.10 : error > 192.168.1.16 : # CPU使用率の取得 $ ./src/health-cpu.sh # メモり使用率の取得 $ ./src/health-mem.sh # メモり使用率の取得 $ ./src/health-la.sh ## LA:1分足 $ ./src/health-la.sh 1 ## LA:5分足 $ ./src/health-la.sh 2 ## LA:15分足 $ ./src/health-la.sh 3 # HDD使用率 $ ./src/health-hdd.sh # proc数 $ ./src/health-proc.sh # 全てのサーバーに同じコマンドを送る ## host名を取得 $ ./src/shell.sh "hostname" ## etcフォルダの一覧を取得 $ ./src/shell.sh "ls -la /etc" ## gitのインストール(centosとdebian系を分別してくれます)※管理権限が必要 $ ./src/install.sh "git"

今後の展開

以下の様な機能を追加してアップデートしていきます。
・複数サーバーに対しての定期管理ロギング ・障害発生時に管理者にメール送信 ・サーバーの時間帯ログなどで、負荷値のレポート(グラフ) ・管理対象サーバーをグループ分けして、管理画面(GUI)でのグループ別の一括操作を行う ・初期設定のある程度の自動化