0%

Salt on IDCF クラウド - Part4: psutilとpsモジュールで監視

Salt チュートリアル - Part4: Saltを使った監視インフラで少し書きましたが、Saltのpsモジュールを使うと、監視システムに必要なメトリクスをminionから集めることができます。今回はSLSファイルを作成しないで、psutilをpipモジュールを使いインストールしてみます。

python-devのインストール

psモジュールの実行にはPythonのpsutilが必要です。psutilのビルドにはpython-devパッケージが必要になるため、common.slsに追加します。

/srv/salt/common.sls
pkg-core:
pkg.installed:
- pkgs:
- git
- python-pip
- python-dev

state.highstateを実行して、minionに適用します。

$ salt '*' state.highstate

pipモジュール

pipモジュールを使いpsutilをインストールします。

$ salt '*' pip.install upgrade=True psutil

psモジュール

Pythonのpsutilをインストールしたので、Saltのpsモジュールが使えるはずですが、なぜか利用できません。

$ salt 'minion1*' ps.disk_usage "/"
minion1.cs74idcfcloud.internal:
'ps.disk_usage' is not available.

pipモジュールのlistファンクションで確認すると、psutilモジュールはインストール済みです。

$ salt 'minion*' pip.list psutil
minion2.cs74idcfcloud.internal:
----------
psutil:
2.1.3
minion1.cs74idcfcloud.internal:
----------
psutil:
2.1.3

salt-minionのリスタート

psutilを有効にするために、salt-minionのrestartが必要のようです。以下のSLSファイルを作成します。

/srv/salt/misc.sls
restart_minion:
cmd.run:
- name: |
nohup /bin/sh -c 'sleep 10 && salt-call --local service.restart salt-minion'
- python_shell: True
- order: last

メンテナンス用なのでtop.slsには追加せず、直接SLSファイルを指定します。

$ salt -G 'roles:dev' state.sls_id  restart_minion misc

ps.disk_usageの実行

$ salt -G 'roles:dev' ps.disk_usage "/"
minion1.cs74idcfcloud.internal:
----------
free:
12889178112
percent:
12.8
total:
15717089280
used:
2005934080
minion2.cs74idcfcloud.internal:
----------
free:
12889124864
percent:
12.8
total:
15717089280
used:
2005987328