로그 Pipeline 사용 설명서¶
Pipeline은 다양한 형식의 로그 데이터를 텍스트로 파싱할 수 있도록 지원합니다. Pipeline 스크립트를 작성하면 요구사항에 맞는 구조화된 로그를 자유롭게 추출할 수 있으며, 추출된 필드를 속성으로 사용할 수 있습니다. 속성 필드를 통해 관련 로그를 빠르게 필터링하고 데이터 간 연관 분석을 수행하여 문제를 신속히 파악하고 해결할 수 있습니다.
Guance는 공식 Pipeline 스크립트 라이브러리를 제공하며, 다양한 로그 파싱 Pipeline이 내장되어 있습니다. 또한 사용자가 직접 커스텀 Pipeline 스크립트를 생성할 수 있도록 지원합니다. 다음은 커스텀 Pipeline 기능을 사용하는 방법을 소개합니다.
전제 조건¶
- 먼저 Guance 계정을 생성하고, 호스트에 DataKit 설치를 완료해야 합니다.
- 로그 수집기를 활성화하고, 설정 파일에서 Pipeline 기능을 켜야 합니다.
커스텀 Pipeline 스크립트 파일¶
1단계: 로그 수집기 활성화 (DataKit 로그 예시)¶
호스트에 DataKit을 설치한 후, /usr/local/datakit/conf.d/log 디렉터리에서 logging.conf.sample 파일을 복사하여 logging.conf로 이름을 변경합니다. logging.conf를 편집하여 DataKit 로그가 저장된 경로와 로그 소스를 설정합니다. 예시:
logfiles = ["/var/log/datakit/log"]source = "datakit"
참고: 로그 수집기에서 Pipeline 기능은 기본적으로 활성화되어 있습니다. Pipeline = ""에 구체적인 Pipeline 스크립트 이름을 지정하지 않으면, source와 동일한 이름의 스크립트 파일이 자동으로 매칭됩니다. 로그 소스와 Pipeline 파일 이름이 일치하지 않는 경우, 로그 수집기 설정에 Pipeline = "xxxxxx.p"를 지정해야 합니다.
[[inputs.logging]]
## required
logfiles = [
"/var/log/datakit/log",
]
# only two protocols are supported:TCP and UDP
# sockets = [
# "tcp://0.0.0.0:9530",
# "udp://0.0.0.0:9531",
# ]
## glob filteer
ignore = [""]
## your logging source, if it's empty, use 'default'
source = "datakit"
## add service tag, if it's empty, use $source.
service = ""
## grok pipeline script name
## pipeline이 구체적으로 지정되지 않은 경우, source와 동일한 이름의 스크립트가 자동으로 검색됩니다.
pipeline = ""
설정이 완료되면 명령줄에서 datakit --restart를 실행하여 DataKit을 재시작하고 설정을 적용합니다.
2단계: 수집된 로그를 기반으로 추출할 필드 결정¶
로그 수집기를 활성화하면 Guance 워크스페이스에서 수집된 DataKit 로그를 확인할 수 있습니다. DataKit 로그를 관찰하고 분석하여 로그 생성 시간, 로그 레벨, 로그 모듈, 모듈 내용, 로그 내용 등 로그에서 추출할 필드를 결정합니다.
3단계: 커스텀 Pipeline 생성¶
Guance 워크스페이스에서 로그 > Pipelines로 이동한 후, Pipeline 생성을 클릭하여 새 Pipeline 파일을 만듭니다.
로그 필터링¶
로그 소스로 "datakit"를 선택하면, 선택한 로그 소스를 기반으로 동일한 이름의 Pipeline이 자동으로 생성됩니다.
파싱 규칙 정의¶
로그의 파싱 규칙을 정의합니다. 여러 스크립트 함수를 지원하며, Guance에서 제공하는 스크립트 함수 목록을 통해 각 함수의 문법 형식을 바로 확인할 수 있습니다.
이 예시에서는 로그 관찰 결과를 바탕으로 Pipeline 스크립트 파일을 작성할 수 있습니다. add_pattern() 스크립트 함수를 사용하여 먼저 커스텀 패턴을 정의하고, Grok에서 이 커스텀 패턴을 참조하여 로그를 추출합니다. 아래 예시에서 rename과 default_time은 추출된 필드를 최적화하는 데 사용됩니다.
add_pattern('_dklog_date', '%{YEAR}-%{MONTHNUM}-%{MONTHDAY}T%{HOUR}:%{MINUTE}:%{SECOND}%{INT}')
add_pattern('_dklog_level', '(DEBUG|INFO|WARN|ERROR|FATAL)')
add_pattern('_dklog_mod', '%{WORD}')
add_pattern('_dklog_source_file', '(/?[\\w_%!$@:.,-]?/?)(\\S+)?')
add_pattern('_dklog_msg', '%{GREEDYDATA}')
grok(_, '%{_dklog_date:log_time}%{SPACE}%{_dklog_level:level}%{SPACE}%{_dklog_mod:module}%{SPACE}%{_dklog_source_file:code}%{SPACE}%{_dklog_msg:msg}')
rename("time", log_time) # log_time을 time으로 이름 변경
default_time(time) # time 필드를 출력 데이터의 타임스탬프로 사용
더 많은 Pipeline 파싱 규칙은 텍스트 데이터 처리 (Pipeline) 문서를 참조하세요.
로그 샘플 테스트¶
스크립트 규칙을 작성한 후, 로그 샘플 데이터를 입력하여 설정한 파싱 규칙이 올바른지 테스트할 수 있습니다.
참고:
- 로그 샘플 테스트는 필수 항목이 아닙니다.
- 커스텀 Pipeline을 저장하면 로그 샘플 테스트 데이터도 함께 저장됩니다.
4단계: Pipeline 파일 저장¶
모든 필수 항목을 설정한 후 Pipeline 파일을 저장합니다. 그러면 로그 Pipelines 목록에서 커스텀 Pipeline 파일을 확인할 수 있습니다.
Guance 워크스페이스에서 생성된 Pipeline 파일은 /usr/local/datakit/Pipeline_remote 디렉터리에 통합 저장됩니다.
참고: DataKit에는 두 개의 Pipeline 디렉터리가 있으며, DataKit은 이 디렉터리에서 Pipeline 파일을 자동으로 매칭합니다.
Pipeline: 공식 라이브러리의 Pipeline 파일 디렉터리Pipeline_remote: Guance 워크스페이스의 커스텀 Pipeline 파일 디렉터리- 두 디렉터리에 동일한 이름의 Pipeline 파일이 있는 경우, DataKit은
Pipeline_remote디렉터리의 Pipeline 파일을 우선적으로 매칭합니다.
5단계: Guance에서 추출된 필드 확인¶
Guance 워크스페이스의 로그에서 datakit 로그를 선택한 후, 로그 상세 페이지의 "속성"에서 필드와 필드 값을 확인할 수 있습니다. 이는 로그 추출 후 표시되는 필드와 필드 값입니다. 예시:
code: container/input.go:167level: ERRORmodule: container
공식 라이브러리 Pipeline 스크립트 파일 복제¶
1단계: Nginx 수집기 활성화¶
호스트에 DataKit을 설치한 후, /usr/local/datakit/conf.d/nginx 디렉터리에서 nginx.conf.sample 파일을 복사하여 nginx.conf로 이름을 변경합니다. nginx.conf를 편집하여 Nginx 로그 저장 경로와 Pipeline을 활성화합니다. 예시:
files = ["/var/log/nginx/access.log","/var/log/nginx/error.log"]Pipeline = "nginx.p"(이때""안에 구체적인 Pipeline 스크립트 이름을 지정하지 않으면, DataKit이 source와 동일한 이름의 스크립트 파일을 자동으로 매칭합니다.)
참고: Pipeline을 활성화하면 DataKit은 로그 소스를 기반으로 Pipeline 스크립트 파일을 자동으로 매칭합니다. 로그 소스와 Pipeline 파일 이름이 일치하지 않는 경우, 수집기 설정에서 지정해야 합니다. 예를 들어, 로그 소스가 nginx이고 Pipeline 파일 이름이 nginx1.p인 경우, Pipeline = "nginx1.p"로 설정해야 합니다.
[[inputs.nginx]]
url = "http://localhost/server_status"
# ##(optional) collection interval, default is 30s
# interval = "30s"
use_vts = false
## Optional TLS Config
# tls_ca = "/xxx/ca.pem"
# tls_cert = "/xxx/cert.cer"
# tls_key = "/xxx/key.key"
## Use TLS but skip chain & host verification
insecure_skip_verify = false
# HTTP response timeout (default: 5s)
response_timeout = "20s"
[inputs.nginx.log]
files = ["/var/log/nginx/access.log","/var/log/nginx/error.log"]
# # grok pipeline script path
pipeline = "nginx.p"
[inputs.nginx.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
# ...
설정이 완료되면 명령줄에서 datakit --restart를 실행하여 DataKit을 재시작하고 설정을 적용합니다.
더 많은 Nginx 수집기 설정은 Nginx 문서를 참조하세요.
2단계: 수집된 로그를 기반으로 추출할 필드 결정¶
Nginx 수집기를 활성화하고 로그 파일 경로를 설정한 후 Pipeline을 켜면, Guance 워크스페이스에서 수집된 Nginx 로그를 확인할 수 있습니다. 로그 상세 정보에서 Pipeline 파일에 따라 추출된 필드 속성을 확인할 수 있습니다. 로그를 관찰하고 분석하여 추출할 필드의 최적화가 필요한지 결정합니다.
3단계: 공식 라이브러리 Pipeline 복제 및 커스터마이징¶
Guance 워크스페이스에서 로그 > Pipelines로 이동한 후, Pipeline 공식 라이브러리를 클릭하고 nginx.p Pipeline 파일을 선택하여 확인 및 복제합니다.
- 로그 필터링에서 "nginx"를 선택합니다.
- 파싱 규칙 정의에서 파싱 규칙을 최적화합니다.
- 로그 샘플 테스트에 nginx 로그 데이터를 입력하고, 설정한 파싱 규칙에 따라 테스트를 수행합니다.
참고:
- Pipeline 공식 라이브러리에는 여러 로그 샘플 테스트 데이터가 포함되어 있으며, "복제" 전에 자신의 필요에 맞는 로그 샘플 테스트 데이터를 선택할 수 있습니다.
- 복제된 Pipeline을 수정하여 저장하면, 로그 샘플 테스트 데이터도 함께 저장됩니다.
2022/02/23 14:26:19 [error] 632#632: *62 connect() failed (111: Connection refused) while connecting to upstream, client: ::1, server: _, request: "GET /server_status HTTP/1.1", upstream: "http://127.0.0.1:5000/server_status", host: "localhost"
4단계: Pipeline 파일 저장¶
모든 필수 항목을 설정한 후 Pipeline 파일을 저장하면, 로그 Pipelines 목록에서 커스텀 Pipeline 파일을 확인할 수 있습니다.
Guance 워크스페이스에서 생성된 Pipeline 파일은 /usr/local/datakit/Pipeline_remote 디렉터리에 통합 저장됩니다.
참고: DataKit에는 두 개의 Pipeline 디렉터리가 있으며, DataKit은 이 디렉터리에서 Pipeline 파일을 자동으로 매칭합니다.
Pipeline: 공식 라이브러리의 Pipeline 파일 디렉터리Pipeline_remote: Guance 워크스페이스의 커스텀 Pipeline 파일 디렉터리- 두 디렉터리에 동일한 이름의 Pipeline 파일이 있는 경우, DataKit은
Pipeline_remote디렉터리의 Pipeline 파일을 우선적으로 매칭합니다.
5단계: Guance에서 추출된 필드 확인¶
Guance 워크스페이스의 로그에서 nginx 로그를 선택한 후, 로그 상세 페이지의 "속성"에서 필드와 필드 값을 확인할 수 있습니다. 이는 로그 추출 후 표시되는 필드와 필드 값입니다. 예시:
http_method: GEThttp_url: /server_statushttp_version: 1.1
추가 참고 자료¶
이상으로 Guance 워크스페이스 로그 Pipeline 사용 설명서를 마칩니다. Pipeline 및 로그 수집 추출에 대한 자세한 내용은 다음 문서를 참조하세요.









