nameOverride: "" fullnameOverride: "" # DaemonSet, Deployment or StatefulSet kind: "DaemonSet" # azureblob, cloudwatch, elasticsearch7, elasticsearch8, gcs, graylog , kafka, kafka2, kinesis, opensearch variant: gcs # # Only applicable for Deployment or StatefulSet # replicaCount: 1 image: repository: "asia-southeast1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/fluentd-v2" pullPolicy: "Always" tag: "edge-debian" ## Optional array of imagePullSecrets containing private registry credentials ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ imagePullSecrets: [] serviceAccount: create: true annotations: { iam.gke.io/gcp-service-account: sa-dsci-dssre-fluentd-prd@meesho-datascience-prd-0622.iam.gserviceaccount.com } name: null rbac: create: true # from Kubernetes 1.25, PSP is deprecated # See: https://kubernetes.io/blog/2022/08/23/kubernetes-v1-25-release/#pod-security-changes # We automatically disable PSP if Kubernetes version is 1.25 or higher podSecurityPolicy: enabled: true annotations: {} ## Security Context policies for controller pods ## See https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/ for ## notes on enabling and using sysctls ## podSecurityContext: {} # seLinuxOptions: # type: "spc_t" securityContext: {} # capabilities: # drop: # - ALL # readOnlyRootFilesystem: true # runAsNonRoot: true # runAsUser: 1000 # Configure the livecycle # Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/ lifecycle: {} # preStop: # exec: # command: ["/bin/sh", "-c", "sleep 20"] # Configure the livenessProbe # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ #livenessProbe: # httpGet: # path: /metrics # port: metrics # initialDelaySeconds: 0 # periodSeconds: 10 # timeoutSeconds: 1 # successThreshold: 1 # failureThreshold: 3 # Configure the readinessProbe # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ #readinessProbe: # httpGet: # path: /metrics # port: metrics # initialDelaySeconds: 0 # periodSeconds: 10 # timeoutSeconds: 1 # successThreshold: 1 # failureThreshold: 3 resources: requests: cpu: 100m memory: 50Mi limits: memory: 2000Mi cpu: 2000m ## only available if kind is Deployment autoscaling: enabled: false minReplicas: 1 maxReplicas: 100 targetCPUUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80 ## see https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics customRules: [] # - type: Pods # pods: # metric: # name: packets-per-second # target: # type: AverageValue # averageValue: 1k ## see https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior # behavior: # scaleDown: # policies: # - type: Pods # value: 4 # periodSeconds: 60 # - type: Percent # value: 10 # periodSeconds: 60 priorityClassName: "system-node-critical" nodeSelector: {} ## Node tolerations for server scheduling to nodes with taints ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ ## tolerations: - operator: Exists ## Affinity and anti-affinity ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity ## affinity: {} ## Annotations to be added to fluentd DaemonSet/Deployment ## annotations: {} ## Labels to be added to fluentd DaemonSet/Deployment ## labels: bu: dsgpu team: sre type: fluentd service: fluentd-dsgpu-a-prd priority: p0 env: prd ## Annotations to be added to fluentd pods ## podAnnotations: {} ## Labels to be added to fluentd pods ## podLabels: bu: dsgpu team: sre type: fluentd service: fluentd-dsgpu-a-prd priority: p0 env: prd ## How long (in seconds) a pods needs to be stable before progressing the deployment ## minReadySeconds: ## How long (in seconds) a pod may take to exit (useful with lifecycle hooks to ensure lb deregistration is done) ## terminationGracePeriodSeconds: ## Deployment strategy / DaemonSet updateStrategy ## updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 0 ## Additional environment variables to set for fluentd pods ## Additional environment variables to set for fluentd pods env: - name: APP_NAME value: namespace_name - name: SUB_SYSTEM value: container_name # - name: FLUENTD_CONF # value: "../../etc/fluent/fluent.conf" - name: APP_NAME_SYSTEMD value: systemd - name: SUB_SYSTEM_SYSTEMD value: kubelet.service - name: ENDPOINT value: ingress.coralogixsg.com - name: LOG_LEVEL value: error - name: TZ value: "Asia/Kolkata" - name: K8S_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName externalSecret: secretStoreRef: name: vault-backend path: meesho/prd/cntr/devop/coralogix-keys # externalSecret: # enabled: true # key: dev/devops/coralogix # secretStoreRef: # name: vault-backend envFrom: # - secretRef: # name: integrations-privatekey - secretRef: name: es-password initContainers: [] ## Name of the configMap containing a custom fluentd.conf configuration file to use instead of the default. # mainConfigMapNameOverride: "" ## Name of the configMap containing files to be placed under /etc/fluent/config.d/ ## NOTE: This will replace ALL default files in the aforementioned path! # extraFilesConfigMapNameOverride: "" mountVarLogDirectory: true mountDockerContainersDirectory: true volumes: [] # - name: varlog # hostPath: # path: /var/log # - name: varlibdockercontainers # hostPath: # path: /var/lib/docker/containers # - name: etcfluentd-main # configMap: # name: fluentd-main # defaultMode: 0777 # - name: etcfluentd-config # configMap: # name: fluentd-config # defaultMode: 0777 volumeMounts: [] # - name: varlog # mountPath: /var/log # - name: varlibdockercontainers # mountPath: /var/lib/docker/containers # readOnly: true # - name: etcfluentd-main # mountPath: /etc/fluent # - name: etcfluentd-config # mountPath: /etc/fluent/config.d/ ## Only available if kind is StatefulSet ## Fluentd persistence ## persistence: enabled: false storageClass: "" accessMode: ReadWriteOnce size: 10Gi ## Fluentd service ## service: enabled: true type: "ClusterIP" annotations: {} # loadBalancerIP: # externalTrafficPolicy: Local ports: [] # - name: "forwarder" # protocol: TCP # containerPort: 24224 ## Prometheus Monitoring ## metrics: serviceMonitor: enabled: false additionalLabels: release: prometheus-operator namespace: "" namespaceSelector: {} ## metric relabel configs to apply to samples before ingestion. ## metricRelabelings: [] # - sourceLabels: [__name__] # separator: ; # regex: ^fluentd_output_status_buffer_(oldest|newest)_.+ # replacement: $1 # action: drop ## relabel configs to apply to samples after ingestion. ## relabelings: [] # - sourceLabels: [__meta_kubernetes_pod_node_name] # separator: ; # regex: ^(.*)$ # targetLabel: nodename # replacement: $1 # action: replace ## Additional serviceMonitor config ## # jobLabel: fluentd # scrapeInterval: 30s # scrapeTimeout: 5s # honorLabels: true prometheusRule: enabled: false additionalLabels: {} namespace: "" rules: [] # - alert: FluentdDown # expr: up{job="fluentd"} == 0 # for: 5m # labels: # context: fluentd # severity: warning # annotations: # summary: "Fluentd Down" # description: "{{ $labels.pod }} on {{ $labels.nodename }} is down" # - alert: FluentdScrapeMissing # expr: absent(up{job="fluentd"} == 1) # for: 15m # labels: # context: fluentd # severity: warning # annotations: # summary: "Fluentd Scrape Missing" # description: "Fluentd instance has disappeared from Prometheus target discovery" ## Grafana Monitoring Dashboard ## dashboards: enabled: "true" namespace: "" labels: grafana_dashboard: '"1"' ## Fluentd list of plugins to install ## plugins: [] # - fluent-plugin-out-http ## Add fluentd config files from K8s configMaps ## configMapConfigs: - fluentd-prometheus-conf # - fluentd-systemd-conf ## Fluentd configurations: ## fileConfigs: 01_sources.conf: |- @type systemd path /var/log/journal tag sys-log read_from_head true @id fluentd-containers.log @type tail encoding utf-8 path /var/log/containers/*.log pos_file /var/log/containers.log.pos exclude_path ["/var/log/containers/*telegraf*.log","/var/log/containers/*opentelemetry*.log","/var/log/containers/*fluentbit*.log","/var/log/containers/*gke-metrics*.log","/var/log/containers/*event-exporter-gke*.log","/var/log/containers/*metadata-server*.log","/var/log/containers/*metrics-server*.log","/var/log/containers/*filestore-node*.log"] path_key filename tag raw.containers.* read_from_head true @type multi_format format json time_key time time_format %Y-%m-%dT%H:%M:%S.%NZ keep_time_key true format /^(? format /^(?fsp\s+.+)$/ ignorecase false multiline false @id raw.containers @type detect_exceptions remove_tag_prefix raw message log stream stream multiline_flush_interval 5 max_bytes 500000 max_lines 1000 @type kubernetes_metadata @type record_transformer enable_ruby true container_id ${record.dig("docker", "container_id")} @type rewrite_tag_filter key $.kubernetes.namespace_name pattern ^(.+)$ tag $1.${tag} 02_filters.conf: |- 03_dispatch.conf: |- @type "relabel" @label @NOCONCATDISPATCH @type "relabel" @label @CONCATDISPATCH 04_outputs.conf: |-