ぽれいんのブログ

エンジニアになるために覚えたことを日記に付けます。

システム管理2

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

 

 

 

LVM

 論理ボリュームマネージャ(logical volume manager, LVM)は、「物理ボリューム」を提供するハードディスクなどのデバイスに直接ファイルシステムを作成するのではなく、一旦「論理ボリューム」と呼ばれる仮想化されたボリュームに束ねて利用するためのシステムです。これにより、動的かつ自在にディスクのパーミッションを変更できるようになります。

LVMイメージ

LVMイメージ
LVMを利用する流れ
  1. ハードディスクに物理ボリューム(PV)を作成する
  2. PVを束ねてボリュームグループ(VG)を作成する
  3. VGから論理ボリューム(LV)を好きな容量だけ切り出す
  4. LVにファイルシステムを作成して、マウントして使う

logrotate

logrotateとは

ログファイルの扱いはシステム管理の中でも重要な1つです。「ログファイル」とは、システムログ、Apacheアクセスログ、Cronのログ、ログイン情報(secure)などがあります。日ごろからそれぞれのログファイル容量が肥大化しすぎないように管理が必要です。Linuxディストリビューションのほとんどには「logrotate」と呼ばれるログを自動化に回すツールがインストールされています。logrotateのメリットとしては容量の肥大化を回避させることにあります。

logrotateの仕組み

logrotate自体の実行スケジュールはCronで設定されています。どのようにログのローテーションが行われるのかは、cronデーモン設定を確認すれば分かります。

cat /etc/cron.daily/logrotate

ファイル内容より「usr/sbin/logrotate」バイナリが「etc/logrotate.conf」設定ファイルに沿って実行されることを意味しています。

cat /etc/logrotate.conf

-----------------------------------------------------------------
# see "man logrotate" for details
# rotate log files weeklf
weekly

# keep 4 weeks worth of backlogs
rotate 50
mail root

# send errors to root
erroors root

# create new(empty)log filef after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own lastlog or wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
-----------------------------------------------------------------

「etc/logrotate.conf」ファイル内にそれぞれのログファイルの設定を記述することもできますが、サービスごとに設定ファイルを分けた方が分かりやすいとの判断から、標準設定ではetc/logrotate.dディレクトリ下を参照するようになっています。

例えば、Apacheyumでインストールすると、自動的にこのディレクトリの配下にログローテーションの設定が記載されたファイルが作成されます。では、システムログ(syslog)の設定内容をみてみましょう。

cat /etc/logrotate.d/syslog

/var/log/messages {
rotate 50
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}

各サービスで個別にセットした設定の方が、logrotate.conf内の全体設定よりも優先されます。

時刻合わせ

 時計合わせとは

linuxシステムの時刻がズレている場合、アクセスログやシステムログの時刻もずれてしまう事になりトラブルシューティングなどの際に困ることになります。そこでlinuxにはntpdやchronydというNTPを利用した時刻合わせ専用のデーモンがインストールされます。

NTP

NTPとは「Network Time Protocol」の略で、簡単に言えば、ネットワーク上で時間を同期するプロトコルのことです。NTPにはNTPサーバから取得した時刻値、そのNTPサーバからLinuxに時刻値が到達するまでの通信時間の補正も含まれており、最も妥当だと思われる時刻同期ができるようになっています。

  • クライアントがクエリを発信した時刻
  • サーバがクエリを受信した時刻
  • サーバが応答を発信した時刻
  • クライアントが応答を受信した時刻
NTPの仕組み

NTPサーバは階層構造で管理され、NTP自体の階層はストラタムと呼ばれ、ストラタムは1から16まで存在する。数字が小さいほど、正確な時刻を刻んでおり、また存在するサーバ数も少なくなります。

NTPの仕組み

Linuxではntpdateコマンドを使って、NTPサーバから正確な時刻を取得できます

ntpdate NTP サーバ名

現在時刻を確認するにはdateコマンドを利用します。

date
時刻修正について

サーバを運用する段階で、そのサーバの時刻が大きく狂ってしまったとして、その場合にいきなり、NTPサーバとの正確な時間に同期させていけません。時刻を即座に正しい時刻に合わせるモードを「stepモード」、徐々に時刻を合わせるモードを「slewモード」と言います。

NTPサーバ負荷

NTPクライアントから時刻同期をおこなう場合は、なるべくストラタムの番号の大きなサーバを指定して同期しましょう。もし、NTPクライアント全てがストラタム1サーバと同期した場合、その時刻サーバはトラフィック負荷に耐え切れず、時刻が狂ってしまう可能性すらあります。NTPクライアントが多いようであれば、組織内に自前でNTPサーバを用意してもいいです!

syslog

syslogとは

syslogとはlinuxシステムやプロセスから出てくるアラートなどの情報を、ネットワークで転送したり、ログとしてファイルに保存していくクライアント/サーバ型の仕組みのことです。syslogメッセージはUDPまたはTCPポート番号の514を使用してsyslogサーバに送信されます。ApacheMySQLなど、独自のログディレクトリを持つアプリケーションの多くは、独自の方法でログを記録しています。一方、syslogは独自のログ出力方法を持たない、非常に多くのアプリケーションが利用しています。syslogを利用して出力されたログメッセージが記録されるログファイルは、”/var/log/boot.log”,"/var/log/cron","/var/log/messages","/var/log/secure","var/log/spool"などですが、特定のアプリケーションを除き、多くのアプリケーションのログメッセージはデフォルトで"/var/log/messages"に記録されます。

ファシリティ

ファシリティは「ログ種別」のことです。ファシリティのは様々な種類がありますが、Linuxでは「*」を使用することで全ファシリティを選択できます。

プライオリティ

プライオリティはメッセージの優先度を表します。

アクション

アクションではメッセージの出力先を指定します。ログファイルに保存したい場合、ファイル名をフルパスで指定します。ユーザ名を指定した場合はそのユーザの端末にメッセージが出力されることになります。

syslogの設定

syslogは、/etc/syslog.confファイルで設定をします。

・crit,alert,emergレベルのメール関連ログを、/var/log/mailファイルに記録

mail.crit /var/log/mail

・メールのログを出力しない

mail.none

カーネルに関する全てのメッセージを、/var/log/kernelに出力

kern.* /var/log/kernel

・緊急メッセージは全てのユーザが受け取る

*.emerg *

loggerコマンドを使って、任意のファシリティ、プライオリティに対して任意のメッセージを出力することができますので、設定の確認に便利です。

logger -t test -p local0.info "syslog messages"
tオプション: タグを付与する
pオプション: ファシリティとプライオリティを定義する

                                                                                                                         以上