Add OpenTelemetry Collector configuration for log ingestion
- Introduced a new OpenTelemetryCollector resource in the Helm chart. - Configured filelog receiver to ingest logs based on specified patterns. - Added processors for Kubernetes attributes and resource metadata. - Set up Loki exporter for log forwarding with appropriate labels. - Configured logging verbosity and defined log processing pipelines. Signed-off-by: zhenyus <zhenyus@mathmast.com>
This commit is contained in:
parent
842f811767
commit
a0d88d9507
File diff suppressed because it is too large
Load Diff
@ -1,111 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: fluentd.fluent.io/v1alpha1
|
|
||||||
kind: ClusterOutput
|
|
||||||
metadata:
|
|
||||||
name: freeleaps-logging-system-loki
|
|
||||||
labels:
|
|
||||||
fluentd-default-output: "true"
|
|
||||||
spec:
|
|
||||||
outputs:
|
|
||||||
- loki:
|
|
||||||
url: http://loki-gateway.freeleaps-logging-system
|
|
||||||
lineFormat: json
|
|
||||||
insecure: true
|
|
||||||
extractKubernetesLabels: true
|
|
||||||
---
|
|
||||||
apiVersion: fluentd.fluent.io/v1alpha1
|
|
||||||
kind: Fluentd
|
|
||||||
metadata:
|
|
||||||
name: fluentd
|
|
||||||
namespace: freeleaps-logging-system
|
|
||||||
spec:
|
|
||||||
globalInputs:
|
|
||||||
- forward:
|
|
||||||
bind: "0.0.0.0"
|
|
||||||
port: 24224
|
|
||||||
fluentdCfgSelector:
|
|
||||||
matchLabels:
|
|
||||||
fluentd-default-config: "true"
|
|
||||||
replicas: 2
|
|
||||||
workers: 1
|
|
||||||
image: kubesphere/fluentd:v1.17
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 1Gi
|
|
||||||
limits:
|
|
||||||
cpu: 1
|
|
||||||
memory: 2Gi
|
|
||||||
affinity:
|
|
||||||
podAntiAffinity:
|
|
||||||
requiredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- labelSelector:
|
|
||||||
matchExpressions:
|
|
||||||
- key: app.kubernetes.io/name
|
|
||||||
operator: In
|
|
||||||
values:
|
|
||||||
- fluentd
|
|
||||||
topologyKey: "kubernetes.io/hostname"
|
|
||||||
envVars:
|
|
||||||
# Node information
|
|
||||||
- name: K8S_NODE_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: spec.nodeName
|
|
||||||
- name: K8S_NODE_IP
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: status.hostIP
|
|
||||||
# Pod information
|
|
||||||
- name: POD_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.name
|
|
||||||
- name: POD_NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
- name: POD_IP
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: status.podIP
|
|
||||||
buffer:
|
|
||||||
disableBufferVolume: true
|
|
||||||
---
|
|
||||||
apiVersion: fluentd.fluent.io/v1alpha1
|
|
||||||
kind: ClusterFilter
|
|
||||||
metadata:
|
|
||||||
name: fluentd-metadata-appender
|
|
||||||
labels:
|
|
||||||
fluentd-default-filter: "true"
|
|
||||||
spec:
|
|
||||||
filters:
|
|
||||||
- recordTransformer:
|
|
||||||
enableRuby: true
|
|
||||||
records:
|
|
||||||
- key: fluentd_pod_name
|
|
||||||
value: ${ENV["POD_NAME"] || "unknown"}
|
|
||||||
- key: fluentd_pod_ip
|
|
||||||
value: ${ENV["POD_IP"] || "unknown"}
|
|
||||||
- key: fluentd_pod_namespace
|
|
||||||
value: ${ENV["POD_NAMESPACE"] || "unknown"}
|
|
||||||
- key: fluentd_node_name
|
|
||||||
value: ${ENV["K8S_NODE_NAME"] || "unknown"}
|
|
||||||
- key: fluentd_node_ip
|
|
||||||
value: ${ENV["K8S_NODE_IP"] || "unknown"}
|
|
||||||
---
|
|
||||||
apiVersion: fluentd.fluent.io/v1alpha1
|
|
||||||
kind: FluentdConfig
|
|
||||||
metadata:
|
|
||||||
name: freeleaps-logging-fluentd-pipeline
|
|
||||||
namespace: freeleaps-logging-system
|
|
||||||
labels:
|
|
||||||
fluentd-default-config: "true"
|
|
||||||
spec:
|
|
||||||
clusterFilterSelector:
|
|
||||||
matchLabels:
|
|
||||||
fluentd-default-filter: "true"
|
|
||||||
clusterOutputSelector:
|
|
||||||
matchLabels:
|
|
||||||
fluentd-default-output: "true"
|
|
||||||
---
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -25,6 +25,9 @@ spec:
|
|||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
annotations:
|
annotations:
|
||||||
app.kubernetes.io/config-checksum: {{ include (print $.Template.BasePath "/authentication/authentication-config.yaml") . | sha256sum }}
|
app.kubernetes.io/config-checksum: {{ include (print $.Template.BasePath "/authentication/authentication-config.yaml") . | sha256sum }}
|
||||||
|
{{- if .Values.logIngest.enabled }}
|
||||||
|
sidecar.opentelemetry.io/inject: "true"
|
||||||
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: "authentication"
|
- name: "authentication"
|
||||||
|
|||||||
@ -1,39 +0,0 @@
|
|||||||
{{- if .Values.fluentbit.enabled }}
|
|
||||||
apiVersion: fluentbit.fluent.io/v1alpha2
|
|
||||||
kind: Parser
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-log-parser
|
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}-log-parser
|
|
||||||
spec:
|
|
||||||
json:
|
|
||||||
timeKey: {{ .Values.fluentbit.timeKey | quote }}
|
|
||||||
timeFormat: {{ .Values.fluentbit.timeFormat | quote }}
|
|
||||||
---
|
|
||||||
apiVersion: fluentbit.fluent.io/v1alpha2
|
|
||||||
kind: Output
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-log-output
|
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}-log-output
|
|
||||||
spec:
|
|
||||||
match: "*"
|
|
||||||
forward:
|
|
||||||
host: fluentd.freeleaps-logging-system
|
|
||||||
port: 24224
|
|
||||||
---
|
|
||||||
apiVersion: fluentbit.fluent.io/v1alpha2
|
|
||||||
kind: FluentBitConfig
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-log-collector-config
|
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
|
||||||
spec:
|
|
||||||
outputSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}-log-output
|
|
||||||
parserSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}-log-parser
|
|
||||||
{{- end }}
|
|
||||||
@ -0,0 +1,87 @@
|
|||||||
|
{{- if .Values.logIngest.enabled }}
|
||||||
|
apiVersion: opentelemetry.io/v1beta1
|
||||||
|
kind: OpenTelemetryCollector
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}-opentelemetry-collector
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
spec:
|
||||||
|
mode: sidecar
|
||||||
|
image: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:latest
|
||||||
|
config: |
|
||||||
|
receivers:
|
||||||
|
filelog:
|
||||||
|
include:
|
||||||
|
- {{ .Values.logIngest.logPathPattern }}
|
||||||
|
start_at: beginning
|
||||||
|
include_file_path: true
|
||||||
|
include_file_name: true
|
||||||
|
operators:
|
||||||
|
- type: json_parser
|
||||||
|
timestamp:
|
||||||
|
parse_from: record.time.timestamp
|
||||||
|
layout: unix_float
|
||||||
|
- type: move
|
||||||
|
from record.level.name
|
||||||
|
to: severity
|
||||||
|
- type: move
|
||||||
|
from: record.message
|
||||||
|
to: message
|
||||||
|
|
||||||
|
processors:
|
||||||
|
k8sattributes:
|
||||||
|
auth_type: "serviceAccount"
|
||||||
|
passthrough: false
|
||||||
|
extract:
|
||||||
|
- k8s.pod.name
|
||||||
|
- k8s.pod.ip
|
||||||
|
- k8s.pod.uid
|
||||||
|
- k8s.deployment.name
|
||||||
|
- k8s.deployment.uid
|
||||||
|
- k8s.namespace.name
|
||||||
|
- k8s.node.name
|
||||||
|
pod_association:
|
||||||
|
- sources:
|
||||||
|
- from: resource_attribute
|
||||||
|
name: k8s.pod.ip
|
||||||
|
- sources:
|
||||||
|
- from: resource_attribute
|
||||||
|
name: k8s.pod.uid
|
||||||
|
resource:
|
||||||
|
attributes:
|
||||||
|
- key: service.name
|
||||||
|
value: "{{ .Release.Name }}"
|
||||||
|
action: upsert
|
||||||
|
- key: service.namespace
|
||||||
|
value: "{{ .Release.Namespace }}"
|
||||||
|
action: upsert
|
||||||
|
batch:
|
||||||
|
send_batch_size: 1000
|
||||||
|
timeout: 10s
|
||||||
|
|
||||||
|
exporters:
|
||||||
|
loki:
|
||||||
|
endpoint: {{ .Values.logIngest.lokiEndpoint }}
|
||||||
|
labels:
|
||||||
|
resource:
|
||||||
|
service.name: "service.name"
|
||||||
|
service.namespace: "service.namespace"
|
||||||
|
k8s.pod.name: "k8s.pod.name"
|
||||||
|
k8s.namespace.name: "k8s.namespace.name"
|
||||||
|
k8s.node.name: "k8s.node.name"
|
||||||
|
k8s.deployment.name: "k8s.deployment.name"
|
||||||
|
record:
|
||||||
|
severity: "severity"
|
||||||
|
|
||||||
|
logging:
|
||||||
|
verbosity: detailed
|
||||||
|
|
||||||
|
service:
|
||||||
|
telemetry:
|
||||||
|
logs:
|
||||||
|
level: "info"
|
||||||
|
pipelines:
|
||||||
|
logs:
|
||||||
|
receivers: [filelog]
|
||||||
|
processors: [k8sattributes, resource, batch]
|
||||||
|
exporters: [loki, logging]
|
||||||
|
{{- end }}
|
||||||
@ -4,20 +4,10 @@ global:
|
|||||||
nodeSelector: {}
|
nodeSelector: {}
|
||||||
dashboard:
|
dashboard:
|
||||||
enabled: false
|
enabled: false
|
||||||
fluentbit:
|
logIngest:
|
||||||
enabled: true
|
enabled: true
|
||||||
resources:
|
lokiEndpoint: http://loki-gateway.freeleaps-logging-system/loki/api/v1/push
|
||||||
requests:
|
logPathPattern: /app/log/authentication/*.log
|
||||||
cpu: 50m
|
|
||||||
memory: 128Mi
|
|
||||||
limits:
|
|
||||||
cpu: 200m
|
|
||||||
memory: 512Mi
|
|
||||||
image: kubesphere/fluent-bit:v4.0-debug
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
timeKey: record.repr
|
|
||||||
timeFormat: "%Y-%m-%dT%H:%M:%S.%LZ"
|
|
||||||
logPath: /app/log/authentication/*.log
|
|
||||||
authentication:
|
authentication:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
image:
|
image:
|
||||||
|
|||||||
@ -7,6 +7,10 @@ dashboard:
|
|||||||
name: freeleaps-prod-authentication-dashboard
|
name: freeleaps-prod-authentication-dashboard
|
||||||
title: Authentication Service Dashboard
|
title: Authentication Service Dashboard
|
||||||
metricsPrefix: freeleaps_authentication
|
metricsPrefix: freeleaps_authentication
|
||||||
|
logIngest:
|
||||||
|
enabled: false
|
||||||
|
lokiEndpoint: http://loki-gateway.freeleaps-logging-system/loki/api/v1/push
|
||||||
|
logPathPattern: /app/log/authentication/*.log
|
||||||
fluentbit:
|
fluentbit:
|
||||||
enabled: false
|
enabled: false
|
||||||
resources:
|
resources:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user