インフラエンジニアの羅針盤

インフラエンジニア1〜3年目のための技術ガイド

ソースコードビルド・ユーザ通知とLinuxリソース・死活監視【201試験 主題2.04】

公開
,
LinuC Level 2 第05回 主題2.04 システムの保守



Linuxシステムを長期にわたり安定運用するためには、パッケージ化されていない独自ソフトウェアの安全なビルド・導入、共有ライブラリの依存関係解決、確実なデータ保護(バックアップ)、メンテナンス時のユーザへの通知、そして障害の予兆を捉えるパフォーマンス・死活監視が欠かせません。LinuCレベル2(201試験)の主題2.04「システムの保守とリソース管理」では、これらの運用タスクを支えるコア技術が網羅的に問われます。

特に記述式問題(コマ問)では、./configure時のパス指定オプション、patchのストリップレベル指定(-p)、共有ライブラリのキャッシュ再生成(ldconfig)、rsyncのミラーリング構文、ログイン前後の通知ファイル(/etc/issue, /etc/motd)や同報通知(wall)、vmstatsarの出力列の意味、そしてSNMPによる監視パラメータ(MIB, OID, snmpwalk)が頻出します。本記事では、AlmaLinux 9の実機検証ログに基づき、ビルド管理からユーザー通知、リソース監視・SNMPまでの手順を体系的に解説します。

検証環境
  • ホスト名: linuc-node01 (192.168.2.138)
  • OS: AlmaLinux 9.8 (x86_64)
  • カーネル: 5.14.0-570.el9.x86_64
  • 主要ツール: gcc 11.5 / make 4.3 / sysstat 12.5.4 (sar, iostat) / procps-ng 3.3.17 (vmstat, free, uptime)
本記事の学習スコープと位置づけ
公式試験の必須出題範囲 主題2.04.1(ソースビルド・共有ライブラリ)、主題2.04.2(バックアップ/リストア)、主題2.04.3(ユーザへの通知・issue/motd/wall/shutdown)、主題2.04.4(動的リソース監視・vmstat/iostat/sar)、主題2.04.5(死活監視ツール・Nagios/Zabbix/SNMP)
現場で役立つ実務拡張 rsyncによるファイル削除追従ミラーリング(–delete)実証、共有ライブラリキャッシュ(ldconfig)の最適化、SNMPv3セキュア監視アーキテクチャ
目次
  1. 1. ソースコードからのビルド手順とpatch適用
    1. 1.1 configure・make・make install の3段階ビルドフロー
    2. 1.2 patchコマンドによるソース差分適用(-pオプションの strip レベル)
  2. 2. 共有ライブラリの依存関係と管理(ldd と ldconfig)
    1. 2.1 lddによる動的リンクライブラリの依存関係確認
    2. 2.2 /etc/ld.so.conf と ldconfig によるライブラリキャッシュ更新
    3. 2.3 環境変数 LD_LIBRARY_PATH の役割と実務での注意点
  3. 3. バックアップとアーカイブ運用(tar, rsync, dd)
    1. 3.1 tarコマンドによる圧縮アーカイブ作成と展開(-z, -j, -J, -p)
    2. 3.2 rsyncによる高効率なリモート差分同期(-a, -v, -z, –delete)
  4. 4. メンテナンス告知とユーザへの通知【主題2.04.3】
    1. 4.1 ログイン前後の静的通知ファイル(/etc/issue, /etc/issue.net, /etc/motd)
    2. 4.2 ログイン中ユーザーへの即時同報通知(wall)
    3. 4.3 シャットダウン予約とキャンセル(shutdown)
  5. 5. システムリソースの動的監視(vmstat, iostat, free, uptime)【主題2.04.4】
    1. 5.1 ロードアベレージとCPUボトルネックの把握(uptime, vmstatのr列・b列)
    2. 5.2 メモリとスワップ消費の分析(free)
    3. 5.3 ディスクI/O負荷の計測(iostat)
  6. 6. 性能統計の蓄積と解析(sysstat / sar)【主題2.04.4】
    1. 6.1 sysstatのデータ収集の仕組みと /var/log/sa/
    2. 6.2 sarコマンドによる過去リソース使用率のグラフ化・レポート
  7. 7. 死活監視・リソース監視ツールとSNMP【主題2.04.5】
    1. 7.1 統合監視ソフトウェアの代表例(Nagios と Zabbix)
    2. 7.2 SNMP(Simple Network Management Protocol)による監視の仕組み
    3. 7.3 MIB(管理情報ベース)とOID(オブジェクト識別子)
    4. 7.4 SNMPのバージョンとセキュリティ(v2c vs v3)
    5. 7.5 LinuxにおけるSNMPクライアントコマンド(snmpwalk, snmpget)
  8. 8. LinuC 201試験(主題2.04)重要ポイント総整理
    1. 8.1 記述式(コマ問)頻出コマンド・オプション一覧
    2. 8.2 混同しやすい監視指標とコマンド引数
  9. 9. まとめ:リソース監視・システム保守が安定運用の土台を作る

