journalctl とは
jounarld.service が記録してくれているログをみるためのコマンド。
Linux でアプリケーションを動かす場合は、systemd に登録し、journalctl でログを見るというのがベストプラクティスになっている。
新しいもの順に表示するようにする
| |
最新のログをフォローする場合は、
| |
起動してからのものを取得する場合 (boot) は、
| |
特定の時間から調べる
障害が起きた特定の時間からのログを調べたいということがある。
障害が起きた間のみのログに絞りたい場合は、
| |
何時間前などで絞りたい場合は、date コマンドと組み合わせると便利。
| |
複数の unit のログを見る
問題となっていそうな複数のコンポーネントにしぼってみる。
| |
カーネルのログを見るときは -k をつける。OS が突然死した、CPU の異常などが起きた場合はよく使う。
| |
エラーの種類でフィルターする
通常ログは見ずに、エラーレベルのものだけみたいという時がある。
| |
-x は追加情報、-b は起動してからのログ エラーレベルは下記の通り。
あまり使わないが、-p0..4 という指定方法ができる。
問題となっていそうなキーワードから絞る
2021/05/15 更新: journalctl のデフォルトの pager が less のため、& でパターンを絞ることが可能。また、&! でパターン否定でフィルタリングもできる。
& を入力してから err などでフィルタリングするととても便利(less すごい)
| |
systemd が grep をサポートしてコンパイルされていないと下記のエラーが出る。
| |
#890265 - systemd: journalctl compiled without pattern matching support - Debian Bug report logs
ファイルがローテートされた古いログを確認する
データサイズが大きくなると、ローテートされてしまうが保存されている fileから読める。
| |
ディレクトリ内の journal ログをまとめて見ることもできる。
| |
表示されるログが wrap されるようにする
そのまま journalctl だと、一行が長くて画面に収まらないことがある。
2021/05/15 更新: journalctl の pager がデフォルトだと less のため、-S を入力することで wrap の on/off が可能。
参考:systemd - journalctl: how to prevent text from truncating in terminal - Unix & Linux Stack Exchange
デフォルトでは PAGER が less に設定されているため、これを例えば vim に変えたい場合は、
| |
とできる。