メインコンテンツまでスキップ
Sumo Logic Japanese

Docker ソース

Docker は、ソフトウェア開発環境のコンテナにアプリケーションをパッケージ化する方法を提供する軽量のオープン プラットフォームです。

以下のタイプの Docker ソースを Linux のインストール済みコレクタに追加できます。

  • Docker Logs (Docker ログ): Docker コンテナ内で動作するプロセスの stdout/stderr ログを収集します。

  • Docker Stats (Docker 統計情報): Docker コンテナに関するメトリクスを収集します。

Docker ソースに関する注意事項

  • Sumo コレクタは Docker が動作するホストで実行することをお勧めします。コレクタを Docker コンテナとしてデプロイできます。詳細については、「https://hub.docker.com/r/sumologic/collector/」を参照してください。
  • Sumo Logic コレクタは Docker Remote API を使用して Docker ログを収集します。これには、https://docs.docker.com/engine/admin/logging/overview/ に記述されているように、コンテナに設定されたログ ドライバで json-file または journald オプションを使用します。

Docker ログ ソースの追加

  1. Sumo Web アプリケーションで、[Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] を選択します。
  2. Docker ホストにインストールされたコレクタに移動して、[Add (追加)] > [Add Source (ソースの追加)] を選択します。
  3. Docker Logs (Docker ログ): [Docker Logs (Docker ログ)] ページが開きます。
  4. 以下のソース フィールドを設定します。
    1. Name (名前): (必須)。
    2. Description (説明): (省略可能)。
    3. URI: Docker デーモンの URI を入力します。
      • モニタリング対象の Docker コンテナと同じホストでコレクタが動作する場合、非ネットワーク型 Unix ソケットとして unix:///var/run/docker.sock を入力します。
      • Docker ホスト以外のマシンでコレクタが動作する場合は、Docker 環境変数から URI を指定できます。Docker 環境変数を見つけるには、docker-machine コマンドを実行します。このコマンドの構文は、$ docker-machine env machine-name です。
        例:

        $ docker-machine env default
        export DOCKER_TLS_VERIFY="1"
        export DOCKER_HOST="tcp://192.168.99.100:2376"
        export DOCKER_CERT_PATH="/Users/sumo/.docker/machine/machines/default"
        export DOCKER_MACHINE_NAME="default"
        # Run this command to configure your shell: 
        # eval "$(docker-machine env default)"


        DOCKER_HOST 変数の値の「tcp」を「https」に変更し、その値を URI として入力します。たとえば、https://192.168.99.100:2376 のようになります。
    4. Cert Path (証明書パス): (リモート アクセスの場合のみ) コレクタが動作するローカル マシンの証明書ファイルのパスを入力します。上の例では、証明書パスは /Users/sumo/.docker/machine/machines/default です。
    5. Event Logs (イベント ログ): Docker イベントと標準 Docker ログを収集するには、このボックスをオンにします。
    6. Collect From (収集元)Container Filters (コンテナ フィルタ): すべてのコンテナから収集する場合は、[All Containers (すべてのコンテナ)] ラジオ ボタンをクリックします。コンテナを選択して収集する場合は、[Specified Container Filters (指定したコンテナ フィルタ)] ラジオ ボタンをクリックして、[Container Filters (コンテナ フィルタ)] フィールドにフィルタ表現を指定します。コンテナ フィルタを定義する方法の詳細については、以下の「コンテナ フィルタの定義の詳細」を参照してください。
      • デフォルトでは、最大 40 個のコンテナから収集できます。制限値を大きくするには、collector.properties ファイル (コレクタのインストール ディレクトリの config サブディレクトリ内) を編集して、docker.maxPerContainerConnections プロパティを追加します。サポートされる最大値は 100 です。
    7. Source Host (ソース ホスト): ソース ホストのホスト名または IP アドレスを入力します。指定しないと、ホストは Docker が動作するマシンと見なされます。ホスト名は最大 128 文字です。必要に応じて、Docker 変数を使用してソース ホスト値を作成できます。詳細については、「変数を使用した sourceCategory と sourceHost の設定」を参照してください。
    8. Source Category (ソース カテゴリ): (必須) Sumo ソース カテゴリ (prod/web/docker/logs など) を入力します。必要に応じて、Docker 変数を使用してソース ホスト値を作成できます。詳細については、「変数を使用した sourceCategory と sourceHost の設定」を参照してください。
  5. 詳細オプションを設定します。
    1. Enable Timestamp Parsing (タイムスタンプ パースの有効化): デフォルトでは、このオプションはオンになっています。
    2. Time Zone (タイム ゾーン): デフォルトは、[Use time zone from log file (ログ ファイルのタイム ゾーンを使用)] です。
    3. Timestamp Format (タイムスタンプ フォーマット): デフォルトは、[Automatically detect the format (フォーマットを自動検出)] です。
    4. Encoding (エンコーディング): デフォルトは、「UTF-8」です。
    5. Enable Multiline Processing (複数行処理の有効化): デフォルトでは [Detect messages spanning multiple lines (複数行メッセージの検出)] オプションはオンになっています。複数行処理とそのオプションの詳細は、「複数行のログの収集」を参照してください。
      • Infer Boundaries (境界の推定): デフォルトでは、このオプションはオンになっています。
      • Boundary Regex (境界正規表現): 複数行処理が有効で、[Infer Boundaries (境界の推定)] が無効な場合は、メッセージ境界用の正規表現を入力します。
  6. Configure processing rules (処理ルールの設定): 詳細については、「処理ルール」を参照してください。

