结构:

logstash 由管道组成,而一个管道由input,output和filter三个元素组成

 

1.docker-compose.yml配置

logstash:
    image: docker.elastic.co/logstash/logstash:7.3.0
    container_name: logstash
    volumes:
      - /usr/local/workspace/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
      - /usr/local/workspace/elk/logstash/pipeline:/usr/share/logstash/pipeline
    ports:
      - 5044:5044
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - esnet
    depends_on:
      - es01
      - es02

说明:这里要挂载两个文件夹,一个是logstash的管道pipeline的配置文件夹,一个是logstash自身的配置文件,5044端口是为了接受filebeat传过来数据,depends_on 是为了在es01和es02服务启动之后再启动该容器,elasticsearch集群可查看我的其他博客

2.config下的logstash.yml配置

http.host: "0.0.0.0"

默认配置基本上够用了,只用设置一个host就行了

3.pipeline的管道配置文件logstash.conf

input {
    beats {
        port => "5044"
    }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
    stdout { codec => rubydebug }
    elasticsearch {
        hosts => ["192.168.20.101:9200"]
    }
}

说明:input接收beat的数据,filter是对数据进行操作,可以配置格式,新增常用字段等,output是输出索引的地址,一般就是elasticsearch,如果elasticsearch的hosts有多个地址,会自动负载均衡,请查看文档

4.其他

想要构建整个elk,请查看我的其他博客,我将elk拆分成了4个博客

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