IntelliTrend GmbH www.intellitrend.de Kontakt: Wolfgang Alper wolfgang.alper@intellitrend.de
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Docker Kommandozeile
docker run --name my-zabbix-server-mysql \ -e DB SERVER HOST="my-mysql-server" V -e MYSQL USER="mydbuser" \ -e MYSQL PASSWORD="mydbpass" \ -d zabbix/zabbix-server-mysql:ubuntu-6.4-latest Weitere optionale Umgebungsvariablen ZBX LISTENPORT=10051 ZBX STARTREPORTWRITERS=1 ZBX WEBSERVICEURL=http://zabbix-web-service:10053/report
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

•  Installation von Zabbix (ähnlich wie mit Docker) manuell mit YAML basierenden Konfiguration Dateien unter Verwendung von „kubectl“ Oder • Installation von Zabbix unter Verwendung von Templates, Konfigurations- Repositories und synchronizierten Konfigurationen mit “Helm”
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

•  Helm wird häufig “The package manager for Kubernetes” genannt •  Helm ist ein K8s Konfigurations-Repository und Template System •  Helm bündelt verschiedene Konfigurationsdateien in einem Release •  Helm erlaubt konsistente Upgrades mit Versionierung •  Helm erlaubt flexible Konfigurationen über die „values.yaml“ Datei •  Offizielles Zabbix K8s Monitoring Helm Chart: https://git.zabbix.com/projects/ZT/repos/kubernetes-helm/browse •  Community Zabbix K8s Deployment Helm Chart: https://github.com/zabbix-community/helm-zabbix (Ehemals repo: https://github.com/cetic/helm-zabbix)
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