Docker 統計情報ソースの追加

  1. Sumo で [Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] を選択します。
  2. Docker ホストにインストールされたコレクタに移動して、[Add (追加)] > [Add Source (ソースの追加)] を選択します。
  3. [Docker Stats (Docker 統計情報)] を選択します。[Docker Stats (Docker 統計情報)] ページが開きます。コンテンツ タイプには 2 つあります。[Metrics (メトリクス)] はデータをメトリクスとして収集する場合、[Logs (ログ)] (JSON) はデータを JSON ログとして収集する場合に選択します。

    Docker stats with metrics.png
  4. 以下のソース フィールドを設定します。
    1. Name (名前): (必須)
    2. Description (説明):  (省略可能)
    3. URI: Docker デーモンの URI を入力します。
      • モニタリング対象の Docker コンテナと同じホストでコレクタが動作する場合、非ネットワーク型 Unix ソケットとして以下を入力します。
        unix:///var/run/docker.sock
      • Docker ホスト以外のマシンでコレクタが動作する場合は、Docker 環境変数から URI を指定できます。Docker 環境変数を見つけるには、docker-machine コマンドを実行します。このコマンドの構文は、$ docker-machine env machine-name です。
        例:

        $ docker-machine env default
        export DOCKER_TLS_VERIFY="1"
        export DOCKER_HOST="tcp://192.168.99.100:2376"
        export DOCKER_CERT_PATH="/Users/sumo/.docker/machine/machines/default"
        export DOCKER_MACHINE_NAME="default"
        # Run this command to configure your shell: 
        # eval "$(docker-machine env default)"


        DOCKER_HOST 変数の値の「tcp」を「https」に変更し、その値を URI として入力します。たとえば、https://192.168.99.100:2376 のようになります。
    4. Cert Path (証明書パス): (リモート アクセスの場合のみ) コレクタが動作するローカル マシンの証明書ファイルのパスを入力します。上の例では、証明書パスは /Users/sumo/.docker/machine/machines/default です。
    5. Collect From (収集元)Container Filters (コンテナ フィルタ): すべてのコンテナから収集する場合は、[All Containers (すべてのコンテナ)] ラジオ ボタンをクリックします。コンテナを選択して収集する場合は、[Specified Container Filters (指定したコンテナ フィルタ)] ラジオ ボタンをクリックして、[Container Filters (コンテナ フィルタ)] フィールドにフィルタ表現を指定します。コンテナ フィルタを定義する方法の詳細については、以下の「コンテナ フィルタの定義の詳細」を参照してください。
      • デフォルトでは、最大 40 個のコンテナから収集できます。制限値を大きくするには、collector.properties ファイル (コレクタのインストール ディレクトリの config サブディレクトリ内) を編集して、docker.maxPerContainerConnections プロパティを追加します。サポートされる最大値は 100 です。
    6. Source Host (ソース ホスト): ソース ホストのホスト名または IP アドレスを入力します。指定しないと、ホストは Docker が動作するマシンと見なされます。ホスト名は最大 128 文字です。必要に応じて、Docker 変数を使用してソース ホスト値を作成できます。詳細については、「変数を使用した sourceCategory と sourceHost の設定」を参照してください。
    7. Source Category (ソース カテゴリ): (必須) Sumo ソース カテゴリ (prod/web/docker/logs など) を入力します。必要に応じて、Docker 変数を使用してソース ホスト値を作成できます。詳細については、「変数を使用した sourceCategory と sourceHost の設定」を参照してください。
    8. Scan Interval (スキャン間隔): このオプションでは、ソースのスキャン頻度を設定します。間隔を短くすると、メッセージの量が増えて、ご使用の環境で追加の料金が発生する場合があります。最小許容スキャン間隔は、1 秒です。
    9. Metrics (メトリクス) (選択したコンテンツ タイプがメトリクスの場合に使用可能): 取り込む Docker メトリクスを選択します。詳細については、「Docker メトリクスの定義」を参照してください。

