ジョブファイルを使用したログ分析の構成
このページでは、ジョブファイルを使用してログソースを設定する方法について説明します。新しいログソースを設定する場合は、中央集中型ログ管理 UI を使用してソースルールを定義することをお勧めします。
ジョブファイルを使用してログ分析を構成するには、次の手順を実行します。
ジョブファイルでのログソースの記述
各ログソースは、ジョブファイルで示されます。ジョブファイルは、以下を指定する構成ファイルです。
- ソースログファイルの場所
- ログファイルからレコードをキャプチャするためのパターン
- キャプチャされたログレコードからデータを構造化するためのパターン
- ログソースからレコードをキャプチャするためのその他のオプション
ソースを定義するには、分析エージェントの構成ディレクトリにジョブファイルを作成します(または、いずれかのサンプルを変更します)。分析エージェントには、Glassfish、OSX ログなどのサンプルのジョブファイルが含まれています。また、分析エージェントは GZIP ファイル(末尾が .gz のログファイル)を収集して解析できます。
ジョブファイルは、次のディレクトリにあります。
-
<Analytics_Agent_Home>/conf/job/
エージェントはディレクトリ内のジョブファイルを動的に読み取るため、エージェントを再起動せずにジョブファイルをディレクトリに追加できます。
ジョブファイルを設定するには、ファイルで次の構成可能な設定を使用します。
- enabled:このログソースがアクティブかどうかを決定します。このログソースから分析データをキャプチャするには、値を true に設定します。
- source:ログのソースを指定します。
- type:ログソースのタイプを指定します。file と syslog の 2 つのタイプがあります。その他のパラメータは、[type] の値によって異なります。
- file:ログソースとして機能するログファイルの場所と名前。場所は、analytics-agent と同じマシン上にある必要があります。ファイルには、次のパラメータがあります。
- path:ログファイルが書き込まれるディレクトリへの絶対パス。Windows では、次のように Unix 環境の場合と同じくパスを指定する必要があります。
- 例:demo/logs
- 例:C:/app/logs
- nameGlob:ログファイル名での照合に使用する文字列。ワイルドカードを使用できます。また、1 レベル深いファイルと照合するか、パスディレクトリ構造内のすべてのログファイルと照合するかどうかを指定できます。ワイルドカードが nameGlob の値で始まる場合は、値を引用符で囲む必要があります。
- 複数レベルの照合の例は次の通りです。
path:/var/lognameGlob:'**/*.log'これは /var/log/apache2/logs/error.log と /var/log/cassandra/system.log の両方に一致します。
-
1 レベルの照合の例:path:/var/lognameglob:'*/*.log'これは、/var/log ディレクトリ内を 1 レベルの深さで .log ファイルを検索します(/var/log/cassandra/system.log と一致しますが、/var/log/apache2/logs/error.log とは一致しません)。
- startAtEnd:true に設定すると、ファイルの末尾からの照合を許可します。
- syslog:「Syslog メッセージからのログ分析データの収集」を参照してください。
- file:ログソースとして機能するログファイルの場所と名前。場所は、analytics-agent と同じマシン上にある必要があります。ファイルには、次のパラメータがあります。
- multiline:複数行にまたがる(複数の改行を含む)ログレコードが含まれているログファイルの場合は、multiline プロパティを設定し、ログファイル内の個々のレコードを識別する方法を指定します。複数行のログレコードの典型的な例は、Java 例外を含むレコードです。複数行のログレコードの行を識別するには、multiline プロパティで 2 つのオプションのいずれかを使用できます。
-
startsWith:複数行のログレコードの先頭に一致する単純なプレフィックス。 例 1:次の複数行ログを 1 つのレコードとしてキャプチャする方法:
[#|2015-09-24T06:33:31.574-0700|INFO|glassfish3.1.2|com.appdynamics.METRICS.WRITE|_ThreadID=206;_ThreadName=Thread-2;|NODE PURGER Completed in 14 ms|#]以下を使用できます。
multiline: startsWith: "[#|"例 2:次の複数行ログを 1 つのレコードとしてキャプチャする方法:
May 5, 2016 6:07:02 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit requested amount:245.43000 May 5, 2016 6:07:02 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit currency:USD May 5, 2016 6:07:02 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit payment method:Master Card May 5, 2016 6:07:03 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit decision:ACCEPT May 5, 2016 6:07:03 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit reason code:200 May 5, 2016 6:07:03 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit orderId:7654 May 5, 2016 6:07:03 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit piId:1234B May 5, 2016 6:07:03 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit referenceNumber:4620346703956702001 May 5, 2016 6:07:03 AM com.appdynamics.test.payments.plugin.testsource.testPaymentClient deposit(pluginContext, financialTransaction, retry) INFO: Source deposit extData requestToken:alf/7wSR9PBh3zSMQ+++IYTRlk3Ys2DOxOmM5jWLRTyFJaSggCTyFJaSgjSB1/2v0wyTWRV0ekb0X以下を使用できます。
multiline: startsWith: "INFO: Source deposit requested amount" -
regex:複数行のログレコードに一致する正規表現。たとえば、この複数行ログを 1 つのレコードとしてキャプチャするには、次のようにします。
2016-06-01 16:28:21.035 WebContainer : 8 TRANSTART> ======================================= 2016-06-01 16:28:21.036 WebContainer : 8 MERCHCFG > merchantID=appD, sendToProduction=true, targetAPIVersion=1.00, keyFilename=(null), serverURL=(null), namespaceURI=(null), enableLog=true, logDirectory=logs, logFilename=(null), logMaximumSize=10, useHttpClient=false, timeout=130 2016-06-01 16:28:21.037 WebContainer : 8 REQUEST > merchantID=appD davService_run=true clientLibraryVersion=2.0.1 clientEnvironment=OS/400/V7R1M0/LINUX application_id=ff22 exportService_addressWeight=medium merchantReferenceCode=appD clientLibrary=Java Basic billTo_customer=xxxxxxxxx billTo_finance=true billTo_postalCode=94105 billTo_country=US次の正規表現設定を使用すると、各「レコード」の開始を識別できます。
multiline: regex: "^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3} WebContainer : \d+ TRANSTART\u003E =======================================$"この regex は、行が、4 桁(2016)、2 桁(01)、スペース、2 桁(16)、「:」2 桁(28)「:」2 桁(21)「.」3 桁(035)、スペース、「WebContainer」、スペース、数字、「TRANSTART」、「>」に一致することを記述しています。
ログテーラーは、行の先頭で一致パターンを確認するたびに新しい照合を開始し、以前に収集されたデータを 1 つのログレコードとして渡します。それぞれの一致パターンは、一致パターンが別のレコードの先頭で再度検出されるまで、バッファ内へのログ行の累積を開始するタイミングを識別します。
-
- type:ログソースのタイプを指定します。file と syslog の 2 つのタイプがあります。その他のパラメータは、[type] の値によって異なります。
- fields:フィールドは、アプリケーション名、ティア名などによってコントローラ UI でのログデータのコンテキストを指定するために使用されます。フィールドは、自由形式のキーと値のペアとして指定します。
-
grok:grok パラメータは、非構造化ログレコード内のデータが構造化分析フィールドにマッピングされるパターンを指定します。名前付き grok 式(lib/analytics-shared-pipeline-core.jar 内にバンドルされている .grok ファイルで定義されている)を、エージェントによって構造化されたデータのフィールドに関連付けます。例:
grok: patterns: - "\\[%{LOGLEVEL:logLevel}%{SPACE}\\] \\[%{DATA:threadName}\\] \\[%{JAVACLASS:class}\\] %{GREEDYDATA}" - "pattern 2" ...この場合、grok-pattern 名 LOGLEVEL は、logLevel という名前の分析データフィールドと一致します。LOGLEVEL という名前で指定された正規表現は、 ディレクトリ内のファイル grok-patterns.grok で定義されています。Grok 式の指定。以前のバージョンのログ分析では、パターンリストではなく単一の「パターン」が使用されていました。このモードは、下位互換性を維持するために引き続きサポートされています。ログ分析 grok プロセッサでは、フィールド名に下線を使用できません。たとえば、フィールド名「log_fields」は機能しません。代わりに、「logfields」などを使用します。
- keyValue:keyValue パラメータは、ログを解析し、ユーザー定義の区切り文字を使用してキーと値のペアを識別する方法を指定します。これにより、「Key1 = Value1 Key2 = Value 2」というタイプのメッセージの解析を設定できます。「キーと値のペアの指定」を参照してください。
- transform:このパラメータは、grok または keyValue パラメータによってログから抽出されたフィールドのタイプまたはエイリアス名を変更する方法を指定します。
-
eventTimestamp:この設定は、キャプチャしたデータに関連付けられているタイムスタンプのパターンを定義します。
ログファイルデータの分析フィールドへのマッピング
非構造化ログレコード内のデータをログ分析のために構造化分析フィールドにマッピングする方法を指定するには、ジョブファイルで設定を指定します。非構造化ログデータは、次の方法でマッピングできます。
- grok パターン
- キーと値のペア
- トランスフォーム
Grok 式の指定
Grok は、ネストされた複雑な正規表現を読みやすく使用しやすい形式で定義して使用する方法です。ログファイル内の個別の要素を定義する正規表現は、grok-pattern 名にマッピングされます。これを使用すると、より複雑なパターンを作成することもできます。
分析エージェントでは、ログで見つかる一般的な種類のデータの多くの Grok-pattern 名が提供されています。基本的な grok-pattern 名とその基盤となる構造のリストは、lib/analytics-shared-pipeline-core.jar 内部にバンドルされています。次のようなコマンドを使用して grok ファイルを一覧表示できます。
unzip -l ./lib/analytics-shared-pipeline-core.jar|grep "\.grok"
次のようなコマンドを使用して grok ファイルの定義を表示できます。
unzip -p ./lib/analytics-shared-pipeline-core.jar grok/grok-patterns.grok
grok ディレクトリには、さまざまな一般的なログタイプ(java.grok, mongodb.grok など)に対してカスタマイズされた複雑な定義のサンプルも含まれています。
grok-pattern 名は、作成されると、分析キーになるフィールド識別子を持つジョブファイルに関連付けられます。
基本的な構成要素は %{grok-pattern name:identifier} です。ここで、grok-pattern name は、(正規表現の定義に基づいて)取得するログ内のデータのタイプを認識する grok パターンであり、identifier は分析キーになるデータの種類の識別子です。このため、%{IP:client} はログレコード内の IP アドレスを選択し、キー client. にマッピングします。
カスタム Grok パターン
複雑な grok パターンは、ネストされた基本パターンを使用して作成できます。たとえば、 mongodb.grok ファイルから次のように作成します。
MONGO_LOG %{SYSLOGTIMESTAMP:timestamp} \[%{WORD:component}\] %{GREEDYDATA} 正規表現を使用して、まったく新しいパターンを作成することもできます。たとえば、java.grok の次の行は、JAVACLASS という名前の grok パターンを定義します。
JAVACLASS (?:[a-zA-Z$_][a-zA-Z$_0-9]*\.)*[a-zA-Z$_][a-zA-Z$_0-9]* JAVACLASS は grok ディレクトリ内の .grok ファイルで定義されているため、基本の grok パターンであるかのように使用することができます。ジョブファイルでは、次のように JAVACLASS パターン照合を使用できます。
grok: pattern: ".... \[%{JAVACLASS:class}\\] この場合、分析 UI に表示されるフィールド名は「class」になります。完全なサンプルについては、次のファイルを参照してください。
- ジョブファイル:
<Analytics_Agent_Home>/conf/job/sample-analytics-log.job - Grok ファイル:
java.grok(lib/analytics-shared-pipeline-core.jar内でバンドル)
バックスラッシュに関する特別な考慮事項
ジョブファイルは YAML 形式であり、バックスラッシュはエスケープ文字として扱われます。したがって、文字列パターンにバックスラッシュを含めるには、2 つ目のバックスラッシュを使用してバックスラッシュをエスケープする必要があります。次のように grok パターンを二重引用符ではなく一重引用符で囲むことにより、.job ファイルの grok パターンでバックスラッシュをエスケープする必要がないようにすることができます。
grok: patterns: - '\[%{DATESTAMP:TIME}%{SPACE}CET\]%{SPACE}%{NOTSPACE:appId}%{SPACE}%{NOTSPACE:appName}%{SPACE}%{NOTSPACE:Severity}%{SPACE}%{NOTSPACE:messageId}:%{SPACE}%{GREEDYDATA}'
数値フィールド
リリース 4.1.3 では、3 つの基本データ型をサポートするように grok 定義構文が拡張されました。.grok ファイルでパターンを定義するときは、データ型として数値、ブール値、または文字列を指定できます。Grok エイリアスが .job ファイルでその grok 定義を使用している場合、抽出されたフィールドは数値またはブール値として保存されます。デフォルトは文字列です。数値またはブール値の変換が失敗すると、エージェントのログファイルにログメッセージが表示されます。正規表現を確実にリバースエンジニアリングすることはできないため、検証は実行されません。これらは純粋なランタイム抽出および変換です。
4.1.3 以前のジョブファイルのアップグレード
Was: grok: patterns: - "%{DATE:happenedAt},%{NUMBER:quantity} Update job to: grok: patterns: - "%{DATE:happenedAt},%{NUMBER:quantity_new} Was: grok: patterns: - "%{DATE:happenedAt},%{DATA:howMany} Update job to: grok: patterns: - "%{DATE:happenedAt},%{POSINT:howManyInt}
4.1.3 より前のジョブファイルをアップグレード(移行)するには、次の手順を実行します。
- analytics-agent を停止します。
-
拡張 grok パターンを使用する .job ファイルを変更します。
BOOL:boolean INT:number BASE10NUM:number NUMBER:number POSINT:number NONNEGINT:number古いエイリアスと競合しないように grok エイリアスを変更します。
grok: patterns: (Old) - "%{DATE:quoteDate},%{NUMBER:open},%{NUMBER:high},%{NUMBER:low},%{NUMBER:close},%{NUMBER:volume},%{NUMBER:adjClose}" (New aliases) - "%{DATE:quoteDate},%{NUMBER:openNum},%{NUMBER:highNum},%{NUMBER:lowNum},%{NUMBER:closeNum},%{NUMBER:volumeNum},%{NUMBER:adjCloseNum}" - analytics-agent を起動します。
キーと値のペアの指定
マッピング設定のこのセクションでは、source パラメータで指定されたフィールドからキーと値のペアをキャプチャします。source の下にリストされている値は、grok パターンによって定義およびキャプチャされたフィールドを参照します。たとえば、次のパターン「%{DATA:keyValuePairs}」を定義する grok パラメータがある場合は、source パラメータの下にあるフィールド「keyValuePairs」をリストして、「keyValuePairs」文字列に記載されているキーと値のペアをキャプチャできます。source パラメータが指定されていない場合、エージェントはログメッセージ全体からキーと値のペアの抽出を試行します。メッセージにキーと値のペアだけではなく、より多くの情報が含まれている場合、結果は予想とは異なる場合があります。
キーと値のマッピングには、次のフィールドが含まれています。
- source:keyValue フィルタを適用する文字列のリスト。これはオプションのフィールドです。指定されていない場合、キーと値のペアは元のログ「message」文字列から解析されます。
- split:値からキーを区切るためにユーザーによって定義された区切り文字。key=value の例では、キーと値の間の分割区切り文字は等号(=)です。
- separator:2 つのキーと値のペアを区切るためにユーザによって定義された区切り文字。key1=value1;key2=value2 の例では、区切り文字はセミコロン(;)です。
- include:ユーザーが「source」からキャプチャするキー名のリスト。「include」で何も指定されていない場合は、すべてのキーと値のペアをキャプチャします。
- trim:保存される前に、ユーザーにとってキーまたは値の先頭または末尾から削除する必要がある文字のリスト。
sample-glassfish-log.job ジョブファイルには、キーと値のペアの設定が含まれています。このファイルは、次の場所にあります。<analytics_agent_home>/conf/job/
キーと値のペアの例
次のエントリを含むログファイルの場合:
[#I2015-09-24T06:33:31:574-0700|INFO|glassfish3.1.2|com.appdynamics,METRICS.WRITE|_ThreadID=200;_ThreadName=Thread-2;|NODE PURGER Complete in 14 ms|#]
[#I2015-09-24T06:33:46:541-0700|INFO|glassfish3.1.2|com.singularity.ee.controller.beans.license.LicenseUsageManagerBeanWRITE|_ThreadID=202;_ThreadName=Thread-2;|about to start persisting license usage data |#]
次の grok パターン:
grok: patterns: - "\\[\\#\\|%{DATA}\\|%{LOGLEVEL:logLevel}\\|%{DATA:serverVersion}\\|%{JAVACLASS:class}\\|%{DATA:keyValuePairs}\\|%{GREEDYDATA}" ThreadID と ThreadName を抽出するためのキーと値のパラメータは、次のようになります。
keyValue: source: -"keyValuePairs" split: "=" separator: ";" include: - "ThreadID" - "ThreadName" trim: - "_" transformトランスフォームパラメータの指定
マッピング設定のこのセクションでは、grok またはキー値の設定によって以前にログから抽出されたフィールドの型またはエイリアス名を変更することができます。トランスフォームは、ログメッセージからすべてのフィールドがキャプチャされた後に適用されます。フィールド名のリストを指定して、値を特定の型にキャストしたり、フィールドの名前を「alias」に変更したりすることができます。
トランスフォームマッピングには、次のフィールドが含まれています。
- field:トランスフォームするフィールドの名前を指定します。空白または null にすることはできません。
fieldが定義されている場合は、type または alias のいずれかを指定する必要があります。いずれも指定されていない場合は、analytics-agent.log ファイルにエラーが書き込まれます。 - alias:フィールドの新しい名前。
- type:フィールドの値の型。有効な値は次のとおりです。
- NUMBER
- BOOLEAN
- STRING:デフォルトは STRING です。
分析エージェントのプロパティの確認
ジョブファイルでログソースを設定することに加えて、conf ディレクトリ内にある analytics-agent.properties ファイルの値を確認する必要があります。次のプロパティ値を確認します。
http.event.endpointはイベントサービスの場所である必要があります。- SaaS コントローラの場合、URL は次のいずれかになります。
https://analytics.api.appdynamics.com:443(北米)https://fra-ana-api.saas.appdynamics.com:443(欧州)https://syd-ana-api.saas.appdynamics.com:443APAC
- オンプレミスインストールの場合、ユーザーが設定したホストとポートを使用します。クラスタ環境では、多くの場合、これはロードバランサです。
- SaaS コントローラの場合、URL は次のいずれかになります。
http.event.accountNameおよびhttp.event.accessKey設定は、ログを関連付ける必要があるコントローラ UI 内のアカウントの名前およびキーに設定する必要があります。デフォルトでは、1 つのテナントコントローラの組み込みアカウントに設定されます。pipeline.poll.dir設定は、ログ設定ファイルの場所を指定します。これは通常、ファイルを別の場所に保存しない場合は変更されません。ad.controller.urlは AppDynamics コントローラの URL およびポートと一致している必要があります。Splunk AppDynamics
Troubleshoot Logs
If log capture is working correctly, logs should start appearing in the Log tab in the Analytics UI. It can take some time for logs to start accumulating. Note the following troubleshooting points:
- If nothing appears in the log view, try searching over the past 24 hours.
- Timezone discrepancies between the logs and the local machine can cause log entries to be incorrectly excluded based on the selected timeframe in the Controller UI. To remediate, try setting the log files and system time to UTC or logging the timezone with the log message to verify.
- An inherent delay in indexing may result in the "last minute" view in the UI consistently yielding no logs. Increase the time range if you encounter this issue.
Troubleshoot Patterns
To help you troubleshoot the data extraction patterns in your job file, you can use the two debug REST endpoints in the Analytics Agent:
- http://<Analytics_Agent_host>:<Analytics_Agent_http_port>/debug/grok: For testing grok patterns
- http://<Analytics_Agent_host>:<Analytics_Agent_http_port>/debug/timestamp: For testing timestamp patterns
In the following examples, the Analytics Agent host is assumed to be localhost 9090 ad.dw.http.port <Analytics_Agent_Home>/conf/ analytics-agent.properties.
debug/grok endpoint is disabled by default. To enable the endpoint, start the Analytics Agent with the property ad.debug.grok.endpoint.enabled=true in agent.properties file.The Grok Endpoint
The Grok tool works in two modes: extraction from a single line log and extraction from a multi-line log. To get a description of usage options:
curl -X GET http://localhost:9090/debug/grok
In this mode, you pass in (as a POST request) a sample line from your log and the grok pattern you are testing, and you receive back the data you passed in organized as key/value pairs, where the keys are your identifiers.
curl -X POST http://localhost:9090/debug/grok --data-urlencode "logLine=LOG_LINE" --data-urlencode "pattern=PATTERN"
For example, the input:
curl -X POST http://localhost:9090/debug/grok --data-urlencode "logLine=[2014-09-04T15:22:41,594Z] [INFO ] [main] [o.e.j.server.handler.ContextHandler] Started i.d.j.MutableServletContextHandler@2b3b527{/,null,AVAILABLE}" --data-urlencode "pattern=\\[%{LOGLEVEL:logLevel}%{SPACE}\\] \\[%{DATA:threadName}\\] \\[%{JAVACLASS:class}\\] %{GREEDYDATA}"
would produce this output:
{
threadName => main
logLevel => INFO
class => o.e.j.server.handler.ContextHandler
}
The input:
curl -X POST http://localhost:9090/debug/grok --data-urlencode "logLine=2010-05-05,500.98,515.72,500.47,509.76,4566900,509.76" --data-urlencode "pattern=%{DATE:quoteDate},%{DATA:open},%{DATA:high},%{DATA:low},%{DATA:close},%{DATA:volume},%{GREEDYDATA:adjClose}"
would produce this output:
{
open => 500.98
adjClose => 509.76
volume => 4566900
quoteDate => 10-05-05
high => 515.72
low => 500.47
close => 509.76
}
The multi-line version uses a file stored on the local filesystem as the source input.
curl -X POST http://localhost:9090/debug/grok --data-urlencode "logLine=`cat FILE_NAME`" --data-urlencode "pattern=PATTERN"
where FILE_NAME is the full path filename of the file that contains the multi-line log.
The Timestamp Endpoint
The timestamp tool extracts the timestamp from a log line in Unix epoch time.
To get a description of usage options:
curl -X GET http://localhost:9090/debug/timestamp
In this mode, you pass in (as a POST request) a sample line from your log and the timestamp pattern you are testing, and you receive back the timestamp contained within the log line.
curl -X POST http://localhost:9090/debug/timestamp --data-urlencode "logLine=LOG_LINE" --data-urlencode "pattern=PATTERN"
For example, the input:
curl -X POST http://localhost:9090/debug/timestamp --data-urlencode "logLine=[2014-09-04T15:22:41,237Z] [INFO ] [main] [io.dropwizard.server.ServerFactory] Starting DemoMain" --data-urlencode "pattern=yyyy-MM-dd'T'HH:mm:ss,SSSZ"
would produce this output Unix epoch time:
{
eventTimestamp => 1409844161237
}
The input:
curl -X POST http://localhost:9090/debug/timestamp --data-urlencode "logLine=Nov 17, 2014 8:21:51 AM com.foo.blitz.processor.core.hbase.coprocessor.endpoint.TimeRollupProcessEndpoint$HBaseDataFetcher callFoo1" --data-urlencode "pattern=MMM d, yyyy h:mm:ss aa"
would produce this output Unix epoch time:
{
eventTimestamp => 1416212511000
}
Sample Log Analytics Job Files
A number of sample job files are shipped with the Analytics Agent. These files can be found at <analytics-agent-home>/conf/job.
The sample job files include:
- Analytics logs: sample-analytics-log.job
- Analytics logs with requestGUID config example: sample-analytics-log-with-request-guid.job
- Apache access logs: sample-apache-httpserver-access-log.job
- Apache access logs with syslog config example: sample-apache-httpserver-access-sysloglog.job
- Apache error logs: sample-apache-httpserver-error-log.job
- Cassandra logs: sample-cassandra-log.job
- CouchDB logs: sample-couchdb-log.job
- Glassfish logs: sample-glassfish-log.job
- IIS logs: sample-iis-log.job
- Java Agent logs: sample-java-agent-log.job
- Jetty error logs: sample-jetty-error-log.job
- Jetty request logs: sample-jetty-request-log.job
- Log4J: sample-log4j.job
- MongoDB logs: sample-mongodb-log.job
- MySQL error logs: sample-mysql-error-log.job
- Nginx access logs: sample-nginx-access-log.job
- Nginx error logs: sample-nginx-error-log.job
- OS X system logs: sample-osx-system-log.job
- Postgres logs: sample-postgres-log.job
- Redis logs: sample-redis-log.job
- Stock quotes: sample-stock-quotes-csv.job
- WebLogic logs: sample-weblogic-log.job