{{- if .Values.zabbixserver.enabled }} apiVersion: apps/vl kind: StatefulSet ■metadata: name: {{ template "zabbix.fullname" . }}-zabbix-server labels: app: {{ template "zabbix.fullname" . }}-zabbix-server app.kubernetes.io/name: zabbix-server helm.sh/chart: {{ include "zabbix.chart" . }} app.kubernetes.io/instance: {{ .Release.Name }}-zabbix-se{ app.kubernetes.io/managed-by: {{ .Release.Service }}-zabb当spec: replicas: {{ .Values.zabbixserver.replicaCount }} serviceName: {{ template "zabbix.fullname" . }} selector: matchLabels: app: {{ template "zabbix.fullname" . }}-zabbix-server template: metadata: labels: app: {{ template "zabbix.fullname" . }}-zabbix-server app.kubernetes.io/name: zabbix-server helm.sh/chart: {{ include "zabbix.chart" . }} app.kubernetes.io/instance: {{ .Release.Name }}-zabbi: app.kubernetes.io/managed-by: {{ .Release.Service }}-{ Helm Template Default values for zabbix. This is a YAML-formatted file. Declare variables to be passed into your templates. # **Zabbix Server** configurations日zabbixserver: # -- Enables use of **Zabbix Server** enabled: true # -- Number of replicas of ``zabbixserver`` module replicaCount: 1 # -- optional set true open a port direct on node where zabbix server runs hostPort: false # -- optional set hostIP different from 0.0.0.0 to open port only on this IP hostIP: 0.0.0.0 resources: {} image: # -- Zabbix server Docker image name repository: zabbix/zabbix-server-pgsql # -- Tag of Docker image of Zabbix server tag: ubuntu-6.0.0 # -- Pull policy of Docker image pullPolicy: IfNotPresent # -- List of dockerconfig secrets names to use when pulling images pullSecrets: [] -- Address of database host DB SERVER HOST: "172.20.22.100" # -- Port of database host DB SERVER PORT: "5432" # -- User of database POSTGRES USER: "zabbix" # -- Password of database POSTGRES PASSWORD: "zabbix" Helm Values
unter Verwendung von Helm
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Installation des Zabbix Helm Repository serveradmin@k8s-master demo]$|helm repo add cetic https://cetic.github.io/helm-charts "cetic" has been added to your repositories [serveradmin@k8s-master demo]$ | helm repo update Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "metallb" chart repository ...Successfully got an update from the "nfs-subdir-external-provisioner" chart repository ...Successfully got an update from the "cetic" chart repository ...Successfully got an update from the "prometheus-community" chart repository Update Complete. *Happy Helming!* Erstellung der “values  zabbix.yaml” (skeleton mit Defaults) [serveradmin@k8s-master demo]$|helm show values cetic/zabbix > zabbix_values.yaml
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Edit zabbix  values.yaml: - Disable Postgres deployment since we use an external DB - Set DB  SERVER  HOST to address of external DB - Set username, password and database name as required # **PostgreSQL** configurations postgresql: #_-- Create a database using Postgresgl enabled: false auth: # -- Enable remote access to "postgres" user enablePostgresUser: true # -- Password of "postgres" user postgresPassword: "zabbix pwd" # -- User of database username: "zabbix" # Password of database password:  "zabbix" # -- Name of database database: "zabbix" # **Zabbix Server** configurations zabbixserver: # -- Enables use of **Zabbix Server** enabled: true # -- Number of replicas of "zabbixserver" replicaCount: 1 # -- optional set true open a port direct hostPort: false # -- optional set hostlP hostIP: 0.0.0.0 resources: {} image: # Zabbix server Docker image name repository: zabbix/zabbix-server-pgsql # -- Taq of Docker image of Zabbix server tag: ubuntu-6.0.0 # -- Pull policy of Docker image pullPolicy: IfNotPresent # -- List of dockerconfig secrets pullSecrets: [] # -- database DB SERVER_HOST: "172.20.20.100" DB_SERVER_PORT: "5432" POSTGRES_USER: "zabbix" POSTGRES PASSWORD: "zabbix"
Erstellung eines Helm Releases „zabbix-1“ im Namespace „zabbix“: [serveradmin@k8s-master demo]$|helm install -n zabbix --create-namespace -f zabbix_values.yaml zabbix-1 cetic/zabbix NAME: zabbix-1 LAST DEPLOYED: Thu Apr 14 10:07:32 2022 NAMESPACE: zabbix STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Get the application URL by running these commands: export POD_NAME=$(kubectl get pods --namespace zabbix -l "app=zabbix-1-zabbix-web" -o jsonpath="{.items[0].metadata.name}"} export CONTAINER_PORT=$(kubectl get_pod --namespace_zabbix $POD_NAME -o_jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8888 to use your application" kubectl --namespace zabbix port-forward $POD_NAME 8888:$CONTAINER_PORT Pods vom Release „zabbix-1“ nach Installation
Zabbix Server in „zabbix-1“, Initialisierung der DB: 〓 Pod zabbix-1-zabbix-server-0   X Namespace zabbix Owner StatefulSet zabbix-1-zabbix-server Pod zabbix-1-zabbix-... ヘ** Preparing Zabbix server ** Using POSTGRES_USER variable from ENV ** Using POSTGRES_PASSWORD variable from ENV �������������� " D6_SERVER_HOST: 172,20,22,100 = D&_SERVER_PORT: 5432 = DE_SERVER_DENAME: zabbix * DE_SERVER_SCHEMA: public   260:20220412:120633,271 server #39 started [history poller #1] 259:20220412:120633.273 server #38 started [alert syncer #1] 263:20220412:120633.273 server #42 started [history poller #4] 261:20220412:120633,274 server #40 started [history poller #2] 262:20220412:120633,276 server #41 started [history poller #3] 239:20220412:120641,351 item "Zabbix server:zabbix[process,ipmi_poller,avg,busy]" became not supported: No "ipmi_poller" processes started. 239:20220412:120642.360 item "Zabbix server:zabbix[process,java_poller,svq,busy]" became not supported: No "java_poller" processes started. 239:20220412:120647,406 item "zabbix server:zabbix[process,ipmi manager,avg,busy]" became not supported: No "ipmi manager" processes started, 239:20220412:120647,406 item "Zabbix server:zabbix[process,sump_truper.evg.busy]" bucase not supported: No "sump_truper" processes_started. 247:20220412:120648,270 enabling Zabbix agent checks on host "Zabbix server": interface became available 239:20220412:120648.417 item "Zabbix server:zabbix[arocess,vmwre collector,avg,basy]" became not supported: No "vmwre collector" processes started. 239:20220412:120655,457 item "zabbix server:zabbix(vmwre,buffer,pused)" because not supported: No "vmwre collector" processes started. 239:20220412:120658,479 item "Zabbix server:zabbix[process,report writer,avg,busy]" became not supported: No "report writer" processes started. 239:20220412:120659.485 item "Zakbix server:zakbix(process,report manager,avg,busy)" became not supported: No "report manager" processes started. Zabbix Server in „zabbix-1“, Start:
Pod „zabbix-1-zabbix-proxy-0“ - Container zabbix-agent Container zabbix-proxy © Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de Services

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

•  HTTP-basierte Dienste können über einen Reverse-Proxy wie nginx oder Traefik geroutet werden. •  Nicht-HTTP-basierte TCP-/UDP-Dienste können nicht einfach geroutet werden, sie benötigen eine eigene externe IP-Adresse Cloud-Dienste wie AWS, Azure oder GCS bieten Load Balancer als Lösung für dieses Problem Wie lässt sich dieses Problem in einer selbst gehosteten Cloud-Umgebung lösen?
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Lösung: MetalLB
MetalLB ist ein Layer-2-Netzwerk-Load-Balancer, der in selbst gehosteten Cloud-Umgebungen eingesetzt werden kann MetalLB weist den Cluster-Diensten externe IP-Adressen zu und verlässt sich nicht auf URLs oder Reverse Proxies . serveradmin@k8s-master demo]$[helm_repo_add_metallb_https://metallb.github.io/metallb "metallb" has been added to your repositories Add repo Update repo Install |serveradmin@k8s-master_demo]$ | helm_repo_update serveradmin@k8s-master demo]$ helm install metallb metallb/metallb --namespace metallb --create-namespace -f metallb_values.yaml --version "0.11.0" NAME: metalup LAST DEPLOYED: Thu Apr 14 12:08:35 2022 NAMESPACE: metallb STATUS: deployed REVISION: 1 TEST SUITE: None S: MetalLB is now running in the cluster. Balancer Services in your cluster are now available on the IPs you defined in MetalLB's configuration: config: address-pools: addresses: - 172.20.22.110-172.20.22.120 name: default protocol: layer2 https://github.com/metallb/metallb © Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de Address pool
Editiere zabbix  values.yaml,  verwende service/type “LoadBalancer” anstatt “ClusterIP” # -- Password of database POSTGRES PASSWORD: "zabbix" # -- Name of database POSTGRES_DB: "zabbix" service: # -- Type of service in Kubernetes cluster type: LoadBalancer # -- Cluster IP for Zabbix server clusterIP: # -- Port of service in Kubernetes cluster port: 10051 # NodePort of service on each node nodePort: 31051 # -- Annotations for the zabbix-server service annotations: {} # metallb.universe.tf/address-pool: production-public-ips # -- Extra environment variables. A list of additional environment variables. extraEnv: {}
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Aktualisiere das Release „zabbix-1“ nach der Änderung in zabbix  values.yaml [serveradmin@k8s-master demo]$|helm upgrade -n zabbix -f zabbix_values.yaml zabbix-1 cetic/zabbix Release "zabbix-1" has been upgraded. Happy Helming! NAME: zabbix-1 LAST DEPLOYED: Tue Apr 26 15:18:37 2022 NAMESPACE: zabbix STATUS: deployed REVISION: 11 TEST SUITE: None NOTES： Get the application URL by running these commands: export POD_NAME=$(kubectl get pods --namespace zabbix -l "app=zabbix-1-zabbix-web" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get_pod --namespace_zabbix_$POD_NAME -o_jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8888 to use your application" kubectl --namespace zabbix port-forward $POD_NAME 8888:$CONTAINER_PORT
Der Zabbix Server verwendet nun den Type „LoadBalancer“ und ist über eine externe IP-Adresse erreichbar
Zabbix Server ist außerhalb des Clusters zugänglich: . External IP 172.20.22.110 (zugewiesen von MetalLB) . Port 10051

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Bei dem Wunsch, einfach Anwendungen in einem Kubernetes-Cluster bereitzustellen, können in der Praxis einige Herausforderungen auftreten: • Nicht jeder ist mit kubectl, Helm-Charts usw. vertraut. •   Wie kann man konsistente Anwendungskonfigurationen sicherstellen? . Wie kann man Konfigurationsänderungen verfolgen? . Wie verwaltet man Passwörter/Geheimnisse in Konfigurationsdateien? . Wie kann man Nutzern/Admins erlauben, eine Anwendung einfach bereitzustellen? Wir brauchen Bausteine zur Schaffung eines benutzerfreundlicheren Ansatzes
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Flux bietet eine GitOps-Lösung für Kubernetes •  Die K8-Konfigurationen werden mit Git-Repositories synchronisiert. Dies erlaubt: • Versionierung •  Einfache Rollbacks •   Konsistente Konfigurationszustände •   Flux wird im Cluster bereitgestellt und steuert den Cluster über die Kubernetes-API •  Anstelle von "kubectl apply" oder "helm install" werden Änderungen festgeschrieben und in Git-Repositories übertragen •   Flux fragt diese Git-Repositories nach Änderungen ab und führt bei Bedarf automatische Rollouts im Cluster durch See https://github.com/fluxcd/flux2
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Flux Git Repository
Flux base configuration . . References to App repositories
App Git Repositories
. App Helm release config . Other K8s YAML config files In unserem Fall sind die Anwendungen einzelne Zabbix-Instanzen © Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

• Anwendungen erfordern Anmeldeinformationen (Datenbanken, API Tokens, E-Mail usw.), die in Konfigurationsdateien für GitOps gespeichert sind. . Allerdings: Anmeldedaten im Klartext in Git sind keine gute Idee! . Verschlüsselung verwenden? → Ja: Aber, eingesetzte Anwendungen müssen weiterhin in der Lage sein, Anmeldedaten zu lesen . Wohin mit den Schlüsseln für die verschlüsselten Anmeldeinformationen? → Huhn-und-Ei-Problem •   Mehrere Benutzer müssen möglicherweise Anmeldedaten bearbeiten → Wie können die Schlüssel sicher geteilt werden?
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Mozilla SOPS (Secrets OPerationS) verwaltet verschlüsselte Informationen in Textdateien •   Sensible Werte werden verschlüsselt und in spezielle Base64-Strings kodiert •   Verwendung von asymmetrischer Kryptographie mit einem oder mehreren öffentlichen/privaten Schlüsselpaaren verschiedener Benutzer •   Flux erhält den privaten Schlüssel  und dekodiert verschlüsselte YAML-Dateien “on the fly” •   Nur Besitzer der privaten Schlüssel können die verschlüsselten Werte einsehen und bearbeiten . Support für Flux, Hashicorp Vault, AWS KMS, Azure Key Vault, GCP KMS,  Age, PGP etc. See https://github.com/mozilla/sops
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

SOPS ermöglicht die Verwaltung und Speicherung von “Secrets” in Text Dateien
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Verschiedene Benutzer/Anwendungen können die Datei mit Ihrem Key verwalten © Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de Baustein: Cloud Deploy (Verwaltung von nativen Cloud-Diensten)
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Fragen wir ChatGPT: "Was ist Cloud Deploy?"
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Antwort von ChatGPT: “Cloud-Deploy" ist kein spezifischer Begriff oder eine Technologie, sondern ein weit gefasster Begriff, der sich auf den Prozess der Bereitstellung von Anwendungen oder Diensten auf einer Cloud- Infrastruktur bezieht. Bei der Cloud-Bereitstellung wird Ihre Softwareanwendung oder Ihr System mit Hilfe von Cloud-Ressourcen und -Diensten über das Internet / lokale Netz für Benutzer oder Kunden verfügbar gemacht.
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Cloud Deploy verwaltet Anwendungsbereitstellungen in Kubernetes
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

In unserem Fall sind Dienste einzelne Zabbix-Instanzen (einschließlich Frontend)
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Settings defined by cloud admin Example: defaults, database settings Zabbix-n User Git Repository User settings defined by cloud user Example: specific poller settings Flux Git Repository Internal settings for Flux Cloud Deploy erstellt einen eigenen Satz Git-Repositories für jede Zabbix-Installation • System Git repository •   User Git repository © Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de Cloud Deploy (via Ansible)
GitLab Cloud Deploy (via Ansible) Add GitSource reference of Zabbix System Repository Cloud Deploy überträgt erstellte Dateien und Konfigurationen automatisch an Git • System Git repository •   User Git repository • Flux Git repository © Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de
Cloud Deploy (via Ansible)
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Zabbix > Flux master flux / zabbix / my-zabbix / source.vaml abbix Provider Bot authored 1 month ago Replace Delete Config: Register the Zabbix System Git repository in Flux
Zabbir > Flux Config: Kustomization Object um die Flux-Konfiguration aus dem zuvor registrierten Zabbix-Repository zu lesen
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Zabbix Neue Repositories, die von Cloud Deploy über Ansible für jede neue Zabbix-Instanz erstellt werden
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

{ } zabbix.yaml  { Von Cloud Deploy erstellte Helm Release-Konfiguration Enthält die Werte für den Helm-Chart values: postgresql: database: zabbix host: 172.20.22.50 password: ENC[AES256 GCM.data:NomliZ/lk9xbYw==.iv:moG41142+uFd0ZwwxP0i0m2dwRnJh19mnefMelLE8BI=.tag port: "5431" username: postgres secretMount: - defaultMode: "0444" SOPS mountPath: /tmp/git-config name: git-auth-config zabbixAgent: env: GIT_CONFIG_REPO: ssh://git@gitlab.loc:8022/zbx/factories/my-zabbix.git GIT_CONFIG_UPDATE: "1689929585" inage: pullPolicy: Always pullSecrets: - regcred registry: registry.loc repository: zabbix/zabbix-agent2 tag: alpine-6.0.17 zabbixServer: env: GIT_CONFIG_REPO: ssh://git@gitlab.loc:8022/zbx/factories/my-zabbix.git GIT CONFIG UPDATE: "1689929585" inage: pullPolicy: Always pullSecrets: - regcred registry: registry.loc repository: zabbix/zabbix-server-pgsql tag: alpine-6.0.17 service: loadBalancerIP: 172.20.22.65 type: LoadBalancer zabbixWeb:
Zabbix User Configuration Zabbix > Factories Das Benutzer-Repository enthält Umgebungsdateien mit den benutzerspezifischen Konfigurationen © Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de
IP 172.20.22.110 Port 10051 Port 10052 Port 80 Port 443 https://myzabbix.k8s.example.com Database
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

•  Webbasiertes Portal ermöglicht die Bereitstellung neuer Dienste in Kubernetes (hier Zabbix) •  Services basieren auf Service Templates •  Service Templates definieren Provisioning Actions zum Erstellen, Aktualisieren, Löschen und Migrieren eines Services •  Jede Provisioning Action kann mehrere Tasks haben •   Unterstützt SSO and RBAC
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Aktionen werden Service spezifisch definiert und stehen dem Benutzer für die Provisionierung zur Verfügung Cloud Deploy Template für ein Zabbix 6.0 Deployment
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Service Template Configuration Service Template Configuration Service Konfiguration für: Aktualisieren, Erstellen und Löschen eines Services Ansible Playbook mit Task spezifischer Konfiguration @ Tasks @ @

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

● Cloud-Deploy Dashboard
Provisioning Services Service Templates Jobs
About Sign out
Job Details
L Service Action 10
Zabbix 6.0: Create (CREATION)

←     Job Details
Service Action 12 n
Zabbix 6.0: Create (CREATION) Status

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Job Details
Job successful
Pods erstellt im K8s Cluster Zabbix Frontend nach Login
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Alle Vorgänge, die im Benutzerportal ausgeführt werden (und mehr), können auch über APIs ausgeführt werden, was die automatische Bereitstellung signifikant vereinfacht. Available APIs: •  REST-Like HTTP API • gRPC HTTP API • Terraform
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Dokumentation Live testing mit swagger Basiert auf OpenAPI Specifikation, unterstützt Swagger - https://swagger.io/

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

terraform required_providers { clouddeploy = source  = "intellitrend.de/cloud-deploy/cloud-deploy" version = "1.0.0" # Configuration for the Cloud Deploy provider provider "clouddeploy" = "admin user = "admin" password server_addr = "cloud-deploy.loc" server_port = 8090 Cloud Deploy kann mit Terraform verwendet werden – https://www.terraform.io/
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

# Configuration for a service resource "clouddeploy_service" "zabbix-60-small" { # name of the service template this service is based on, # changes after creation cause a re-deployment of the service template = "Zabbix 6.0" # optional name of the service. if not specified, the name is derived # from the template name and the creation time name = "Zabbix Small Instance" # optional description details for the service description = "A small Zabbix instance" # optional flag to wait for service jobs to finish # note: may cause timeouts on long running tasks block = false # parameters that are passed to action playbooks, # changes will cause service update actions to run on this service parameters = { "factory_name" = "Zabbix small instance" "factory_slug" = "zabbix-small" "factory_size" = "small" "gitlab user"  = "admin" email" = "support@intellitrend.de"
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

$ terraform apply Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # clouddeploy service.zabbix-60-small will be created + resource "clouddeploy_service" "zabbix-60-small" + block = false + description = "A small Zabbix instance" + id          = (known after apply) = "Zabbix Small Instance" + nane + parameters  = { + "email" = "support@intellitrend.de" + "factory name" = "Zabbix small instance" + "factory_size" = "small" + "factory slug" = "zabbix-small" + "gitlab user"  = "admin + status + template = (known after apply = "Zabbix 6.0 Plan: 1 to add, 0 to change, 0 to destroy. Changes to Outputs: + zabbix-60-small-status = (known after apply) Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes clouddeploy service.zabbix-60-small: Creating... clouddeploy_service.zabbix-60-small: Creation complete after 1s [id=180] Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: |zabbix-60-small-status = "Job Zabbix 6.0: Create (CREATION): begin job" Apply Terraform state (returns immediately)
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

$ terraform refresh clouddeploy_service.zabbix-60-small: Refreshing state... [id=180] Outputs: zabbix-60-small-status = "Job Zabbix 6.0: Create (CREATION): playbook create_validate.pb.yaml completed" $ terraform refresh clouddeploy_service.zabbix-60-small: Refreshing state... [id=180] Outputs: zabbix-60-small-status = "Job Zabbix 6.0: Create (CREATION): playbook create_database.pb.yaml completed" $ terraform refresh clouddeploy_service.zabbix-60-small: Refreshing state... [id=180] Outputs: zabbix-60-small-status = "Job Zabbix 6.0: Create (CREATION): playbook create_factory_config.pb.yaml completed" $ terraform refresh clouddeploy_service.zabbix-60-small: Refreshing state... [id=180] Outputs: |zabbix-60-small-status = "Ready" Überprüfung des Fortschritt mit “refresh”
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de
“One to rule them all” Monitoring der installierten Zabbix Instanzen
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

•  Ein zentraler "Master"-Zabbix-Server überwacht alle installierten Zabbix-Instanzen •  Jede Zabbix-Instanz definiert einen Dienst auf dem Master, einschließlich Zabbix Server, Zabbix Agent und Frontend •  Der Master Server hat Zugriff auf die internen Metriken jeder Zabbix-Instanz •  Jede Zabbix-Instanz hat ein eigenes Dashboard deployed via Cloud Dep gebloved via Cloud r
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Hosts Von Cloud Deploy bereitgestellte Dienste können über LLD “discovered” und von Zabbix überwacht werden.
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

Pro Zabbix-Service wird automatisch ein Flowchart aus der jeweiligen Service Konfiguration erstellt. Der Service Status und die zugehörigen Trigger-Stati werden in Echzeit angezeigt. Auf dem Master für jede Zabbix-Instanz erstellter Service mit grafischer Darstellung
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de

© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de
“Health Status Dashboard” aller Zabbix Instanzen auf dem Master
Danke! IntelliTrend GmbH www.intellitrend.de Kontakt: Wolfgang Alper wolfgang.alper@intellitrend.de
© Copyright 2023 IntelliTrend GmbH ● Germany ●  www.intellitrend.de