Docker メトリクスの定義

メトリクス名 単位 説明
CPU
cpu_percentage % 使用 CPU (%)
online_cpus オンラインの CPU 数 (API v1.27 以降でのみ使用可能)
system_cpu_usage ナノ秒 ホストの CPU 使用量の累積値
cpu_usage.percpu_usage ナノ秒 すべての CPU (cpu=[0..x] で指定) の個別の使用量
cpu_usage.total_usage Linux ではナノ秒、Windows では 100 ナノ秒 消費した CPU 時間の合計
cpu_usage.usage_in_kernelmode ナノ秒 カーネル モードの CPU 使用量
cpu_usage.usage_in_usermode ナノ秒 ユーザ モードの CPU 使用量
throttling_data.periods 経過した実施間隔の数
throttling_data.throttled_periods 調整された実施間隔の数
throttling_data.throttled_time ナノ秒 調整された CPU 時間の合計
メモリ
failcnt メモリ使用量が制限に達した回数
limit バイト コンテナ (コンテナに設定されていない場合はホスト) に設定されたメモリ制限
max_usage バイト メモリの最大使用量
memory_percentage % 使用 メモリ (%)
usage バイト 現在のメモリ使用量
stats.active_anon バイト カーネルがアクティブと識別した匿名メモリ
stats.active_file バイト カーネルがアクティブと識別したファイル キャッシュ メモリ
stats.cache バイト ブロック デバイス上の 1 つのブロックに関連付け可能なこの cgroup のプロセスで使用されたメモリ
stats.hierarchical_memory_limit バイト 階層メモリ制限
stats.inactive_anon バイト カーネルが非アクティブと識別した匿名メモリ
stats.inactive_file バイト カーネルが非アクティブと識別したファイル キャッシュ メモリ
stats.mapped_file バイト cgroup のプロセスでマップされたキャッシュ メモリ
stats.pgfault cgroup のプロセスが「page fault」をトリガした回数
stats.pgmajfault cgroup のプロセスが「major fault」をトリガした回数
stats.pgpgin システムがディスクからページ インした回数
stats.pgpgout システムがディスクへページ アウトした回数
stats.rss バイト ディスク上のデータとは対応しないメモリ (スタック、ヒープ、または匿名メモリ マッピング)
stats.rss_huge バイト 匿名メモリの Transparent HugePage
stats.unevictable バイト 再利用できないメモリ
stats.writeback バイト ディスクとの同期のためにキュー登録されるファイル匿名キャッシュ
stats.total_active_anon バイト カーネルが個々にアクティブと識別した匿名メモリ (sub-cgroup を含む)
stats.total_active_file バイト カーネルが個々にアクティブと識別したファイル キャッシュ メモリ (sub-cgroup を含む)
stats.total_cache バイト ブロック デバイス上の 1 つのブロックに関連付け可能なこの cgroup のプロセスで使用されたメモリ(sub-cgroup を含む)
stats.total_inactive_anon バイト カーネルが個々に非アクティブと識別した匿名メモリ (sub-cgroup を含む)
stats.total_inactive_file バイト カーネルが個々に非アクティブと識別したファイル キャッシュ メモリ (sub-cgroup を含む)
stats.total_mapped_file バイト 制御グループのプロセスでマップされたキャッシュ メモリ (sub-cgroup を含む)
stats.total_pgfault cgroup のプロセスが「page fault」をトリガした回数 (sub-cgroup を含む)
stats.total_pgmajfault cgroup のプロセスが「major fault」をトリガした回数 (sub-cgroup を含む)
stats.total_pgpgin システムがディスクからページ インした回数 (sub-cgroup を含む)
stats.total_pgpgout システムがディスクへページ アウトした回数 (sub-cgroup を含む)
stats.total_rss バイト ディスク上のデータとは対応しないメモリ (スタック、ヒープ、および匿名メモリ マッピング) (sub-cgroup を含む)
stats.total_rss_huge バイト 匿名メモリの Transparent HugePage (sub-cgroup を含む)
stats.total_unevictable バイト 再利用できないメモリ (sub-cgroup を含む)
stats.total_writeback バイト ディスクとの同期のためにキュー登録されるファイル匿名キャッシュ (sub-cgroup を含む)
ネットワーク (API v1.21 以降は「interface (インターフェイス)」ディメンションで拡張可能)
rx_bytes バイト データ ボリューム (受信)
rx_dropped 削除されたパケット数 (受信)
rx_errors エラー パケット数 (受信)
rx_packets 合計パケット数 (受信)
tx_bytes バイト データ ボリューム (送信)
tx_dropped 削除されたパケット数 (送信)
tx_errors エラー パケット数 (送信)
tx_packets 合計パケット数 (送信)
BlockIO (デバイスの「major」および「minor」ID で拡張可能)
io_merged_recursive すべての派生 cgroup に属するリクエストにマージされた bio/request の数
io_queue_recursive すべての派生 cgroup から任意の時刻にキュー登録されたリクエストの数
io_service_bytes_recursive バイト すべての派生 cgroup がディスクにアクセスしたバイト数
io_service_time_recursive ミリ秒 すべての派生 cgroup のリクエスト ディスパッチからリクエスト完了までの時間
io_serviced_recursive そのコンテナで処理されたブロック I/O リクエストの合計数
io_time_recursive ミリ秒 すべての派生 cgroup のすべてのデバイスへ割り当てられたディスク時間
io_wait_time_recursive ミリ秒 すべての派生 cgroup のサービスのスケジューラ キューで、この cgroup の IO が待機した時間の合計
sectors_recursive すべての派生 cgroup がディスクにアクセスしたセクターの数
PID
current PID の数 (Windows では使用不可)

