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

Artifactory のログの収集

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

ログ タイプ

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

  • artifactory.log
  • access.log
  • request.log
  • traffic.*.log

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

Collector の設定

Installed Collector を設定します。

Source の設定

このステップでは、次の表に示されている各ログ Source に対して 1 つずつローカル ファイル Source を設定します。ログ タイプに対してファイル Source を作成する場合には:

  • Source の [File Path (ファイル パス)] には、次の表の「ファイル パス」列の値を使用してください。  
  • Source の [Source Category] に指定する値の末尾には、「Source Category」列に示されている接尾辞を付けてください。たとえば、Artifactory Server ログ Source の Source Category を 
    foo/artifactory/console に設定することはできますが、artifactory/console/foo には設定できません。

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

ログ Source ファイル パス Source Category
Artifactory サーバ /var/opt/jfrog/artifactory/logs/artifactory.log artifactory/console
アクセス /var/opt/jfrog/artifactory/logs/access.log artifactory/access
Request /var/opt/jfrog/artifactory/logs/request.log artifactory/request
Traffic (トラフィック) /var/opt/jfrog/artifactory/logs/traffic.*.log artifactory/traffic

詳細な説明については、「ローカル ファイル Source」を参照してください。

  1. ローカル ファイル Source を設定します。
  2. 以下の Source フィールドを設定します。
    1. Name (名前): (必須) 名前は必須です。必要に応じて説明を入力します。
    2. Source Category: (必須)  
  3. [Advanced (詳細)] セクションを設定します。
    1. Enable Timestamp Parsing (タイムスタンプ parse の有効化)。True
    2. Time Zone (タイム ゾーン): デフォルトではログは UTC で記録されます。
    3. Timestamp Format (タイムスタンプ形式)。自動検出。
    4. Encoding Type (エンコーディング タイプ): UTF-8
    5. Multi-line Parsing (複数行の parse): Detect Messages Spanning Multiple Lines (複数行にわたるメッセージを検出する)、Infer Boundaries (境界を推測する)
  4. [Save (保存)] をクリックします。

FER (Field Extraction Rules)

次に、さまざまな手法を使用する 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.

クエリのサンプル

経時的な Data Forwarding

_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

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