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)でのグループ別の一括操作を行う
・初期設定のある程度の自動化
0 件のコメント:
コメントを投稿