docker elkログ収集システムの導入(kafka方式)
8270 ワード
一、logback+elk、tcp方式送信
環境構築参考前のブログ:https://www.cnblogs.com/alan6/p/11667758.html
tcp方式で問題がある:tcp方式はログ量が比較的大きく、同時量が高い場合、ログが失われる可能性がある.kafkaを使用してログメッセージを保存し、トラフィックカットピークを作成することも考えられます.
二、logback+kafka+elk
1、docker zookeeeper+kafkaをインストールする
ラミラー:docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka
実行zookeeeper:docker run-d--name zookeeeper--restart always--publish 2181:2181--volume/etc/localtime:/etc/localtime wurstmeister/zookeeeper:latest
実行kafka:docker run-d--name kafka--restart always--publish 9092:9092--link zookeeeper--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181\--env KAFKA_ADVERTISED_HOST_NAME=kafka所在宿ホストのIP--env KAFKA_ADVERTISED_PORT=9092\--volume/etc/localtime:/etc/localtime\wurstmeister/kafka:latest
2、logbackをkafkaに送信するように設定する
サービス側のpomファイルに依存を追加
<dependency>
<groupId>com.github.danielwegenergroupId>
<artifactId>logback-kafka-appenderartifactId>
dependency>
logback-spring.xmlプロファイルにappenderを追加
<appender name="kafka" class="com.github.danielwegener.logback.kafka.KafkaAppender">
<encoder class="com.github.danielwegener.logback.kafka.encoding.LayoutKafkaMessageEncoder">
<layout class="net.logstash.logback.layout.LogstashLayout" >
<includeContext>trueincludeContext>
<includeCallerData>trueincludeCallerData>
<customFields>{"system":"test"}customFields>
<fieldNames class="net.logstash.logback.fieldnames.ShortenedFieldNames"/>
layout>
<charset>UTF-8charset>
encoder>
<topic>kafka_elktopic>
<keyingStrategy class="com.github.danielwegener.logback.kafka.keying.HostNameKeyingStrategy" />
<deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy" />
<producerConfig>bootstrap.servers=192.168.33.128:9092producerConfig>
appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE"/>
<appender-ref ref="kafka" />
root>
3、logstashの設定
elkを起動し、コンテナに入ります.
#docker exec -it elk/bin/bash
/etc/logstash/conf.d/ディレクトリに入り、プロファイルlogstashを作成します.conf、編集内容、主にinputとoutput
input {
kafka {
bootstrap_servers => ["192.168.33.128:9092"]
auto_offset_reset => "latest"
consumer_threads => 5
decorate_events => true
group_id => "elk"
topics => ["elk_kafka"]
type => "bhy"
}
}
output {
stdout {}
elasticsearch {
hosts => ["192.168.33.128:9200"]
index => "kafka-elk-%{+YYYY.MM.dd}"
}
}
編集/etc/init.d/logstash,修正
LS_USER=root // logstash
LS_GROUP=root // logstash
修正が完了したら終了し、elkコンテナ#docker restart elkを再起動します
4、kibanaの配置
前のブログとの差は少なく、Index Patternはlogstashで設定した「kafka-elk-日付」のhttps://www.cnblogs.com/alan6/p/11667758.html