【RHEL7】freeコマンドについて

REHL7.1でインストールされるprocps-ng-3.3.10以降のfreeコマンドでは、従来のfreeコマンドと出力される内容が異なっていました。

・従来のfreeコマンドの実行結果

[root]# free -V
free from procps-ng 3.3.9
[root]# free
             total       used       free     shared    buffers     cached
Mem:       1018140     596136     422004        308        764     277552
-/+ buffers/cache:     317820     700320
Swap:       839676          0     839676

・procps-ng-3.3.10以降のfreeコマンド実行結果

[root]# free -V
free from procps-ng 3.3.10
[root]# free
              total        used        free      shared  buff/cache   available
Mem:        1017180      729424       91204       31580      196552      109876
Swap:        839676       32260      807416

大きな変更点としては、-/+ buffers/cacheの列が無くなった、availableという項目が加わったという点でしょうか。
他にも軽く調べたところ、usedに出力される値の算出方法も従来のfreeコマンドとは異なっているようです。

・従来のusedの算出方法

メモリ領域合計 - 空きメモリ領域
メモリ領域合計 : "/proc/meminfo"のMemTotalの値
空きメモリ領域 : "/proc/meminfo"のMemFreeの値

※ -/+ buffers/cache列のusedは、上記からバッファ領域(buffers)とキャッシュ領域(cached)を除いた値が出力されます

・procps-ng-3.3.10以降のusedの算出方法

メモリ領域合計 - 空きメモリ領域 - "buff/cache"の値
メモリ領域合計    : "/proc/meminfo"のMemTotalの値
空きメモリ領域    : "/proc/meminfo"のMemFreeの値
"buff/cache"の値  : "/proc/meminfo"のBuffers、Cached、Slabの値の合計

ちなみに、Hinemosのリソース監視の監視項目の”メモリ使用率(実メモリ)”や”実メモリ中のメモリ使用率(ユーザ)”では、従来のfreeコマンドのMem列や-/+ buffers/cache列のusedと同等のメモリ使用率が算出されます。
(HinemosではSNMPやWBEMを利用してメモリ情報を取得しているため、厳密には同じでは無いですが。)

もし、「procps-ng-3.3.10以降のfreeコマンドのusedと同等のメモリ使用率を監視したい!」という場合は、次のようなスクリプトを用意して、カスタム監視を実行するとよいでしょう。

#!/bin/bash

total=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
free=`cat /proc/meminfo | grep MemFree | awk '{print $2}'`
buff=`cat /proc/meminfo | grep Buffers | awk '{print $2}'`
cache=`cat /proc/meminfo | grep ^Cached | awk '{print $2}'`
slab=`cat /proc/meminfo | grep Slab | awk '{print $2}'`
used=`echo "scale=2; ($total - $free - $buff - $cache - $slab) * 100 / $total" | bc`
echo "used,$used"

実行結果は次のようになります。

[root]# ./memUsed.sh
used,80.16

以上、簡単ですがfreeコマンドとリソース監視についての紹介でした。
(担当:KY)

【Hinemos】複数IPアドレスを持つ管理対象へのPING監視

Hinemosでは管理対象をノードとして登録しますが、ノードにはIPアドレス(IPv4またはIPv6)を一つしか設定できません。
NW機器など複数のIPアドレスを持つ管理対象では、IPアドレス毎にノードを分けて登録する必要があります。

NW機器からのsyslogやSNMPTRAPの送信元IPアドレスをノードとして登録し、
他のIPアドレスはPING監視のみ実施したい場合、IPアドレス毎のノード登録を回避したいと思われるかも知れません。

このような場合、ノード変数カスタム監視を利用することで、
1ノードに複数IPアドレスを紐付けて、監視を実施することが可能です。

実施方法の概要は以下の通りです。

  1. 対象のNW機器のノードのノード変数に複数のIPアドレスを設定する。
  2. カスタム監視から実行するPing監視用スクリプトを作成する。
    スクリプトの引数に、IPアドレスを複数指定可能とする。
  3. カスタム監視の監視項目のコマンド欄に、Ping監視用スクリプトを指定し、
    引数に、NW機器のノードのIPアドレスを設定したノード変数を指定する。
    ※カスタム監視の詳細については、ユーザマニュアルの「7.13 カスタム監視」を参照してください。

設定例(3つのIPアドレスを持つノードへの監視)は以下の通りです。

  1. 対象のNW機器のノードに以下のノード変数を設定する。
    ※もう一つのIPアドレスはノード情報の”IPv4のアドレス”を使用する。

    ノード変数名       ノード変数値
    IP_ADDRESS_V4_02   xxx.xxx.xxx.10
    IP_ADDRESS_V4_03   xxx.xxx.xxx.20
  2. カスタム監視の監視項目を以下の内容で作成する。
    • スコープ:
      対象NW機器のノード
    • 指定したノード上でまとめてコマンド実行:
      Hinemosマネージャのノード
      ※Hinemosマネージャにはエージェントが導入されている前提
    • コマンド:
      /opt/hinemos/sbin/fping -C 1 -p 1000 -t 1000 -b 56 -q #[IP_ADDRESS_V4] #[IP_ADDRESS_V4_02] #[IP_ADDRESS_V4_03] 2>&1 | sed 's/ *: */,/g' | sed 's/-/XX/g'
      • fpingコマンドの詳細は”-h”オプションをつけてfpingコマンドを実行し、ヘルプをご参照ください。
      • ノード毎にPingの応答時間が秒単位で取得されます。
        例えば、応答時間が150ミリ秒の場合は、0.15秒となりますので、監視項目の閾値の設定にご注意ください。
      • コマンドの最後のsedコマンドの”XX”にはPing応答が無かった場合の数値を設定しています。
        閾値判定で重要度が異常となる値を設定してください。

以上、ノード変数とカスタム監視を利用して、複数IPアドレスを持つ管理対象へのPING監視の設定例を紹介しました。

【Hinemos】AWS Lambda関数をHinemosから実行する

今回は、Hinemosのジョブを使用して、AWS Lambda関数をAPI Gateway経由で呼び出す設定例をご紹介します。

AWS Lambdaは、AWS上で任意のコードを実行するための仕組みで、実行にEC2インスタンスを必要としない点が大きな特徴です。AWS Lambda関数は、指定した間隔での定期実行、またはcronベースのスケジュール実行が可能となっていますが、待ち条件等の複雑な実行制御を行いたい場合は、外部ツールの力を借りる必要があります。このような場合に、Hinemosのジョブ機能を利用すると便利です。

Continue reading ‘【Hinemos】AWS Lambda関数をHinemosから実行する’ »