diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index caa161ebf75ef9dbffee495f7be196929872d499..b2f0e1f6610204b193c6b91d2c42b6e1563a83a0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -79,7 +79,11 @@ include: extends: - .general_rules -.loki_stack_rules: +.loki_rules: + extends: + - .general_rules + +.promtail_rules: extends: - .general_rules @@ -305,12 +309,19 @@ enable-eventrouter: - .enable_app_template - .eventrouter_rules -enable-loki-stack: +enable-loki: variables: - APP: "loki-stack" + APP: "loki" extends: - .enable_app_template - - .loki_stack_rules + - .loki_rules + +enable-promtail: + variables: + APP: "promtail" + extends: + - .enable_app_template + - .promtail_rules enable-nextcloud: variables: @@ -429,12 +440,19 @@ local-path-provisioner-helm-release: - .helm-release - .local_path_provisioner_rules -loki-stack-helm-release: +loki-helm-release: variables: - APP: "loki-stack" + APP: "loki" extends: - .helm-release - - .loki_stack_rules + - .loki_rules + +promtail-helm-release: + variables: + APP: "promtail" + extends: + - .helm-release + - .promtail_rules nextcloud-helm-release: variables: @@ -519,15 +537,25 @@ local-path-provisioner-ready: - .apps-ready - .local_path_provisioner_rules -loki-stack-ready: +loki-ready: + variables: + APP: "loki" + needs: + - job: loki-helm-release + - job: setup-openappstack + extends: + - .apps-ready + - .loki_rules + +promtail-ready: variables: - APP: "loki-stack" + APP: "promtail" needs: - - job: loki-stack-helm-release + - job: promtail-helm-release - job: setup-openappstack extends: - .apps-ready - - .loki_stack_rules + - .promtail_rules nextcloud-ready: variables: diff --git a/.gitlab/issue_templates/update_all_components.md b/.gitlab/issue_templates/update_all_components.md index 0d0e10520778bc355b30747239e6522e5da13e7e..430f376561ab3a685567112d32487d88f558e25a 100644 --- a/.gitlab/issue_templates/update_all_components.md +++ b/.gitlab/issue_templates/update_all_components.md @@ -21,7 +21,8 @@ Installed by flux: * [ ] ./oas/prometheus.yaml * [ ] ./oas/letsencrypt-staging.yaml * [ ] ./oas/ingress.yaml -* [ ] ./oas/loki-stack.yaml +* [ ] ./oas/loki.yaml +* [ ] ./oas/promtail.yaml * [ ] ./velero/velero.yaml * [ ] ./oas-custom/flux-custom.yaml * [ ] ./cert-manager/cert-manager.yaml diff --git a/ansible/group_vars/all/settings.yml.example b/ansible/group_vars/all/settings.yml.example index ac71430f4e51c3e3a3cdfec6eebd2a49194f6a50..379dae0212e8151832cd360e6a8f9708f3aebd70 100644 --- a/ansible/group_vars/all/settings.yml.example +++ b/ansible/group_vars/all/settings.yml.example @@ -95,7 +95,8 @@ enabled_applications: # # Monitoring components (auto-enabled by GitLab CI) # - 'prometheus-stack' - # - 'loki-stack' + # - 'loki' + # - 'promtail' # - 'eventrouter' # # The backup system Velero is disabled by default, see settings under `backup` above. diff --git a/ansible/roles/apps/tasks/loki-stack.yml b/ansible/roles/apps/tasks/loki.yml similarity index 59% rename from ansible/roles/apps/tasks/loki-stack.yml rename to ansible/roles/apps/tasks/loki.yml index 9933761b68a2a37ac1e39f117cbeb78998e68f71..eaac7c223e97a65e11c73f1b6e901a12b4e56155 100644 --- a/ansible/roles/apps/tasks/loki-stack.yml +++ b/ansible/roles/apps/tasks/loki.yml @@ -1,11 +1,11 @@ -- name: Create Kubernetes secret with loki-stack settings +- name: Create Kubernetes secret with loki settings tags: - config - flux - - loki-stack + - loki vars: flux_secret: - name: "loki-stack" + name: "loki" namespace: "oas" include_tasks: file: flux_secret.yml @@ -13,4 +13,4 @@ tags: - config - flux - - loki-stack + - loki diff --git a/ansible/roles/apps/tasks/main.yml b/ansible/roles/apps/tasks/main.yml index b1a6f9e326583b70316b4171c1a1ad405fa24358..3d0b0eff97b18d3cbd09acf12445211079ddc6fb 100644 --- a/ansible/roles/apps/tasks/main.yml +++ b/ansible/roles/apps/tasks/main.yml @@ -12,8 +12,11 @@ - name: Tasks pertaining to prometheus and grafana import_tasks: prometheus-stack.yml -- name: Tasks pertaining to loki-stack - import_tasks: loki-stack.yml +- name: Tasks pertaining to loki + import_tasks: loki.yml + +- name: Tasks pertaining to promtail + import_tasks: promtail.yml - name: Tasks pertaining to eventrouter import_tasks: eventrouter.yml diff --git a/ansible/roles/apps/tasks/promtail.yml b/ansible/roles/apps/tasks/promtail.yml new file mode 100644 index 0000000000000000000000000000000000000000..7e2bf955eeaee1a9aeb3b5b7d143affb22fe1b43 --- /dev/null +++ b/ansible/roles/apps/tasks/promtail.yml @@ -0,0 +1,16 @@ +- name: Create Kubernetes secret with promtail settings + tags: + - config + - flux + - promtail + vars: + flux_secret: + name: "promtail" + namespace: "oas" + include_tasks: + file: flux_secret.yml + apply: + tags: + - config + - flux + - promtail diff --git a/ansible/roles/apps/templates/settings/loki-stack.yaml b/ansible/roles/apps/templates/settings/loki-stack.yaml deleted file mode 100644 index 1c6b326643387fa627a5f21a13ec9bdd9e391732..0000000000000000000000000000000000000000 --- a/ansible/roles/apps/templates/settings/loki-stack.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -# https://github.com/grafana/helm-charts/blob/main/charts/loki-stack/values.yaml -loki: - # https://github.com/grafana/helm-charts/blob/main/charts/loki/values.yaml - enabled: true - resources: - limits: - cpu: 400m - memory: 180Mi - requests: - cpu: 200m - memory: 90Mi - persistence: - enabled: true - accessModes: - - ReadWriteOnce - size: 10Gi - annotations: {} - # existingClaim: - config: - # https://github.com/grafana/loki/blob/main/cmd/loki/loki-local-config.yaml - # https://grafana.com/docs/loki/latest/operations/storage/retention - schema_config: - configs: - - from: 2021-05-31 - store: boltdb-shipper - object_store: filesystem - schema: v11 - index: - prefix: index_ - period: 24h - storage_config: - boltdb_shipper: - active_index_directory: /data/loki/boltdb-shipper-active - cache_location: /data/loki/boltdb-shipper-cache - cache_ttl: 24h # Can be increased for faster performance over longer query periods, uses more disk space - shared_store: filesystem - filesystem: - directory: /data/loki/chunks - compactor: - working_directory: /data/loki/boltdb-shipper-compactor - shared_store: filesystem - limits_config: - reject_old_samples: true - reject_old_samples_max_age: 168h # 7 days - chunk_store_config: - max_look_back_period: 672h # 28 days - table_manager: - retention_deletes_enabled: true - retention_period: 672h # 28 days - -promtail: - # https://github.com/grafana/helm-charts/blob/main/charts/promtail/values.yaml - enabled: true - initContainer: - enabled: true - fsInotifyMaxUserInstances: 512 - resources: - limits: - cpu: 400m - memory: 256Mi - requests: - cpu: 300m - memory: 128Mi diff --git a/ansible/roles/apps/templates/settings/loki.yaml b/ansible/roles/apps/templates/settings/loki.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0983a57b9b45f3b0ef26993aac625840ef77a61d --- /dev/null +++ b/ansible/roles/apps/templates/settings/loki.yaml @@ -0,0 +1,9 @@ +--- +enabled: true +resources: + limits: + cpu: 400m + memory: 180Mi + requests: + cpu: 200m + memory: 90Mi diff --git a/ansible/roles/apps/templates/settings/promtail.yaml b/ansible/roles/apps/templates/settings/promtail.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fcba214385e9fa052b2abb8897c391a74d132149 --- /dev/null +++ b/ansible/roles/apps/templates/settings/promtail.yaml @@ -0,0 +1,39 @@ +--- +enabled: true +initContainer: + enabled: true + fsInotifyMaxUserInstances: 512 +resources: + limits: + cpu: 400m + memory: 256Mi + requests: + cpu: 300m + memory: 128Mi +config: + lokiAddress: http://loki:3100/loki/api/v1/push + # https://github.com/grafana/helm-charts/blob/main/charts/promtail/values.yaml#L217 + snippets: + # https://grafana.com/docs/loki/latest/clients/promtail/pipelines/ + pipelineStages: + - cri: {} + - match: + selector: '{app="eventrouter"}' + stages: + - json: + expressions: + event_verb: verb + event_kind: event.involvedObject.kind + event_reason: event.reason + event_namespace: event.involvedObject.namespace + event_name: event.metadata.name + event_source_host: event.source.host + event_source_component: event.source.component + - labels: + event_verb: + event_kind: + event_reason: + event_namespace: + event_name: + event_source_host: + event_source_component: diff --git a/docs/upgrading.md b/docs/upgrading.md index db7f9616330ada3e8d3296d82896ce25f4ec4d29..2cb191fb850ffeeedfd3af22ceb3452b866bbfc9 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -81,7 +81,8 @@ enabled_applications: # - 'velero' # Applications. - 'grafana' - - 'loki-stack' + - 'loki' + - 'promtail' - 'nextcloud' - 'prometheus' - 'rocketchat' diff --git a/flux/oas/loki_cm.yaml b/flux/oas/loki_cm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6fa99c26a58208f3f58cf4b68217ff0568b348d3 --- /dev/null +++ b/flux/oas/loki_cm.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + app: loki + grafana_datasource: "1" + release: loki + name: loki-datasource + namespace: oas +data: + loki-stack-datasource.yaml: |- + apiVersion: 1 + datasources: + - name: Loki + type: loki + access: proxy + url: http://loki:3100 + version: 1 diff --git a/flux/oas/loki-stack_hr.yaml b/flux/oas/loki_hr.yaml similarity index 71% rename from flux/oas/loki-stack_hr.yaml rename to flux/oas/loki_hr.yaml index 48192169497b8ccd0ce1fce7e0e46a1380123d1a..b973dcf8b80592d8910a2f320cffd0fa21d9eea7 100644 --- a/flux/oas/loki-stack_hr.yaml +++ b/flux/oas/loki_hr.yaml @@ -2,18 +2,18 @@ apiVersion: helm.fluxcd.io/v1 kind: HelmRelease metadata: - name: loki-stack + name: loki namespace: oas annotations: flux.weave.works/automated: "false" spec: - releaseName: loki-stack + releaseName: loki chart: - # https://github.com/grafana/helm-charts/tree/main/charts/loki-stack + # https://github.com/grafana/helm-charts/tree/main/charts/loki repository: https://grafana.github.io/helm-charts - name: loki-stack - version: 2.4.1 + name: loki + version: 2.5.0 valuesFrom: - secretKeyRef: - name: loki-stack-settings + name: loki-settings key: values.yaml diff --git a/flux/oas/promtail_hr.yaml b/flux/oas/promtail_hr.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2fb7a68f25be8cf82005568033f89582a73aadf4 --- /dev/null +++ b/flux/oas/promtail_hr.yaml @@ -0,0 +1,19 @@ +--- +apiVersion: helm.fluxcd.io/v1 +kind: HelmRelease +metadata: + name: promtail + namespace: oas + annotations: + flux.weave.works/automated: "false" +spec: + releaseName: promtail + chart: + # https://github.com/grafana/helm-charts/tree/main/charts/promtail + repository: https://grafana.github.io/helm-charts + name: promtail + version: 3.5.1 + valuesFrom: + - secretKeyRef: + name: promtail-settings + key: values.yaml diff --git a/test/pytest/test_app_deployments.py b/test/pytest/test_app_deployments.py index 362eb221c844286b1b566ef02a81ec38cbd074e1..0f94a38e430ff51fb094775fd54b9c23103b75c2 100644 --- a/test/pytest/test_app_deployments.py +++ b/test/pytest/test_app_deployments.py @@ -17,7 +17,8 @@ EXPECTED_RELEASES = { 'oas': [ 'ingress', 'prometheus-stack', - 'loki-stack', + 'loki', + 'promtail', 'eventrouter', 'single-sign-on' ], @@ -35,9 +36,12 @@ EXPECTED_APP_LABELS = { 'local-path-provisioner': { 'namespace': 'kube-system', 'label_selector': 'app.kubernetes.io/instance=local-path-provisioner'}, - 'loki-stack': { + 'loki': { 'namespace': 'oas', 'label_selector': 'app=loki'}, + 'promtail': { + 'namespace': 'oas', + 'label_selector': 'app=promtail'}, 'nextcloud': { 'namespace': 'oas-apps', 'label_selector': 'app.kubernetes.io/instance=nc'},