How to get ${kubernetes.namespace_name} for index_name in fluentd?

前端 未结 2 393
花落未央
花落未央 2020-12-22 04:08

Did anyone manage to get kubernetes.namespace_name as indexName? I tried this and its not working.

index_name ${kubernetes.namespace_name}.%Y%m%d
         


        
2条回答
  •  感情败类
    2020-12-22 04:29

    Well, mine here I did by label, I had to add a label on the objects (deployment, statefulset and etc ...) called fluentd: "true"

    Example:

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: kafka
      namespace: your-name-space
      labels:
        app: kafka
        version: "2.6.0"
        component: queues
        part-of: appsbots
        managed-by: kubectl
        fluentd: "true"
    

    In the fluent.conf file, I made a configmap for the fluentd Daemonset as shown below.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: fluentd-config
      namespace: kube-system
      labels:
        k8s-app: fluentd-logging
        version: v1
        kubernetes.io/cluster-service: "true"
    data:
      fluent.conf: |-
        
            # this tells fluentd to not output its log on stdout
            @type null
        
    
        # here we read the logs from Docker's containers and parse them
        
          @type tail
          path /var/log/containers/*.log
          pos_file /var/log/containers.log.pos
          tag kubernetes.*
          read_from_head true
          
            @type json
            time_format %Y-%m-%dT%H:%M:%S.%NZ
          
          
            format /^(?
        
    
        # Kubernetes metadata
        
            @type kubernetes_metadata
        
    
        
          @type null
        
    
        # 
        # @type null
        # 
    
        
          @type null
        
        
    
        
          @type grep
          
            key $["kubernetes"]["labels"]["fluentd"]        
            pattern true
          
        
    
    
        
          @type grep
          
            key $["kubernetes"]["labels"]["fluentd"]        
            pattern false
          
        
        
    
    
        #Just an example of what kind of variables can come inside. This part does not apply as config. Do your config with ENV vars
        
          @type elasticsearch
          @id out_es
          @log_level info
          include_tag_key true
          host "#{ENV['FLUENT_ELASTICSEARCH_HOST']}"
          port "#{ENV['FLUENT_ELASTICSEARCH_PORT']}"
          scheme "#{ENV['FLUENT_ELASTICSEARCH_SCHEME'] || 'http'}"
          ssl_verify "#{ENV['FLUENT_ELASTICSEARCH_SSL_VERIFY'] || 'true'}"
          user "#{ENV['FLUENT_ELASTICSEARCH_USER']}"
          password "#{ENV['FLUENT_ELASTICSEARCH_PASSWORD']}"
          reload_connections "#{ENV['FLUENT_ELASTICSEARCH_RELOAD_CONNECTIONS'] || 'true'}"
          logstash_prefix "#{ENV['FLUENT_ELASTICSEARCH_LOGSTASH_PREFIX'] || 'logstash'}"
          logstash_format true
          buffer_chunk_limit "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_CHUNK_LIMIT_SIZE'] || '2M'}"
          buffer_queue_limit "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_QUEUE_LIMIT_LENGTH'] || '32'}"
          flush_interval "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_FLUSH_INTERVAL'] || '5s'}"
          max_retry_wait "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_RETRY_MAX_INTERVAL'] || '30'}"
          disable_retry_limit num_threads "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_FLUSH_THREAD_COUNT'] || '8'}"
          
               @type file
               path /var/log/fluentd-buffers/kubernetes.system.buffer
               flush_mode interval
               retry_type exponential_backoff
               flush_thread_count 2
               flush_interval 5s
               retry_forever true
               retry_max_interval 30
               chunk_limit_size 2M
               queue_limit_length 32
               overflow_action block
           
        
    

    And now the fluentd Deamon file. The image I am using is reference to version v1.10. however it can be the same saw.

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: fluentd
      namespace: kube-system
      labels:
        k8s-app: fluentd-logging
        version: v1
        kubernetes.io/cluster-service: "true"
      annotations:
        configmap.reloader.stakater.com/reload: "fluentd-config"
    spec:
      selector:
        matchLabels:
          k8s-app: fluentd-logging
      template:
        metadata:
          labels:
            k8s-app: fluentd-logging
            version: v1
            kubernetes.io/cluster-service: "true"
        spec:
          serviceAccount: fluentd
          serviceAccountName: fluentd
          tolerations:
          - key: node-role.kubernetes.io/master
            effect: NoSchedule
          containers:
          - name: fluentd
            image: didevlab/mutpoc:fluentd #base--> fluent/fluentd-kubernetes-daemonset:v1.10-debian-elasticsearch7-1
            imagePullPolicy: Always
            env:
              - name:  FLUENT_ELASTICSEARCH_HOST
                value: "elasticsearch-svc.{{ name_corp }}-{{ app_enviroment }}"
              - name:  FLUENT_ELASTICSEARCH_PORT
                value: "9200"
              - name: FLUENT_ELASTICSEARCH_SCHEME
                value: "http"
              - name: FLUENT_UID
                value: "0"
            resources:
              limits:
                memory: 200Mi
              requests:
                cpu: 100m
                memory: 200Mi
            volumeMounts:        
            - name: varlog
              mountPath: /var/log
            - name: varlibdockercontainers
              mountPath: /var/lib/docker/containers
              readOnly: true
            - name: config-fluentd
              mountPath: /fluentd/etc
          terminationGracePeriodSeconds: 30
          volumes:      
          - name: varlog
            hostPath:
              path: /var/log
          - name: varlibdockercontainers
            hostPath:
              path: /var/lib/docker/containers
          - name: config-fluentd
            configMap:
              name: fluentd-config
    

    \o/Good is that, by boyBR

提交回复
热议问题