LinuC レベル1 Version10.0
技術解説無料セミナー
2020/1/17 開催

主題
副題

1.09
重要なシステムサービス
1.09.2システムのログ

本日の講師
ALJ Education Plus 株式会社
（LPI-Japanアカデミック認定校）
代表取締役 山本 篤美© LPI-Japan / EDUCO all rights reserved.

講師紹介
■会社概要

#LinuC学習中

ALJ Education Plus 株式会社
（LPI-Japanアカデミック認定校）
代表取締役 山本 篤美

・開発/登壇実績

開発・保守・運用経験 約12年
新入社員研修 開発/NW/サーバ系 6年
Open Source Conference 2020 Online/Spring 登壇© LPI-Japan all rights reserved.

2

LinuCレベル１／レベル２ Version10.0とは■LinuCとは#LinuC学習中

クラウド時代の即戦力エンジニアであることを証明するLinux技術者認定資格✓現場で「今」求められている新しい技術要素に対応• オンプレミス／仮想化を問わず様々な環境下でのサーバー構築• 他社とのコラボレーションの前提となるオープンソースへの理解• システムの多様化に対応できるアーキテクチャへの知見✓全面的に見直した、今、身につけておくべき技術範囲を網羅
今となっては使わない技術やコマンドの削除、アップデート、新領域の取り込み✓Linuxの範疇だけにとどまらない領域までカバー
セキュリティや監視など、ITエンジニアであれば必須の領域もカバー© LPI-Japan all rights reserved.

3

新しくなった「LinuC」の紹介■Version10.0と従来の出題範囲の比較
テーマ
仮想技術
LinuC-1

オープンソースの文化
その他
仮想化技術
システムアーキテクチャ

LinuC-2

Version 10.0
・仮想マシン／コンテナの概念
・クラウドセキュリティの基礎・オープンソースの定義や特徴
・コミュニティやエコシステムへの貢献→（Version10.0で削除）
・仮想マシンの実行と管理（KVM）
・コンテナの仕組みとDockerの導入
・クラウドサービス上のシステム構成
・高可用システム、スケーラビリティ、他・統合監視ツール（zabbix）

その他

・自動化ツール（Ansible）→（Version10.0で削除）#LinuC学習中
従来←（Version10.0で新設）←（Version10.0で新設）
アクセシビリティ、ディスククォータ、プリンタの管理、SQLデータ管理、他←（Version10.0で新設）←（Version10.0で新設）←（Version10.0で出題範囲に含む）
RAID、記憶装置へのアクセス方、FTPサーバーの保護、他© LPI-Japan all rights reserved.

4

セミナー内容#LinuC学習中

今回のテーマ

ログ管理
主題
副題

1.09
重要なシステムサービス
1.09.2システムのログ© LPI-Japan all rights reserved.

5

セミナー内容
主題
副題
重要度

1.09
重要なシステムサービス
1.09.2システムのログ5・rsyslogデーモンを設定できる
これには、ログ出力を中央のサーバに送信するようログデーモンを設定できる。
または中央のログサーバーとしてログ出力を受け入れることも含まれる。

概要
・systemdのジャーナルサブシステムを使用できる・ログのローテーション、圧縮、削除を自動化できる© LPI-Japan all rights reserved.

6

セミナー内容■目次
1.ログ管理の概要
ログ管理の全体像
2.ロギング機能
syslogの設定方法
rsyslogの設定方法
systemd jounalの設定方法
3.ログローテーション
loglotare.confの設定方法© LPI-Japan all rights reserved.

7

セミナー内容■目次
1.ログ管理の概要
ログ管理の全体像
2.ロギング機能
syslogの設定方法
rsyslogの設定方法
systemd jounalの設定方法
3.ログローテーション
loglotare.confの設定方法© LPI-Japan all rights reserved.

8

1.ログ管理の概要■ログ管理の全体像
loggermaild

出来事（イベント）/var/log/

