Filebeatは、複数のログをさまざまなKafkaトピックに出力します

この記事の元のリンク:https://blog.csdn.net/xzk9381/article/details/114324351

通常、物理マシンでFilebeatを使用してログを収集し、Kafkaに出力する場合、複数のfilebeat構成ファイルが書き込まれ、複数のfilebeatプロセスが開始されて、さまざまなパスでログが収集され、さまざまなトピックにプッシュされます。次に、すべてのログパスがfilebeat構成ファイルに書き込まれる場合は、さまざまなログに従ってトピックを設定する必要があります。

実際、logstashもこの機能を実現できます。ただし、ここではFilebeatでの実装のみを示しています。手順と説明は次のとおりです。

さまざまなログをさまざまなインデックスに収集する場合は、私の別の記事を参照できます:https//blog.csdn.net/xzk9381/article/details/109535450

  1. たとえば、次の3つのログファイルがあり、さまざまなトピックに出力する必要があります。
access.log  ---->  Topic:topic-for-access-log
error.log   ---->  Topic:topic-for-error-log
info.log    ---->  Topic:topic-for-info-log
  1. Kafkaで3つのトピックを作成します。
[@localhost ~]# for type in access error info; do /opt/kafka_cluster/kafka/bin/kafka-topics.sh --create --topic topic-for-${type}-log --zookeeper 10.16.12.204:2181 --partitions 1 --replication-factor 1; done
Created topic topic-for-access-log.
Created topic topic-for-error-log.
Created topic topic-for-info-log.
  1. 対応するトピックがすでにzookeeperに存在するかどうかを確認します。
[@localhost ~]# /opt/kafka_cluster/zookeeper/bin/zkCli.sh
Connecting to localhost:2181
[zk: localhost:2181(CONNECTED) 0] ls /brokers/topics
[__consumer_offsets, topic-for-access-log, topic-for-error-log, topic-for-info-log]
  1. 次のFilebeat構成ファイルを記述します。
filebeat.idle_timeout: 2s
filebeat.name: filebeat-shiper
filebeat.spool_zie: 50000

filebeat.inputs:                      # 从这里开始定义每个日志的路径、类型、收集方式等信息
- type: log                           # 指定收集的类型为 log
  paths:
   - /opt/log_test/access.log         # 设置 access.log 的路径
  fields:                             # 设置一个 fields,用于标记这个日志 
    topic: topic-for-access-log       # 为 fields 设置一个关键字 topic,值为 kafka 中已经设置好的 topic 名称
  enabled: true
  backoff: 1s
  backoff_factor: 2
  close_inactive: 1h
  encoding: plain
  harvester_buffer_size: 262144
  max_backoff: 10s
  max_bytes: 10485760
  scan_frequency: 10s
  tail_lines: true
- type: log
  paths:
   - /opt/log_test/error.log          # 设置 error.log 的路径
  fields:                             # 设置一个 fields,用于标记这个日志 
    topic: topic-for-error-log        # 为 fields 设置一个关键字 topic,值为 kafka 中已经设置好的 topic 名称
  enabled: true
  backoff: 1s
  backoff_factor: 2
  close_inactive: 1h
  encoding: plain
  harvester_buffer_size: 262144
  max_backoff: 10s
  max_bytes: 10485760
  scan_frequency: 10s
  tail_lines: true
- type: log
  paths:
   - /opt/log_test/info.log          # 设置 info.log 的路径
  fields:                            # 设置一个 fields,用于标记这个日志 
    topic: topic-for-info-log        # 为 fields 设置一个关键字 topic,值为 kafka 中已经设置好的 topic 名称
  enabled: true
  backoff: 1s
  backoff_factor: 2
  close_inactive: 1h
  encoding: plain
  harvester_buffer_size: 262144
  max_backoff: 10s
  max_bytes: 10485760
  scan_frequency: 10s
  tail_lines: true

output.kafka:                       # 指定输出到 Kafka
  bulk_flush_frequency: 0
  bulk_max_size: 2048
  codec.format:
    string: '%{[message]}'
  compression: gzip
  compression_level: 4
  hosts:
  - 10.16.12.204:9092               # 指定 Kafka 的地址,如果是集群则写集群的地址
  max_message_bytes: 10485760
  partition.round_robin:
    reachable_only: true
  required_acks: 1
  topic: '%{
    
    [fields.topic]}'        # 根据每个日志设置的 fields.topic 来输出到不同的 topic
  workers: 4

setup.ilm.enabled: false
  1. アクセス、エラー、および情報のログファイルに次のように書き込みます。
echo "this is access log" > /opt/log_test/access.log
echo "this is error log" > /opt/log_test/error.log
echo "this is info log" > /opt/log_test/info.log
  1. Filebeatを開始します。
/opt/filebeat-7.3.0/filebeat run -c /opt/filebeat-7.3.0/conf/test.yaml -httpprof 0.0.0.0:15502 -path.logs /opt/filebeat-7.3.0/logs/filebeat_15502 -e
  1. Kafkaクラスター消費ログに接続します。
[@k8s-master1 ~]# /opt/kafka_cluster/kafka/bin/kafka-console-consumer.sh --topic topic-for-access-log --bootstrap-server 10.16.12.204:9092 --from-beginning
this is access log

[@k8s-master1 ~]# /opt/kafka_cluster/kafka/bin/kafka-console-consumer.sh --topic topic-for-error-log --bootstrap-server 10.16.12.204:9092 --from-beginning
this is error log

[@k8s-master1 ~]# /opt/kafka_cluster/kafka/bin/kafka-console-consumer.sh --topic topic-for-info-log --bootstrap-server 10.16.12.204:9092 --from-beginning
this is info log

Kafkaのさまざまなトピックでさまざまなパスのログが収集されていることがわかります。

この記事の元のリンク:https://blog.csdn.net/xzk9381/article/details/114324351

おすすめ

転載: blog.csdn.net/xzk9381/article/details/114324351