중앙 로깅을 개선하기 위해 로그 스토리지 필터 추가

중앙 로깅을 개선하기 위해 로그 스토리지 필터 추가

2022-06-01 last update

9 minutes reading Logging Monitoring CentOS Ubuntu

소개


Logstash는 로그를 집중하고 분석하는 데 사용되는 강력한 도구로 환경을 제공하고 개괄하며 서버의 문제를 식별할 수 있습니다.ELK 스택(Elasticsearch, Logstash, Kibana) 설정의 유효성을 높이는 방법 중 하나는 중요한 응용 프로그램 로그를 수집하고 필터를 사용하여 로그 데이터를 구성하여 데이터를 쉽게 분석하고 조회할 수 있도록 하는 것이다.로그의 데이터를 유용한 정보 위치로 해석하기 위해'grok'모드를 중심으로 필터를 구축할 것입니다.
이 안내서는 How To Install Elasticsearch, Logstash, and Kibana 4 on Ubuntu 14.04 강좌의 속편으로 주로 각종 흔한 응용 프로그램 로그에 로그 저장 필터를 추가하는 데 주목한다.

선결 조건


이 강좌를 배우려면 Filebeat 등 발송인으로부터 로그를 받는 Logstash 서버가 있어야 합니다.로그를 수신하기 위해 Logstash를 설정하지 않았다면, 다음은 입문 강좌입니다: How To Install Elasticsearch, Logstash, and Kibana 4 on Ubuntu 14.04.

ELK 서버 가정

  • Logstash 설치/opt/logstash
  • 로그 스토리지 구성 파일은 /etc/logstash/conf.d
  • 에 있습니다.
  • 02-beats-input.conf
  • 라는 입력 파일이 있습니다.
  • 30-elasticsearch-output.conf
  • 라는 출력 파일이 있습니다.
    Logstash 서버에서 다음 명령을 실행하여 patterns 디렉토리를 생성해야 할 수 있습니다.
    1. sudo mkdir -p /opt/logstash/patterns
    2. sudo chown logstash: /opt/logstash/patterns

    클라이언트 - 서버 가설

  • syslog/auth를 보내기 위해 모든 응용 서버에 Filebeat를 설정했습니다.Logstash 서버에 로그인(예: 필수 자습서Set Up Filebeat section
  • 에 설명됨)
    설정이 다르면 환경에 맞게 이 안내서를 조정하십시오.

    Grok 정보


    Grok은 텍스트 모드를 해석하고 정규 표현식을 사용하여 식별자에게 할당하여 작업합니다.
    grok 모드의 문법은%{PATTERN:IDENTIFIER}.Logstash 필터는 일련의grok 모드를 포함하는데 이 모드는 로그 메시지의 각 부분에 일치하고 이를 각 표지부호에 분배합니다. 이것이 바로 로그의 구조입니다.
    grok에 대한 더 많은 정보를 얻으려면 Logstash grok pageLogstash Default Patterns listing 을 방문하십시오.

    이 안내서 사용 방법


    아래의 각 주요 부분에는 응용 프로그램 로그를 수집하고 선별하는 데 필요한 추가 설정 상세 정보가 포함됩니다.기록하고 선별할 모든 응용 프로그램은 클라이언트 서버 (Filebeat) 와 Logstash 서버에서 설정 변경을 해야 합니다.

    Logstash 모드 소절


    Logstash Patterns 하위 부분이 있으면, Logstash 서버 /opt/logstash/patterns 에 추가할 수 있는 새 파일의grok 모드를 포함합니다.Logstash 필터에서 새 모드를 사용할 수 있습니다.

    Logstash 필터 세그먼트


    Logstash Filter 하위 섹션에는 Logstash 서버 /etc/logstash/conf.d 의 입력과 출력 프로필 사이의 새 파일에 추가할 수 있는 필터가 포함됩니다.필터는 Logstash 서버가 관련 로그 파일을 분석하는 방법을 결정합니다.새 필터를 추가한 후 Logstash 서비스를 다시 시작해서 변경 사항을 불러오는 것을 기억하십시오.

    Filebeat 탐광자 지부


    Filebeat 브라우저는 Logstash에 보낼 로그를 지정하는 데 사용됩니다.다른 찾아보기 구성은 /etc/filebeat/filebeat.yml 파일의 prospectors 섹션에 기존 찾아보기 다음에 직접 추가해야 합니다.
    탐색자 예
    filebeat:
      # List of prospectors to fetch data.
      prospectors:
        -
          - /var/log/secure
          - /var/log/messages
          document_type: syslog
        -
          paths:
            - /var/log/app/*.log
          document_type: app-access
    ...
    
    위의 예에서 빨간색 강조 표시된 선은 .log 의 모든 /var/log/app/ 파일을 app-access 유형의 로그 저장소로 보내는 브라우저를 나타냅니다.변경 사항을 적용하려면 Filebeat를 다시 로드해야 합니다.
    이 안내서를 사용하는 방법을 알고 있습니다. 이 안내서의 나머지 부분은 응용 프로그램 로그를 수집하고 필터하는 방법을 보여 줍니다.

    적용: Nginx


    Logstash 모드: Nginx


    Nginx 로그 모드는 Logstash의 기본 모드에 포함되지 않기 때문에 수동으로 Nginx 모드를 추가합니다.
    ELK 서버에서 nginx 라는 새 모드 파일을 만듭니다.
    1. sudo vi /opt/logstash/patterns/nginx
    다음 행을 삽입합니다.
    Nginx Grok 패턴
    NGUSERNAME [a-zA-Z\.\@\-\+_%]+
    NGUSER %{NGUSERNAME}
    NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}
    
    저장하고 종료합니다.NGINXACCESS 모드는 데이터를 분석하고 각종 표지부호(예를 들어 clientip, ident, auth 등에 데이터를 분배한다.
    다음은 모드 파일의 소유권을 logstash 로 변경합니다.
    1. sudo chown logstash: /opt/logstash/patterns/nginx

    로그 스토리지 필터: Nginx


    ELK 서버에서 11-nginx-filter.conf 라는 새 필터 구성 파일을 만듭니다.
    1. sudo vi /etc/logstash/conf.d/11-nginx-filter.conf
    다음 필터를 추가합니다.
    Nginx 필터
    filter {
      if [type] == "nginx-access" {
        grok {
          match => { "message" => "%{NGINXACCESS}" }
        }
      }
    }
    
    저장하고 종료합니다.이 필터는 nginx-access 유형의 메시지를 위에서 정의한 NGINXACCESS 모드와 일치시키려고 시도합니다.
    이제 구성을 다시 로드하기 위해 Logstash를 다시 시작합니다.
    1. sudo service logstash restart

    Filebeat 탐색기: Nginx


    Nginx 서버에서 편집을 위해 filebeat.yml 구성 파일을 엽니다.
    1. sudo vi /etc/filebeat/filebeat.yml
    filebeat 섹션에 다음 탐색기를 추가하여 Nginx access 로그를 유형nginx-access으로 Logstash 서버에 전송합니다.
    Nginx 탐광자
        -
          paths:
            - /var/log/nginx/access.log
          document_type: nginx-access
    
    저장하고 종료합니다.변경 사항을 적용하기 위해 Filebeat를 다시 로드합니다.
    1. sudo service filebeat restart
    이제 Nginx 로그가 수집되고 필터링됩니다!

    응용 프로그램:Apache HTTP 웹 서버


    아파치의 로그 모드는 기본 로그 저장 모드에 포함되어 있기 때문에 필터를 설정하는 것이 상당히 쉽다.
    참고: CentOS와 같은 RedHat 변형을 사용하는 경우 예제 /var/log/httpd 보다는 로그 /var/log/apache2 에 있습니다.

    로그 스토리지 필터:Apache


    ELK 서버에서 12-apache.conf 라는 새 필터 구성 파일을 만듭니다.
    1. sudo vi /etc/logstash/conf.d/12-apache.conf
    다음 필터를 추가합니다.
    Apache 필터
    filter {
      if [type] == "apache-access" {
        grok {
          match => { "message" => "%{COMBINEDAPACHELOG}" }
        }
      }
    }
    
    저장하고 종료합니다.이 필터는 apache-access 유형의 메시지를 COMBINEDAPACHELOG 모드와 일치시키려고 시도합니다. 이것은 기본 로그 저장 모드 중의 하나입니다.
    이제 구성을 다시 로드하기 위해 Logstash를 다시 시작합니다.
    1. sudo service logstash restart

    Filebeat 탐색기:Apache


    Apache 서버에서 편집할 프로필filebeat.yml을 엽니다.
    1. sudo vi /etc/filebeat/filebeat.yml
    filebeat 섹션에 다음 탐색기를 추가하여 Apache 로그를 유형apache-access으로 Logstash 서버에 전송합니다.
    Apache Prospector
        -
          paths:
            - /var/log/apache2/access.log
          document_type: apache-access
    
    저장하고 종료합니다.변경 사항을 적용하기 위해 Filebeat를 다시 로드합니다.
    1. sudo service filebeat restart
    이제 아파치 로그가 수집되고 필터링됩니다!

    결론


    거의 모든 종류의 로그를 수집하고 해석할 수 있습니다.다른 로그 파일에 대한 필터와 패턴을 작성해 보십시오.
    원하는 필터나 패턴을 마음대로 사용해서 댓글을 달 수 있습니다!
    Kibana 사용에 익숙하지 않다면 이 강좌를 보십시오.How To Use Kibana Visualizations and Dashboards.