ログローテーション

ロギング

分割

メッセージ収集

メッセージ

crond
klogd

ログ生成
ログ出力

ログ

圧縮
蓄積
破棄

サーバー

• ログとは、システムの出来事を一定の形式で時系列に記録・蓄積したデータのこと• トラブルシューティングを行うときにもっとも有益な情報源の1つ• イベント通知メッセージを収集し、ログを生成/出力する行為のことをロギングという• 一定の期間でログを分割/圧縮/破棄する行為のことをログローテーションという© LPI-Japan all rights reserved.

9

1.ログ管理の概要■ログ管理の全体像
ロギング
メッセージ収集
syslogdrsyslogd

ログ生成

ログローテーション
ログ出力

syslog-ng/etc//etc//etc/

syslog.conf

rsyslog.conf

syslog-ng.conf

分割

圧縮

蓄積

systemd-journald

crond/etc/systemd//etc/cron.daily/

journal.conf

破棄

logrotate• ロギング機能を持ったLinuxのソフトウェアとしてsyslog、rsyslog、syslog-ng、systemd jounalがある• ログローテーションはcronで動いている• LinuC試験では主に、rsyslog、systemd jounal、ログローテーションが出題される© LPI-Japan all rights reserved.

10セミナー内容■目次
1.ログ管理の概要
ログ管理の全体像
2.ロギング機能
syslogの設定方法
rsyslogの設定方法
systemd jounalの設定方法
3.ログローテーション
loglotare.confの設定方法© LPI-Japan all rights reserved.

11

2.ロギング機能（syslog）■syslogの特徴
最も古くから使用されているログ管理SW。CentOS5でデフォルトとして実装されている。
/var/log/

loggermaild

出来事（イベント）

syslogd

メッセージ

crond

ログ

/etc/
syslog.conf

klogd

ログ

サーバー

• 1980年代にEric Allman氏が開発した最も古くから使用されているログ管理SW• 元々sendmailの一部として開発され、2001年にRFC3164で標準化された• その後RFC3164が廃止され、現在はRFC5424で標準化されている• syslogdによって動作しており、/etc/syslog.configの設定によって収集対象のメッセージとログの出力先が決まる© LPI-Japan all rights reserved.

12

2.ロギング機能（syslog）■/etc/syslog.conf
syslogdの設定ファイル。selector(facilityとpriority)とactionで構成されている。
書式

selector
facility.priority

actionログの出力先メッセージの種類

authpriv.*
facility priority/var/log/secure
actionselector• syslog.confはselectorとactionで構成されており、空白で区切られている• selectorは、収集対象のメッセージの種類を決める設定項目• selectorはさらに、facility(収集先)とpriority(重要度)で構成されている• actionはログの出力先を決める設定項目© LPI-Japan all rights reserved.

13

2.ロギング機能（syslog）■facilityの種類
メッセージの収集先を表す
コード 内容syslog.conf指定
0 カーネルメッセージkern
1 ユーザーレベルメッセージ user
2 メールサービス
mail
3 システムデーモン
daemon4 認証系サービス
auth
5 syslogdデーモン
syslog6 プリンタシステムlpr7 ニュースシステム
news
8 UUCP
uucp
9 クロックデーモン
cron
10 認証メッセージ
authpriv
11 FTPデーモン
ftp
16〜23 ローカル用
local0〜7*.info;mail.none;authpriv.none;cron.none
authpriv.*/var/log/secure

mail.*-/var/log/maillog

cron.*/var/log/cron*.emerg*

uucp,news.crit/var/log/spooler

local7.*/var/log/boot.log

cron.=err/var/log/maillog̲err/var/log/messages• 収集元のイベントメッセージを0〜23までのコード番号で分類している• facilityを複数指定する場合は、カンマ( , )を指定する© LPI-Japan all rights reserved.

14

