# Logbus2 利用ガイド
# 1. LogBus2 の紹介
LogBus2 は、元の LogBus に基づいて再開発されたログ同期ツールです。元の LogBus と比較すると、メモリ フットプリントは元の 1/5 に削減されますが、速度は 5 倍に向上します。
LogBus2は主にバックエンドのログデータをTEシステムにリアルタイムでインポートするために使用されます。そのコアの動作原理はFlumeやLoggieと似ています。サーバーのログディレクトリ内のファイルフローを監視します。ディレクトリ内のログファイルに新しいデータがある場合、新しいデータを検証してTEシステムにリアルタイムで送信します。
以下のタイプのユーザーがLogBus2を使用してデータに送信することを推奨します。
- サーバーSDK/Kafka/SLSを使用してデータをTE形式で保存し、LogBus2を介してデータをアップロードするユーザー
- データの精度と次元に高い要件があるユーザーで、クライアントSDKだけでは要件を満たせず、またクライアントSDKへのアクセスが不便なユーザー
- バックエンドのデータプッシュプロセスを自分で開発したくないユーザー
- 大量の過去のデータを転送する必要があるユーザー
- メモリ使用量と転送効率に一定の要件があるユーザー
# 2. LogBus2 をダウンロード
**最新バージョン: **2.1.0.2
**更新時間:**2022-12-13
Linux-amd64 download (opens new window)
Linux-arm64 download (opens new window)
Windows version download (opens new window)
Mac Apple Silicon download (opens new window)
Mac Intel download (opens new window)
Docker Image (opens new window)
#
# 3. 使用前の準備
# ファイルの種類
- アップロードされたデータ ファイルが格納されるディレクトリを決定し、LogBus2 を構成します。この場合、LogBus2 は fc 内のファイルの変更を監視します。
- 監視ディレクトリに保存されているアップロード データ ログの名前を直接変更しないでください。ログの名前を変更することは、新しいファイルを作成することと同じであり、LogBus2 はこれらのファイルを再度アップロードする可能性があり、結果としてデータが重複します。
- LogBus2 の実行ディレクトリには、現在のログ転送の進行状況のスナップショットがあるため、実行ディレクトリ内のファイルを自分で操作しないでください。
# Kafka
- Kafka メッセージ形式を決定します。この場合、Logbus は Kafka Messageのvalueの部分のみを処理します。
- 順不同のデータを避けるために、パーティションがユーザー ID に基づいて分割されていることを確認してください。
- 複数の Logbus コンシューマーの障害を回避するために、Kafka Consumer Groupの使用を有効にしてください。
- デフォルトではearliestから消費します。指定した場所から消費するには、最初に特定のオフセットを持つconsumer groupを作成する必要があります。
# SLS
- Alibaba Cloud に連絡して Kafka プロトコルのサポートを有効にします。
# 4. LogBus2のインストールとアップデート
# インストール
installation package. (opens new window) LogBus2 をダウンロードして解凍します。
解凍されたディレクトリ構造:
- **Logbus: **LogBus2: バイナリ ファイル
- **conf: **
- **daemon.json: **構成ファイル テンプレート 2
- tools:
- **configConvert: **構成変換ツール
# Update
要件: LogBus2 version ≥ 2.0.1.
直接実行
./logbus update
、更新後に実行します
./logbus start
# 5. Logbus2 の使用と設定
# Start parameters
# Start
./logbus start
Stop
./logbus stop
# Restart
./logbus restart
# Check configuration and connectivity to TA system
./logbus env
Reset LogBus read records
./logbus reset
# Kafka is currently unavailable
View transmission progress
./logbus progress
# Kafka is currently unavailable
# Verify file format
./logbus dev
# Kafka is currently unavailable
# 設定ファイルガイド
# デフォルトの構成テンプレート
{
"datasource": [
{
"file_patterns": [
"/data/log1/*.txt",
"/data/log2/*.log"
],//file matching character
"app_id": "app_id",//app_id from the token of ta's official website, please get the APPID of the implementation project on the project configuration page of TA background and fill it here
},
],
"push_url": "http://RECEIVER_URL"//http transmission, please use http://receiver.ta.thinkingdata.cn/, if you enable privatization deployment, please modify the transmission URL to http://data acquisition address/
}
# 共通構成
# ファイル
{
"datasource": [
{
"type":"file",
"file_patterns": ["/data/log1/*.txt", "/data/log2/*.log"], //file Glob matching rules
"app_id": "app_id", //APPID from the token of ta's official website, please get the APPID of the implementation project on the project configuration page of TA background and fill it here
"unit_remove": "day"| "hour", //file deletion unit
"offset_remove": 7,//unit_remove*offset_remove get the final removal time**offset must be greater than 0, otherwise it is invalid
"remove_dirs": true|false,//enable folder deletion or not NOTE: Only delete the folder after all files in the folder have been consumed
"http_compress": "gzip"|"none",//enable http compression or not,
}
],
"cpu_limit": 4, //limit the number of CPU cores used by Logbus2
"push_url": "http://RECEIVER_URL"
}
# Kafka
{
"datasource": [
{
"type":"kafka", //type: Kafka
"topic":"ta", //specific topic
"brokers":[
"localhost:9091" //Kafka Brokers address
],
"consumer_group":"logbus", //consumer group name
"cloud_provider":"ali"|"tencent"|"huawei", //cloud provider name
"username":"", //Kafka username
"password":"", //Kafka password
"instance":"", //cloud provider instance name
"protocol":"none"|"plain"|"scramsha256"|"scramsha512", //authentication protocol
"block_partitions_revoked":true,
"app_id":"YOUR_APP_ID"
}
],
"cpu_limit": 4, //limit the number of CPU cores used by Logbus2
"push_url": "http://RECEIVER_URL"
}
# SLS
注意: Alibaba Cloud に連絡して、SLS を使用する前に SLS Kafka 使用プロトコルを有効にしてください。
{
"datasource": [
{
"type":"kafka",
"brokers":["{PROJECT}.{ENTRYPOINT}:{PORT}"], //NOTE: see https://www.alibabacloud.com/help/en/log-service/latest/endpoints#reference-wgx-pwq-zdb for details
"topic":"{SLS_Logstore_NAME}", //Logstore name
"protocol":"plain",
"consumer_group":"{YOUR_CONSUMER_GROUP}", // ConsumerGroup
"username":"{PROJECT}", // Project name
"disable_tls":true,
"password":"{ACCESS_ID}#{ACCESS_PASSWORD}", // authorization by Alibaba Cloud RAM
"app_id":"YOUR_APP_ID"
}
],
"push_url": "http://RECEIVER_URL"
}
# 完全構成アイテム
# 設定項目一覧と説明
構成 | タイプ | 例 | 必須フィールド | 説明 |
---|---|---|---|---|
cpu_limit | Number | 4 | Limit the maximum allowable number of CPU cores used by Logbus2 | |
push_url | String | ✔️ | Receiver address, starting with http/https. | |
datasource | Object list | ✔️ | Data source list |
# datasource(データ ソース構成)
# ファイル
構成 | タイプ | 例 | 必須フィールド | デフォルト | 説明 |
---|---|---|---|---|---|
app_id | String | ✔️ | "" | Data reporting project appid | |
appid_in_data | Bool | false | false | When set to true, logbus2 will use appid from data instead rather than app_id. | |
specified_push_url | Bool | false | True: do not parse push_url, and send it as the push_url configured by the user, that is, http://yourhost:yourport. False: After parsing the push_url, send it according to the logbus url specified by the receiver, namely http://yourhost:yourport/logbus. | ||
add_uuid | Bool | false | True: Add the uuid property in each piece of data or not (the transmission efficiency will reduce if enabled). | ||
file_patterns | String list | ✔️ | [""] | Directory wildcards are supported, but regular expressions are not supported at this time. If without special configuration, it is bypassed by default. Files suffixed with gz/.iso/.rpm/.zip/.bz/.rar/.bz2 | |
ignore_files | String list | [""] | Files filtered in file_patterns | ||
unit_remove | String | "" | Delete user files. Delete by day or hour. Note: If no configuration file is automatically deleted, the memory footprint of LogBus2 will gradually increase | ||
offset_remove | Int | 0 | Delete user files. When offset_remove>0 and unit_remove is configured by day or hour, the user file deletion function can be enabled. | ||
remove_dirs | Bool | true|false | false | Delete the folder or not | |
http_timeout | String | 500ms | 600s | Timeout when sending data to receiver, default value: 600s. Range: 200ms - 600s. Support milliseconds "ms", seconds "s", minutes "m", hours "h". | |
iops | int | 20000 | 20000 | Limit Logbus data traffic per second (number of items) | |
limit | bool | true|false | false | Turn on the speed limit switch | |
http_compress | String | none | gzip | none | Format of data compression when sending http. none=no compression. Default value: none. |
注意: 最初に max_batch_size が検証され、続いてバッチ長が検証されます。最後の間隔が 2 秒の場合、強制的に送信されます。
# Kafka
注意: Logbus Kafka モードを有効にする前に、Consumer Group の無料使用を有効にしてください。
構成 | タイプ | 例 | 必須フィールド | デフォルト | 説明 |
---|---|---|---|---|---|
brokers | String List | ["localhost:9092"] | ✔️ | [""] | Kafka Brokers |
topic | String | "ta-msg-chan" | ✔️ | "" | Kafka topic |
consumer_group | String | "ta-consumer" | ✔️ | "" | Kafka Consumer Group |
protocol | String | "plain" | "none" | Kafka authentication mode | |
username | String | "ta-user" | "" | Kafka username | |
password | String | "ta-password" | "" | Kafka password | |
instance | String | "" | "" | CKafka instance ID | |
fetch_count | Number | 1000 | 10000 | Number of messages per Poll | |
fetch_time_out | Number | 30 | 5 | Poll timeout | |
read_committed | Bool | true | false | Consume Kafka UnCommitted data or not | |
disable_tls | Bool | true | false | Disable tls verification | |
cloud_provider | String | "tencent" | "" | Enabled when the public network is connected to Kafka. Currently, the following cloud providers provide this service: tencent, huawei, ali | |
block_partitions_revoked | Bool | false | false | Block consumption or not. If disabled, data duplication will occur when multiple Logbuses are in the same consumer_group |
注意: Logbusv2 はロード バランス モードで Kafka を消費しており、Logbusv2 deployments ≤ partition num
# 監視構成とダッシュボードの構築
Monitoring Configuration DEMO
# アラート構成
Alert Configuration DEMO (opens new window)
# プラグインの使用
Plugin Configuration DEMO (opens new window)
# 6. 高度利用
# 単一の Logbus を介して複数のイベントを送信
単一の Logbus 展開の場合、IO の制限により、一部の情報が遅延して消費される状況が発生する可能性があります。例:
ポーリングのため、消費順序はevent_*/log.1 -> event_*/log.2 -> event_*/log.3
この場合、ファイルの消費が遅くなります。複数の LogBuses を有効にして、GloB を介してコンテキスト上の意味のないログをカットし、GloB に一致するファイルを並行してアップロードできます。
# 複数の PipeLine 構成
注意: 複数の PipeLine で appid を繰り返すことはできません
{
"datasource": [
{
"file_patterns": ["/data/log1/*.txt", "/data/log2/*.log"], //file Glob matching rules
"app_id": "app_id", //APPID from the token of ta's official website, please get the APPID of the implementation project on the project configuration page of TA background and fill it here
"unit_remove": "day"| "hour", //file deletion unit
"offset_remove": 7,//unit_remove*offset_remove get the final removal time**offset must be greater than 0, otherwise it is invalid
"remove_dirs": true|false,//enable folder deletion or not NOTE: Only delete the folder after all files in the folder have been consumed
"http_compress": "gzip"|"none",//enable http compression or not
},
{
"file_patterns": ["/data/log1/*.txt", "/data/log2/*.log"], //file Glob matching rules
"app_id": "app_id", //APPID from the token of ta's official website, please get the APPID of the implementation project on the project configuration page of TA background and fill it here
"unit_remove": "day"| "hour", //file deletion unit
"offset_remove": 7,//unit_remove*offset_remove get the final removal time**offset must be greater than 0, otherwise it is invalid
"remove_dirs": true|false,//enable folder deletion or not NOTE: Only delete the folder after all files in the folder have been consumed
"http_compress": "gzip"|"none",//enable http compression or not
}
],
"cpu_limit": 4, //limit the number of CPU cores used by Logbus2
"push_url": "http://RECEIVER_URL"
}
# LogBus2 On Docker
# Pull the latest mirror
docker pull thinkingdata/ta-logbus-v2:latest
# Create a persistent folder on the host and initialize the configuration file
mkdir -p /your/folder/path/{conf,log,runtime}
touch /your/folder/path/daemon.json
vim /your/folder/path/daemon.json
⚠️ Warning: Do not delete any file in the runtime directory by yourself
# Modify the configuration template and write to daemon.json
{
"datasource": [
{
"type":"file",
"app_id": "YOUR APP ID",
"file_patterns": ["/test-data/*.json"],
"app_id":""
},
{
"type":"kafka",
"app_id": "YOUR APP ID",
"brokers": ["localhot:9092"],
"topic":"ta-message",
"consumer_group":"ta",
"app_id":""
}
],
"push_url": "YOUR PUSH URL WITHOUT SUFFIX OF/logbus"
}
# Mount the data folder and start LogBus
docker run -d \
--name logbus-v2 \
--restart=always \
-v /your/data/folder:/test-data/ \
-v /your/folder/path/conf/:/ta/logbus/conf/ \
-v /your/folder/path/log/:/ta/logbus/log/ \
-v /your/folder/path/runtime/:/ta/logbus/runtime/ \
thinkingdata/ta-logbus-v2:latest
# LogBus2 On K8s
# Prepare the environment
- Kubectl can connect to the k8s cluster and has deployment permissions.
- Installing dependencies: install helm to the local command line according to the helm file https://helm.sh/zh/docs/intro/install/
# Download the logbus v2 helm file
download link (opens new window)
tar xvf logBusv2-helm.tar && cd logbusv2
# Configure logbus
# Preparations
- Create the log pvc to be uploaded on the console
- Get the pvc name and confirm the namespace
- Get TA's app id, receiver url
# Modify values.yaml
pvc:
name: pvc name
logbus_version: 2.1.0.2
namespace: namcspace name
logbus_configs:
- push_url: "http://receiver address of TA upload data"
datasource:
- file_patterns:
- "container:wildcard of the relative path to the file" # Do not delete the prefix "container:"
- "container: wildcard of the relative path to the file" # Do not delete the prefix "container:"
app_id: app id of TA system
# yaml for preview rendering
helm install --dry-run -f values.yaml logbus .
# Use helm to deploy logbusv2
helm install -f values.yaml logbus-v2 .
Check the created statefulset
kubectl get statefulset
Check the created pod
kubectl get pods
Update the LogBus in K8s
vim value.yaml # Modify the previous value.yaml file
# Modify logbus_version to the latest NOTE: Considering backward compatibility, it's better not to use the latest!
logbus_version:2.0.1.8 -> logbus_version:2.1.0.2
# save and exit
helm upgrade -f values.yaml logbus .
# Wait for rolling update
# Notes
Logbusv2 has read and write permissions on the pvc of the mounted log.
Logbusv2 writes file consumption records and running logs to PVC respectively according to pod. If PVC deletes logbus-related records, there is a risk of data retransmission.
# Configuration details
Execute command:
helm show values .
Show available configurations:
# Default values for logbusv2.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
pvc:
name: pvc-logbus
logbus_version: 2.1.0.2
namespace: big-data
logbus_configs:
#### pod 1
#### push_url: receiver url, need http:// https:// prefix
- push_url: "http://172.17.16.6:8992/"
datasource:
- file_patterns:
#### target files relative path in pvc
- "container:/ta-logbus-0/data_path/*"
#### TA app_id
app_id: "thinkingAnalyticsAppID"
#### pod 2
- push_url: "http://172.26.18.132:8992/"
datasource:
- file_patterns:
- "container:/ta-logbus-1/data_path/*"
app_id: "thinkingAnalyticsAppID"
#### pod 3
- push_url: "http://172.26.18.132:8992/"
datasource:
- file_patterns:
- "container:/ta-logbus-2/data_path/*"
app_id: "thinkingAnalyticsAppID"
#### logbus pod requests
#requests:
# cpu: 2
# memory: 1Gi
requests not clearly configured will not be reflected in yaml.
# pvc order catalog
pvc:
name: write the actual pvc name
namespace: existing namespace
logbus_configs:
- push_url: http or https, write the TA receiver URL that the pod can access
datasource:
- file_patterns:
- "container:/ta-logbus-0/data_path/*" "container:"placeholder. During yaml deployment, the relative path is replaced with an absolute path that the container can access. When configuring the directory, the directory is prefixed with container:.
app_id: "thinkingAnalyticsAppID" TA system app id
Multiple directories in pvc
When reading multiple directories in pvc, it is recommended to deploy them in pods, and each pod is responsible for a folder. This allows for better deployment performance and security.
pvc:
name: pvc-logbus
namespace: big-data
logbus_configs:
#### pod 1
#### push_url: receiver url, need http:// https:// prefix
- push_url: "http://172.17.16.6:8992/"
datasource:
- file_patterns:
#### target files relative path in pvc
- "container:/ta-logbus-0/data_path/*"
#### TA app_id
app_id: "thinkingAnalyticsAppID"
#### pod 2
- push_url: "http://172.26.18.132:8992/"note that each app id and push url need to be configured separately
datasource:
- file_patterns:
- "container:/ta-logbus-1/data_path/*"
app_id: "thinkingAnalyticsAppID"
#### pod 3
- push_url: "http://172.26.18.132:8992/"
datasource:
- file_patterns:
- "container:/ta-logbus-2/data_path/*"
app_id: "thinkingAnalyticsAppID"
# Multi-pvc
Currently, it only supports the deployment of a single pvc, and multi-pvc requires multiple configurations of values.yaml file
# 7. FAQs
Q: フォルダーの削除が有効になっているのに、LogBus がフォルダーを削除しないのはなぜですか?
**A: **LogBus がフォルダーを削除するための前提条件は、現在のフォルダー内のファイルが LogBus によって読み取られ、フォルダー内にファイルがないことです。その後、フォルダーの削除がトリガーされます。
Q: ログをアップロードできないのはなぜですか?
**A:**LogBus が読み取るデータ ファイルでは、1 つのデータに改行があってはなりません。構成されたデータ ファイルは正規表現を対応していません。ワイルドカード (Glob) のみが使用されます。設定されたデータ ファイル ルールをファイルに一致させることができます。
Q: ファイルが繰り返しアップロードされるのはなぜですか?
**A: **LogBus が読み取るデータ ファイルでは、1 つのデータに改行があってはなりません。構成されたデータ ファイルは正規表現をサポートしていません。ワイルドカード (Glob) のみが使用されます。設定されたデータ ファイル ルールをファイルに一致させることができますか。
# 8. リリース履歴
# バージョン: 2.1.0.2 --- 2022.12.13
追加
- プラグインはプロパティ分割を対応
修正
- 複数のパイプラインの下に meta_name を作成
← リリース履歴 LogBus 利用ガイド →