Logtail 構成は、Logtail がログを収集するために使用するポリシーのセットです。Logtail 構成を作成するときに、データソースや収集モードなどのパラメーターを設定することで、収集ポリシーをカスタマイズできます。このトピックでは、API モードでの Logtail 構成に関連するパラメーターについて説明します。
レガシー CRD-AliyunLogConfig の構成方法は、メンテナンスされなくなりました。代わりに新しい AliyunPipelineConfig を使用してください。詳細については、「CreateLogtailPipelineConfig - Logtail パイプライン構成の作成」をご参照ください。Logtail 構成の基本パラメーター
パラメーター | タイプ | 必須 | 例 | 説明 |
configName | string | はい | config-sample | Logtail 構成の名前。名前はプロジェクト内で一意である必要があります。Logtail 構成の作成後に名前を変更することはできません。 名前は次の要件を満たす必要があります。
|
inputType | string | はい | file | データソースのタイプ。有効値:
|
inputDetail | JSON オブジェクト | はい | なし | データソースの詳細な構成。詳細については、「inputDetail パラメーター」をご参照ください。 |
outputType | string | はい | LogService | 収集されたログの出力先。LogService のみがサポートされています。これは、収集されたデータを Simple Log Service にのみアップロードできることを意味します。 |
outputDetail | JSON オブジェクト | はい | なし | ログ出力の詳細な構成。詳細については、「outputDetail パラメーター」をご参照ください。 |
logSample | string | いいえ | なし | サンプルログ。 説明 サンプルログは 1,500 バイト未満である必要があります。 |
inputDetail パラメーター
基本パラメーター
パラメーター | タイプ | 必須 | 例 | 説明 |
filterKey | array | いいえ | ["ip"] | ログをフィルターするために使用されるフィールド。これらのフィールドの値が filterRegex パラメーターで指定された正規表現と一致する場合にのみ、ログが収集されます。 説明 このパラメーターはテキストログ収集専用です。 |
filterRegex | array | いいえ | ["^10.*"] | filterKey パラメーターに対応する正規表現。filterRegex の要素数は、filterKey の要素数と同じである必要があります。 説明 このパラメーターはテキストログ収集専用です。 |
shardHashKey | array | いいえ | ["__source__"] | データ書き込みモード。デフォルトでは、データは負荷分散モードで書き込まれます。
このパラメーターを構成すると、データはシャードモードで書き込まれます。__source__ フィールドがサポートされています。 |
enableRawLog | boolean | いいえ | false | 生のログをアップロードするかどうかを指定します。有効値:
|
sensitive_keys | array | いいえ | なし | データマスキング機能。詳細については、「sensitive_keys パラメーター」をご参照ください。 |
mergeType | string | いいえ | topic | 集計方法。有効値:
|
delayAlarmBytes | int | いいえ | 209715200 | 収集遅延のアラートしきい値。デフォルト値: 209715200、これは 200 MB です。 |
adjustTimezone | boolean | いいえ | false | ログのタイムゾーンを調整するかどうかを指定します。このパラメーターは、timeFormat パラメーターが設定されている場合など、時間解析が構成されている場合にのみ使用されます。 |
logTimezone | string | いいえ | GMT+08:00 | タイムゾーンオフセット。形式は、東部タイムゾーンの場合は GMT+HH:MM、西部タイムゾーンの場合は GMT-HH:MM です。たとえば、ログ時間が UTC+8 の場合、この値を GMT+08:00 に設定します。 |
advanced | JSON オブジェクト | いいえ | なし | 高度な機能。詳細については、「advanced パラメーター」をご参照ください。 |
sensitive_keys パラメーター
パラメーター
パラメーター
タイプ
必須
例
説明
key
string
はい
content
ログフィールドの名前。
type
string
はい
const
データマスキング方法。有効値:
const: 機密コンテンツを const フィールドの値に置き換えます。
md5: 機密コンテンツを対応する MD5 ハッシュに置き換えます。
regex_begin
string
はい
'password':'
機密コンテンツのプレフィックスの正規表現。機密コンテンツを見つけるために使用されます。RE2 構文を使用します。詳細については、「RE2 構文」をご参照ください。
regex_content
string
はい
[^']*
機密コンテンツの正規表現。RE2 構文を使用します。詳細については、「RE2 構文」をご参照ください。
all
boolean
はい
true
フィールド内のすべての機密コンテンツを置き換えるかどうかを指定します。有効値:
true (推奨): すべての機密コンテンツを置き換えます。
false: 正規表現に一致するコンテンツの最初の部分のみを置き換えます。
const
string
いいえ
"********"
type を const に設定した場合、このパラメーターは必須です。
構成例
たとえば、ログの content フィールドの値が
[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}]の場合、sensitive_keys を次のように設定することで、passwordフィールドの値を ******** に置き換えることができます。sensitive_keys = [{"all": true, "const": "********", "regex_content": "[^']*", "regex_begin": "'password':'", "type": "const", "key": "content"}]サンプルログ
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]
advanced パラメーター
パラメーター | タイプ | 必須 | 例 | 説明 |
enable_root_path_collection | boolean | いいえ | false | D:\log* などの Windows ルートディレクトリからのデータ収集を許可するかどうかを指定します。有効値:
重要
|
exactly_once_concurrency | int | いいえ | 1 | ExactlyOnce 書き込み機能を有効にするかどうかを指定します。この機能は、単一ファイルに対して許可される同時送信数を指定します。値は 0~512 の範囲である必要があります。詳細については、「付録: ExactlyOnce 書き込み機能」をご参照ください。有効値:
重要
|
enable_log_position_meta | boolean | いいえ | true | 元のログファイルからのメタデータをログに追加するかどうかを指定します。これにより、__tag__:__inode__ および __file_offset__ フィールドが追加されます。有効値:
説明 この機能は、Logtail 1.0.21 以降でのみサポートされています。 |
specified_year | uint | いいえ | 0 | 生のログの時刻に年が欠落している場合、このパラメーターを設定して、現在の年または指定された年でログ時刻を補完できます。有効値:
説明 この機能は、Logtail 1.0.21 以降でのみサポートされています。 |
force_multiconfig | boolean | いいえ | false | この Logtail 構成が、他の Logtail 構成によってすでに照合されているファイルを収集することを許可するかどうかを指定します。デフォルト値は false で、許可されないことを意味します。 これは、ファイルが 2 つの収集構成によって異なる Logstore に収集される場合など、複数書き込みシナリオに適用されます。 |
raw_log_tag | string | いいえ | __raw__ | 生のログをアップロードするときに生のログを格納するために使用されるフィールド。デフォルト値は __raw__ です。 |
blacklist | object | いいえ | なし | 収集ブラックリスト構成。詳細については、「blacklist パラメーター」をご参照ください。 |
tail_size_kb | int | いいえ | 1024 | 新しいファイルの初期収集サイズ。このサイズは収集の開始位置を決定します。デフォルトの初期収集サイズは 1024 KB です。
ここで初期収集サイズを変更できます。値は 0~10485760 の範囲である必要があります。単位は KB です。 |
batch_send_interval | int | いいえ | 3 | 集約送信期間。単位は秒です。デフォルト値は 3 です。 |
max_rotate_queue_size | int | いいえ | 20 | 単一ファイルローテーションキューの長さ。デフォルト値は 20 です。 |
enable_precise_timestamp | boolean | いいえ | false | 高精度時間を抽出するかどうかを指定します。このパラメーターを追加しない場合、デフォルト値は false で、高精度時間は抽出されません。 デフォルトでは、これを true に設定すると、Logtail は指定された時間フィールドの値をミリ秒レベルのタイムスタンプに解析し、precise_timestamp_key パラメーターに対応するフィールドに格納します。 説明
|
precise_timestamp_key | string | いいえ | "precise_timestamp" | 高精度タイムスタンプを格納するフィールド。このパラメーターを追加しない場合、デフォルトのフィールドは precise_timestamp です。 |
precise_timestamp_unit | string | いいえ | "ms" | 高精度タイムスタンプの単位。このパラメーターを追加しない場合、デフォルトは ms です。有効な値には、ms (ミリ秒)、us (マイクロ秒)、ns (ナノ秒) が含まれます。 |
blacklist のパラメーターを次の表に示します。
パラメーター | タイプ | 必須 | 例 | 説明 |
dir_blacklist | array | いいえ | ["/home/admin/dir1", "/home/admin/dir2*"] | ディレクトリのブラックリスト (絶対パス)。アスタリスク (*) をワイルドカード文字として使用して、複数のディレクトリに一致させることができます。 たとえば、パスを /home/admin/dir1 として構成した場合、/home/admin/dir1 ディレクトリ内のすべてのコンテンツは収集中に無視されます。 |
filename_blacklist | array | いいえ | ["app*.log", "password"] | ファイル名のブラックリスト。指定されたファイル名はどのディレクトリからも収集されません。アスタリスク (*) をワイルドカード文字として使用して、複数のファイル名に一致させることができます。 |
filepath_blacklist | array | いいえ | ["/home/admin/private*.log"] | ファイルパスのブラックリスト (絶対パス)。アスタリスク (*) をワイルドカード文字として使用して、複数のファイルに一致させることができます。 パスを /home/admin/private*.log として構成した場合、/home/admin/ ディレクトリ内の "private" で始まり ".log" で終わるすべてのファイルは収集中に無視されます。 |
テキストログ用 Logtail に固有の構成
基本パラメーター
パラメーター | タイプ | 必須 | 例 | 説明 |
logType | string | はい | common_reg_log | ログ収集モード。次のモードがサポートされています。
|
logPath | string | はい | /var/log/http/ | ログファイルのパス。 |
filePattern | string | はい | access*.log | ログファイルの名前。 |
topicFormat | string | はい | none | トピック生成方法。有効値:
詳細については、「ログトピック」をご参照ください。 |
timeFormat | string | いいえ | %Y/%m/%d %H:%M:%S | ログ時間形式。詳細については、「時間形式」をご参照ください。 |
preserve | boolean | いいえ | true | ログファイルが指定された時間内に更新されない場合、タイムアウトしたと見なされます。有効値:
|
preserveDepth | integer | いいえ | 1 | preserve を false に設定した場合、タイムアウトの最大ディレクトリ深度を指定する必要があります。値は 1~3 の範囲である必要があります。 |
fileEncoding | string | いいえ | utf8 | ログファイルのエンコード形式。有効な値は utf8 と gbk です。 |
discardUnmatch | boolean | いいえ | true | 照合に失敗したログを破棄するかどうかを指定します。有効値:
|
maxDepth | int | いいえ | 100 | 監視対象のログディレクトリの最大深度。値は 0~1,000 の範囲である必要があります。値 0 は、現在のディレクトリのみが監視されることを意味します。 |
delaySkipBytes | int | いいえ | 0 | 遅延データを破棄するためのしきい値。有効値:
|
dockerFile | boolean | いいえ | false | 収集対象のオブジェクトファイルがコンテナー内のファイルであるかどうかを指定します。デフォルト値は false です。 |
dockerIncludeLabel | JSON オブジェクト | いいえ | なし | コンテナーラベルのホワイトリスト。収集するコンテナーを指定するために使用されます。デフォルトでは空で、すべてのコンテナーからのログまたは標準出力が収集されることを意味します。コンテナーラベルのホワイトリストを設定する場合、LabelKey は必須で、LabelValue はオプションです。
説明
|
dockerExcludeLabel | JSON オブジェクト | いいえ | なし | コンテナーラベルのブラックリスト。収集からコンテナーを除外するために使用されます。デフォルトでは空で、コンテナーは除外されないことを意味します。コンテナーラベルのブラックリストを設定する場合、LabelKey は必須で、LabelValue はオプションです。
説明
|
dockerIncludeEnv | JSON オブジェクト | いいえ | なし | 環境変数のホワイトリスト。収集するコンテナーを指定するために使用されます。デフォルトでは空で、すべてのコンテナーからのログまたは標準出力が収集されることを意味します。環境変数のホワイトリストを設定する場合、EnvKey は必須で、EnvValue はオプションです。
説明 複数のホワイトリストエントリは OR 関係にあります。コンテナーの環境変数がホワイトリストエントリのいずれかを満たす場合、コンテナーは照合されます。 |
dockerExcludeEnv | JSON オブジェクト | いいえ | なし | 環境変数のブラックリスト。収集からコンテナーを除外するために使用されます。デフォルトでは空で、コンテナーは除外されないことを意味します。環境変数のブラックリストを設定する場合、EnvKey は必須で、EnvValue はオプションです。
説明 複数のブラックリストエントリは OR 関係にあります。コンテナーの環境変数がキーと値のペアのいずれかを満たす場合、コンテナーは除外されます。 |
完全な正規表現モードとシンプルモードに固有の構成
パラメーター
パラメーター
タイプ
必須
例
説明
key
array
はい
["content"]
生のログコンテンツのフィールドを構成するために使用されるフィールドのリスト。
logBeginRegex
string
いいえ
.*
ログエントリの開始の正規表現。
regex
string
いいえ
(.*)
フィールドを抽出するために使用される正規表現。
構成例
{ "configName": "logConfigName", "outputType": "LogService", "inputType": "file", "inputDetail": { "logPath": "/logPath", "filePattern": "*", "logType": "common_reg_log", "topicFormat": "default", "discardUnmatch": false, "enableRawLog": true, "fileEncoding": "utf8", "maxDepth": 10, "key": [ "content" ], "logBeginRegex": ".*", "regex": "(.*)" }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
JSON モードに固有の構成
パラメーター | タイプ | 必須 | 例 | 説明 |
timeKey | string | いいえ | time | 時間フィールドのキー名。 |
区切り文字モードに固有の構成
パラメーター
パラメーター
タイプ
必須
例
説明
separator
string
いいえ
,
ログ形式に基づいて正しい区切り文字を選択します。詳細については、「区切り文字モードでログを収集する」をご参照ください。
quote
string
はい
\
ログフィールドに区切り文字が含まれている場合は、それを囲む引用符を指定する必要があります。引用符で囲まれたコンテンツは、Simple Log Service によって単一のフィールドとして解析されます。ログ形式に基づいて正しい引用符を選択します。詳細については、「区切り文字モードでログを収集する」をご参照ください。
key
array
はい
[ "ip", "time"]
生のログコンテンツのフィールドを構成するために使用されるフィールドのリスト。
timeKey
string
はい
time
key リストからフィールドを時間フィールドとして指定します。
autoExtend
boolean
いいえ
true
ログから分割されたフィールドの数が構成されたキーの数より少ない場合に、解析されたフィールドをアップロードするかどうかを指定します。
たとえば、ログが 11|22|33|44|55 で、区切り文字が縦棒 (|) の場合、ログコンテンツは 11、22、33、44、55 に解析されます。キーはそれぞれ A、B、C、D、E に設定されます。
true: ログ 11|22|33|55 を収集する場合、55 はキー D の値として Simple Log Service にアップロードされます。
false: ログ 11|22|33|55 を収集する場合、フィールドの数がキーの数と一致しないため、このログエントリは破棄されます。
構成例
{ "configName": "logConfigName", "logSample": "testlog", "inputType": "file", "outputType": "LogService", "inputDetail": { "logPath": "/logPath", "filePattern": "*", "logType": "delimiter_log", "topicFormat": "default", "discardUnmatch": true, "enableRawLog": true, "fileEncoding": "utf8", "maxDepth": 999, "separator": ",", "quote": "\"", "key": [ "ip", "time" ], "autoExtend": true }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Logtail プラグインに固有の構成
パラメーター
次の表は、プラグインを使用したログ収集に固有の構成について説明しています。
パラメーター
タイプ
必須
例
説明
plugin
JSON オブジェクト
はい
なし
Logtail プラグインを使用してログを収集する場合に、このパラメーターを構成します。詳細については、「Logtail プラグインを使用してデータを収集する」をご参照ください。
構成例
{ "configName": "logConfigName", "outputType": "LogService", "inputType": "plugin", "inputDetail": { "plugin": { "inputs": [ { "detail": { "ExcludeEnv": null, "ExcludeLabel": null, "IncludeEnv": null, "IncludeLabel": null, "Stderr": true, "Stdout": true }, "type": "service_docker_stdout" } ] } }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
outputDetail パラメーター
これらのパラメーターは、ログ出力先のプロジェクトと Logstore を構成するために使用されます。
パラメーター | タイプ | 必須 | 例 | 説明 |
projectName | string | はい | my-project | プロジェクト名。リクエストのプロジェクト名と同じである必要があります。 |
logstoreName | string | はい | my-logstore | Logstore 名。 |
付録: ExactlyOnce 書き込み機能
ExactlyOnce 書き込み機能を有効にすると、Logtail は詳細なファイルレベルのチェックポイントをローカルディスクに記録します。プロセスエラーやサーバーの再起動などの例外が発生した場合、Logtail はこれらのチェックポイントを使用して、収集が再開されたときに各ファイルの再処理範囲を決定します。また、Simple Log Service からの増分シーケンス番号を使用して、重複データの送信を防ぎます。ただし、この機能はディスク書き込みリソースを消費します。次の制限が適用されます。
チェックポイントはローカルディスクに保存されます。ディスクがいっぱいになったり破損したりしてチェックポイントを記録できない場合、回復に失敗することがあります。
チェックポイントはファイルデータではなく、ファイルメタデータのみを記録します。ファイル自体が削除または変更された場合、回復できないことがあります。
ExactlyOnce 書き込み機能は、Simple Log Service によって記録された現在の書き込みシーケンス番号に依存します。各シャードは最大 10,000 レコードをサポートします。この制限を超えると、古いレコードが置き換えられます。信頼性を確保するために、同じ Logstore の `アクティブなファイルの数 × Logtail インスタンスの数` の結果は 9,500 を超えてはなりません。バッファーを残すことをお勧めします。
アクティブなファイル: 読み取りおよび送信中のファイルの数。同じ論理名を持つローテーションされたファイルはシリアルに送信され、1 つのアクティブなファイルとしてカウントされます。
Logtail インスタンス: Logtail プロセスの数。デフォルトでは、各サーバーに 1 つのインスタンスがあります。したがって、この数は通常、サーバーの数と同じです。
パフォーマンス上の理由から、Logtail はデフォルトで `sync` を呼び出してチェックポイントをディスクに書き込みません。バッファリングされたデータがディスクに書き込まれる前にサーバーが再起動すると、チェックポイントが失われる可能性があります。同期書き込みを有効にするには、Logtail 起動構成ファイル (/usr/local/ilogtail/ilogtail_config.json) に "enable_checkpoint_sync_write": true, を追加します。詳細については、「Logtail 起動パラメーターの設定」をご参照ください。