2.ロギング機能（syslog）■priorityの種類
メッセージの重要度を表す
優先度 コード priority
高0emerg
1
alert
2
crit
3
err
4
warning
5
notice
6
info
低7
debug
none

内容
緊急警報
致命的エラー
警告
通知
情報
デバック情報出力しない

authpriv.*/var/log/secure

mail.*;mail.!crit-/var/log/maillog

cron.=err
mail.*;mail.!=crit/var/log/maillog̲err-/var/log/maillog• priorityは通常、指定したpriority以上の優先度が高いログが出力される• 指定したpriority以下を出力したい場合は、! を組み合わせて指定する• 特定のpriorityのみを出力したい場合は = を指定する• 特定のpriority以外を出力したい場合は、!= を組み合わせて指定する© LPI-Japan all rights reserved.

15

2.ロギング機能（syslog）■actionの種類
出力先の設定action内容/ファイルの絶対パス ファイルへ出力-/ファイルの絶対パス フラッシュ動作を抑制する/dev/console
コンソールへ出力/dev/ttyN| 名前付きパイプ
メッセージを指定した名前付きパイプへ出力する@ホスト名
リモートホストへ転送
ユーザ名
ユーザへ通知*ユーザ全てに通知

authpriv.*/var/log/secure

mail.*-/var/log/maillog

cron.*@192.168.

*.emerg*

uucp,news.crit/var/log/spooler

local7.*/var/log/boot.log

cron.=err/var/log/maillog̲err• ログをファイルに出力したい場合は、ファイルのパスを指定する• ログをほかのプログラムに渡したい場合は、「|」を指定する• ログをリモートホストに転送したい場合は「@ホスト名」で指定する• ログをユーザーのコンソールに表示したい場合は、ユーザー名を指定する© LPI-Japan all rights reserved.

16

2.ロギング機能（syslog）■/etc/syslog.confの設定例(デフォルト)# cat /etc/syslog.conf | grep -v '^#' | grep -v '^\s*$'*.info;mail.none;authpriv.none;cron.none/var/log/messages

authpriv.*/var/log/secure

mail.*
cron.*-/var/log/maillog/var/log/cron*.emerg*

uucp,news.crit/var/log/spooler

local7.*/var/log/boot.log© LPI-Japan all rights reserved.

17

2.ロギング機能（syslog）■loggerコマンド
手動でシステムログを記録するコマンド

logger [オプション] [メッセージ]
オプション-i(--id)-s(--stderr)-f ファイル名-p(priority) facility.priority-t(--tag) タグ説明loggerプロセスのプロセスID（PID）も併せて記録する
記録した内容を標準エラー出力にも出力する
指定したファイルの内容をシステムログに追加する
facility.priorityを指定して記録する
ログの各行に指定したタグを出力する## logger -i -t maillog -p mail.info 'メール送信しました。'# tail -n 1 /var/log/maillog
Jan 7 19:46:37 localhost maillog[4186]: メール送信しました。

© LPI-Japan all rights reserved.

18

2.ロギング機能（syslog）■syslogのデモ
ユーザ変更（vagrant→rootへ）

rsyslogd

メッセージ
出来事（イベント）/var/log/
ログ

/etc/

messages

syslog.conf
secureサーバー*.info;mail.none;authpriv.none;cron.none/var/log/messages

authpriv.*/var/log/secure© LPI-Japan all rights reserved.

19

2.ロギング機能（rsyslog）■rsyslogの特徴
syslogの拡張版。rsyslogはreliable-syslogの略。CentOS6からデフォルトで実装されている。
/var/log/

loggermaild

出来事（イベント）

crond

rsyslogd

メッセージ

ログ

/etc/
rsyslog.conf

klogd
サーバー

ログ(TCP)
ログ(UTP)

ログサーバ• Reiner Gerhards氏が主開発者として、syslogを元に2004年から開発が始まった• TCP経由でのログ転送、マルチスレッド対応、各種DBへの書き込み対応• rsyslogdで動いており、rsyslog.configファイルでログの出力先を設定している• syslog.confと互換性がある© LPI-Japan all rights reserved.

