ELK自定义索引配置

一、缘由:

ELK中,如果是你使用Logstash做日志收集Agent,那么默认索引为logstash-;如果你使用Filebeat做日志收集Agent,那么默认索引为filebeat-

默认的索引,不利于我们区分不同的应用日志,所以要自定义索引和应用一一对应,这样才能更清晰快速的检索日志。

环境:Ubuntu18 + ELK 7.1.0 + Docker, 采用 Filebeat –> Logstash –> Elasticsearch –> Kibana

二、架构分析:

目前知道的架构方式有三种:

  1. Logstash –> Elasticsearch –> Kibana 弃用
  2. Filebeat –> Elasticsearch –> Kibana 简单需求使用
  3. Filebeat –> Logstash –> Elasticsearch –> Kibana 复杂需求使用

由于Filebeat和Logstash相比,更轻量更节省资源,对采集日志的机器负担最小,Agent目前普遍才用Filebeat(Beat等)。

故以上第一种架构方式基本被舍弃,如果应用少、采集日志需求简单,直接使用第二种方式;如果应用日志多、需求复杂,则要使用第三种方式。

三、解决办法:

不同的架构方式,自定义配置索引的方式不同。

1、Filebeat output 到ES(待验证):

修改filebeat.yml配置文件

# 配置输入
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /home/wwwlogs/access.log
  json.keys_under_root: true
  json.add_error_key: true
  fields:
    source: 'nginx-access'

- type: log
  enabled: true
  paths:
    - /home/wwwlogs/kibana.log
  json.keys_under_root: true
  json.add_error_key: true
  fields:
    source: 'kibana-access'

# 配置输出
output.elasticsearch:
  hosts: ["192.168.0.4:9200"]
  indices:
    - index: "%{[fields.source]}-%{+yyyy.MM.dd}"
      when.contains:
        fields.source: "nginx-access"
    - index: "%{[fields.source]}-%{+yyyy.MM.dd}"
      when.contains:
        fields.source: "kibana-access"

主要是在input那里配置自定义字段fields.source,然后再output es那里使用indices+when,即实现自定义索引。

2、Filebeat output 到Logstash(已验证):

这一个需要filebeat和logstash的配合,索引的自定义在logstash的output完成。

1)修改filebet的配置

vim filebeat.yml

# 配置输入
filebeat.inputs:

- type: log
  enabled: true
  paths:
    - /data/logs/ca/ca.log
  fields:
    type: "ca"


- type: log
  enabled: true
  paths:
    - /data/logs/ws-fund/ws-fund.log
  fields:
    type: "ws-fund"

# 配置输出
output.logstash:
  hosts: ["192.168.0.4:5044"]

2) 修改logstash配置

vim logstash.conf

# 配置输入
input {
  beats {
    port => 5044
  }
}

# 配置输出
output {
    if [fields][type] == "ws-fund"{
      elasticsearch {
        hosts => ["http://es01:9200"]
        index => "ws-fund-%{+YYYY.MM.dd}"
      }
    }else if [fields][type] == "ca"{
      elasticsearch {
        hosts => ["http://es01:9200"]
        index => "ca-%{+YYYY.MM.dd}"
      }
    }else {
      elasticsearch {
        hosts => ["http://es01:9200"]
        index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
      }
    }
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com

×

喜欢就点赞,疼爱就打赏