【연재 01】213.nmon의 인스톨·배치

【연재 01】213.nmon의 인스톨·배치

2022-10-06 last update

7 minutes reading 몬몬 ansible-playbook centos7 YAML Ansible
본 기사는 사례 연구의 연재입니다. 목차는 【이쪽】 입니다.
최신 소스 코드는 【GitHub】에서 공개 중입니다.
서버의 책임은 여기에서 확인하십시오.

1.nmon 설정 개요



서버 상태 모니터링을 수행하는 nmon을 설치합니다.
nmon은 CPU 이용률이나 메모리 사용률을 감시할 수 있는 편리한 툴.



2.playbook 파일의 상관





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로 등록한 변수의 속성은 다음과 같습니다. 그 외에도 다수 있습니다.
htp // // cs. 안시 bぇ. 이 m/안시 bぇ/s타 t_모즈ぇ. 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에서 h tps : // 오 sd. jp/p 로지ぇcts/sf네 보다 다운로드한 것을 서버에 전송해, 해동해 이용했지만, yum 모듈 쪽이 균등성 보증해 주어 즐겁다고 생각한다.

다음번은 「 214. Rbenv를 사용하여 Ruby 환경 설치 및 배포 」에 대해.

연재의 목차는 【이쪽】 입니다.