1. ソースコードからのビルド手順とpatch適用

RPMパッケージが提供されていない最新版ツールや、独自のコンパイルオプションを必要とするミドルウェアを導入する場合、ソースコードアーカイブ(tarball)からビルドして配置します。

ソースコードビルドと共有ライブラリ解決の仕組み(configure・make・make installとldd・ldconfig)
図1:ソースコードビルドと共有ライブラリ解決の仕組み

1.1 configure・make・make install の3段階ビルドフロー

C言語等で記述されたソフトウェアのビルドは、伝統的に以下の3ステップで実行されます。

  1. 環境検査とMakefile生成(./configure):
    実行環境にコンパイラや必要なヘッダファイル、共有ライブラリが存在するか検査し、その環境に特化したMakefileを生成するスクリプトです。配置先プレフィックス(--prefix=/usr/local/<app>)や機能有効化フラグ(--with-opensslなど)を指定します。
  2. ソースコードのコンパイル(make):
    Makefileに定義された依存ルールに従い、コンパイラ(gcc等)を呼び出してソースコード(.c)をオブジェクトファイル(.o)経由で実行可能バイナリへとコンパイル・リンクします。
  3. バイナリの配置(make install):
    コンパイルされたバイナリ、設定ファイル、マニュアルなどを、--prefixで指定したインストール先ディレクトリへコピー・配置します(通常root権限が必要)。
bash – ソースビルドの標準実行手順
# アーカイブの展開
$ tar -xf app-1.2.0.tar.gz
$ cd app-1.2.0

# プレフィックスを指定して環境検査
$ ./configure --prefix=/opt/myapp

# コンパイル実行(並列ビルド -j4)
$ make -j4

# インストール実行
$ sudo make install

1.2 patchコマンドによるソース差分適用(-pオプションの strip レベル)

バグ修正や機能追加の差分(パッチファイル)を既存ソースコードに適用するには、patchコマンドを使用します。差分はdiff -u(unified diff形式)で作成されているのが標準です。

試験において最も問われるのが、ディレクトリ階層を切り捨てる**-p(strip)オプション**の数値指定です。

diff – パッチファイルヘッダの例
--- a/src/main.c
+++ b/src/main.c
@@ -10,6 +10,7 @@

上記のようにパッチ内のパスがa/src/main.cとなっている場合、カレントディレクトリがソースツリーのルート(src/がある場所)であれば、先頭の「a/」という1階層分のプレフィックスを除去して適用する必要があります。このため、**-p1**を指定します。

bash – patch コマンドの適用と取り消し
# パッチの適用(先頭1階層を除去)
$ patch -p1 < bugfix.patch

# 適用したパッチを取り消す(ロールバック: -R オプション)
$ patch -R -p1 < bugfix.patch

2. 共有ライブラリの依存関係と管理(ldd と ldconfig)

Linuxプログラムの多くは、単体で完結している静的バイナリではなく、実行時に共通部品(共有ライブラリ: .so)を動的にメモリへ読み込んでリンクする動的バイナリとして構成されています。

