Wildfly 로그를 Elastic Stack으로 가져오기

2695 단어 ElasticsearchLogstash

소개



Wildfly의 로그를 Elastic Stack에 가져와 Kibana에서 로그가 표시되는 환경을 구축해 봅니다.

데이터 흐름은
wildfly 로그 → Filebeat → Logstash → Elasticsearch
됩니다.
Filebeat에서 직접 Elasticsearch라는 구성할 수 있습니다.

환경



사용한 환경은 다음과 같습니다.
  • CentOS 7.5
  • Elasticsearch 7.8
  • Kibana 7.8
  • Filebeat 7.8
  • Logstash 7.8

  • ElasticStack 7.8 환경 구축 」로 구축한 환경을 이용하고 있습니다.

    Logstash 설정



    /etc/logstash/conf.d 다음에 wildfly.conf 파일을 만듭니다.
    # vi /etc/logstash/conf.d/wildfly.conf
    
    input {
      beats {
        port => "5044"
      }
    }
    filter {
      grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:logdate} %{LOGLEVEL:loglevel}\s+\[%{GREEDYDATA:class}\]\s+\(%{GREEDYDATA:thread}\)\s+%{GREEDYDATA:msgbody}" }
      }
      date {
        match => ["logdate", "YYYY-MM-dd HH:mm:ss,SSS"]
      }
    }
    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "wildfly-%{+YYYY.MM.dd}" 
      }
    }
    

    Elasticsearch로 보내기 전에 Logstash에서 확인하고 싶은 경우는 아래와 같이 표준 출력으로 출력하도록 설정하여 확인할 수 있습니다.
    output {
      stdout { codec => rubydebug }
    }
    
  • /opt/wildfly-20.0.1.Final/standalone/configuration/logging.properties

  • 위의 Wildfly 로깅 설정 파일을 보면 다음 레이아웃이되었습니다.
    formatter.PATTERN.pattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n
    

    따라서 grok은 다음과 같이 설정합니다.
    %{TIMESTAMP_ISO8601:logdate} %{LOGLEVEL:loglevel}\s+\[%{GREEDYDATA:class}\]\s+\(%{GREEDYDATA:thread}\)\s+%{GREEDYDATA:msgbody}
    

    마지막으로 만든 wildfly.conf 파일을 읽어 Logstash를 시작합니다.
    # /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/wildfly.conf 
    

    Filebeat 설정



    filebeat.yml을 변경하고 Wildfly 로그 파일을 읽고 Logstash로 보내도록 설정합니다 (변경점 만 발췌).
    # vi /etc/filebeat/filebeat.yml
    
    - type: log
      enabled: true
      paths:
        - /opt/wildfly-20.0.1.Final/standalone/log/server.log
    #output.elasticsearch:
      #hosts: ["localhost:9200"] 
    output.logstash:
      hosts: ["localhost:5044"]
    

    Filebeat을 자동 시작하도록 설정하고 시작합니다.
    # systemctl enable filebeat
    # systemctl start filebeat
    

    Kibana로 시각화



    Index Patterns에 wildfly-*로 등록하고 [Discover]에서 로그를 확인해 보면 다음과 같이 표시됩니다.

    좋은 웹페이지 즐겨찾기