コンテナ フィルタの定義の詳細  

[Container Filter (コンテナ フィルタ)] フィールドに、以下のフィルタ タイプを 1 つ以上コンマで区切ったリストにして入力できます。

  • 特定のコンテナ名 (「my-container」など)
  • ワイルドカード フィルタ (「my-container-*」など)
  • 感嘆符で始まる除外(ブラックリスト) フィルタ (「!master-container」、「!prod-*」など)

フィルタ リストの例:

prod-*, !prod-*-mysql, master-*-app-*, sumologic-collector

この例では、ソースは「prod-*-mysql」とは一致しない、「prod-」で始まる名前のコンテナすべてから収集します。「master-*-app-*」と一致する名前のコンテナ、「sumologic-collector」という名前のコンテナからも収集します。

フィルタ リストに除外のみが含まれていると、ソースは除外フィルタと一致しないすべてのコンテナから収集します。例:

!container123*, !prod-*

この例では、ソースは「container123」と「prod-」で始まる名前のコンテナを除外します。

変数を使用した sourceCategory と sourceHost の設定

コレクタ バージョン 19.216-22 以降では、sourceCategory と sourceHost を Docker ログ ソースまたは Docker 統計情報ソースに設定すると、Docker およびそのホストで使用可能な変数を使用して値を指定できます。

以下の形式でコンポーネント変数を指定して、sourceCategory および sourceHost 用のテンプレートを作成します。

{{NAMESPACE.VAR_NAME}}

各パラメータの説明
    •    NAMESPACE は変数タイプを指定する名前空間です。

    •    VAR_NAME は変数名です。


以下の表は、使用可能な変数タイプの定義です。

Namespace/VAR_TYPE 説明 VAR_NAME
sys ホスト システム環境変数。 変数の名前。
container --log-opt タグ オプションで使用するための Docker の [Container (コンテナ)] メタデータ フィールド

これらは、データ ポイントに自動的に追加されます。

詳細については、Docker ヘルプの「Log tags for logging driver (ログ ドライバのログ タグ)」を参照してください。

 
ID—コンテナ ID の最初の 12 文字。

FullID—コンテナ ID 全体。

Name (名前)—コンテナ名。

ImageID—コンテナのイメージ ID の最初の 12 文字。

FullID—コンテナのイメージ ID 全体。

ImageName—コンテナで使用されるイメージの名前。
label Docker コンテナを開始するときに --label フラグで指定するユーザ定義のラベル。

これは、データ ポイントに自動的に追加されます。
変数の名前。
 
env コンテナを開始するときに --env|-e フラグで設定するユーザ定義のコンテナ環境変数。 変数の名前。

例:

{{container.ID}}

以下のように、複数の変数を使用できます。

{{container.ID}}-{{label.label_name}}-{{sys.PATH}}-{{env.var_name }}

以下のように、メタデータ形式でテキストを結合できます。 

ID {{container.ID}}- AnyTextYouWant {{label.label_name}}-{{sys.PATH}}

ユーザ定義変数がない場合は、メタデータ フィールドの該当部分は空白です。 

  • この記事は役に立ちましたか?