From e3db103efdf58858b047e868e36c254ee24f2f9c Mon Sep 17 00:00:00 2001 From: root Date: Mon, 15 Sep 2025 15:15:32 +0900 Subject: [PATCH] event-exporter --- event-exporter/00-roles.yaml | 30 ++++++++++++++ event-exporter/01-config.yaml | 26 +++++++++++++ event-exporter/02-deployment.yaml | 45 +++++++++++++++++++++ event-exporter/test.yaml | 65 +++++++++++++++++++++++++++++++ 4 files changed, 166 insertions(+) create mode 100644 event-exporter/00-roles.yaml create mode 100644 event-exporter/01-config.yaml create mode 100644 event-exporter/02-deployment.yaml create mode 100644 event-exporter/test.yaml diff --git a/event-exporter/00-roles.yaml b/event-exporter/00-roles.yaml new file mode 100644 index 0000000..a577ad8 --- /dev/null +++ b/event-exporter/00-roles.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + namespace: monitoring + name: event-exporter +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: event-exporter +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: event-exporter +subjects: + - kind: ServiceAccount + namespace: monitoring + name: event-exporter +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: event-exporter +rules: +- apiGroups: ["*"] + resources: ["*"] + verbs: ["get", "watch", "list"] +- apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["*"] diff --git a/event-exporter/01-config.yaml b/event-exporter/01-config.yaml new file mode 100644 index 0000000..9c85236 --- /dev/null +++ b/event-exporter/01-config.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: event-exporter-cfg + namespace: monitoring +data: + config.yaml: | + logLevel: warn + logFormat: json + metricsNamePrefix: event_exporter_ + route: + routes: + - match: + - receiver: "dump" + - match: + - kind: "Pod|Deployment|ReplicaSet" + namespace: "org.*" + receiver: "loki-stack" + receivers: + - name: "dump" + stdout: {} + - name: "loki-stack" + loki: + streamLabels: # Loki에 보낼 기본 라벨 + source: event-exporter + url: http://loki-stack.loki-monitoring.svc.cluster.local:3100/loki/api/v1/push diff --git a/event-exporter/02-deployment.yaml b/event-exporter/02-deployment.yaml new file mode 100644 index 0000000..32bc228 --- /dev/null +++ b/event-exporter/02-deployment.yaml @@ -0,0 +1,45 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: event-exporter + namespace: monitoring +spec: + replicas: 1 + template: + metadata: + labels: + app: event-exporter + version: v1 + annotations: + prometheus.io/scrape: 'true' + prometheus.io/port: '2112' + prometheus.io/path: '/metrics' + spec: + serviceAccountName: event-exporter + securityContext: + runAsNonRoot: true + seccompProfile: + type: RuntimeDefault + containers: + - name: event-exporter + # The good practice would be to pin the version. This is just a reference so that we don't + # have to update this file in each release. + image: ghcr.io/resmoio/kubernetes-event-exporter:latest + imagePullPolicy: IfNotPresent + args: + - -conf=/data/config.yaml + volumeMounts: + - mountPath: /data + name: cfg + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: [ALL] + volumes: + - name: cfg + configMap: + name: event-exporter-cfg + selector: + matchLabels: + app: event-exporter + version: v1 diff --git a/event-exporter/test.yaml b/event-exporter/test.yaml new file mode 100644 index 0000000..e30c10e --- /dev/null +++ b/event-exporter/test.yaml @@ -0,0 +1,65 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: event-exporter-cfg + namespace: monitoring +data: + config.yaml: | + logLevel: warn + logFormat: json + metricsNamePrefix: event_exporter_ + route: + routes: + - match: + - receiver: "dump" + - match: + - kind: "Pod|Deployment|ReplicaSet" + namespace: "org.*" + type: "Normal" + receiver: "my-dooray-Normal" + - match: + - kind: "Pod|Deployment|ReplicaSet" + namespace: "org.*" + type: "Warning" + receiver: "my-dooray-Warning" + receivers: + - name: "dump" + stdout: {} + - name: "my-dooray-Normal" + webhook: + endpoint: "https://nhnent.dooray.com/services/3407365765389747827/4142374041543123369/IxIWPFPMRzG37T-EMU_QMQ" + headers: + Content-Type: "application/json" + layout: + botName: "K8s Event Bot" + botIconImage: "https://static.dooray.com/static_images/dooray-bot.png" + text: "[{{ .Type }}] {{ .Namespace }}/{{ .InvolvedObject.Kind }}/{{ .InvolvedObject.Name }}" + attachments: + - title: "Information" + text: "{{ index .InvolvedObject.Labels \"project-name\" }}/{{ index .InvolvedObject.Labels \"workload-name\" }}" + color: "green" + - title: "Reason" + text: "{{ .Reason }}" + color: "green" + - title: "Message" + text: "{{ .Message }}" + color: "green" + - name: "my-dooray-Warning" + webhook: + endpoint: "https://nhnent.dooray.com/services/3407365765389747827/4142374041543123369/IxIWPFPMRzG37T-EMU_QMQ" + headers: + Content-Type: "application/json" + layout: + botName: "K8s Event Bot" + botIconImage: "https://static.dooray.com/static_images/dooray-bot.png" + text: "[{{ .Type }}] {{ .Namespace }}/{{ .InvolvedObject.Kind }}/{{ .InvolvedObject.Name }}" + attachments: + - title: "Information" + text: "{{ index .InvolvedObject.Labels \"project-name\" }}/{{ index .InvolvedObject.Labels \"workload-name\" }}" + color: "red" + - title: "Reason" + text: "{{ .Reason }}" + color: "red" + - title: "Message" + text: "{{ .Message }}" + color: "red"