sternで目的のログに絞る方法
※過去に別の媒体で書いた記事の改訂版です。
sternって何?
Kubernetes上の複数のポッドとポッド内の複数のコンテナのログを出力してくれる便利ツールです。
ただ、デフォルトのコマンドのみだと目的のログに絞れないことが多いです。そのため今回は目的のログに絞るオプションをいくつか紹介したいと思います。
stern のインストール方法や基本的な使い方については、公式リポジトリを参照してください。
📌 公式 GitHub リポジトリ: stern/stern
便利なオプションの紹介
以下の 3 つの方法でログを絞り込むことができます。
特定の時間範囲でログを絞る方法
特定の文字列を含むログのみ表示する方法
特定の文字列を含むログを除外する方法
また、これらのオプションを組み合わせて、さらに細かくログをフィルタリングすることも可能です。
1. 特定の時間範囲でログを絞る方法
--since=<時間> オプションを使用すると、指定した時間以内のログのみを表示できます。
--since=1s → 直近 1 秒以内のログを表示
--since=1m → 直近 1 分以内のログを表示
--since=1h → 直近 1 時間以内のログを表示
--since は -s と省略可能です。
stern sample-app --since=1m
2. 特定の文字列を含むログのみ表示する方法
--include=ERRORのようなオプションをつけるとERRORという文字列を含んだログのみを表示してくれます。
ERROR 部分は限定したい文字列であれば好きに設定可能です。
例えば、userId=10000001というuserのデータのみを表示したければ、
--include=10000001 のように設定すると 10000001 という文字列を含んだログのみ出力してくれます。
--include は -i と省略可能です。
stern sample-app --include=ERROR
3.特定の文字列を含むログを除外する方法
--exclude=INFO のようなオプションをつけるとINFOという文字列を持ったログを排除して表示してくれます。
INFO 部分は排除したい文字列であれば好きに設定可能です。
--exclude は -e と省略可能です。
stern sample-app --exclude=INFO
複数オプションで目的のログをさらに絞る
上記で紹介したオプションを組み合わせることによって目的のログをさらに絞りやすくすることができます。
例えば、1分以内に発生したINFOログ以外で、特定のuserIdのものを表示したい場合以下のようなコマンドで探すことができます。
stern sample-app -s=1m -e=INFO -i=10000001
参考
その他のオプションについては、公式リポジトリを参照してください。
📌 公式 GitHub リポジトリ: stern/stern