2.1 lddによる動的リンクライブラリの依存関係確認

実行可能バイナリがどの共有ライブラリに依存し、それぞれがシステムのどのパスにマッピングされているかを調査するには、ldd(List Dynamic Dependencies)コマンドを使用します。

bash – ldd コマンドによる依存ライブラリの確認
$ ldd /bin/ls
	linux-vdso.so.1 (0x00007ffd19d8a000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f6efabcc000)
	libcap.so.2 => /lib64/libcap.so.2 (0x00007f6efabc2000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f6efa800000)
	libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f6efab26000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f6efac00000)

もし必要なライブラリが見つからない場合、not foundと表示され、プログラムの実行は失敗します。

2.2 /etc/ld.so.conf と ldconfig によるライブラリキャッシュ更新

動的リンカ(ld.so)は、プログラム起動時に毎回ファイルシステム全域を検索するのではなく、高速化のために作成されたバイナリキャッシュファイル/etc/ld.so.cacheを参照します。

標準外のパス(/usr/local/lib/opt/myapp/libなど)に新しい共有ライブラリを配置した場合、以下の手順でシステムに認識させます。

  1. 設定ファイル/etc/ld.so.conf、または/etc/ld.so.conf.d/*.confに、ライブラリが格納されたディレクトリパスを追記します。
  2. root権限でldconfigコマンドを実行し、キャッシュ(/etc/ld.so.cache)を再構築します。
bash – ldconfig によるキャッシュ更新と登録確認
# 設定ファイルにパスを追加
$ echo "/opt/myapp/lib" | sudo tee /etc/ld.so.conf.d/myapp.conf

# キャッシュを再生成
$ sudo ldconfig

# キャッシュに登録されたライブラリ一覧を確認(-p オプション)
$ ldconfig -p | grep libpcre2
	libpcre2-posix.so.3 (libc6,x86-64) => /lib64/libpcre2-posix.so.3
	libpcre2-8.so.0 (libc6,x86-64) => /lib64/libpcre2-8.so.0

2.3 環境変数 LD_LIBRARY_PATH の役割と実務での注意点

システム全体の設定を変更せず、特定のシェルセッションや特定プロセスでのみ一時的にライブラリ検索パスを追加したい場合は、環境変数LD_LIBRARY_PATHを使用します(例: export LD_LIBRARY_PATH=/opt/myapp/lib:$LD_LIBRARY_PATH)。ただし、予期せぬバージョンのライブラリが優先リンクされる危険があるため、恒久的な設定には/etc/ld.so.confを利用するのがベストプラクティスです。

3. バックアップとアーカイブ運用(tar, rsync, dd)

Linuxサーバーの運用において、設定ファイルやデータベースのバックアップはデータ損失を防ぐ最後の防壁です。用途に応じて最適なツールを選定します。

3.1 tarコマンドによる圧縮アーカイブ作成と展開(-z, -j, -J, -p)

複数のファイルやディレクトリを1つのアーカイブファイルにまとめるのがtar(Tape Archive)です。各圧縮形式に応じたオプションの組み合わせが試験で必須となります。

圧縮形式 圧縮・展開オプション 拡張子 特徴
gzip -z--gzip .tar.gz / .tgz 処理が高速。最も標準的
bzip2 -j--bzip2 .tar.bz2 / .tbz2 gzipより高圧縮率だが処理時間は長め
xz -J--xz .tar.xz / .txz 最高クラスの圧縮率。カーネルやOSイメージに多用
bash – tar によるパーミッション保持アーカイブと展開
# パーミッションを保持(-p)して /etc を gzip 圧縮アーカイブ(-czf)
$ sudo tar -cpzf /backup/etc-backup.tar.gz /etc

# アーカイブ内容の確認(-t)
$ tar -tzf /backup/etc-backup.tar.gz | head -n 5

# 指定ディレクトリへの展開(-C オプション)
$ sudo tar -xpf /backup/etc-backup.tar.gz -C /restore/

3.2 rsyncによる高効率なリモート差分同期(-a, -v, -z, –delete)

ファイル単位の差分のみを効率的に転送し、バックアップサーバーと同期するツールがrsyncです。

主要オプション 機能詳細
-a--archive アーカイブモード。再帰(-r)、シンボリックリンク(-l)、パーミッション(-p)、タイムスタンプ(-t)、所有者(-o)、グループ(-g)、デバイスファイル(-D)を一括保持
-v--verbose 転送中のファイル名を詳細表示
-z--compress 転送中にデータを圧縮してネットワーク負荷を低減
--delete 送信元で削除されたファイルを送信先側でも削除し、完全な同一状態を維持(ミラーリング)
試験・実務で頻出する罠:末尾スラッシュ「/」の有無

rsync -av /src/ /dst/のように送信元パスの末尾にスラッシュをつけると、「/src/中身のファイル群」が/dst/直下に展開されます。一方、rsync -av /src /dst/のようにスラッシュをつけないと、「srcディレクトリそのもの」が/dst/srcとして作成されます。

4. メンテナンス告知とユーザへの通知【主題2.04.3】

システムの定期メンテナンスや緊急シャットダウンを行う際、ログイン中またはこれからログインしようとするユーザーに対して適切にメッセージを通知することは、サーバー管理者の必須業務です。Linuxにはログイン前・ログイン後・稼働中の3つのフェーズに応じた通知機構が用意されています。

4.1 ログイン前後の静的通知ファイル(/etc/issue, /etc/issue.net, /etc/motd)

テキストエディタでメッセージを記述しておくだけで、ユーザーの接続タイミングに応じて画面に表示される静的設定ファイルです。

ファイル名 表示タイミング / 対象ユーザー 主な用途・エスケープシーケンス
/etc/issue ローカル仮想コンソール(tty1〜tty6)からのログイン直前(ログインプロンプト表示前) OS名・バージョン、端末名、IPアドレス等の表示。
\n(ホスト名)、\r(カーネルリリース)、\l(tty番号)等のエスケープ文字が解釈される。
/etc/issue.net ネットワーク経由(SSH / Telnet)のログイン直前(認証前) リモート接続者への事前警告(不正アクセス禁止警告文など)。
SSHで有効化するには /etc/ssh/sshd_configBanner /etc/issue.net を指定する。
/etc/motd ログイン成功直後(認証通過後、シェルプロンプト表示前) Message Of The Day(本日のメッセージ)。メンテナンス予告、利用規約、重要アナウンスの通知。
/etc/motd.d/ 配下に分割ファイルを配置して動的生成することも可能。

4.2 ログイン中ユーザーへの即時同報通知(wall)

サーバーに現在ログインしているすべてのユーザーの端末画面(ptsやtty)に対して、緊急の告知メッセージを一斉送信(ブロードキャスト)するコマンドが wall(Write to ALL)です。

bash – wall コマンドによる緊急通知の送信
# 引数に直接メッセージ文字列を渡して一斉送信
[user01@linuc-node01 ~]$ wall "Emergency: System maintenance will start in 10 minutes. Please save your work."

# 作成済みのテキストファイルの内容を一斉送信(リダイレクト)
[user01@linuc-node01 ~]$ wall < /etc/maintenance_notice.txt

# 各ユーザーの端末画面に以下のように即座に割り込み表示される
Broadcast message from user01@linuc-node01 (pts/0) (Tue Sep  8 01:15:00 2026):

Emergency: System maintenance will start in 10 minutes. Please save your work.

4.3 シャットダウン予約とキャンセル(shutdown)

メンテナンス時にシステムを停止または再起動する際は、shutdown コマンドを使用します。時刻指定とともにメッセージを記述することで、ログイン中の全ユーザーへ自動的に wall と同様の事前通知が定期的に送信されます。

bash – shutdown コマンドによる時間指定停止とキャンセル
# 15分後にシステムをシャットダウン(停止)し、理由をユーザーへ通知
[root@linuc-node01 ~]# shutdown -h +15 "System will be shut down for memory upgrade."

# 指定時刻(例: 23:30)に再起動(-r)を予約
[root@linuc-node01 ~]# shutdown -r 23:30 "Scheduled reboot for kernel update."

# 予約中のシャットダウンを取り消し(キャンセル: -c)し、取り消しメッセージを通知
[root@linuc-node01 ~]# shutdown -c "Maintenance postponed to tomorrow."

5. システムリソースの動的監視(vmstat, iostat, free, uptime)【主題2.04.4】

サーバーの応答遅延や障害が発生した際、どのハードウェアリソースがボトルネックとなっているかを瞬時に特定するための標準ツール群を使い分けます。

Linuxリソース監視とボトルネック特定マトリクス(CPU・メモリ・ディスクIO・履歴統計)
図2:Linuxリソース監視とボトルネック特定マトリクス

5.1 ロードアベレージとCPUボトルネックの把握(uptime, vmstatのr列・b列)

システム全体の負荷状況を把握する基礎がuptimeコマンドで表示されるロードアベレージ(Load Average)です。

bash – uptime による負荷状況の確認
$ uptime
 00:15:15 up 12:43,  0 users,  load average: 0.00, 0.00, 0.00

表示される3つの数値は、それぞれ過去1分間、5分間、15分間における「CPU実行待ち、またはディスクI/O完了待ちのプロセス数の平均」です。この値がシステムの**CPU論理コア数**を超えている場合、処理待ち行列が発生していると判断します。

さらにプロセスの状態を詳細に分解するのがvmstatです。

bash – vmstat 1 2 によるリアルタイムリソース確認
$ vmstat 1 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 3141852   7492 353768    0    0    12    14   15   27  0  0 100  0  0
 0  0      0 3141852   7492 353840    0    0     0     0  120  129  0  0 100  0  0

試験対策として、以下の列の意味を正確に記憶しておく必要があります。

列名 カテゴリ 意味と危険兆候
r procs 実行可能状態(実行中またはCPU割り当て待ち)のプロセス数。コア数を超えるとCPUボトルネック
b procs 割り込み不能なスリープ状態(主にディスクI/O完了待ち)のプロセス数。ここが増えるとストレージ障害やI/O詰まり
si swap スワップイン(ディスクからメモリへ読み込まれたデータ量、KB/s)
so swap スワップアウト(メモリからディスクへ追い出されたデータ量、KB/s)。si/soが継続的に発生している状態をスラッシング(Thrashing)と呼び、著しい性能低下を招く
us cpu ユーザ空間プロセスが消費したCPU時間の割合(%)
sy cpu カーネル空間(システムコール)が消費したCPU時間の割合(%)
wa cpu I/O完了待ちでアイドル状態だったCPU時間の割合(%)。ディスク性能限界の目安
st cpu 仮想化環境でハイパーバイザが他のゲストOSにCPU時間を奪われた割合(Steal時間、%)

5.2 メモリとスワップ消費の分析(free)

メモリ消費の確認にはfree -hを使用します。

bash – free -h によるメモリ消費確認
$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.6Gi       462Mi       3.0Gi        11Mi       352Mi       3.1Gi
Swap:          3.9Gi          0B       3.9Gi

Linuxカーネルは、空いているメモリを自動的にディスクキャッシュ(buff/cache)として利用します。したがって、free列の数値が少なくても問題ありません。アプリケーションが新規に確保できる実際の残余メモリは**available列**の数値で判断します。

5.3 ディスクI/O負荷の計測(iostat)

ストレージデバイスごとの詳細なI/O統計を取得するには、sysstatパッケージに含まれるiostatを使用します(例: iostat -xz 1)。

  • %util: デバイスにI/O要求が発行されていた時間の割合(稼働率)。100%に近い場合、ストレージデバイスの処理能力が飽和しています。
  • await: デバイスに発行されたI/O要求が完了するまでの平均時間(ミリ秒、キュー待ち時間+サービス時間)。数値の急増はストレージの遅延悪化を示します。

6. 性能統計の蓄積と解析(sysstat / sar)【主題2.04.4】

リアルタイムの監視だけでなく、「昨日の夜間にサーバーが重かった原因は何か」といった事後調査を行うには、定期的にメトリクスを自動収集・蓄積するsysstatsarコマンドを活用します。

6.1 sysstatのデータ収集の仕組みと /var/log/sa/

sysstatサービスを起動すると、systemdタイマー(またはcron)経由で定期的に収集スクリプト(sa1)が実行され、システム統計データが/var/log/sa/配下に日次バイナリファイル(saDD、DDは日付2桁)として自動記録されます。また、1日1回sa2スクリプトによって日次テキストレポート(sarDD)が生成されます。

6.2 sarコマンドによる過去リソース使用率のグラフ化・レポート

sar(System Activity Reporter)コマンドは、引数で取得対象のメトリクスを指定し、過去のログファイル(-f)から特定時間帯の統計を抽出・分析します。

オプション 分析対象リソース 確認できる主要指標
sar -u CPU使用率 %user, %system, %iowait, %steal, %idle
sar -r メモリ使用量 kbmemfree, kbmemused, %memused, kbbuffers, kbcached
sar -S スワップ使用量 kbswpfree, kbswpused, %swpused
sar -b I/Oおよび転送レート tps(1秒あたりの転送回数), rtps(読み込み), wtps(書き込み)
sar -d ブロックデバイス別I/O 各ディスク(sda等)ごとのawait, %util
sar -n DEV ネットワークIF統計 各NICごとの受信パケット数(rxpck/s)、送信パケット数(txpck/s
sar -q キュー長とロードアベレージ runq-sz(実行待ちキュー長), plist-sz(プロセス総数), ldavg-1/5/15
bash – sar による過去ログの抽出例
# 当日の CPU 使用率を表示
$ sar -u

# 当月の15日のログファイルからメモリ使用率を表示(-f オプション)
$ sar -r -f /var/log/sa/sa15

# 特定時間帯(10:00から12:00まで)に絞り込んで表示(-s, -e オプション)
$ sar -u -s 10:00:00 -e 12:00:00

7. 死活監視・リソース監視ツールとSNMP【主題2.04.5】

サーバー単体での vmstatsar による監視にとどまらず、多数の物理サーバー・仮想マシン・ネットワーク機器で構成されるエンタープライズシステムでは、専用の監視ソフトウェアや標準ネットワーク管理プロトコルを用いた一元的な死活監視・性能監視が不可欠です。

7.1 統合監視ソフトウェアの代表例(Nagios と Zabbix)

LinuC試験では、オープンソースの代表的な統合監視ソフトウェアの特徴と役割が出題されます。

監視ソフトウェア 主要機能とアーキテクチャ 監視方式と特徴
Nagios 古くから広く普及しているオープンソースの監視サーバー。ホストの死活監視や各種ネットワークサービス(HTTP, SMTP, PING, SSH等)の稼働監視に特化。 プラグイン構造を採用。リモートノードのローカルリソース(ディスク使用量、ロードアベレージ等)を監視するには、クライアント側に NRPE(Nagios Remote Plugin Executor) エージェントを導入して通信する。
Zabbix 死活監視、詳細なリソースメトリクス収集、Web GUIでのグラフ可視化、障害検知・閾値アラート通知を単体で統合提供するエンタープライズ監視基盤。 専用の Zabbix Agent を監視対象サーバーに導入するエージェント方式のほか、SNMP、IPMI、JMX、エージェントレスのPING/ポート監視など多様な収集方式を標準サポートする。
Cacti / MRTG SNMP等で取得したネットワークトラフィックやリソース使用率の時系列データを、RRDtool(Round Robin Database)を用いてグラフ描画・トレンド可視化するツール。 ネットワークスイッチの帯域監視やキャパシティ管理の用途で長年利用されている。

7.2 SNMP(Simple Network Management Protocol)による監視の仕組み

SNMP(Simple Network Management Protocol) は、ベンダーやOS(Linux、Windows、ルーター、スイッチ)を問わず、ネットワークに接続された機器の稼働状態を共通規格で監視・制御するための業界標準プロトコル(UDP使用)です。

SNMPの基本構成:マネージャーとエージェント

  • SNMPマネージャー(Manager): 監視サーバー側。エージェントへ定期的に問い合わせて情報を収集したり、エージェントからの緊急通知を受信します。
  • SNMPエージェント(Agent): 監視対象機器側で稼働するデーモン(Linuxでは snmpd)。自ホストのCPU使用率、インターフェース通信量、ディスク残量などの情報を保持し、マネージャーへ応答します。

ポーリング(取得)とSNMPトラップ(通知)の通信ポート

  • ポーリング方式(要求・応答): マネージャーからエージェントの UDP 161番ポートGetRequestGetNextRequest を送信し、状態値を取得(GetResponse)します。
  • SNMPトラップ方式(自発通知): エージェント側で機器障害や閾値超過などのイベントを検知した際、マネージャーの UDP 162番ポート へ向けて自発的に警報メッセージ(Trap または InformRequest)を送信します。

7.3 MIB(管理情報ベース)とOID(オブジェクト識別子)

SNMPでやり取りされる管理データ項目は、階層的なツリー構造で定義されています。このツリー構造の仕様を MIB(Management Information Base)、各項目を一意に特定する数字の並びを OID(Object Identifier) と呼びます。

  • OIDの表記例: .1.3.6.1.2.1.1.1.0(インターネット標準MIBの sysDescr を指し、OSの種類やバージョン情報を返す)
  • 標準MIBと拡張MIB: RFCで共通定義された標準MIB(MIB-II等)に加え、各ハードウェアベンダーが独自定義するプライベートMIB(エンタープライズMIB)が存在します。

7.4 SNMPのバージョンとセキュリティ(v2c vs v3)

バージョン 認証・セキュリティ機構 特徴と注意点
SNMPv1 / SNMPv2c コミュニティ名(Community String)による簡易認証 平文の文字列(例: public)をパスワード代わりに送信するため、盗聴リスクが高い。現在でも内部LANで広く使われるがセキュリティには注意が必要。v2cでは64bitカウンタ対応や一括取得(GetBulk)が追加。
SNMPv3 USM(User-based Security Model)によるユーザー認証+暗号化(VACMによるアクセス制御) ユーザー名とパスワードによる厳格な認証(MD5/SHA)と、パケットペイロードの強力な暗号化(DES/AES)を標準サポート。インターネット経由やセキュア環境での必須バージョン。

7.5 LinuxにおけるSNMPクライアントコマンド(snmpwalk, snmpget)

Linux環境でSNMPエージェントから情報を取得するには、net-snmp-utils パッケージに含まれる snmpgetsnmpwalk コマンドを使用します。

bash – snmpwalk によるMIBツリーの巡回取得
# SNMPv2c、コミュニティ名「public」で、自ホストの system ツリー配下を一括再帰取得
[user01@linuc-node01 ~]$ snmpwalk -v 2c -c public localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux linuc-node01 5.14.0-570.el9.x86_64 #1 SMP PREEMPT_DYNAMIC
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (123456) 0:20:34.56
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost>
SNMPv2-MIB::sysName.0 = STRING: linuc-node01
SNMPv2-MIB::sysLocation.0 = STRING: Unknown

# 単一のOID(sysUpTimeInstance)のみをピンポイント取得
[user01@linuc-node01 ~]$ snmpget -v 2c -c public localhost DISMAN-EVENT-MIB::sysUpTimeInstance
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (124000) 0:20:40.00

8. LinuC 201試験(主題2.04)重要ポイント総整理

主題2.04で頻出するコマンド、オプション、設定ファイルを整理します。

8.1 記述式(コマ問)頻出コマンド・オプション一覧

コマンド 主要構文・オプション 役割・試験での要点
./configure --prefix=<dir> 環境検査とMakefile自動生成(導入先ディレクトリ指定)
make -j <jobs> Makefileに基づく並列コンパイル実行
make install バイナリおよび関連ファイルのインストール
patch -p<num>, -R unified diff形式差分の適用(ディレクトリ階層除去、ロールバック)
ldd <binary-path> 実行バイナリが必要とする動的共有ライブラリの依存一覧表示
ldconfig -p, -v /etc/ld.so.confを読み込み/etc/ld.so.cacheを再生成
tar -c, -x, -t, -v, -f, -z, -j, -J, -p アーカイブの作成・展開・一覧・圧縮形式指定・パーミッション保持
rsync -a, -v, -z, --delete リモートおよびローカルの差分ファイル同期(アーカイブモード・ミラーリング)
vmstat [interval] [count] 仮想メモリ・CPU・プロセスキュー・スワップ統計のリアルタイム表示
iostat -x, -z 拡張I/O統計(%util, await)の表示
sar -u, -r, -b, -n DEV, -f <file> 過去蓄積メトリクスの抽出・レポート作成
/etc/issue ローカル仮想コンソールログイン前に表示されるメッセージファイル
/etc/issue.net ネットワーク(SSH等)ログイン前に表示されるメッセージファイル
/etc/motd ログイン認証成功直後に表示される本日のメッセージファイル
wall [メッセージ], < [ファイル] 現在ログイン中の全ユーザー端末へ緊急同報メッセージを送信
shutdown -h, -r, +m, hh:mm, -c シャットダウン/再起動の予約(ユーザー通知伴う)および取り消し
snmpwalk -v 2c|3, -c <community> SNMPエージェントのMIBツリーを再帰的に巡回して値を取得
snmpget -v 2c|3, -c <community> <OID> 特定の単一OIDの管理値を取得
/etc/snmp/snmpd.conf SNMPエージェントデーモン(snmpd)のメイン設定ファイル

8.2 混同しやすい監視指標とコマンド引数

  • vmstat の r列 と b列:
    • rRunnable(CPU実行待ちプロセス数)。CPUコア数との比較が重要。
    • bBlocked(I/O完了待ちなどでスリープしているプロセス数)。ストレージネックの特定に直結。
  • patch の -p0 と -p1:
    • 差分ファイル内のパス記述(a/dir/file)と、現在実行しているカレントディレクトリの階層関係を正確に読み取り、除去するスラッシュの数を指定する。
  • 共有ライブラリの設定パス:
    • 設定ファイルは /etc/ld.so.conf(および /etc/ld.so.conf.d/*.conf)。
    • 生成されるバイナリキャッシュは /etc/ld.so.cache
  • ログイン通知ファイルの棲み分け:
    • /etc/issue: ログイン前・ローカルコンソール(tty)用
    • /etc/issue.net: ログイン前・ネットワーク(SSH等)用(Bannerディレクティブで有効化)
    • /etc/motd: ログイン成功直後・全ユーザー用
  • SNMPのポート番号と監視方式:
    • マネージャーからの情報取得(ポーリング): UDP 161
    • エージェントからの自発的障害通知(SNMPトラップ): UDP 162

9. まとめ:リソース監視・システム保守が安定運用の土台を作る

Linuxサーバーの信頼性は、必要なソフトウェアを適切な依存関係のもとで導入し、日常的にリソースメトリクスのベースラインを把握しておくことで担保されます。

CPU・メモリ・ディスクI/O・ネットワークの各ボトルネックがどの指標(vmstatrsi/soiostat%util等)に現れるかを体得しておくことは、試験合格のみならず実務での障害一次切り分けにおいて最も強力な武器となります。

次回(第6回)は、運用自動化の要となる「構成管理ツールAnsible入門とPlaybookによる自動化」(インベントリ設計、YAML記法の基礎、主要モジュール、冪等性の確保)を取り上げます。

前の記事
次の記事