そーだいなるらくがき帳

そーだいが自由気侭に更新します。

inodeの監視 ~ mackerel-plugin-inodeを読み解く

この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の12日目です。

qiita.com

soudai.hatenablog.com

それでは12日目は mackerel-plugin-inode です。

mackerel-plugin-inodeはその名の通り、inodeの利用量を可視化するプラグインです。

github.com

インストールと設定手順

inodeのプラグインdf -iP の中身を可視化してくれるプラグインです。

プラグインプラグイン集として提供しているパッケージの mackerel-agent-plugins に含まれています。 インストール先は /usr/bin/mackerel-plugin-inode です。

次にMackerelのプラグインはコマンドですので実行する事ができます。

※/usr/bin はPATHが通っているので省略出来ます

-- /usr/bin はPATHが通っているので省略出来ます
# mackerel-plugin-inode
inode.count.xvda1.used  46487   1512981612
inode.count.xvda1.free  1919593 1512981612
inode.count.xvda1.total 1966080 1512981612
inode.percentage.xvda1.used     2.364451        1512981612

設定ファイルであるmackerel-agent.confは標準では /etc/mackerel-agent/mackerel-agent.conf にインストールされます。 こちらに下記のとおり追記しましょう。

[plugin.metrics.inode]
command = "mackerel-plugin-inode"

以上を行った上でmackerel-agentを再起動してください。

見れるメトリック

df コマンド自体の説明は割愛しますがディスクに関わる色んな情報を見ることができます。 inodeはそれを下記の図のように可視化してくれます。

f:id:Soudai:20171211183217p:plain

それでは具体的に見ていきましょう。

各グラフ定義ごとに説明します。 それでは各グラフ定義ごとに説明します。 また表に出てくるdiffとはプラグイン上で差分値計算をするかどうかです。 となっている項目はプラグインで前回の実行時の値と差分値計算して出力しています。

Inode

メトリック名(ラベル) プラグインの出力名 diff 説明
used inode.count.xvda1.used 使用中のinodeの数
free inode.count.xvda1.free 未使用のinodeの数
total inode.count.xvda1.total inodeの総数

これはわかりやすいですね。 そのままinodeの利用している状態を可視化されています。 inodeが枯渇すると新しいディレクトリやファイルが作る事ができません。 画像などの共有ファイルサーバやバックアップサーバなどは枯渇しがちなので特に注意しましょう。

Inode Percentage

メトリック名(ラベル) プラグインの出力名 diff 説明
percentage inode.percentage.xvda1.used inodeの利用率

こちらは利用状況を割合(%)で計算してくれます。 これで8割使うようだとアラートなど出せますし、全体のどれくらいを使っているか一目瞭然です。 いっぱいになると多くの場合、障害に即決しますので監視項目としてチェックするようにしましょう。

そもそもinodeって?

Linuxなどで使われているext4などのファイルシステムがファイルやディレクトリを管理するためのデータの事をinodeといいます。 上記ファイルシステムの全てのファイル、ディレクトリに対し、ユニークなinode番号が割り振られます。 このinode番号の発行できる総数が Inode total の値なのです。 inodeはinode番号以外にも次のようなものを管理しています。

  • UID(ユーザーID)
  • GID(グループID)
  • パーミッション
  • ファイルサイズ
  • ファイル作成時間
  • 更新日時
  • 実際のデータの位置(ディスク上の物理的な場所)
  • そのファイル自身への参照数

そのためinodeを使い切る前述のとおり、新しいファイルやディレクトリが作成することが出来ません。 このように普段、何気なく使っているファイルシステムですがinodeはとても大切な存在です。

inodeのアラートが来たら?

最初に言いますが ext4 は設定したinodeの容量を 後から変更する事が出来ません ext4についてはファイルシステムを作り直す必要があります。 CentOS 5, CentOS 6ではext4がデフォルトですのでご注意ください。 CentOS 7からのデフォルトの xfsxfs_growfs コマンドで増やすことができます(めっちゃ便利! 最初からinodeが枯渇することが目に見えている場合はしっかりとチューニングしておきましょう。 inodeを沢山使うサーバにはxfsを採用することも一つの選択肢ですね。 特に意識せずAmazon Linuxなどを使ってる方は今回を機に一度 df -Tファイルシステムを確認すると良いでしょう。

12日目はinodeを可視化してくれるinodeプラグインについての説明でした。 明日は多機能プロクシサーバーの王道 haproxy です。 引き続き、Mackerel プラグインアドベントカレンダーをお楽しみに!

13日目 mackerel-plugin-haproxy