オプションを使用してサービスログをフィルタリングおよび整形する
このステップでは、docker service logs
コマンドの出力をフィルタリングおよび整形するための便利なオプションをいくつか紹介します。これらのオプションを使用すると、ログ内の特定の情報を見つけやすくなり、出力が読みやすくなります。
一般的な要件の 1 つは、最新のログエントリのみを表示することです。--tail
オプションを使用すると、ログの末尾から表示する行数を指定できます。たとえば、my-service
の最後の 5 行のログを表示するには、次のようにします。
docker service logs --tail 5 my-service
これにより、サービスの最後の 5 つのログエントリが出力されます。
my-service.1.abcdefghijkl 64 bytes from 1.2.3.4: seq=10 ttl=50 time=123.456 ms
my-service.1.abcdefghijkl 64 bytes from 1.2.3.4: seq=11 ttl=50 time=123.456 ms
my-service.1.abcdefghijkl 64 bytes from 1.2.3.4: seq=12 ttl=50 time=123.456 ms
my-service.1.abcdefghijkl 64 bytes from 1.2.3.4: seq=13 ttl=50 time=123.456 ms
my-service.1.abcdefghijkl 64 bytes from 1.2.3.4: seq=14 ttl=50 time=123.456 ms
もう 1 つの便利なオプションは --since
で、特定のタイムスタンプまたは期間以降に生成されたログを表示できます。たとえば、過去 5 分間に生成されたログを表示するには、次のようにします。
docker service logs --since 5m my-service
また、RFC3339Nano 形式の特定のタイムスタンプ、日付 (YYYY-MM-DD)、または日付と時刻 (YYYY-MM-DDTHH:MM:SS) を指定することもできます。
出力にタイムスタンプを含めるには、--timestamps
または -t
フラグを使用します。
docker service logs -t my-service
これにより、各ログエントリの先頭にタイムスタンプが追加されます。
2023-10-27T10:30:00.123456789Z my-service.1.abcdefghijkl PING labex.io (1.2.3.4): 56 data bytes
2023-10-27T10:30:01.123456789Z my-service.1.abcdefghijkl 64 bytes from 1.2.3.4: seq=0 ttl=50 time=123.456 ms
...
最後に、これらのオプションを組み合わせて、ログの表示を絞り込むことができます。たとえば、タイムスタンプ付きの最後の 10 個のログエントリを表示するには、次のようにします。
docker service logs --tail 10 -t my-service
これらのオプションを使用すると、Docker サービスのログを表示および分析する方法が柔軟になり、アプリケーションの監視とトラブルシューティングが容易になります。
実験を終える前に、作成したサービスをクリーンアップしましょう。docker service rm
コマンドを使用してサービスを削除できます。
docker service rm my-service
サービスが削除されたことを確認する出力が表示されます。
my-service
このコマンドは、サービスに関連付けられたすべてのタスクを停止して削除します。