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

Artifactory のログの収集

この手順では、ログを JFrog Artifactory から Sumo Logic に収集する方法について説明します。

ログ タイプ

Sumo Logic は、/var/opt/jfrog/artifactory/logs ディレクトリのログを読み取ります。

  • Artifactory サーバ (artifactory.log)
  • アクセス (access.log)
  • リクエスト (request.log)
  • トラフィック (traffic.*.log)

Artifactory ログの詳細については、JFrog の 「Artifactory Log Files (Artifactory ログ ファイル)」を参照してください。

コレクタの設定

インストール済みコレクタを設定します。

ソースの設定

  1. ローカル ファイル ソースを設定します。
  2. 以下のソース フィールドを設定します。
    1. Name (名前)。(必須) 名前は必須です。必要に応じて説明を入力します。
    2. Source Category (ソース カテゴリ)。(必須) [Source Category (ソース カテゴリ)] メタデータ フィールドは、ソースを整理してラベル付けするための基本的な構成要素です。Artifactory アプリケーションと連携するには末尾が「artifactory/console」である必要があります。例: _sourceCategory=<Foo>/artifactory/console。カテゴリの命名については、「ベスト プラクティス」を参照してください。
  3. [Advanced (詳細)] セクションを設定します。
    1. Enable Timestamp Parsing (タイムスタンプ パースの有効化)。true
    2. Time Zone (タイムゾーン)。デフォルトではログは UTC で記録されます。
    3. Timestamp Format (タイムスタンプ フォーマット)。自動検出。
    4. Encoding Type (エンコーディング タイプ): UTF-8
    5. Multi-line Parsing (複数行のパース): Detect Messages Spanning Multiple Lines (複数行にわたるメッセージを検出する)、Infer Boundaries (境界を推測する)
  4. [Save (保存)] をクリックします。

コレクタをインストールして、ソースを設定するときに、次のソース カテゴリを設定して、ログを収集しダッシュボードの内容を作成します。

次の接尾辞が必要です。たとえば、_sourceCategory=<Foo>/artifactory/console を使用できますが、接尾辞の artifactory/console を使用する必要があります。

ログ ロケーション ソース カテゴリ
Artifactory サーバ /var/opt/jfrog/artifactory/logs/artifactory.log _sourceCategory=artifactory/console
アクセス /var/opt/jfrog/artifactory/logs/access.log _sourceCategory=artifactory/access
Request /var/opt/jfrog/artifactory/logs/request.log _sourceCategory=artifactory/request
Traffic (トラフィック) /var/opt/jfrog/artifactory/logs/traffic.*.log _sourceCategory=artifactory/traffic

フィールド抽出ルール

次に、さまざまな手法を使用する Artifactory 抽出ルールを紹介します。 

Traffic (トラフィック)

_sourceCategory=*artifactory*
| where _sourceCategory matches "*artifactory/traffic"
| parse regex "(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})(?<hour>\d{2})(?<minute>\d{2})(?<second>\d{2})\|\d*\|(?<direction>[^|]*)\|\s*(?<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[^|]*)\|(?<repo>[^:]*):(?<fullfilepath>[^|]*)\|(?<size>\d*)" nodrop

アクセス ログ

_sourceCategory=*artifactory*
| where _sourceCategory matches "*artifactory/access"
| parse "[*] *:* for */*" as what, repo, path, user, ip

リクエスト ログ

_sourceCategory=*artifactory*
| where _sourceCategory matches "*artifactory/request"
| parse "*|*|*|*|*|*|*|*|*|*" as datetime, response_time, type, ip, user, method, path, protocol, status_code, size

ログ メッセージのサンプル

20170113185444|17|REQUEST|1.1.1.1|anonymous|GET|/cloudera-repos/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar|HTTP/1.1|200|8869
20170113185444|0|DOWNLOAD|1.1.1.1|cloudera-repos:org/apache/spark/spark-catalyst_2.11/2.0.1/spark-catalyst_2.11-2.0.1.jar.sha1|40
2017-01-13 18:54:12,121 [ACCEPTED DEPLOY] pypi-remote-cache:.pypi/test.html for billythekid/1.1.1.1.

クエリのサンプル

経時的なデータ転送

_sourceCategory=*artifactory*
| where _sourceCategory matches "*artifactory/traffic"
| parse regex
"(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})(?<hour>\d{2})(?<minute>\d{2})(?<second>\d{2})\|\d*\|(?<direction>[^|]*)\|\s*(?<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[^|]*)\|(?<repo>[^:]*):(?<fullfilepath>[^|]*)\|(?<size>\d*)" nodrop
| timeslice 1h
| sum(size) by _timeslice, direction 
| _sum / (1024 * 1024 * 1024) as sizeinGB | sort by _sum
| fields -_sum
| transpose row _timeslice column direction

ステータス コード別のリクエスト (10 分ごと)

_sourcecategory=*artifactory*
| where _sourceCategory matches "*artifactory/request"
| parse "*|*|*|*|*|*|*|*|*|*" as datetime, response_time, type, ip, user, method, path, protocol, status_code, size
| timeslice 10m
| count _timeslice, status_code | sort by _count
| transpose row _timeslice column status_code

一意なパスの受け入れ済みデプロイ

_sourceCategory=*artifactory* "ACCEPTED DEPLOY" "-cache"
| where _sourceCategory matches "*artifactory/access"
| parse "[*] *:* for */*" as what, repo, path, user, ip
| parse regex field=ip "(?<ip>.*)\."
| where what = "ACCEPTED DEPLOY" and repo matches "*-cache"
| timeslice 10m
| count_distinct(path) as paths by _timeslice
| outlier paths

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