LoginSignup
5
5

More than 5 years have passed since last update.

【連載01】213.nmonのインストール・配置

Last updated at Posted at 2016-02-18

当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。
サーバの責務はこちらで確認ください。

1.nmon設定概要

サーバの状態監視をおこなうnmonをインストールする。
nmonはCPU利用率やメモリ使用率を監視できる便利なツール。

image

2.playbookファイルの相関

image

3.playbook(site.yml)

${ANSIBLE_HOME}/site.yml
メインとなるplaybook(site.yml)参照

4.nmon設定のplaybook(/operations/1001_nmon.yml)

${ANSIBLE_HOME}/operations/1001_nmon.yml

playbook中のコメントの補足に関しては「5.補足説明」を参照。

# ===================
# nmon設定(nmon.yml)
# ===================
- hosts: all
  sudo: no
  vars_files:
    - ../vars/filedir.yml
  remote_user: root
  tasks:

# ===================
# nmonコマンドはyumを使わず解凍して使用する。
# 冪等性を保つため既に/bin/nmonがある場合は何もしない。
# ===================
    - name: nmonの存在確認(以下すべて存在してない場合のみ実行)
      stat: path=/bin/nmon #【4.A:statモジュールでファイルの状態を取得する】
      register: nmonext #【4.B:registerモジュールではnmonextという名前の変数にstatで取得したファイル状態を設定する】

# ===================
# nmonコマンドのtar.gzはダウンロード済であることとする。
# 既にダウンロードしたnmonはNFSサーバをマウントした
# /var/opt/data/nfs/配下に配置済。
# tarコマンドにて解凍して /bin/配下にコピー。
# ===================
    - name: 展開
      command: tar zxvf /var/opt/data/nfs/os/installer/centos7.tar.gz -C /bin #【4.C:commandはshellモジュール同様にOSコマンドを実行できる】 
      when: not nmonext.stat.exists #【4.D:not XXXXXX.stat.existsは(4.B)で設定した状態でファイルが存在しない場合にTUREとなる当該タスクが実行】

# ===================
# nmonコマンドの名前が展開しただけではnmon_x86_64_centos7
# となる為nmonに変更。
# ===================
    - name: 名前を変更
      command: mv /bin/nmon_x86_64_centos7 /bin/nmon
      when: not nmonext.stat.exists

# ===================
# パーミッションとオーナをroot:root 755に変更する。
# ===================
    - name: パーミッションを変更
      file:
        group=root mode=0755 owner=root path=/bin/nmon state=file
      when: not nmonext.stat.exists

5.補足説明

nmonはリアルタイムにサーバを監視できるが、nmon結果をログ出力し、NMONVisualizerにて取り込む事により、後から容易に分析が可能。
長時間動作したときにのみサーバに問題が発生する場合など非常に役に立つ。
今まで導入したことがない方は是非利用をおすすめする。

4.nmon設定のplaybook(/operations/1001_nmon.yml)」内のコメント4.A~4.Dについて。

【4.A】ファイルやディレクトリ等の情報を取得するのはstatモジュールが便利。
またstatモジュールではファイルの存在確認以外でも使用できる。(今回はファイルの存在確認で利用する。)

statモジュール
名前 内容 補足
path statsモジュールで確認をする為のパス

statモジュールではregisterモジュールに指定したファイル名経由で操作する。
statで登録した変数のプロパティは以下の通り。その他にも多数あり。
http://docs.ansible.com/ansible/stat_module.html

プロパティ名 内容
exists 存在すればtrue register varsだった場合
vars.stat.exists
mode 0777等のパーミッションが返る register varsだった場合
vars.stat.mode
pw_name ユーザー名が返る register varsだった場合
vars.stat.pw_name
islnk シンボリックリンクだとtrue register varsだった場合
vars.stat.islnk
isdir ディレクトリだとtrue register varsだった場合
vars.stat.isdir

【4.B】regsiterモジュールを使用してstatの結果を保存する。

register: nmonext

nmonextに【4.A】で取得したstat結果を保存する。

【4.C】commandモジュールはshellモジュールと同様にshellを実行する。

command: tar zxvf /var/opt/data/nfs/os/installer/centos7.tar.gz -C /bin

-Cを指定した場合はcdをした後に実行する。

【4.D】whenモジュールはタスクを実行する判定式を記述する。
whenの結果がtrueであればタスクを実行する。

when: not nmonext.stat.exists

nmonext.stat.existsは【4.A]で指定したパスにファイルが存在した場合、当該タスクが実行される。

6.補足の補足

ここまで書いてなんだが、nmonはepelリポジトリよりyumにて取得できる。
今回はnmonをmanagetermにてhttps://osdn.jp/projects/sfnet_nmon/releases/よりダウンロードした物をサーバに転送し、解凍して利用したが、yumモジュールの方が冪等性保証してくれて楽かと思う。


次回は「214.Rbenvを使用してRuby環境をインストール・配置する」について。

連載の目次は【こちら】です。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5