20

2.ロギング機能（rsyslog）■/etc/rsyslog.conf#### MODULES ####読み込む対象$ModLoad imuxsock$ModLoad imjournal
共通的な設定#### GLOBAL DIRECTIVES ####
$ActionFileDefaultTemplate RSYSLOG̲TraditionalFileFormat$IncludeConfig /etc/rsyslog.d/*.conf
ログの処理方法#### RULES ####*.info;mail.none;authpriv.none;cron.none/var/log/messages
authpriv.*
mail.*/var/log/secure-/var/log/maillog• rsyslog.conf の設定は主に3つに分かれている• 「MODULES」はLoad する Module （読み込む対象）を指定する項目• 「GLOBAL DIRECTIVES」は共通的な設定を指定する項目• 「RULES」は「Input Module」 から読み込んだログの処理方法を決める項目© LPI-Japan all rights reserved.

212.ロギング機能（rsyslog）■/etc/rsyslog.conf（MODULES）の設定例#### MODULES ####$ModLoad imuxsock$ModLoad imjournal

ローカルロギングのサポート
systemd journalのサポート$ModLoad imudp$UDPServerRun 514$AllowedSender UDP, 127.0.0.1, *.example.jp, 192.168.0.0/24

UDPの受信を許可する場合の設定
UDPのポートの設定
転送元を制限する場合の設定
TCPの受信を許可する場合の設定$ModLoad imtcp$InputTCPServerRun 514

TCPのポートの設定$AllowedSender UDP, 127.0.0.1, *.example.jp, 192.168.0.0/24

転送元を制限する場合の設定• モジュールを追加する場合は「$ModLoad」で指定する• ローカルのイベントメッセージを取込みたい場合は、「imuxsock」と指定する• journalからログを読み込みたい場合は、「imjournal」と指定する• リモートから転送されたログをUDPで受け付ける場合は、「imudp」と指定する• リモートから転送されたログをTCPで受け付ける場合は、「imtcp」と指定する© LPI-Japan all rights reserved.

22

2.ロギング機能（rsyslog）■/etc/rsyslog.conf（GLOBAL DIRECTIVES）の設定例#### GLOBAL DIRECTIVES ####
$ActionFileDefaultTemplate RSYSLOG̲TraditionalFileFormat$IncludeConfig /etc/rsyslog.d/*.conf#$ActionFileEnableSync on

ログのタイムスタンプの書式/etc/rsyslog.d/*.conf ファイルの設定も読み込む

フラッシュ動作が抑制（コメントアウトまたはoffを設定する）• ログタイムスタンプの書式を設定設定は、$ActionFileDefaultTemplateで指定する• 他の設定ファイルを読み込みたい場合は、$IncludeConfigで指定する• ログ出力時のバッファのフラッシュ動作設定は、$ActionFileEnableSyncで設定する© LPI-Japan all rights reserved.

23

2.ロギング機能（rsyslog）■/etc/rsyslog.conf（RULES）の設定例#### RULES ####*.info;mail.none;authpriv.none;cron.none
authpriv.*/var/log/messages/var/log/secure/var/log/messagesへログ出力する

cron.*/var/log/cron/var/log/messagesへログ出力する*.*@リモートホスト名

リモートホストへUDPで伝送する*.*@@リモートホスト名$template mytemplate,"日時：%timegenerated% 内容：%msg%\n"mail.*/var/log/custom.log;mytemplate/var/log/messagesへログ出力する

