ざっくりと一通り理解する!Linuxのログ調査方法

  • このエントリーをはてなブックマークに追加
  • Pocket
linux ログ調査

Linuxはサーバで使われることが多く、サーバではログのチェックが必須項目だ。

このページではログの調査方法についてざっくりとまず知っておきたいところをまとめている。参考にしてほしい。

Linuxでログを調査するには?

Linuxの場合基本的に「/var/log」の下にログが残ることは別途ページで解説したとおりだ。rsyslogの設定にも触れたが「ログの見方」というところをあまり触れていなかったと思う。

「/var/log」の下に残されているログは、大体がテキストデータである。一部では専用のコマンドで閲覧するバイナリとしてログがとられているファイルも存在するが、ログは基本的にテキストデータと考えて問題ない。

テキストデータなので「grep」コマンドなどで絞りこみや「tail」コマンドでのリアルタイムな監視、「less」コマンドなどによる、閲覧が可能となっている。テキストデータのほうが特殊な形式で保存するより、柔軟な場合が多いだろう。

気をつけていただきたいのは、ログは基本的に「root権限でないと閲覧できない」ことと、「決して手動で編集を加えてはならない」というところだ。中身がテキストデータかつroot権限でそれを開くため実質編集は可能だが、手動でなにかかきくわえてしまうとログの整合性が失しなわれてしまうからだ。

必ずリードオンリーなもので閲覧しよう。

実際のログをみてみよう

まずは書式から

日付 時刻 ホスト メッセージ発信元: メッセージ

となっている具体的には次のようになる。/var/log/messagesからの抜粋だ。

Nov  3 14:17:00 localhost su: (to root) ken on /dev/pts/1

  • Nov 3 日付
  • 14:17:00 時刻
  • localhost ホスト
  • su メッセージ発信元
  • (to root) ken on /dev/pts/1 ログ内容

となっている今回は「/var/log/messages」から一行をとりだしてみた。

suコマンドを実行したときのログである。「/var/log/secure」にはもっとやかましくログがのこっている。rsyslogに管理されているログに関しては、基本的にこの書式で記録される。試しにcronなどものぞいてみてほしい

# less /var/log/cron

などとすると定期実行されているログがみえるはずだ。なおログはワンアクションが一行ごとに記録される。

ログ調査のときに重宝するコマンド

いくつかのコマンドはログを調査するときに役にたつ。

grep

ログが膨大になってゆくと、特定の条件でログ情報を絞りこみたいときがあるはずだ。そういうときはgrepを使用するとよい

# grep ken  /var/log/cron

cronlog

などとすると「ken」という文字列が含まれる行が列挙される。今回は主にユーザでしぼってみたが、任意の関連性のある文字列に置き換えること。例えばホストやネットワークインターフェイスなどだ。

grepについて詳しくは次のページでお伝えしている。

tail -fもしくはtailf

tailはテキストファイルの最後の指定した数行を表示するコマンドだが、ログ監視に関して非常に便利だ。

tailコマンドは「-f」オプションを指定すると更新を随時表示することができるようになる。つまりリアルタイムでログを監視できるのである。試しにmessageファイルを開きながらloggerコマンドなどで意図的にログを残してみるとよい。

アクセス待ちや確認などサーバ管理業務では重宝するコマンドなので覚えておこう。終了するときは「Control+c」とすればよい。

なおtailfコマンドは使い勝手は同じだが、ファイルへの追加書き込みがない時はファイルへアクセスを行わないという点で少々ことなる。どちらを使用しても監視は可能である。

tail -f

tailコマンドについては下記で詳しい。

less

基本的なビューワ機能をとりそろえてあるコマンドだ。

# less /var/log/cron

などとするとファイルを表示できる。一部viと互換性のあるキーバンドをしており「j」「k」で上下カーソル移動、スクロール「/」で文字列の検索が可能となっている。「-N」オプションを使用すると行番号が表示される。

less

またファイルを表示している最中に「Shift+f」をおすと「tail -f」と同じ効能がえられる。

特殊なログをもつコマンド

last

バイナリログ「wtmp」に情報が記録されている、ここ最近にログインした履歴がのこされているlastコマンドで確認可能だ。

lastコマンド

lastlog

ユーザが最後にログインした履歴を表示する。なにもオプションを設定しない場合は全ユーザの最終ログイン日時が表示される。一度もログインしたことのないユーザについては"**Never logged in**"もしくは**一度もログインしていません**と表示される。

lastlog

systemdの場合

昨今はsystemdが普及しているので「jounalctl」でログを管理する場合もあるだろう。

現在CentOS7の場合、一応にrsyslogの方をメインで使用している状態である。jounalctlのログは「/var/run/log/journal」に記録されるが、このファイルは再起動するたびに初期化されてしまう。永続的にログを記録したい場合は「/var/log/journal」というディレクトリを作成して再起動する。

以下ザックリとしたログ管理のオプションを紹介する。

ユニットごとにログを見たいときは、

journalctl -u <ユニット名>

とする例えばcronの場合

# journalctl -u crond

journalctl -u

# journalctl -f

とするとtailfのような動作をする。

journalctl -f

プライオリティごとにログを確認したいときは「-p」オプションを使用する。

journalctl -p <プライオリティ>

# journalctl -p err

journalctl -p

プライオリティには以下がある。オプション指定時、番号で指定することも可能になっている。

  • 0 emerg
  • 1 alert
  • 2 crit
  • 3 err
  • 4 warning
  • 5 notice
  • 6 debug

日時指定でログを出すことも可能となっている。

journalctl --since=”<日時>”

# journalctl --since=”2016-11-04”

journalctl -since

まとめ

このページではログの調査方法について一通りざっくりまとめてご紹介した。

ログの調査はLinuxサーバを扱う上で必須のスキルだ。各種のファイルは一度は見て、コマンドも確認しておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*