2017-09-05 12 views
0

노드에 컨테이너 로그를 집계하여 MongoDB에 보내려고하는 Kubernetes 클러스터가 있습니다. 그러나 로그 레코드의 값을 기반으로 다른 MongoDB 서버에 로그 레코드를 보낼 수 있어야합니다.Fluentd는 필드 값을 기반으로 태그를 만듭니다.

Kubernetes의 추가 정보를 로그 레코드에 첨부하기 위해 fluent-plugin-kubernetes_metadata_filter 플러그인을 사용하고 있습니다. 해당 입력란 중 하나는 kubernetes_namespace_name입니다. 이 필드를 사용하여 mongodb 출력 플러그인과 일치시킬 수있는 태그를 만들 수 있습니까?

예를 들면. 난 단지 하나 개의 출력을 사용하고 있지만, 아이디어는 필드 kubernetes_namespace_name의 값에 따라 그 MongoDB를 데이터베이스에 로그를 보내 여러 있고 유창하게하는 것입니다 아래 :

<source> 
    @type tail 
    @label @KUBERNETES 
    path /var/log/containers/*.log 
    pos_file /var/log/es-containers.log.pos 
    time_format %Y-%m-%dT%H:%M:%S 
    tag kubernetes.* 
    format json 
    keep_time_key true 
    read_from_head true 
</source> 

<label @KUBERNETES> 
    <filter kubernetes.**> 
    @type kubernetes_metadata 
    kubernetes_url "#{ENV['K8S_HOST_URL']}" 
    bearer_token_file /var/run/secrets/kubernetes.io/serviceaccount/token 
    ca_file /var/run/secrets/kubernetes.io/serviceaccount/ca.crt 
    include_namespace_id true 
    </filter> 
    <filter kubernetes.**> 
    @type flatten_hash 
    separator _ 
    </filter> 

    # < Tag 'kubernetes.namespace.default' is created here somehow > 

    <match kubernetes.namespace.default> 
    @type mongo 
    host "#{ENV['MONGO_HOST']}" 
    port "#{ENV['MONGO_PORT']}" 
    database "#{ENV['MONGO_DATABASE']}" 
    collection "#{ENV['MONGO_COLLECTION']}" 
    capped 
    capped_size 1024m 
    user "#{ENV['MONGO_USER']}" 
    password "#{ENV['MONGO_PASSWORD']}" 
    time_key time 
    flush_interval 10s 
    </match> 
</label> 

답변

0

대신에, 당신이 할 수있는 태그를 사용하여 Fluentd의 grep 필터를 사용하여 필터링하려면 메시지 내용을 사용하십시오. kubernetes 메타 데이터 필터 다음에 데이터 플러 튼터 앞에 필터를 추가 할 수 있습니다. 이렇게하면 kubernetes_namespace_name 키를 지정하고 그 값에 따라 경로를 지정할 수 있습니다. 라벨을 사용하여 MongoDB 출력을 추가로 가질 수 있으므로 프로세스 워크 플로우를 분리하는 데 도움이 될 수 있습니다.

문서 : https://docs.fluentd.org/v0.12/articles/filter_grep

예 :

<filter kubernetes.**> 
    @type grep 
    <regexp> 
    key kubernetes_namespace_name 
    pattern cool 
    </regexp> 
</filter> 

<YOUR MONGO CONFIG HERE> 
+0

그래서 당신은 내가 한 소스와 여러 라벨 그것의 자신의 흐름과 각을 가질 필요가 있다는 것을 의미? – amofasser

+0

구성에 상당한 의존성이있을 것입니다.하지만이 방법이 효과가 있습니다. –