From a7950fdf04a65e17851d6b625400eaa2f59a2e64 Mon Sep 17 00:00:00 2001 From: fumingwei Date: Thu, 6 Jul 2023 16:06:12 +0800 Subject: [PATCH] =?UTF-8?q?feature:TSG-X=20os=E6=96=B0=E5=A2=9Eprometheus?= =?UTF-8?q?=20systemd=20exporter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ansible/HAL_deploy.yml | 1 + ansible/roles/exporter/tasks/main.yml | 28 +++++++-- .../files/mrzcpd/exporter-mrzcpd-crd.yaml | 2 +- .../files/systemd/helm/Chart.yaml | 24 +++++++ .../files/systemd/helm/templates/_helpers.tpl | 62 +++++++++++++++++++ .../systemd/helm/templates/deployment.yaml | 33 ++++++++++ .../files/systemd/helm/templates/service.yaml | 24 +++++++ .../files/systemd/helm/values.yaml | 13 ++++ .../files/systemd/systemd-exporter-crd.yaml | 13 ++++ ansible/roles/k3s-exporter/tasks/main.yml | 20 +++++- 10 files changed, 211 insertions(+), 9 deletions(-) create mode 100644 ansible/roles/k3s-exporter/files/systemd/helm/Chart.yaml create mode 100644 ansible/roles/k3s-exporter/files/systemd/helm/templates/_helpers.tpl create mode 100644 ansible/roles/k3s-exporter/files/systemd/helm/templates/deployment.yaml create mode 100644 ansible/roles/k3s-exporter/files/systemd/helm/templates/service.yaml create mode 100644 ansible/roles/k3s-exporter/files/systemd/helm/values.yaml create mode 100644 ansible/roles/k3s-exporter/files/systemd/systemd-exporter-crd.yaml diff --git a/ansible/HAL_deploy.yml b/ansible/HAL_deploy.yml index 60278e3e..88c4903b 100644 --- a/ansible/HAL_deploy.yml +++ b/ansible/HAL_deploy.yml @@ -174,6 +174,7 @@ - {role: nm-config, tags: nm-config} - {role: tsg-os-logo, tags: tsg-os-logo} - {role: cm-cache, tags: cm-cache} + - {role: exporter, tags: exporter} - hosts: TSG-X-NXR620G40-R01-P0906-init remote_user: root diff --git a/ansible/roles/exporter/tasks/main.yml b/ansible/roles/exporter/tasks/main.yml index 999779a7..1f1400cf 100644 --- a/ansible/roles/exporter/tasks/main.yml +++ b/ansible/roles/exporter/tasks/main.yml @@ -31,6 +31,7 @@ src: '{{ role_path }}/files/node_exporter' dest: /opt/tsg/exporter/node_exporter mode: 0755 + when: runtime_env != 'TSG-X-P0906' - name: "copy systemd_exporter" copy: @@ -43,22 +44,27 @@ src: '{{ role_path }}/files/redis_exporter' dest: /opt/tsg/exporter/redis_exporter mode: 0755 - when: monitor.enable_redis_exporter == 1 + when: + - monitor.enable_redis_exporter == 1 + - runtime_env != 'TSG-X-P0906' - name: "copy ipmi_exporter" copy: src: '{{ role_path }}/files/ipmi_exporter' dest: /opt/tsg/exporter/ipmi_exporter mode: 0755 - when: monitor.enable_ipmi_exporter == 1 + when: + - monitor.enable_ipmi_exporter == 1 + - runtime_env != 'TSG-X-P0906' - name: "templates atca-exporter-node.service" template: src: "{{role_path}}/templates/exporter-node.service.j2" dest: /usr/lib/systemd/system/exporter-node.service tags: template + when: runtime_env != 'TSG-X-P0906' -- name: "templates atca-exporter-systemd.service" +- name: "templates exporter-systemd.service" template: src: "{{role_path}}/templates/exporter-systemd.service.j2" dest: /usr/lib/systemd/system/exporter-systemd.service @@ -69,7 +75,9 @@ src: "{{role_path}}/templates/exporter-ipmi.service.j2" dest: /usr/lib/systemd/system/exporter-ipmi.service tags: template - when: monitor.enable_ipmi_exporter == 1 + when: + - monitor.enable_ipmi_exporter == 1 + - runtime_env != 'TSG-X-P0906' - name: "Create /usr/lib/systemd/system/exporter-node.service.d directory if it does not exist" file: @@ -78,6 +86,7 @@ mode: '0755' with_items: - /usr/lib/systemd/system/exporter-node.service.d + when: runtime_env != 'TSG-X-P0906' - name: "Create /usr/lib/systemd/system/exporter-systemd.service.d directory if it does not exist" file: @@ -86,6 +95,7 @@ mode: '0755' with_items: - /usr/lib/systemd/system/exporter-systemd.service.d + when: runtime_env != 'TSG-X-P0906' - name: "Create /usr/lib/systemd/system/exporter-ipmi.service.d directory if it does not exist" file: @@ -94,7 +104,9 @@ mode: '0755' with_items: - /usr/lib/systemd/system/exporter-ipmi.service.d - when: monitor.enable_ipmi_exporter == 1 + when: + - monitor.enable_ipmi_exporter == 1 + - runtime_env != 'TSG-X-P0906' - name: "copy slice file to exporter-node.service.d" copy: @@ -145,6 +157,8 @@ systemd: name: exporter-node enabled: yes + when: runtime_env != 'TSG-X-P0906' + - name: 'exporter-systemd service start' systemd: @@ -155,4 +169,6 @@ systemd: name: exporter-ipmi enabled: yes - when: monitor.enable_ipmi_exporter == 1 + when: + - monitor.enable_ipmi_exporter == 1 + - runtime_env != 'TSG-X-P0906' diff --git a/ansible/roles/k3s-exporter/files/mrzcpd/exporter-mrzcpd-crd.yaml b/ansible/roles/k3s-exporter/files/mrzcpd/exporter-mrzcpd-crd.yaml index 8425a498..171f506a 100644 --- a/ansible/roles/k3s-exporter/files/mrzcpd/exporter-mrzcpd-crd.yaml +++ b/ansible/roles/k3s-exporter/files/mrzcpd/exporter-mrzcpd-crd.yaml @@ -1,7 +1,7 @@ apiVersion: helm.cattle.io/v1 kind: HelmChart metadata: - name: exporter-mrzcpd + name: mrzcpd-exporter namespace: kube-system spec: chart: https://%{KUBERNETES_API}%/static/charts/exporter-mrzcpd-1.0.1.tgz diff --git a/ansible/roles/k3s-exporter/files/systemd/helm/Chart.yaml b/ansible/roles/k3s-exporter/files/systemd/helm/Chart.yaml new file mode 100644 index 00000000..3d946ff6 --- /dev/null +++ b/ansible/roles/k3s-exporter/files/systemd/helm/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: systemd-exporter +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/ansible/roles/k3s-exporter/files/systemd/helm/templates/_helpers.tpl b/ansible/roles/k3s-exporter/files/systemd/helm/templates/_helpers.tpl new file mode 100644 index 00000000..c06c517f --- /dev/null +++ b/ansible/roles/k3s-exporter/files/systemd/helm/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "systemd-exporter.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "systemd-exporter.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "systemd-exporter.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "systemd-exporter.labels" -}} +helm.sh/chart: {{ include "systemd-exporter.chart" . }} +{{ include "systemd-exporter.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "systemd-exporter.selectorLabels" -}} +app.kubernetes.io/name: {{ include "systemd-exporter.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "systemd-exporter.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "systemd-exporter.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/ansible/roles/k3s-exporter/files/systemd/helm/templates/deployment.yaml b/ansible/roles/k3s-exporter/files/systemd/helm/templates/deployment.yaml new file mode 100644 index 00000000..fc39dc75 --- /dev/null +++ b/ansible/roles/k3s-exporter/files/systemd/helm/templates/deployment.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: systemd-exporter + name: systemd-exporter + namespace: {{ .Release.Namespace }} +spec: + replicas: 1 + selector: + matchLabels: + app: systemd-exporter + strategy: + type: Recreate + template: + metadata: + labels: + app: systemd-exporter + spec: + hostNetwork: true + containers: + - env: + - name: MERGER_URLS + value: {{ .Values.exporter.urls }} + - name: MERGER_PORT + value: "{{ .Values.exporter.port }}" + image: "{{ .Values.exporter.image.repository }}:{{ .Values.exporter.image.tag }}" + imagePullPolicy: {{ .Values.exporter.image.pullPolicy }} + name: exporter + ports: + - name: ex-systemd-port + containerPort: {{ .Values.exporter.port }} + protocol: TCP diff --git a/ansible/roles/k3s-exporter/files/systemd/helm/templates/service.yaml b/ansible/roles/k3s-exporter/files/systemd/helm/templates/service.yaml new file mode 100644 index 00000000..0d4da7d0 --- /dev/null +++ b/ansible/roles/k3s-exporter/files/systemd/helm/templates/service.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: systemd-exporter + name: systemd-exporter + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} + namespace: {{ .Release.Namespace }} + +spec: + ports: + - name: systemd-exporter-port + {{- if .Values.service.nodePort }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + port: {{ .Values.service.port }} + targetPort: ex-systemd-port + selector: + app: systemd-exporter + type: {{ .Values.service.type }} + diff --git a/ansible/roles/k3s-exporter/files/systemd/helm/values.yaml b/ansible/roles/k3s-exporter/files/systemd/helm/values.yaml new file mode 100644 index 00000000..48df1d0f --- /dev/null +++ b/ansible/roles/k3s-exporter/files/systemd/helm/values.yaml @@ -0,0 +1,13 @@ +exporter: + image: + repository: quay.io/rebuy/exporter-merger + pullPolicy: Never + tag: "v0.2.0" + port: "9008" + urls: "http://127.0.0.1:9558/metrics" + +service: + type: ClusterIP +# nodePort: "30081" + port: "9008" + annotations: {} diff --git a/ansible/roles/k3s-exporter/files/systemd/systemd-exporter-crd.yaml b/ansible/roles/k3s-exporter/files/systemd/systemd-exporter-crd.yaml new file mode 100644 index 00000000..e4ddc6ed --- /dev/null +++ b/ansible/roles/k3s-exporter/files/systemd/systemd-exporter-crd.yaml @@ -0,0 +1,13 @@ +apiVersion: helm.cattle.io/v1 +kind: HelmChart +metadata: + name: systemd-exporter + namespace: kube-system +spec: + chart: https://%{KUBERNETES_API}%/static/charts/systemd-exporter-1.0.1.tgz + targetNamespace: tsg-os-system + valuesContent: |- + service: + annotations: + prometheus.io/scrape: "true" + diff --git a/ansible/roles/k3s-exporter/tasks/main.yml b/ansible/roles/k3s-exporter/tasks/main.yml index 27d27297..a93e75d0 100644 --- a/ansible/roles/k3s-exporter/tasks/main.yml +++ b/ansible/roles/k3s-exporter/tasks/main.yml @@ -44,12 +44,12 @@ - prometheus.tar - kube-state-metrics.tar +#### mrzcpd exporter start - name: "copy chart directory to dest" copy: src: "{{ role_path }}/files/mrzcpd/helm" dest: /tmp/exporter-mrzcpd/ -#### mrzcpd exporter start - name: "create charts packages" shell: helm package --app-version 1.0.1 --version 1.0.1 -d /var/lib/rancher/k3s/server/static/charts/ /tmp/exporter-mrzcpd/helm @@ -78,4 +78,20 @@ src: "{{ role_path }}/files/mrzcpd/exporter-mrzcpd-crd.yaml" dest: /var/lib/rancher/k3s/server/manifests/exporter-mrzcpd-crd.yaml -#### mrzcpd exporter end \ No newline at end of file +#### mrzcpd exporter end + +#### systemd exporter start +- name: "copy chart directory to dest" + copy: + src: "{{ role_path }}/files/systemd/helm" + dest: /tmp/systemd-exporter/ + +- name: "create charts packages" + shell: helm package --app-version 1.0.1 --version 1.0.1 -d /var/lib/rancher/k3s/server/static/charts/ /tmp/systemd-exporter/helm + +- name: "copy systemd-exporter-crd.yaml to dest" + copy: + src: "{{ role_path }}/files/systemd/systemd-exporter-crd.yaml" + dest: /var/lib/rancher/k3s/server/manifests/systemd-exporter-crd.yaml + +#### systemd exporter end