'output'에 해당되는 글 5건

  1. 2022.10.25 [Beats] Filebeat Output.logstash 전송 방식.
  2. 2020.07.21 [Terraform] apply 후 생성 된 정보 구하기.
  3. 2018.04.24 [Logstash] Logstash 를 이용한 CSV 파일 Import를 하려면
  4. 2016.04.20 [Logstash] logstash slack chat output plugin 만들기
  5. 2015.07.29 [Logstash] logstash 개발 및 디버그 시 유용한 설정

[Beats] Filebeat Output.logstash 전송 방식.

Elastic/Beats 2022. 10. 25. 15:19

 

Filebeats output.logstash 는 기본 async 로 전송 합니다.

공홈 문서)
https://www.elastic.co/guide/en/beats/filebeat/current/logstash-output.html#_pipelining

pipelining

Configures the number of batches to be sent asynchronously to Logstash while waiting for ACK from Logstash.
Output only becomes blocking once number of pipelining batches have been written. 
Pipelining is disabled if a value of 0 is configured.
The default value is 2.



소스코드)
https://github.com/elastic/beats/blob/main/libbeat/outputs/logstash/logstash.go

if config.Pipelining > 0 {
  client, err = newAsyncClient(beat, conn, observer, config)
} else {
  client, err = newSyncClient(beat, conn, observer, config)
}
 

Configure the Logstash output | Filebeat Reference [8.4] | Elastic

If ILM is not being used, set index to %{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd} instead so Logstash creates an index per day, based on the @timestamp value of the events coming from Beats.

www.elastic.co

 

내용과 코드를 보시면 쉽게 이해가 됩니다.

pipelining 설정은 기본 2 이고 이 값이 0 보다 크면 async 로 전송 하게 됩니다.

참고하세요.

 

더불어ㅏ서 pipelining 값은 core 크기와 동일하게 맞춰서 사용 하시면 성능적 효과를 얻을 수 있습니다.
(정답은 아니고 장비에 대한 용도와 올라가는 어플리케이션에 따라 다를 수 있으니 성능 테스트는 꼭 해보시기 바랍니다.)

:

[Terraform] apply 후 생성 된 정보 구하기.

ITWeb/개발일반 2020. 7. 21. 08:44

Terraform  을 이용해서 인프라 구성을 한 후에 생성된 정보를 얻어 와야 할 때가 있습니다.

특정 정보만 구하고 싶을 경우 output 설정을 이용해서 얻을 수 있는 방법과 state 를 이용해서 얻을 수 있는 방법이 있습니다.

 

[참고문서]

https://www.terraform.io/docs/commands/output.html

 

tf 설정 파일 내 output 설정을 합니다.

resource "aws_instance" "allinone" {
...중략...
  count = 3
}

output "private_ip" {
  value = "${aws_instance.allinone.*.private_ip}"
}
# 변수 정보를 정상적으로 호출 하지 못할 경우 실행
$ terraform refresh

$ terraform output 변수명
-->
$ terraform output private_ip
[
  "10.0.25.14",
]

 

아래와 같이 하면 모든 state 정보를 return 해 줍니다.

 

$ terraform state pull

 

:

[Logstash] Logstash 를 이용한 CSV 파일 Import를 하려면

Elastic/Logstash 2018. 4. 24. 11:14

Elastic 사의 공식 문서를 보시면 쉽게 하실 수 있습니다.


기본 flow 는 아래와 같습니다.


CSV -> logstash input file -> Logstash filter csv -> logstash output elasticsearch


각각에 필요한 참조문서는

[Logstash Input File]

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html


[Logstash Filter CSV]

https://www.elastic.co/guide/en/logstash/current/plugins-filters-csv.html


[Logstash Output Elasticsearch]

https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html


[Elasticsearch Indices Templates]

https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html


Template 이 필요한 이유는 csv 파일 데이터에 대한 dynamic mapping 시 의도치 않은 데이터에 대한 형변환 오류를 방지 하기 위함 입니다.

사전에 꼭 정의 하셔서 reindexing 하는 일이 없도록 주의 하시면 좋을 것 같습니다.


:

[Logstash] logstash slack chat output plugin 만들기

Elastic/Logstash 2016. 4. 20. 14:11

필요해서 prototype 수준으로 만들어 봤습니다.

추후 input 와 filter 부분에서 필요한 로직을 각자 구현 하시면 될 것 같습니다.


참고문서)

https://api.slack.com/docs/oauth-test-tokens

https://api.slack.com/methods

https://github.com/logstash-plugins/logstash-output-example.git

http://www.rubydoc.info/github/cheald/manticore/Manticore/Client


구현소스)

https://github.com/HowookJeong/logstash-output-slack_chat


실행방법)

    $ bin/logstash -e '
        input {
            stdin{}
        }

        output {
            slack_chat {
                url => "http://slack.com/api/chat.postMessage"
                token => "YOUR_TOKEN_STRING"
                channel => "SLACK_CHANNEL_ID"
            }

            stdout { codec => rubydebug }
        }
    '

아주 간단하죠.

뭐 꼭 logstash plugin 이 아니더라도 일반 httpclient 라이브러리를 이용해서 다양한 방법으로 구현 가능하니 목적에 맞게 구현해서 사용하시면 될 것 같습니다.


Other logstash slack)

https://github.com/cyli/logstash-output-slack

:

[Logstash] logstash 개발 및 디버그 시 유용한 설정

Elastic/Logstash 2015. 7. 29. 17:32

제목 쓰기가 참 어렵내요.

logstash를 많이 사용해 보신 분들은 다들 잘 아실 것 같습니다.


저 같은 경우 output 은 거의 elasticsearch를 사용하고 있기 때문에 개발 시 디버깅을 위해서 아래 설정을 많이 이용합니다.


[디버그용 설정]

input {

  http {

    port => 8080

    codec => json_lines {}

  }

}


output {

  stdout {

    codec => rubydebug

  }

}


[디버그용 로그 스태쉬 실행]

$ bin/logstash -e "input { http { port => 8080 codec => json_lines {} } } output { stdout { codec => rubydebug } }"


잘 아시겠지만 output 은 여러개를 지정해 줄 수 있습니다.

실제 elasticsearch로도 색인을 하고 싶으시다면 아래와 같이 하시면 되겠죠.


[ouput - elasticsearch + stdout]

output {

  elasticsearch {

    cluster => "xxxxxx"

    bind_host => "localhost"

    bind_port => "9300"

    protocol => "transport"

    index => "logstash-%{+YYYY.MM.dd}"

  }

  stdout {

    codec => rubydebug

  }

}


: