Logstash-출력 단계
출력은 입력 로그의 필터 데이터를 지정된 대상으로 보내는 Logstash 파이프 라인의 마지막 단계입니다. Logstash는 필터링 된 로그 이벤트를 다양한 스토리지 및 검색 엔진에 보관하기 위해 여러 출력 플러그인을 제공합니다.
로그 저장
Logstash는 필터링 된 로그를 File, Elasticsearch Engine, stdout, AWS CloudWatch, 등등. 같은 네트워크 프로토콜 TCP, UDP, Websocket 로그 이벤트를 원격 스토리지 시스템으로 전송하기 위해 Logstash에서 사용할 수도 있습니다.
ELK 스택에서 사용자는 Elasticsearch 엔진을 사용하여 로그 이벤트를 저장합니다. 다음 예에서는 로컬 Elasticsearch 엔진에 대한 로그 이벤트를 생성합니다.
Elasticsearch 출력 플러그인 설치
다음 명령으로 Elasticsearch 출력 플러그인을 설치할 수 있습니다.
>logstash-plugin install Logstash-output-elasticsearch
logstash.conf
이 구성 파일에는 로컬에 설치된 Elasticsearch에 출력 이벤트를 저장하는 Elasticsearch 플러그인이 포함되어 있습니다.
input {
file {
path => "C:/tpwork/logstash/bin/log/input.log"
}
}
filter {
grok {
match => [ "message", "%{LOGLEVEL:loglevel} -
%{NOTSPACE:taskid} - %{NOTSPACE:logger} -
%{WORD:label}( - %{INT:duration:int})?" ]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
mutate {
add_field => {"user" => "tutorialspoint.com"}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
Input.log
다음 코드 블록은 입력 로그 데이터를 보여줍니다.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end
Localhost에서 Elasticsearch 시작
localhost에서 Elasticsearch를 시작하려면 다음 명령을 사용해야합니다.
C:\elasticsearch\bin> elasticsearch
Elasticsearch가 준비되면 브라우저에 다음 URL을 입력하여 확인할 수 있습니다.
http://localhost:9200/
응답
다음 코드 블록은 localhost에서 Elasticsearch의 응답을 보여줍니다.
{
"name" : "Doctor Dorcas",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.1",
"build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
"build_timestamp" : "2015-12-15T13:05:55Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
Note − Elasticsearch에 대한 자세한 내용은 다음 링크를 클릭하면됩니다.
https://www.tutorialspoint.com/elasticsearch/index.html
이제 위에서 언급 한 Logstash.conf로 Logstash를 실행하십시오.
>Logstash –f Logstash.conf
위에서 언급 한 텍스트를 출력 로그에 붙여 넣으면 해당 텍스트가 Logstash의 Elasticsearch에 저장됩니다. 브라우저에 다음 URL을 입력하여 저장된 데이터를 확인할 수 있습니다.
http://localhost:9200/logstash-2017.01.01/_search?pretty
응답
인덱스 Logstash-2017.01.01에 저장된 JSON 형식의 데이터입니다.
{
"took" : 20,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 10,
"max_score" : 1.0,
"hits" : [ {
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOs",
"_score" : 1.0,
"_source":{
"duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.140Z","loglevel":"INFO",
"logger":"SQL","@version":"1","host":"wcnlab-PC",
"label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 200\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
},
{
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOt",
"_score" : 1.0,
"_source":{
"sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.145Z","loglevel":"INFO",
"logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC",
"label":"end",
"message":" INFO - 48566 - TRANSACTION_END - end\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
}
}
}