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

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

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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する