'로그스태쉬'에 해당되는 글 4건

  1. 2017.01.12 [Logstash] 간헐적으로 logstash 가 죽습니다.
  2. 2016.05.18 [Logstash] input-http, filter-mutate,grok 샘플 config
  3. 2016.04.20 [Logstash] logstash slack chat output plugin 만들기
  4. 2016.04.14 [Logstash] Kafka 연동 시 쉽게 디버깅 하기.

[Logstash] 간헐적으로 logstash 가 죽습니다.

Elastic/Logstash 2017. 1. 12. 11:35

aws 에 ec2 인스턴스를 이용해서 logstash 를 다양한 용도로 활용하고 있습니다.

그렇다 보니 시스템 자원을 최대한 뽑아서 사용을 하고 있어서 간헐적으로 logstash 가 죽는 문제가 발생을 했었습니다.


하나의 인스턴스에 logstash daemon 을 4개 띄워서 사용중에 있습니다.

그 이외 elasticsearch, kibana 등도 함께 띄워서 사용을 하고 있구요.


모든 데몬이 실행중일 경우 시스템 memory 자원은 1GB 정도 남게 되며 7GB 정도를 사용하게 됩니다.

처음 부터 7GB를 잡고 실행 되지는 않지만 JVM 특성상 full gc 돌기 전에는 조금씩 증가 하다 7GB 까지 도달하게 되고 좀 다양한 상황에 맞춰 700MB 이하로 까지 free memory 가 남기도 합니다.


반드시 free memory 가 1GB 미만 이면 죽는 것은 아니지만 죽을 확율이 높아 지는 것으로 보입니다.

실제 운영을 하고 분석을 해보니 그렇습니다.


혹시 운영 하시는 분들은 참고하시라고 글 올려 봤습니다.


[참고문서]

https://www.elastic.co/guide/en/logstash/2.4/performance-troubleshooting.html


[발췌문구]

Leave at least 1GB free for the OS and other processes.


:

[Logstash] input-http, filter-mutate,grok 샘플 config

Elastic/Logstash 2016. 5. 18. 17:48

그냥 올려봅니다.


[logstash config]

input {

  http {

    codec => json {

    }

  }

}


filter {

  mutate {

    add_filed => { "request_uri" => "%{headers[request_uri]}" }

    replace => { "message" => "input http 사용 시 headers 내부 변수 접근(nested variables)" }

  }


  grok {

    match => { "request_uri" => "%{URIPARAM:request}" }

  }

}


output {

  stdout { codec => rubydebug }

}


뭐 정말 별거 아닌고 모니터링 시스템 설계 하다가 prototype 구현을 해봐야 겠다 싶어서 대충 돌려보다 grok 에러가 발생해서 기록해 본겁니다.


[logstash http input 사용 시 출력 결과]

{

       "message" => "",

      "@version" => "1",

    "@timestamp" => "2016-05-18T07:19:36.140Z",

          "host" => "127.0.0.1",

       "headers" => {

         "request_method" => "GET",

           "request_path" => "/",

            "request_uri" => "/?message=test",

  1 input {

           "http_version" => "HTTP/1.1",

              "http_host" => "127.0.0.1:8080",

        "http_user_agent" => "curl/7.43.0",

            "http_accept" => "*/*"

    },

          "tags" => [

        [0] "_grokparsefailure"

    ]

}


:

[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] Kafka 연동 시 쉽게 디버깅 하기.

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

그냥 들어가고 나오고가 잘되는지 보기 위한 logstash input/output config 입니다.

별것도 아니지만 늘 구글링 하기도 귀찮고 해서 기록해 봅니다.


참고문서)

https://www.elastic.co/blog/logstash-kafka-intro

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

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



Logstash Output Kafka - Producer)


$ bin/logstash -e "input { stdin {} } output { kafka { bootstrap_servers => '172.x.x.x:9024' topic_id => 'logstash_logs' } }"



Logstash Input Kafka - Consumer)


$ bin/logstash -e "input { kafka { zk_connect => '172.x.x.x:2181' topic_id => 'logstash_logs' } } output { stdout { codec => rubydebug } }"


: