ログ管理

HOMELinuxtips > ログ管理

ログ管理:記事リスト

ログ管理のカテゴリーには以下の記事がリストされています。

CentOS7でログ容量制限を設定する方法|journaldのSystemMaxUse設定と容量確認

「ログが増えすぎてディスクがいっぱいになった」「journaldの容量制限ってどう設定するの?」
そんな悩みを持つエンジニアは多いです。

CentOS7から採用されたjournaldは、デフォルトでファイルシステムの10%をログ領域として確保します。
放置すると気づかないうちにディスクを圧迫し、サービス停止につながることがあります。

この記事では、journaldのログ容量制限の設定方法と、現在のログ使用量の確認コマンドを解説します。
【この記事でわかること】
・journaldとは?CentOS7のログ管理の仕組み
・journaldのログ容量制限を設定する方法
・その他の容量制限パラメータ
・古いログを手動で削除する方法

続きを読む "CentOS7でログ容量制限を設定する方法|journaldのSystemMaxUse設定と容量確認"

CentOS7でログ保存設定をする

「CentOS7でサーバーを再起動したらjournalのログが消えてしまった。永続化する方法はないのか」
CentOS7のjournaldは、デフォルトでは /run/log/journal(tmpfs)に保存するため、再起動するとログが消えてしまいます。

この記事では、journaldのログを再起動後も保持する永続保存の設定方法を解説します。

【この記事でわかること】

・デフォルトのjournaldログは /run/log/journal(tmpfs)に保存されOSの再起動で消える
Storage=persistent 設定で /var/log/journal/ に永続保存される
・設定後は systemctl restart systemd-journald.service でサービスを再起動する
・machine-id名のサブディレクトリ配下にログが保存される

続きを読む "CentOS7でログ保存設定をする"

journalctlコマンドでCentOS7のsystemdログを確認する方法|フィルタリング・リアルタイム監視の実践ガイド

「CentOS 7以降でログの確認方法が変わったと聞いたけど、journalctlの使い方がわからない」
「journaldとrsyslogの違いや関係性を理解したい」

この記事では、CentOS 7以降のsystemd環境で使用するjournalctlコマンドの基本的な使い方から、実務でよく使うフィルタリングの方法まで解説します。
【この記事でわかること】
・journalctlはsystemdのログ管理システム(journald)のログを表示するコマンド
・-b でブートログ、-u でサービス別ログ、--since/--until で日時フィルタリングができる
・-f でtailと同様のリアルタイム監視、-e で末尾からジャンプして最新ログを確認できる

続きを読む "journalctlコマンドでCentOS7のsystemdログを確認する方法|フィルタリング・リアルタイム監視の実践ガイド"

Linuxのrsyslogでログ出力先とレベルを設定する方法|/etc/rsyslog.confの書き方を解説

「どのプロセスのログがどのファイルに出力されているのか把握できていない」「特定のサービスのエラーだけを別ファイルに記録したい」

こういった悩みを解決するのが /etc/rsyslog.conf の設定です。Linuxのログ管理は rsyslog(または syslog)デーモンが担っており、どのログをどこに出力するかをこのファイルで細かく制御できます。

【この記事でわかること】

・/etc/rsyslog.confでログのファシリティ・プライオリティ・出力先を設定できる
・ファシリティはログのカテゴリ(kern/mail/cronなど)を意味する
・プライオリティはログの重要度(debug/info/warning/err/critなど)を意味する
・設定変更後はrsyslogサービスの再起動が必要

rsyslog.confの基本構造

/etc/rsyslog.conf の設定は「セレクタ(ファシリティ.プライオリティ)」と「アクション(出力先)」の組み合わせで記述します。

[root@Tiger ~]# vi /etc/rsyslog.conf #### RULES #### # *.info以上のレベルを /var/log/messages に記録(mail,authpriv,cronを除く) *.info;mail.none;authpriv.none;cron.none /var/log/messages # 認証メッセージはアクセス制限されたファイルに記録 authpriv.* /var/log/secure # メールメッセージを記録(先頭の-はディスク書き込みを非同期にする意味) mail.* -/var/log/maillog # cronのメッセージを記録 cron.* /var/log/cron # 全員に緊急メッセージを通知 *.emerg * # ブートメッセージを記録 local7.* /var/log/boot.log

ファシリティ(ログのカテゴリ)

ファシリティはログを出力するプロセスやカテゴリを表します。

auth / authpriv:認証メッセージ(sshなど)
cron:cronデーモンのメッセージ
daemon:各種デーモンのメッセージ
kern:カーネルメッセージ
mail:メール関連メッセージ
syslog:rsyslog自身のメッセージ
local0 ~ local7:独自アプリケーション用の汎用ファシリティ
*:すべてのファシリティ

プライオリティ(ログの重要度)

プライオリティは重要度の低い順に以下のとおりです。

debug:デバッグ情報
info:通常の情報
notice:通知
warning:警告
err:エラー
crit:致命的な問題
alert:すぐに修正すべき問題
emerg:システム不能の非常事態

プライオリティを指定すると、そのレベル以上のすべてのメッセージが対象になります。特定レベルのみを対象にするには = を使います(例:=debug)。none を指定するとそのファシリティを除外できます。

設定変更の手順

1. rsyslog.confを編集する

[root@Tiger ~]# vi /etc/rsyslog.conf

2. rsyslogを再起動して設定を反映する

# CentOS 6系 [root@Tiger ~]# /etc/rc.d/init.d/rsyslog restart システムロガーを停止中: [ OK ] システムロガーを起動中: [ OK ] # CentOS 7以降 [root@server ~]# systemctl restart rsyslog

応用・カスタム設定の例

特定アプリのエラーだけを別ファイルに記録する

# /etc/rsyslog.conf に追記する # local0ファシリティのerr以上を独自ファイルに記録 local0.err /var/log/myapp-error.log

ログを別サーバーに転送する

アクションに @ホスト名(UDP)または @@ホスト名(TCP)を指定することで、別サーバーにログを転送できます。

# 全てのログをUDPで別サーバーへ転送 *.* @192.168.0.200

本記事のまとめ

/etc/rsyslog.conf でログの出力先・ファシリティ・プライオリティを設定する
・設定書式は「ファシリティ.プライオリティ 出力先」
none で特定ファシリティを除外、=プライオリティ で特定レベルのみを対象にする
・変更後は systemctl restart rsyslog(CentOS 7以降)で反映する

続きを読む "Linuxのrsyslogでログ出力先とレベルを設定する方法|/etc/rsyslog.confの書き方を解説"

dmesgコマンドでLinuxの起動時ログを確認する方法|grepで情報を絞り込む実例付き

Linuxが起動するとき、カーネルはメモリ・CPU・ストレージ・ネットワークカードなど、あらゆるハードウェアの認識状況をリングバッファ(カーネルの内部メモリ)に記録します。

この記録を読み出すのが dmesg コマンドです。新しいハードウェアを追加した際や、起動時にエラーが発生した際の原因調査に不可欠なコマンドです。

【この記事でわかること】

・dmesgコマンドで起動時のカーネルログ(/var/log/dmesg)を確認できる
・grep・lessと組み合わせることで必要な情報だけを素早く抽出できる
・ハードウェアの認識状況やエラーの有無をdmesgで確認するのが現場の定番
・CentOS 7以降ではjournalctlも合わせて使うと効果的

dmesgコマンドとは

dmesg コマンドは、カーネルのリングバッファに記録されたメッセージを表示します。このリングバッファの内容は /var/log/dmesg ファイルにも保存されていますが、dmesgコマンドを使う方が確実に最新情報を取得できます。

基本的な使い方

1. dmesgの基本実行

[root@Tiger ~]# dmesg Initializing cgroup subsys cpuset Initializing cgroup subsys cpu Linux version 2.6.32-279.el6.i686 (mockbuild@c6b9.bsys.dev.centos.org) ... KERNEL supported cpus: Intel GenuineIntel AMD AuthenticAMD BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009f800 (usable) 〈以下省略〉

情報量が非常に多いため、そのまま流し読みするのは実用的ではありません。以下のように絞り込んで使うのが現場の定番です。

2. lessでページング表示する

[root@Tiger ~]# dmesg | less

Space で次のページ、q で終了します。

3. grepで特定キーワードを抽出する

CPUやメモリ、特定のデバイスに関する情報だけを取り出したい場合は grep と組み合わせます。

# CPU情報だけを表示する [root@Tiger ~]# dmesg | grep CPU Transmeta TransmetaCPU SMP: Allowing 1 CPUs, 0 hotplug CPUs Initializing CPU#0 CPU0: Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz stepping 02 # メモリ情報を表示する [root@Tiger ~]# dmesg | grep -i memory # ネットワークカードの認識状況を確認する [root@Tiger ~]# dmesg | grep -i eth

応用・よく使う絞り込み例

エラーや警告メッセージを確認する

起動時に問題が発生していないかを確認する際は、エラーや警告メッセージを優先して確認します。

# エラーメッセージを確認する [root@Tiger ~]# dmesg | grep -iE "error|fail|warn"

ストレージデバイスの認識状況を確認する

新しいHDD・SSDを追加した際の認識状況を確認できます。

# SATAデバイスの認識状況 [root@Tiger ~]# dmesg | grep -i sda [ 2.345678] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 2.345900] sd 0:0:0:0: [sda] Write Protect is off

タイムスタンプ付きで表示する(CentOS 7以降)

CentOS 7/RHEL 7以降では -T オプションで人間が読みやすい形式のタイムスタンプを付与できます。

[root@server ~]# dmesg -T | tail -20 [Tue Apr 7 10:30:01 2026] usb 1-1: new high-speed USB device number 3 using xhci_hcd [Tue Apr 7 10:30:01 2026] usb 1-1: New USB device found, idVendor=0781, idProduct=5567

トラブルシュート

「dmesg: read kernel buffer failed: Operation not permitted」が出る場合

CentOS 7.6以降やRHEL 8以降では、一般ユーザーはdmesgを実行できなくなった場合があります。

# root権限で実行するか、sysctl設定を変更する [root@server ~]# dmesg # または $ sudo dmesg

本記事のまとめ

dmesg:カーネルのリングバッファに記録された起動時ログを表示
dmesg | less:ページング表示で読みやすく
dmesg | grep CPU:特定キーワードで絞り込む
dmesg | grep -iE "error|fail|warn":エラー・警告を抽出
・CentOS 7以降では dmesg -T でタイムスタンプ付き表示が可能

続きを読む "dmesgコマンドでLinuxの起動時ログを確認する方法|grepで情報を絞り込む実例付き"

lastlogコマンドで最終ログイン記録を確認する方法|ユーザー別の確認と活用例

サーバー管理をしていると「このユーザー、本当に最近ログインしているのか?」「不審なアカウントが使われていないか確認したい」という場面が出てきます。

Linuxでは、各ユーザーの最終ログイン時刻を記録した /var/log/lastlog ファイルが存在します。このファイルはバイナリ形式のため、catless では読めません。専用の lastlog コマンドを使って参照します。

【この記事でわかること】

・lastlogコマンドで全ユーザーの最終ログイン時刻を一覧表示できる
・-uオプションで特定ユーザーの最終ログインだけを絞り込める
・/var/log/lastlogはバイナリ形式のためcatコマンドでは読めない
・セキュリティ監査でlastlogを使う実務的な手順を解説

lastlogコマンドとは

lastlog コマンドは、/var/log/lastlog ファイルに記録された「ユーザーごとの最終ログイン情報」を読み取って表示します。/var/log/wtmp(ログイン履歴)とは異なり、あくまでも「最後にログインした記録のみ」を保持する点が特徴です。

基本的な使い方

1. 全ユーザーの最終ログインを確認する

引数なしで実行すると、システム上のすべてのユーザーとその最終ログイン時刻が表示されます。

[root@Tiger ~]# lastlog ユーザ名 ポート 場所 最近のログイン root tty1 金 8月 24 13:45:27 +0900 2012 bin **一度もログインしていません** daemon **一度もログインしていません** adm **一度もログインしていません** lp **一度もログインしていません** sync **一度もログインしていません** shutdown **一度もログインしていません** 〈中略〉 sshd **一度もログインしていません** tcpdump **一度もログインしていません** pakira pts/0 192.168.0.162 水 10月 10 12:21:19 +0900 2012

**一度もログインしていません**」と表示されているユーザーは、システムアカウントなどログインが想定されていないアカウントです。これらが突然ログイン履歴を持っていたら、権限昇格攻撃の可能性があります。

2. 特定ユーザーのみを確認する(-uオプション)

特定のユーザーの最終ログインだけを確認したい場合は、-u オプションでユーザー名を指定します。

[root@Tiger ~]# lastlog -u pakira ユーザ名 ポート 場所 最近のログイン pakira pts/0 192.168.0.162 水 10月 10 12:21:19 +0900 2012

3. 一定期間ログインしていないユーザーを確認する(-bオプション)

-b 日数 を指定すると、指定した日数より前にログインしたユーザー(長期間ログインしていないユーザー)のみ表示できます。

# 90日以上ログインしていないユーザーを表示する [root@Tiger ~]# lastlog -b 90

休眠アカウントのリストアップや定期的なユーザー棚卸しに活用できます。

応用・セキュリティ監査での実務活用

lastlogとlastコマンドの違い

混同されやすいコマンドとの違いを整理しておきます。

lastlog:ユーザーごとの「最終ログイン時刻のみ」を保持(/var/log/lastlog参照)
last:ログイン・ログアウトの全履歴を保持(/var/log/wtmp参照)
lastb:ログイン失敗の履歴(/var/log/btmp参照)

セキュリティ監査では、3つのコマンドを組み合わせて調査するのが現場の定番手順です。

不審なシステムアカウントのログインを検出する

本来ログインしないはずの bindaemon などのシステムアカウントに最終ログイン時刻が記録されていた場合、セキュリティインシデントの可能性があります。

# ログイン記録があるユーザーのみ一覧表示する [root@Tiger ~]# lastlog | grep -v "**一度もログインしていません**"

トラブルシュート

「/var/log/lastlog が存在しない」場合

/var/log/lastlog が存在しない場合、lastlogコマンドはエラーを表示します。ファイルが削除されている場合は空ファイルを作成することで記録が再開されます(過去の記録は失われます)。

# lastlogファイルを新規作成する(過去の記録は復元不可) [root@Tiger ~]# touch /var/log/lastlog [root@Tiger ~]# chmod 644 /var/log/lastlog

本記事のまとめ

lastlog:全ユーザーの最終ログイン時刻を表示(/var/log/lastlog参照)
lastlog -u ユーザー名:特定ユーザーの最終ログインを確認
lastlog -b 日数:長期間ログインしていないユーザーを抽出
・システムアカウントへの不審なログインはセキュリティインシデントの兆候
/var/log/lastlog はバイナリ形式のため cat では読めない

続きを読む "lastlogコマンドで最終ログイン記録を確認する方法|ユーザー別の確認と活用例"

セキュリティ関連のログを表示する

「不正アクセスの痕跡やSSHの認証失敗を確認したい」
Linuxのセキュリティ関連のログは /var/log/secure(または /var/log/auth.log)に記録されています。

この記事では、セキュリティログの確認方法と、不審なログの読み方を解説します。
【この記事でわかること】
・/var/log/secure(CentOS/RHEL)または /var/log/auth.log(Ubuntu/Debian)にSSH認証やsudoのログが記録される
・tail -f /var/log/secure でセキュリティログをリアルタイム監視できる
・grep "Failed password" /var/log/secure で認証失敗の試行を一覧抽出できる
・journalctl -u sshd でRHEL 7以降のSSHセキュリティログを確認できる

続きを読む "セキュリティ関連のログを表示する"

rsyslogを起動、停止するには

「rsyslogを起動・停止・再起動するにはどうすればいいのか」
Linuxのログ管理を担う rsyslog は、サーバー運用中に再起動が必要なシーンが多くあります。

この記事では、rsyslogのステータス確認・起動・停止・再起動の各コマンドを、CentOS 6以前(SysVinit)とCentOS 7以降(systemd)の両方で解説します。
【この記事でわかること】
・systemctl start/stop/restart rsyslog でCentOS 7以降のrsyslogを起動・停止・再起動できる
・systemctl status rsyslog でrsyslogの現在の稼働状態を確認できる
・systemctl enable rsyslog でOS起動時のrsyslog自動起動を設定できる
・CentOS 6以前では /etc/init.d/rsyslog start/stop/condrestart を使う

続きを読む "rsyslogを起動、停止するには"

インストールログを確認する

「Linuxのインストール後に、何がインストールされたか確認したい」
そんなときに役立つのが、インストールログファイルです。

CentOS 6以前では /root/install.log に、RHEL 7 / CentOS 7以降では /var/log/anaconda/ ディレクトリにインストールログが保存されます。

この記事では、各バージョンのインストールログの場所と確認方法を解説します。
【この記事でわかること】
・インストールログは /var/log/yum.log や /var/log/dnf.log で確認できる
・yum history や dnf history でトランザクション履歴を管理できる
・rpm -qa --last でパッケージのインストール日時を確認できる

続きを読む "インストールログを確認する"

Linux無料マニュアル(図解60P) 名前とメールで30秒登録