Configuração ELK

Ambiente:
Centos7.4

软件 :
jdk-1.8.0_211 ; elasticsearch
-7.9.2 ;
search-guard-7
logstash-7.9.2 ;
kibana-7.9.2 ;
filebeat-7.7.1

Cenário: O
aplicativo Java desenvolvido pela empresa possui três arquivos de log, appname_info.log, appname_warn.log e appname_error.log. O formato dos logs de informações e avisos são os mesmos, e o log de erros é um log de erros do aplicativo java.

Dificuldade 1: devido à configuração do search-guard-7, o erro de autenticação é relatado quando o logstash se conecta ao elasticsearch. A configuração final é a seguinte:

output {
    elasticsearch {
        hosts => ["192.168.20.39:9200", "192.168.20.40:9200", "192.168.20.41:9200"]
        ssl => true
        ssl_certificate_verification => false
        cacert => "/export/server/logstash-7.9.2/config/root-ca.pem"
        index => "ngms-exchange-%{+YYYY.MM.dd}"
        user => "admin"
        password => "admin"
    }
}

Dificuldade 2: logstash corresponde aos logs em dois formatos, a configuração é a seguinte:

filter {
    grok {
        match => {
            "message" => [
                '(?<recod-time>\d+-\d+-\d+\s+\d+:\d+:\d+\.\d+)(\|)(?<log-level>\w+)(\s+\|)(?<log-message>.*)',  #匹配单行日志
                '(?m)^%{TIMESTAMP_ISO8601:recod-time}\|%{LOGLEVEL:log-level}\|%{GREEDYDATA:log-message}'  #匹配多行日志
            ]
        }
        remove_field => ["message","agent","flags","ecs","os","path","@version"]
    }

    date {
        match => ["recod-time","yyyy-MM-dd HH:mm:ss.SSS"]
        target => "@timestamp"  #用日志的时间替换logstash原来的timestamp
    }
}

Dificuldade 3: Use filebeat para gerar logs de diferentes aplicativos para logstash, adicionar tags na configuração de filebeat e, em seguida, julgar no logstash:

#filebeat配置如下:

- type: log
  paths:
    - /export/logs/appname1/appname1*.log
  fields:
    source: appname1
  scan_frequency: 10s
    #filebeat多行匹配
  multiline.pattern: '^\d{4}-\d{2}-\d{2}'
  multiline.negate: true
  multiline.match: after
    #添加tags
  tags: ['appname1']

- type: log
  paths:
    - /export/logs/appname2/appname2*.log
  fields:
    source: appname2
  scan_frequency: 10s
    #filebeat多行匹配
  multiline.pattern: '^\d{4}-\d{2}-\d{2}'
  multiline.negate: true
  multiline.match: after
    #添加tags
  tags: ['appname2']
#logstash配置

output {
    if "ngms-exchange" in [tags] {
        elasticsearch {
            hosts => ["192.168.20.39:9200", "192.168.20.40:9200", "192.168.20.41:9200"]
            ssl => true
            ssl_certificate_verification => false
            cacert => "/export/server/logstash-7.9.2/config/root-ca.pem"
            index => "ngms-exchange-%{+YYYY.MM.dd}"
            user => "admin"
            password => "admin"
        }
    }
}

Acho que você gosta

Origin blog.51cto.com/973370/2604799
Recomendado
Clasificación