2016-07-19 4 views
0

로그를 기록하고 참조하는 내용에 따라 특정 위치로 보내려고하는 서비스가 있습니다. Fluentd는 의미가 있습니다. 현재, 나는 모든 것을 s3에 맡기고, 잘 작동합니다. 그러나 이제는 작은 부분 집합 ("ACTION :"으로 시작하는 모든 줄)을 mongo 데이터베이스로 보내야합니다. 나는 여전히 모든 것을 s3에 보내고 싶다.두 번째 출력에 태그의 서브 세트

나는 물론 어느 모두 수집 할 것 한 번 우리가 첫 경기 태그의 정상적인 동작에있어 멈춘

<source> 
    @type forward 
    @id input 
    @label mainstream 
    port 24224 
</source> 

<label @mainstream> 

    <match foo.**> 
    @type copy 

    <store> 
     @type s3 

     ... 
    </store> 
    <store> 
     @type rewrite_tag_filter 
     rewriterule1 log "^ACTION:" foo.bar 
    </store> 

    </match> 

    <match foo.bar> 
    @type mongo 

    ... 
    </matc> 
</label> 

작동하지 않을, 여기에이 설정 파일이 rewrite_tag_filter<store>을 지나지 않는 것으로 보입니다.

내가 시도한 다른 것들.

  • s3 store을 복사하여 두 번 사용합니다. 그러나 나는 s3 출력을 분할하지 않기를 바란다.
  • 다른 포트에서 자신에게 전달하고, 다른 레이블을 통해 소스를 실행하지만 연결하지 않습니다.

나는 너무 이상하지 않다라고 묻고있다. 전에 이런 식으로 한 사람 있습니까?

답변

1

무엇을 다시 태그할지 조심해야합니다. 위의 일치 항목과 일치하는 항목을 사용하면 계속 이동하지 않으므로 다른 항목이 필요합니다. 이 경우 태그가 다르더라도 foo으로 시작했기 때문에 <match foo.**> 이후로 이동하지 않습니다.

<source> 
    @type forward 
    @id input 
    @label mainstream 
    port 24224 
</source> 

<label @mainstream> 

    <match foo.**> 
    @type copy 

    <store> 
     @type s3 

     ... 
    </store> 
    <store> 
     @type rewrite_tag_filter 
     # Changed tag from foo.bar to this 
     rewriterule1 log "^ACTION:" totally.different.tag.name 
    </store> 

    </match> 


    # the new totally.different.tag.name won't get caught by the 
    # first <match foo.**> so it will actually reach this one 
    <match totally.different.tag.name> 
    @type mongo 

    ... 
    </match> 
</label>