[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)でのグループ別の一括操作を行う ・初期設定のある程度の自動化

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