リモートホストへTCPで伝送する
ログ出力の形式をmytemplateという名前で定義
mytemplateを適用• syslog.confと同じ設定方法に加えて、リモートホストへの転送(TCP)が可能• $templateで、出力先や出力メッセージの形式をカスタマイズすることが可能(%マクロ名%で設定可能）© LPI-Japan all rights reserved.

24

2.ロギング機能（rsyslog）■rsyslogのデモ
出来事（イベント）

rsyslogd

メッセージ/etc/

rsyslogd
/etc/

転送

サーバー

リモートサーバー

192.168.33.200

192.168.33.100

mail.alert@@192.168.33.100

ログ

rsyslog.conf

rsyslog.conf#### RULES ####/var/log/#### MODULES ####$ModLoad imtcp$InputTCPServerRun 514#### RULES ####
mail.alert/var/log/maillog© LPI-Japan all rights reserved.

252.ロギング機能（systemd-journald）■systemd-journald（systemd-journald.service）
systemdのジャーナルサブシステム。
loggermaild

出来事（イベント）

crond
klogd

systemd-journald

メッセージ/etc/systemd//run/log/journal

journald.conf

サーバー

バイナリ形式• systemdを採用しているシステムではsystemd-journaldでログを一元管理している• systemd-journaldは、systemdから起動したプロセスの標準出力やsyslogへのログメッセージをバイナリ形式で記録している• systemd-journaldの設定ファイルは/etc/systemd/journald.confである• systemd-journaldで収集したログはjournalctlコマンドで参照することができる© LPI-Japan all rights reserved.

26

2.ロギング機能（systemd-journald）■/etc/systemd/journald.conf# cat /etc/systemd/journald.conf・・・[Journal]#Storage=auto• CentOS7のデフォルトは全て設定項目がコメントアウトされている• デフォルトのログの出力先は、メモリー上（/run/log/journal/配下）になっており、再起動するとログが消えてしまう• 永続的にログを残したい場合は、Storage=persistentで設定する（もしくは/var/log/journalディレクトリを作成しておく）© LPI-Japan all rights reserved.

27

2.ロギング機能（systemd-journald）■journalctlコマンド
systemd journalに格納されたログを参照するコマンド
loggermaild

出来事（イベント）

crond
klogd

journalctl

systemd-journald

メッセージ/etc/systemd//run/log/journal

journald.conf

サーバー

バイナリ形式• systemd-journaldで収集したログはjournalctlコマンドで参照することができる• ログがカテゴライズされて保管されている、期間を指定して参照できる点が特徴• オプション無しで実行すると、記録されているログを最初からすべて表示する（デフォルトはページャを使って、ページ分割して表示）© LPI-Japan all rights reserved.

28

2.ロギング機能（systemd-journald）■journalctlコマンド
systemd journalに格納されたログを参照するコマンド

journalctl [オプション] [検索文字列]
オプション-a (--all)-b (--boot)-f (--follow)-k (--dmesg)-l (--full)-n (--lines)-o (--output)

検索文字列

説明
画面表示できない文字列を表示する
特定のシステム起動時のログを表示する
新規に追加されたログをリアルタイムに表示する
カーネルからのメッセージを表示する
画面で表示可能な全てのログを表示する
直近のログから指定行数分を表示する（デフォルトは10行）
ログの出力形式を設定する
通常より詳細（verbose）、JSON形式(json)が指定可能
最古のログからの表示（デフォルト）の逆にし、最新のログから表示
指定した日付時刻以降のログを表示
特定のログからのユニットを表示
追加の説明を表示（メッセージカタログがある場合）※エマージェンシーモードで起動時に”journalctl -xb”でログを確認できるように表示される
説明̲PID=[プロセス番号]
̲UID=[ユーザ番号]̲SYSTEMD̲UNIT=[ユニット名]

プロセス番号の指定ユーザIDを指定
Unit名を指定(オプションの-uと同じ)-r (--reverse)--sence-u (--unit)-x© LPI-Japan all rights reserved.

29

2.ロギング機能（systemd-journald）■systemd-cat

Systemdを採用したシステム上でメッセージをログに記録するコマンド

systemd-cat [オプション] [コマンド]# systemd-cat date# journalctl
Jan 07 19:01:01 CentOS7̲SV anacron[2480]: Will run job ̀cron.daily' in 25 min.
Jan 07 19:01:01 CentOS7̲SV anacron[2480]: Jobs will be executed sequentially
Jan 07 19:04:47 CentOS7̲SV systemd[1]: Starting Cleanup of Temporary Directories…
Jan 07 19:04:47 CentOS7̲SV systemd[1]: Started Cleanup of Temporary Directories.
Jan 07 19:15:42 CentOS7̲SV date[2487]: Thu Jan 7 19:15:42 UTC 2021
# tail -n 1 /var/log/messages
Jan 7 19:15:42 CentOS7̲SV journal: Thu Jan 7 19:15:42 UTC 2021
© LPI-Japan all rights reserved.

30

セミナー内容■目次
1.ログ管理の概要
ログ管理の全体像
2.ロギング機能
syslogの設定方法
rsyslogの設定方法
systemd jounalの設定方法
3.ログローテーション
loglotare.confの設定方法© LPI-Japan all rights reserved.

31

3.ログローテーション■ログローテーションとは一定の期間でログを分割/圧縮/破棄する行為のこと/var/log/

ログローテーション
分割

圧縮

蓄積

破棄

crond
/etc/cron.daily/logrotate/usr/sbin/logrotate /etc/logrotate.conf• ログローテーションはloglotateコマンドによってログを分割/圧縮/破棄できる• loglotateコマンドはcronに登録されており一定の間隔で実行されている• デフォルトでloglotateコマンドの設定ファイルに/etc/logrotate.confが指定されている© LPI-Japan all rights reserved.

32

3.ログローテーション■loglotateコマンド
ログローテーションを実行するコマンド

logrotate [オプション]

設定ファイルオプション

説明-d(-debag)

デバッグモードで実行する-f(-force)

強制的にログローテーションを実行する-m(-mail)

ログをメール送信する際に使用する# logrotate -f /etc/logrotare.conf# ls -l /var/log/messages*-rw-------. 1 root root 940539565 Jan 7 18:50 /var/log/messages-rw-------. 1 root root

438499 Dec 14 07:41 /var/log/messages-20201214-rw-------. 1 root root

299964 Dec 22 06:43 /var/log/messages-20201222-rw-------. 1 root root

233022 Dec 29 03:39 /var/log/messages-20201229-rw-------. 1 root root

103364 Jan 3 08:25 /var/log/messages-20210103© LPI-Japan all rights reserved.

33

3.ログローテーション■logrotate.confの設定例
weeklysu root syslog
rotate 4
createinclude /etc/logrotate.d/var/log/wtmp {missingok
monthlycreate 0664 root utmp
rotate 1}/var/log/btmp {missingok
monthlycreate 0660 root utmp
rotate 1}© LPI-Japan all rights reserved.

34

3.ログローテーション■logrotate.confの主要な設定項目
項目

説明

daily / weekly / monthly/ yearly

ログの切り替えタイミング（日次/週次/月次/年次）

rotateローテーションする世代数を設定する

compress

周期がweeklyで4世代の場合、4週間分のログを保存する
ローテーション後のファイルをgz形式で圧縮する

createローテーション後に空ファイルを作成する
以下の形式で、作成するファイルの権限を決められる

dateext

create [権限] [オーナ] [グループ]
ローテーション後のファイル名に日付を付与する

include ディレクトリ名

指定したディレクトリ配下の設定ファイルを読み込む

mail メールアドレス

ログ切り替えによって削除されるログの内容を指定されたメールアドレスへメールする

postscript〜endscript

ログ切り替え後に実行するスクリプト

presctipt〜endsctipt

ログ切り替え前に実行するスクリプト

missingok

ログファイルが存在しない場合も、エラーとしない© LPI-Japan all rights reserved.

35

セミナー内容

ご清聴ありがとうございました© LPI-Japan all rights reserved.

36