logstash 상용 플러그인 소개
6896 단어 logstash
에서 분포식 로그 서비스의 각 구성 요소를 대체적으로 소개했다.그러나 많은 실현 세부 사항은 포함되지 않았다.본고는 주로logstash에 사용되는 플러그인과 플러그인에 대한 오프라인 패키지를 소개하여 매번 수동으로 플러그인을 설치하지 않도록 한다.본문은 주로 네 부분으로 나뉜다.
1. 플러그인의 오프라인 패키지
생산 환경에서logstash는 여러 대의 기계에 배치될 수 있습니다. 만약에 매번logstash의 설치와 업데이트가 수동으로 플러그인을 한 번 업데이트해야 한다면 비용이 매우 높습니다.그러면 우리는 사용된 플러그인을 오프라인으로 포장할 수 있다.logstash-offline-plugins-x.x.x.zip 설명 만들기
bin/logstash-plugin update logstash-filter-mutate
bin/logstash-plugin install logstash-filter-json_encode
bin/logstash-plugin prepare-offline-pack logstash-filter-mutate logstash-filter-json_encode
elastic 공식 문서 참조:https://www.elastic.co/guide/...
logstash를 설치할 때 다음 명령을 사용하여 플러그인 패키지를 설치합니다.
bin/logstash-plugin install file://$(pwd)/logstash-offline-plugins.zip
플러그인을 설치한 후logstash의 인쇄 로그를 제때에 관찰하여 플러그인 버전 충돌로 인한logstash 시작 실패를 피해야 합니다.
2. input 플러그인
플러그인을 입력하면 특정한 이벤트 원본이Logstash 파이프에 읽히고 input {}에 설정되며 여러 개를 설정할 수 있습니다.에서 우리는 각각 input, Filter, output 세 부분의 설정을 다른 설정 파일에 넣었다.input의 설정은 input에 있습니다.conf 파일에서EFK를 사용하기 때문에 beats 플러그인이 필요합니다.홈페이지 참조:https://www.elastic.co/guide/...
input {
beats {
port => 5044
client_inactivity_timeout => 600
ssl => true
ssl_certificate_authorities => ["/home/work/certificate/chain-ca.pem"]
ssl_certificate => "/home/work/certificate/server.crt.pem"
ssl_key => "/home/work/certificate/server.key.pem"
ssl_verify_mode => "force_peer"
}
}
주의해야 할 것은 6.4 버전 이상의 비트스 설정에 ssl 이 많다는 것이다peer_metadata, 인증서에 있는 meta 정보를 얻을 수 있으며, 다음에logstash에서 감권 검사를 할 수 있습니다.beats 플러그인을 제외하고 inputs 유형 플러그인은 여러 가지가 있는데 주로 다음과 같다.
추가 플러그인 구성 소개 참조 홈페이지:https://www.elastic.co/guide/...
3. Filter 플러그인
필터 플러그인이 좀 많아요.로그 접속 후 로그의 규칙 일치, 필터 등 작업을 하려면 Filter를 설정해야 합니다.가장 많이 사용되는 Filter 플러그인은 다음과 같습니다.
3.1 grok 플러그인
Grok은logstash의 가장 주요한 필터 플러그인입니다.grok는 시스템이 미리 정의한 정규 표현식이나 자신이 정의한 정규 표현식을 통해 로그의 값을 일치시킵니다.logstash를 설치한 후 기본적으로 자주 사용하는 소프트웨어의 로그가 정규와 일치하며, 사용할 때 자신의 로그 형식에 따라 조정하거나 직접 호출할 수 있습니다.만약 다른 디렉터리에서 정규 규칙이 로그와 일치하도록 정의하려면, 사용할 때 정규 경로를 지정해야 합니다.다음 로그의 경우
55.3.244.1 GET /index.html 15824 0.043
다음과 같은 규칙을 사용합니다.
%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}
grok 구성의 예는 다음과 같습니다.
filter {
grok {
match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
}
}
그러면 이 로그는 grok을 지나면 다음과 같은 필드를 얻을 수 있습니다.
client: 55.3.244.1
method: GET
request: /index.html
bytes: 15824
duration: 0.043
일반적인 구성 옵션:
3.2 date 플러그인
날짜는 필드의 날짜를 해석하고 이벤트의logstash 시간 스탬프로 사용합니다.날짜 플러그인에 대한 설명은https://segmentfault.com/a/11...홈페이지https://www.elastic.co/guide/...매우 상세한 소개가 있다.구성 과정에서 발생한 예제를 열거합니다. 주어진 시간 형식에 대해:
2019-01-10T18:11:28.699+08:00
구성할 pattern은 다음과 같습니다.
date {
match => ["[@metadata][log_timestamp]", "yyyy-MM-dd'T'HH:mm:ss.SSSZZ"]
timezone => "Asia/Shanghai"
}
주의해야 할 것은 필터에 대해.conf 설정은 열로 불러올 수 있습니다. 시간 형식 설정이 잘못되면logstash 프로세스가 끊기고, 문제에 대한 검색은logstash의 로그를 스스로 조회할 수 있습니다.
3.3 mutate 플러그인
mutate 플러그인은 이름 바꾸기, 삭제, 바꾸기, 수정을 포함한 필드에서 변환을 실행할 수 있습니다.이 플러그인은 상당히 자주 쓰인다.
예를 들면 다음과 같습니다.
그룹 표현식에 따라 Tomcat 로그의 내용을 각 필드에 넣고 상태 코드, 바이트 크기, 응답 시간을 정형으로 변환하려고 합니다.
정규 표현식에 따라 로그 내용을 각 필드에 넣었지만, 필드의 값, 대소문자가 있습니다. 이것은 Elasticsearch의 전문 검색에 있어서 분명히 쓸모가 없습니다. 이 플러그인으로 필드 내용을 모두 소문자로 변환할 수 있습니다.
예는 다음과 같습니다.
filter {
mutate {
split => ["hostname", "."]
add_field => { "shortHostname" => "%{hostname[0]}" }
}
mutate {
rename => ["shortHostname", "hostname" ]
}
}
필자가 이전에 쓴 에서 주로mutate 플러그인을 사용하여addfield, remove_field,convert,gsub 등 조작.그 중에서covert는 문자열 형식을 int/long/float 등 형식으로 변환하여 집합 등 조작에 편리하게 할 수 있다.예를 들면 다음과 같습니다.
mutate {
convert => {
"averageSliceQueryTime" => "integer"
"maxSliceQueryTime" => "integer"
}
추가 Filter 유형 플러그 인에 대해서는 다음을 참조하십시오.https://www.elastic.co/guide/...
4.output 플러그인
앞에서 소개한 input 플러그인과 마찬가지로 output 플러그인도 가장 기초적이고 간단한 출력 플러그인입니다.EFK를 사용하여 안전하고 신뢰할 수 있는 로그 서비스를 신속하게 구축합니다. 이 글에서 우리가 사용하는elasticsearch는 최종 출력 저장소이기 때문에output 플러그인은elasticsearch를 사용합니다.grok 해석에 실패한 파일은 로컬 파일에 쓰기 때문에 파일 플러그인을 사용하여 지점을 통해 판단합니다.예는 다음과 같습니다.
output {
if "_grokparsefailure" in [tags] or "_jsonparsefailure" in [tags] {
file {
path => "/home/work/logstash/failure_output/failure-%{+YYYY-MM-dd}.log"
}
} else {
elasticsearch {
hosts => ["https://es-host1:9920","https://es-host2:9920","https://es-host3:9920"]
index => "logstash-%{[@metadata][index_name]}-%{+YYYY.MM.dd}"
document_id => "%{[@metadata][document_id]}"
ssl => true
ssl_certificate_verification => true
truststore => "/home/work/certificate/truststore.jks"
truststore_password => "adofkoe"
user => "logstash"
password => "dafodmfkamkefadfg"
}
}
}
elasticsearch 외에도 다음 출력이 지원됩니다.
자세한 내용은 홈페이지 참조:https://www.elastic.co/guide/...
총결산
logstash의 각종 플러그인은 그 기능을 크게 풍부하게 했다.실제 사용에서 우리는 자신의 실제 수요에 따라 관련 설정을 해서 자신의 로그 서비스 시스템을 구축할 수 있다.필자는 이곳에서 주로 자신의 사용 과정에서 사용된 내용에 대한 총결이다.많은 실제 문제에 부딪히면 스스로 홈페이지를 조회하여 해결할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
logstash:grok 대신dissect로 성능을 향상시킵니다.파이프의 성능을 향상시키는 간단한 방법은 다른 필터로 대체할 수 있는지 확인하는 것이다grok.내가 계속 grok 로 대체하고 있는 필터는 dissect 필터다.grok과dissect 사이의 주요 차이점은 disse...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.