docker 部署 logstash,实现 logstash + influxdb 监控 kafka 数据

一、docker 部署 logstash

1、创建 Dockerfile

vim Dockerfile

FROM logstash:7.8.0

# 安装input插件
#RUN logstash-plugin install logstash-input-kafka
# 安装output插件
RUN logstash-plugin install logstash-output-influxdb

2、创建 image

docker build -t logstash:7.8.0 .

二、kafka + logstash + influxdb,将数据写入 influxdb

1、编写配置文件

vim logstash.yml

config:
  reload:
    automatic: true
    interval: 3s
queue:
  type: persisted
xpack:
  management.enabled: false
  monitoring.enabled: false

vim cat online-stat-to-influxdb.conf

input{
    kafka {
        bootstrap_servers => "10.0.0.1:9092"
        codec => "json" # 将kafka的消息以json格式输入 这样的话  就可以直接在output和filter的部分使用"%{key}"来引用kafka消息中的对应字段的值
        group_id => "test-online-stat" #消费者组id  为了记录消费的offset
        consumer_threads => 1  # 消费者组中多少个消费者来消费这些topic中的消息  一般情况线程数对应topic的分区个数为最佳
        topics => ["test-online-stat"]  # 需要消费的topic  可以传入多个topic
        auto_offset_reset => "latest" # 如果消费者组的offset丢失或者第一次加入 从什么位置开始消费   
   }

}
output {
  influxdb {
    host => "10.0.0.2" # influx所在的ip,port默认8086.如果没有修改默认端口的话,可以不用配置port
    port => 8086
    db => "OnlineInfoCount" # 使用的数据库
    user => "LoginInfoCount"
    password => "12345678"
    measurement => "t_minute_logical_count" # 将数据插入到哪个表中
    retention_policy => "autogen" # 使用哪个保留规则
    send_as_tags => ['vwType','vwId','areaId','serverId'] # 把哪些字段作为tag,datapoints中的字段必须大于此集合中的字段数
    allow_time_override => true  #是否允许覆盖默认的@timestamp字段  logstash在向influx插入消息时默认是将@timestamp作为time字段插入 ,所以上面的 date 过滤器中直接匹配赋值即可
    flush_size => 1000 # 多少条消息提交到influx
    idle_flush_time => 1 # 多久提交一次消息到influx
    codec => json # 将消息以json格式输出
    #coerce_values => {"cnt" => "long"} # 将某些字段的值类型强转
    data_points => {
        "vwType" => "%{vwType}"
        "vwId" => "%{vwId}"
        "areaId" => "%{areaId}"
        "serverId" => "%{serverId}"
        "cnt" => "%{cnt}"
        "time" => "%{time}"
    }
  }
  #stdout {codec => rubydebug} # 将消息打印出来
}

2、启动 container

docker run -d --name logstash -v /home/docker/logstash/config/online-stat-to-influxdb.conf:/usr/share/logstash/pipeline/online-stat-to-influxdb.conf -v /home/docker/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml --add-host=master:10.0.0.1 logstash:7.8.0

3、查看日志

docker logs -f --tail=100 logstash

你可能感兴趣的:(Docker,Logstash)