728x90
반응형

Logstash에서 pipeline으로 개별로 설정을 하여 로그를 수집할 수 있다.

 

그래서 input, filter, output으로 나누어 사용하기 위해

 

다음과 같이 디렉토리를 구분하여 pipelines.yml을 설정했다.

- pipeline.id: input
  path.config: "/etc/path/to/input.conf"
- pipeline.id: filter
  path.config: "/etc/path/to/filter.conf"
- pipeline.id: outpue
  path.config: "/etc/path/to/output.conf"

하지만 실제론 input만 동작하고 나머지는 non_running_pipelines로 되어 동작하지 않았다.

 

다시 문서를 읽어보니 개별 설정마다 input이 있어야 했다.

 

그래서 디렉토리에서 파일을 나눈 다음 순서대로 합쳐질 수 있도록 파일명을 수정했다.

conf.d/
|- 01-input.conf
|- 02-filter.conf
|- 03-output.conf

그리고 pipelines.yml은 다음과 같이 수정하여 잘 동작하는 것을 확인할 수 있었다.

- pipeline.id: input
  path.config: "/etc/path/to/*.conf"

 

참고 문헌

  1. https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html

  2. https://www.elastic.co/guide/en/logstash/current/pipeline-to-pipeline.html

반응형

'Log' 카테고리의 다른 글

[Log] NoNodesAvailable 에러 해결  (0) 2020.02.27
[Log] Spark ElasticSearch Parquet  (0) 2020.01.25
[Log] Logstash Kafka 연동 에러 해결  (0) 2020.01.25
[Log] Fluentd 성능 튜닝  (0) 2020.01.25
[Log] Fluentd Kafka Logstash 연동  (0) 2020.01.25
728x90
반응형

Fluentd에서 로그를 전송하는 부분을 수정한 이후로 잘 동작하고 있었지만

 

flush_interval을 5분으로 하여 실시간으로 로그를 볼 수가 없었다.

 

그리고 Fluentd 서버를 확인해 보니 로그 전송 버퍼가 많이 쌓여 있었다.

 

그래서 버퍼를 빠르게 비우고 로그도 최대한 실시간으로 볼 수 있도록

 

Fluentd의 설정 문서를 읽어보면서 여러 가지들을 적용해보았다.

 

우선은 버퍼 사이즈를 줄여보면서 쌓여있는 버퍼가 빠르게 전송되는지 확인해보았다.

 

처음에는 buffer_queue_limit를 32로 buffer_chunk_limit를 2m로

 

그 다음에는 buffer_queue_limit를 64, buffer_chunk_limit를 1m로

 

테스트해보았지만 두번 다 버퍼는 계속 쌓였다.

 

그래서 num_threads를 8로 적용해보니 버퍼가 빠르게 없어지는 것을 확인할 수 있었다.

 

그리고 flush_interval을 1s로 줄여도 버퍼가 많이 쌓이지 않았고 Kibana를 통해 로그를 보니

 

거의 실시간(30초 정도 지연)으로 처리되는 것을 확인할 수 있었다.

 

최종적으로 설정한 값은 다음과 같다.

buffer_queue_limit 64
buffer_chunk_limit 1m
flush_interval 1s
num_threads 8

 

참고 문헌

  1. https://docs.fluentd.org/v/0.12/output/kafka#buffer_queue_limit-buffer_chunk_limit

반응형

'Log' 카테고리의 다른 글

[Log] NoNodesAvailable 에러 해결  (0) 2020.02.27
[Log] Spark ElasticSearch Parquet  (0) 2020.01.25
[Log] Logstash Kafka 연동 에러 해결  (0) 2020.01.25
[Log] Logstash Pipeline 사용하기  (0) 2020.01.25
[Log] Fluentd Kafka Logstash 연동  (0) 2020.01.25
728x90
반응형

Javascript에서 정규식을 사용하는 경우가 자주 있는데 그때마다 잊어버리는 게 있다.

 

반복해서 정규식을 이용해 문자열을 찾는 경우가 있는데

 

항상 2번째에서는 다음과 같이 값이 나오지 않는 경우가 발생했다

let re = /ab/g;
let str = 'abc'
re.exec(str)
   ==> ["ab"]
re.exec(str)
   ==> null

이유는 RegExp가 상태 저장(stateful)을 하기 때문이다.

 

이를 위해 RegExp.lastIndex로 마지막으로 찾은 위치를 저장하는데

 

위의 예시에서는 처음 수행하면 ab를 찾아서 값이 2가 된다.

 

다음에 수행될 때는 마지막으로 찾은 위치부터 수행하기 때문에

 

문자열을 찾지 못하고 lastIndex는 0으로 리셋된다.

 

그래서 반복해서 정규식으로 문자열을 찾으려면 정규식을 수행한 이후에

 

항상 lastIndex를 0으로 설정해야 원하는 결과를 얻을 수 있다.

re.lastIndex = 0;

 

참고 문헌

  1. https://stackoverflow.com/questions/11477415/why-does-javascripts-regex-exec-not-always-return-the-same-value

  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

  3. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex

반응형

'JS' 카테고리의 다른 글

[JS] video.js 자동 재생이 안될 때 해결 방법  (0) 2020.09.24
[JS] Electron으로 앱만들기  (0) 2020.08.13
[JS] PWA 만들기  (0) 2020.02.20
[JS] ejs SyntaxError  (0) 2020.01.25
[JS] Grunt Webpack 버전별로 빌드하기  (0) 2020.01.25
728x90
반응형

Vue로 된 프로젝트가 있는데 하나의 파일에서 화면을 전부 만들고 있었다.

 

각 부분들을 컴포넌트로 만드는데 자식 컴포넌트에 값을 넘겨 주면서

 

watch로 변경을 감지할 수 있도록 하는 기능이 필요했다.

 

v-model을 사용하면 쉽게 될 줄 알았는데 미처 생각하지 못한 부분이 있었다.

 

자식 컴포넌트에서 값을 받은 것이 변경됐는지 이벤트를 보내는 부분을 잊고 있었다.

 

공식 문서를 읽어보면서 어떻게 해야하는지를 알 수 있었다.

 

다음은 문서에 나온 코드를 지금 사용하고 있는 방식으로 변경한 것이다.

 

Parent.vue

<template>
  <Child v-model="check" />
</template>

<script>
import Child from './Child.vue';

export default {
  name: 'Parent',
  data: () => {
    return {
      check: true
    }
  },
  watch: {
    check: val => console.log(val)
  }
}
</script>

Child.vue

<template>
  <input
    type="checkbox"
    :checked="checked"
    @change="$emit('change', $event.target.checked)"
  >
</template>

<script>
export default {
  name: 'Child',
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: ['checked']
};
</script>

 

참고 문헌

  1. https://kr.vuejs.org/v2/guide/components.html#컴포넌트의-v-model-사용자-정의

  2. https://github.com/vuejs/vue/blob/dev/src/core/vdom/create-component.js#L250-L268

반응형

+ Recent posts