
중앙 로깅을 개선하기 위해 로그 스토리지 필터 추가
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 서버 가정
/opt/logstash
/etc/logstash/conf.d
02-beats-input.conf
30-elasticsearch-output.conf
Logstash 서버에서 다음 명령을 실행하여
patterns
디렉토리를 생성해야 할 수 있습니다.- sudo mkdir -p /opt/logstash/patterns
- sudo chown logstash: /opt/logstash/patterns
클라이언트 - 서버 가설
설정이 다르면 환경에 맞게 이 안내서를 조정하십시오.
Grok 정보
Grok은 텍스트 모드를 해석하고 정규 표현식을 사용하여 식별자에게 할당하여 작업합니다.
grok 모드의 문법은
%{PATTERN:IDENTIFIER}
.Logstash 필터는 일련의grok 모드를 포함하는데 이 모드는 로그 메시지의 각 부분에 일치하고 이를 각 표지부호에 분배합니다. 이것이 바로 로그의 구조입니다.grok에 대한 더 많은 정보를 얻으려면 Logstash grok page 및 Logstash 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
라는 새 모드 파일을 만듭니다.- 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
로 변경합니다.- sudo chown logstash: /opt/logstash/patterns/nginx
로그 스토리지 필터: Nginx
ELK 서버에서
11-nginx-filter.conf
라는 새 필터 구성 파일을 만듭니다.- sudo vi /etc/logstash/conf.d/11-nginx-filter.conf
다음 필터를 추가합니다.Nginx 필터
filter {
if [type] == "nginx-access" {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
}
}
저장하고 종료합니다.이 필터는 nginx-access
유형의 메시지를 위에서 정의한 NGINXACCESS
모드와 일치시키려고 시도합니다.이제 구성을 다시 로드하기 위해 Logstash를 다시 시작합니다.
- sudo service logstash restart
Filebeat 탐색기: Nginx
Nginx 서버에서 편집을 위해
filebeat.yml
구성 파일을 엽니다.- sudo vi /etc/filebeat/filebeat.yml
filebeat
섹션에 다음 탐색기를 추가하여 Nginx access 로그를 유형nginx-access
으로 Logstash 서버에 전송합니다.Nginx 탐광자
-
paths:
- /var/log/nginx/access.log
document_type: nginx-access
저장하고 종료합니다.변경 사항을 적용하기 위해 Filebeat를 다시 로드합니다.- sudo service filebeat restart
이제 Nginx 로그가 수집되고 필터링됩니다!응용 프로그램:Apache HTTP 웹 서버
아파치의 로그 모드는 기본 로그 저장 모드에 포함되어 있기 때문에 필터를 설정하는 것이 상당히 쉽다.
참고: CentOS와 같은 RedHat 변형을 사용하는 경우 예제
/var/log/httpd
보다는 로그 /var/log/apache2
에 있습니다.로그 스토리지 필터:Apache
ELK 서버에서
12-apache.conf
라는 새 필터 구성 파일을 만듭니다.- sudo vi /etc/logstash/conf.d/12-apache.conf
다음 필터를 추가합니다.Apache 필터
filter {
if [type] == "apache-access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
}
저장하고 종료합니다.이 필터는 apache-access
유형의 메시지를 COMBINEDAPACHELOG
모드와 일치시키려고 시도합니다. 이것은 기본 로그 저장 모드 중의 하나입니다.이제 구성을 다시 로드하기 위해 Logstash를 다시 시작합니다.
- sudo service logstash restart
Filebeat 탐색기:Apache
Apache 서버에서 편집할 프로필
filebeat.yml
을 엽니다.- sudo vi /etc/filebeat/filebeat.yml
filebeat
섹션에 다음 탐색기를 추가하여 Apache 로그를 유형apache-access
으로 Logstash 서버에 전송합니다.Apache Prospector
-
paths:
- /var/log/apache2/access.log
document_type: apache-access
저장하고 종료합니다.변경 사항을 적용하기 위해 Filebeat를 다시 로드합니다.- sudo service filebeat restart
이제 아파치 로그가 수집되고 필터링됩니다!결론
거의 모든 종류의 로그를 수집하고 해석할 수 있습니다.다른 로그 파일에 대한 필터와 패턴을 작성해 보십시오.
원하는 필터나 패턴을 마음대로 사용해서 댓글을 달 수 있습니다!
Kibana 사용에 익숙하지 않다면 이 강좌를 보십시오.How To Use Kibana Visualizations and Dashboards.