目录
此内容是否有帮助?

# Logbus2 利用ガイド

# 1. LogBus2 の紹介

LogBus2 は、元の LogBus に基づいて再開発されたログ同期ツールです。元の LogBus と比較すると、メモリ フットプリントは元の 1/5 に削減されますが、速度は 5 倍に向上します。


LogBus2は主にバックエンドのログデータをTEシステムにリアルタイムでインポートするために使用されます。そのコアの動作原理はFlumeやLoggieと似ています。サーバーのログディレクトリ内のファイルフローを監視します。ディレクトリ内のログファイルに新しいデータがある場合、新しいデータを検証してTEシステムにリアルタイムで送信します。

以下のタイプのユーザーがLogBus2を使用してデータに送信することを推奨します。

  1. サーバーSDK/Kafka/SLSを使用してデータをTE形式で保存し、LogBus2を介してデータをアップロードするユーザー
  2. データの精度と次元に高い要件があるユーザーで、クライアントSDKだけでは要件を満たせず、またクライアントSDKへのアクセスが不便なユーザー
  3. バックエンドのデータプッシュプロセスを自分で開発したくないユーザー
  4. 大量の過去のデータを転送する必要があるユーザー
  5. メモリ使用量と転送効率に一定の要件があるユーザー

# 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. 使用前の準備

# ファイルの種類

  1. アップロードされたデータ ファイルが格納されるディレクトリを決定し、LogBus2 を構成します。この場合、LogBus2 は fc 内のファイルの変更を監視します。
  2. 監視ディレクトリに保存されているアップロード データ ログの名前を直接変更しないでください。ログの名前を変更することは、新しいファイルを作成することと同じであり、LogBus2 はこれらのファイルを再度アップロードする可能性があり、結果としてデータが重複します。
  3. LogBus2 の実行ディレクトリには、現在のログ転送の進行状況のスナップショットがあるため、実行ディレクトリ内のファイルを自分で操作しないでください。

# Kafka

  1. Kafka メッセージ形式を決定します。この場合、Logbus は Kafka Messageのvalueの部分のみを処理します。
  2. 順不同のデータを避けるために、パーティションがユーザー ID に基づいて分割されていることを確認してください。
  3. 複数の Logbus コンシューマーの障害を回避するために、Kafka Consumer Groupの使用を有効にしてください。
  4. デフォルトではearliestから消費します。指定した場所から消費するには、最初に特定のオフセットを持つconsumer groupを作成する必要があります。

# SLS

  1. 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

  1. Kubectl can connect to the k8s cluster and has deployment permissions.
  2. 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

  1. Create the log pvc to be uploaded on the console
  2. Get the pvc name and confirm the namespace
  3. 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 を作成