ELKB日志收集系统[3]-logstash和filebeat的安装和简单配置

531 阅读2分钟

logstash的安装

下载安装包, 下载地址

解压安装包

logstash的基本配置

logstash本身的配置不多, 其配置复杂点在于配置通过beat获取数据再推向elasticsearch的过程(我们只讨论通过beat获取数据这一种情况),这个配置logstash在config下给出了一个默认配置文件logstash-sample.conf, 当然这中简单的配置是不满足我们基本的需求的, 但是我们还是了解一下官方的配置:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

可以看出, 配置中主要的两个配置点是input和output, 其实在后续的使用过程中, 我们还会经常用到filter, 其结构如下图所示:

image.png 在后续的实例中, 会示例这块配置.

logstash的常用命令

启动 .\logstash.bat -f ..\config\logstash-sample.conf


filebeat安装

下载安装包, 下载地址

解压安装包

filebeat配置

filebeat是Beats里的一种, 也是比较常用的一种, 一般来说, 对于多个项目, elasticsearch和logstash可共用, 但是每个项目需要有一个对应的filebeat去按相应的地址去收集日志.

修改config/filebeat.yml

filebeat.inputs部分

  • 启用此输入配置:

    filebeat.inputs下, enabled改为true

  • 修改收集文件地址:

    filebeat.inputs下, 所有paths修改为自己的地址(两处), 可以使用正则

  • 配置服务名(这一块配置要与logstash中相对应, 注意!)

    解除所有注解(两处) #fieldsfields

    新增(两处)fields下, service: nginx

    fields:
        service: nginx-log
    
  • 配置 Multiline 匹配多行消息

    给一个示例, 可以按照自己的日志格式调整, 以匹配多行的log打印到一行之中

  # 匹配所有此正则格式的,与上一行为一条日志(例如空白开头的, Caused by开头的)
  multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'

  # true: 符合pattern的是一行 false: 不符合pattern的为一行
  multiline.negate: false

  # 当前行和[后面after]或[前面before]划分为一组
  multiline.match: after

Kibana部分

setup.kibana:下host接触注解, 配置为自己的地址

Outputs部分

  • 注释向elasticsearch输出

    因为使用logstash, 所以将Elasticsearch Outputoutput.elasticsearchhosts注释

  • 配置向logstash输出

    解除output.logstashhosts的注释

    hosts配置自己的地址

filebeat常用命令

启动: ./filebeat -e -c filebeat.yml