로그스태시는 플러그인 기반의 오픈소스 데이터 처리 파이프라인 도구다.
여기서 파이프라인이란, 데이터를 수집 -> 가공 -> 전송
하는 일련의 과정을 의미한다. 이러한 다소 복잡하고 귀찮은 데이터 전처리 과정을 별도의 애플리케이션 작성없이 비교적 간단한 설정만으로 수행할 수 있다.
로그스태시의 가장 중요한 부분은 파이프라인이다. 파이프라인은 데이터를 입력받아 실시간으로 변경하고 이를 다른 시스템에 전달하는 역할을 하는 로그스태시의 핵심기능이다. 파이프라인은 입력, 필터, 출력이라는 세 가지 구성요소로 이루어진다.
입력과 출력은 필수 구성요소이고, 필터는 옵션이다.
input {
{ 입력 플러그인 }
}
filter {
{ 필터 플러그인 }
}
output {
{ 출력 플러그인 }
}
파이프라인의 가장 앞부분에 위치하며 소스 원본으로부터 데이터를 입력받는 단계다. 직접 대상에 접근해 읽어들이는 경우도 있지만, 서버를 열어놓고 받아들이는 형태의 구성도 가능하다. 로그스태시는 다양한 형태의 데이터를 인식할 수 있고, 이를 쉽게 처리하기 위해 다양한 입력 플러그인들이 존재한다.
예를 들어 특정 파일은 플러그인을, 실시간 트윗을 트위터 플러그인을 통해 가져올 수 있다.
input {
file {
path => "/Users/xellos/Desktop/elasticsearch-7.10.1/logs/elasticsearch.log"
start_position => "beginning"
}
}
입력 플러그인이 받은 데이터를 의미있는 데이터로 구조화하는 역할을 한다. 필수 구성요소가 아니라서 필터 없이 파이프라인을 구성할 수 있지만, 필터없는 파이프라인은 그 기능을 온전히 발휘하기 힘들다.
[2020-01-02 14:17] [ID1] 192.10.2.6 9500 [INFO] - connected.
filter {
mutate {
split => { "message" => " " }
}
}
{
...
"message" => [
[0] "[2020-01-02",
[1] "14:17]",
[2] "[ID1]",
[3] "192.10.2.6",
[4] "9500",
[5] "[INFO]",
[6] "-",
[7] "connected."
],
...
}
출력은 파이프라인의 입력과 필터를 거쳐 가공된 데이터를 지정한 대상으로 내보내는 단계다. 파이프라인의 마지막 단계이며 입력, 필터 플러그인과 마찬가지로 다양한 출력 플러그인을 지원한다.
output {
file {
path => "/Users/xellos/Desktop/logstash-7.10.1/config/output.json"
}
elasticsearch {
index => "output"
}
}
코덱은 입력 / 출력 / 필터
와 달리 독립적으로 동작하지 않고 입력과 출력 과정에 사용되는 플러그인이다.
즉, 입﹒출력시 메세지를 적절한 형태로 변환하는 스트림이다.
input {
file {
path => "/Users/zeros/Desktop/logstash-7.10.1/config/filter-example.log"
start_position => "beginning"
codec => "json"
}
}