129 lines
4.5 KiB
YAML

{{- if and .Values.monitoring.enabled .Values.monitoring.lokiStack.enabled }}
---
apiVersion: v1
kind: Secret
metadata:
name: {{ include "cluster-addons.componentName" (list . "loki-stack") }}-config
labels:
{{- include "cluster-addons.componentLabels" (list . "loki-stack") | nindent 4 }}
addons.stackhpc.com/watch: ""
stringData:
defaults: |
loki:
image:
repository: {{ include "cluster-addons.imagePrefix" . }}docker.io/grafana/loki
serviceMonitor:
enabled: true
promtail:
image:
registry: {{ include "cluster-addons.imagePrefix" . }}docker.io
serviceMonitor:
enabled: true
# Get promtail to scrape systemd services
config:
snippets:
extraScrapeConfigs: |
- job_name: journal
journal:
path: /var/log/journal
max_age: 12h
labels:
job: systemd-journal
relabel_configs:
- source_labels: ['__journal__systemd_unit']
target_label: 'unit'
- source_labels: ['__journal__hostname']
target_label: 'hostname'
- source_labels: ['__journal_priority_keyword']
target_label: level
# Mount journal directory and machine-id file into promtail pods
extraVolumes:
- name: journal
hostPath:
path: /var/log/journal
- name: machine-id
hostPath:
path: /etc/machine-id
extraVolumeMounts:
- name: journal
mountPath: /var/log/journal
readOnly: true
- name: machine-id
mountPath: /etc/machine-id
readOnly: true
grafana:
sidecar:
datasources:
enabled: false
overrides: |
{{- toYaml .Values.monitoring.lokiStack.release.values | nindent 4 }}
---
apiVersion: addons.stackhpc.com/v1alpha1
kind: HelmRelease
metadata:
name: {{ include "cluster-addons.componentName" (list . "loki-stack") }}
labels: {{ include "cluster-addons.componentLabels" (list . "loki-stack") | nindent 4 }}
annotations:
# Tell Argo to ignore the non-controller owner references for this object
argocd.argoproj.io/sync-options: "ControllerReferencesOnly=true"
spec:
clusterName: {{ include "cluster-addons.clusterName" . }}
bootstrap: true
chart: {{ toYaml .Values.monitoring.lokiStack.chart | nindent 4 }}
targetNamespace: {{ .Values.monitoring.lokiStack.release.namespace }}
releaseName: loki-stack
valuesSources:
- secret:
name: {{ include "cluster-addons.componentName" (list . "loki-stack") }}-config
key: defaults
- secret:
name: {{ include "cluster-addons.componentName" (list . "loki-stack") }}-config
key: overrides
---
apiVersion: addons.stackhpc.com/v1alpha1
kind: Manifests
metadata:
name: {{ include "cluster-addons.componentName" (list . "loki-stack-dashboards") }}
labels: {{ include "cluster-addons.componentLabels" (list . "loki-stack-dashboards") | nindent 4 }}
annotations:
# Tell Argo to ignore the non-controller owner references for this object
argocd.argoproj.io/sync-options: "ControllerReferencesOnly=true"
spec:
clusterName: {{ include "cluster-addons.clusterName" . }}
bootstrap: true
targetNamespace: {{ .Values.monitoring.lokiStack.release.namespace }}
releaseName: loki-stack-dashboards
manifestSources:
- template: |
apiVersion: v1
kind: ConfigMap
metadata:
name: loki-stack-grafana-datasource
labels:
grafana_datasource: "1"
data:
loki-datasource.yaml: |-
apiVersion: 1
datasources:
- name: Loki
type: loki
url: http://loki-stack.{{ .Values.monitoring.lokiStack.release.namespace }}:3100
access: proxy
version: 1
isDefault: false
- template: |
apiVersion: v1
kind: ConfigMap
metadata:
name: loki-stack-grafana-dashboards
labels:
grafana_dashboard: "1"
data:
loki-pod-logs-dashboard.json: |
{{- .Files.Get "grafana-dashboards/loki-pod-logs-dashboard.json" | nindent 12 }}
loki-systemd-logs-dashboard.json: |
{{- .Files.Get "grafana-dashboards/loki-systemd-logs-dashboard.json" | nindent 12 }}
loki-metrics-dashboard.json: |
{{- .Files.Get "grafana-dashboards/loki-metrics-dashboard.json" | nindent 12 }}
{{- end }}