Wildfly 액세스 로그를 Filebeat에서 Elasticsearch로 가져오기

소개



Wildfly의 액세스 로그를 Filebeat에서 Elasticsearch에 캡처하는 설정을 수행합니다.

환경



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

  • Elasticsearch/Kibana/Elastic APM은 'ElasticStack 7.8 환경 구축 '에서 구축한 환경을 이용하고 있습니다.

    Wildfly로 액세스 로그 출력



    Wildfly의 액세스 로그는 기본적으로 출력되지 않으므로 먼저 액세스 로그를 출력하는 것으로 시작합니다.

    standalone.xml의 undertow 설정 부분에 ""를 추가합니다.
    이제 standalone/logs/access-log에 액세스 로그가 출력됩니다.
    형식은 기본적으로 공통 로그 형식(CLF)입니다.

    설정 변경 후 standalone.xml은 다음과 같습니다.

    standalone.xml
            <subsystem xmlns="urn:jboss:domain:undertow:11.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}">
                <buffer-cache name="default"/>
                <server name="default-server">
                    <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
                    <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
                    <host name="default-host" alias="localhost">
                        <location name="/" handler="welcome-content"/>
                        <http-invoker security-realm="ApplicationRealm"/>
                        <access-log/>
                    </host>
                </server>
    

    "combined"로 설정하려면 ""로 변경합니다.

    "combined"로 설정하면 로그는 다음과 같이 출력됩니다.
    192.168.10.100 - - [08/Aug/2020:03:09:41 +0200] "GET /wildfly_logo.png HTTP/1.1" 304 -
    192.168.10.100 - - [08/Aug/2020:03:09:41 +0200] "GET /jbosscommunity_logo_hori_white.png HTTP/1.1" 304 -
    192.168.10.100 - - [08/Aug/2020:03:09:42 +0200] "GET /wildfly-apm-testapp/services/test/test1 HTTP/1.1" 200 -
    

    또한 콘솔에서 수정하는 경우 다음과 같이 명령을 실행합니다.
    # ./jboss-cli.sh --connect --controller=[IPアドレス]:9990
    
    /subsystem=undertow/server=default-server/host=default-host/setting=access-log:add
    {
        "outcome" => "success",
        "response-headers" => {
            "operation-requires-reload" => true,
            "process-state" => "reload-required"
        }
    }
    
    # access-logの属性を確認する場合
    [[email protected]:9990 setting] /subsystem=undertow/server=default-server/host=default-host/setting=access-log:read-attribute(name=pattern)
    {
        "outcome" => "success",
        "result" => "combined"
    }
    
    # access-logの属性を変更する場合
    [[email protected]:9990 setting] /subsystem=undertow/server=default-server/host=default-host/setting=access-log:write-attribute(name=pattern,value=combined)
    {"outcome" => "success"}
    
    [[email protected]:9990 setting] /subsystem=undertow/server=default-server/host=default-host/setting=access-log:read-resource
    {
        "outcome" => "success",
        "result" => {
            "directory" => expression "${jboss.server.log.dir}",
            "extended" => true,
            "pattern" => "common",
            "predicate" => undefined,
            "prefix" => "access_log.",
            "relative-to" => undefined,
            "rotate" => true,
            "suffix" => "log",
            "use-server-log" => false,
            "worker" => "default"
        },
        "response-headers" => {"process-state" => "reload-required"}
    }
    
    # access-logを削除する場合
    
    /subsystem=undertow/server=default-server/host=default-host/setting=access-log:remove
    

    Filebeat 설정



    그런 다음 Filebeat에서 Apache 로그 형식의 로그를 입력으로 Elasticsearch로 보내도록 설정합니다.

    먼저 Filebeat의 apache 모듈을 활성화합니다.
    # filebeat modules enable apache
    Enabled apache
    # filebeat modules list
    Enabled:
    apache
    

    그런 다음 apache 모듈의 설정을 변경합니다.
    apache 모듈의 설정은 아래의 공식 사이트를 참고하여 실시하고 있습니다.
  • htps //w w. 에 s c. 코/구이데/엔/베아 ts/후아베아 t/쿤렌 t/후아베아 t-모즈-아파치ぇ. HTML
  • # vi /etc/filebeat/modules.d/apache.yml 
    

    변경 후 apache.yml은 다음과 같습니다.

    /etc/filebeat/modules.d/apache.yml
    # grep -vE '^ *#|^$' /etc/filebeat/modules.d/apache.yml 
    - module: apache
      access:
        enabled: true
        var.paths: ["/opt/wildfly-20.0.1.Final/standalone/log/access_log.log*"]
      error:
        enabled: false
    

    filebeat.yml은 다음과 같이 설정했습니다.

    /etc/filebeat/filebeat.yml
    # grep -vE '^ *#|^$' /etc/filebeat/filebeat.yml
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    setup.kibana:
      host: "localhost:5601"
    output.elasticsearch:
      hosts: ["localhost:9200"]
    

    마지막으로 Filebeat를 다음 명령으로 다시 시작합니다.
    # systemctl stop filebeat
    # systemctl start filebeat
    

    Kibana에서 Wildfly 액세스 로그 확인



    Kibana의 왼쪽 메뉴에서 Logs를 선택하여 액세스 로그를 볼 수 있습니다.



    또한 Filebeat은 자동으로 대시보드 샘플을 생성합니다.
    샘플 대시보드(Filebeat Apache Access and error logs ECS)를 선택하면 다음과 같은 그래프가 표시됩니다.



    참고


  • WildFly Full 20 Model Reference
  • 좋은 웹페이지 즐겨찾기