Установка с OpenShift

Обзор

Zabbix помогает вам осуществлять мониторинг в реальном времени миллионов метрик, собираемых с десятков тысяч серверов, виртуальных машин и сетевых устройств. Zabbix Operator позволяет пользователям легко развёртывать, управлять и поддерживать развёртывания Zabbix на OpenShift. Установив эту интеграцию, вы сможете развёртывать сервер/прокси Zabbix и другие компоненты с помощью одной команды.

Поддерживаемые варианты

Zabbix Operator поставляется с несколькими возможными вариантами установки:

  • Zabbix server — простая установка Zabbix, включающая сервер Zabbix, веб-интерфейс Zabbix и Zabbix Java gateway с поддержкой базы данных MySQL. Этот вариант не предоставляет службу MySQL и требует внешней базы данных MySQL.
  • Zabbix server (full) — установка Zabbix, включающая сервер Zabbix, веб-интерфейс Zabbix, Zabbix Java gateway и экземпляр сервера MySQL.
  • Zabbix proxy (SQLite3) — очень простой способ получить мощь Zabbix прокси. Вариант имеет поддержку SQLite3 для Zabbix прокси и позволяет указать количество прокси.
  • Zabbix proxy (MySQL) — ещё один вариант Zabbix прокси. Этот вариант поддерживает и предоставляет базу данных MySQL. Можно использовать встроенный экземпляр базы данных MySQL или внешний.
  • Zabbix agent — агент Zabbix может быть развёрнут на каждом доступном узле для мониторинга стабильности и производительности на удалённых узлах. Он позволяет собирать метрики с полной автоматизацией!
  • Zabbix appliance — готовое решение Zabbix — это очень простой способ тестирования и проверки функций Zabbix. Этот вариант предоставляет все основные компоненты в одном решении. Он включает в установку сервер Zabbix, Zabbix Java gateway, веб-интерфейс Zabbix и сервер MySQL. Он очень полезен для тестирования функций Zabbix!

В настоящее время Zabbix Operator основан на версии Zabbix 6.0 LTS и поддерживает OpenShift 4.1, 4.2, 4.3, 4.4, 4.5 и 4.6.

Установка Zabbix Operator

Использование RedHat Marketplace

Для установки Zabbix Operator с помощью Red Hat Marketplace требуется, чтобы кластер OpenShift был зарегистрирован на портале Marketplace, включая развёртывание PullSecret в вашем кластере. Невыполнение этого требования приведёт к сбою аутентификации при извлечении образа в реестре Red Hat.

1. Выберите OperatorHub из подменю Operators и выполните поиск Zabbix.

Выберите опцию RedHat Marketplace.

2. Выберите «Zabbix Operator» и нажмите Купить (Purchase).

Openshift необходимо зарегистрировать на портале Red Hat Marketplace.

3. Выберите наиболее подходящий вариант установки.

4. Укажите конфигурацию продукта в соответствии с вашими потребностями.

5. Перейдите к своему программному обеспечению в Red Hat Marketplace и установите программное обеспечение Zabbix Operator, как указано на рисунке.

6. Установите Operator. Установите стратегию утверждения обновлений в значение Automatic, чтобы гарантировать, что у вас всегда установлена последняя версия компонентов Zabbix.

7. Zabbix Operator теперь установлен в указанном вами кластере.

8. Перейдите в раздел Operators → Installed Operators.

9. Откройте страницу настроек «Zabbix Operator».

Использование OperatorHub

Если вы установили OpenShift в AWS, убедитесь, что необходимые порты открыты для группы безопасности рабочих узлов.

1. Выберите OperatorHub в подменю Operators и найдите Zabbix.

2. Выберите Zabbix Operator и нажмите Install.

3. Выберите параметры установки.

4. Перейдите в Operators → Installed Operators.

5. Откройте страницу настроек «Zabbix Operator».

Настройка

Некоторые операнды (параметры установки) требуют предварительного создания дополнительных ресурсов. В следующем разделе описываются эти предварительные требования. Все возможные параметры конфигурации доступны во время развёртывания операнда. Например, Zabbix proxy (MySQL):

Раздел YAML содержит все доступные параметры со значениями по умолчанию:

Zabbix server

Для этого операнда есть несколько предварительных требований:

1. Существующая точка входа в базу данных MySQL — база данных/кластер MySQL должны быть созданы до запуска операнда «Zabbix server». Например, автономный сервер MySQL с постоянным томом:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:8.0
        name: mysql
        args:
          - mysqld
          - '--character-set-server=utf8'
          - '--collation-server=utf8_bin'
          - '--default-authentication-plugin=mysql_native_password'
        env:
          # Use secret in real usage
        - name: MYSQL_ROOT_PASSWORD
          value: Welcome1!
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql
  clusterIP: None

Обратите внимание, что Zabbix не поддерживает набор символов utf8_mb4 и плагин аутентификации по умолчанию caching_sha2_password.

2. Учётные данные MySQL с использованием секрета — должен быть секрет с данными mysql_root_password, mysql_zabbix_username иmysql_zabbix_password. Например:

kind: Secret
apiVersion: v1
metadata:
  name: zabbix-server-secrets
data:
  mysql_root_password: V2VsY29tZTEh
  mysql_zabbix_password: emFiYml4X3N1cGVyIQ==
  mysql_zabbix_username: emFiYml4
type: Opaque

где все поля закодированы с использованием base64. Например:

# echo -n "zabbix" | base64
emFiYml4Cg

Пример настроек операнда «Zabbix Server»:

Все параметры настроек доступны с использованием представления в виде формы, но также можно использовать представление в виде YAML. Например:

Наконец, операнд создаст несколько подов. Их можно проверить в разделе Workloads → Pods:

Маршрут для веб-интерфейса Zabbix находится в разделе Networking → Routes. URL-адрес обеспечивает доступ к веб-интерфейсу Zabbix. В следующем примере это http://zabbix-server-zabbix.apps-crc.testing/:

Zabbix full

Этот операнд имеет несколько предварительных требований:

1. MySQL volume claim — должен быть persistent volume claim. Например:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: zabbix-database
  namespace: zabbix
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 50Gi

2. Учётные данные MySQL — должен быть секрет с данными mysql_root_password, mysql_zabbix_username и mysql_zabbix_password data. Например:

kind: Secret
apiVersion: v1
metadata:
  name: zabbix-full-secrets
data:
  mysql_root_password: V2VsY29tZTEh
  mysql_zabbix_password: emFiYml4X3N1cGVyIQ==
  mysql_zabbix_username: emFiYml4
type: Opaque

где все поля закодированы с использованием base64. Например:

# echo -n "zabbix" | base64
emFiYml4Cg

Пример настроек операнда «Zabbix Full»:

Все параметры настроек доступны с использованием представления в виде формы, но также можно использовать представление в виде YAML. Например:

Наконец, операнд создаст несколько подов. Их можно проверить в разделе Workloads → Pods:

Маршрут для веб-интерфейса Zabbix находится в разделе Networking → Routes. URL-адрес обеспечивает доступ к веб-интерфейсу Zabbix. В следующем примере это http://zabbix-full-zabbix.apps-crc.testing/:

Zabbix proxy (SQLite3)

Пример настроек операнда «Zabbix proxy (SQLite3)»:

Наконец, операнд создаст несколько подов. Их можно проверить в разделе Workloads → Pods section:

Дополнительная информация

Создание нового секрета

Следующая процедура описывает, как создать новый секрет с помощьюOpenshift Console.

1. Откройте раздел Workloads → Secrets и переключите проект на проект Zabbix Operator (по умолчанию «zabbix»).

2. Создайте новый секрет с помощью опции From YAML.

SSL-сертификаты для HTTPS

Можно включить HTTPS непосредственно в подах веб-интерфейса Zabbix. В этом случае создайте следующий секрет с помощью параметра YAML:

kind: Secret
apiVersion: v1
metadata:
  name: zabbix-web-sslsecret
data:
  ssl.crt: >-
   < ssl.crt data>
  ssl.key: >-
     < ssl.key data >
  dhparam.pem: >-
   <  dhparam.pem data >

Имена сертификатов и файла параметров DH являются статическими. Пожалуйста, используйте только те, которые указаны в примере выше!

Шифрование на основе сертификата базы данных MySQL

На стороне базы данных MySQL:

apiVersion: v1
data:
 root-ca.pem: >-
  < root-ca.pem data>
 server-cert.pem: >-
  < server-cert.pem data>
 server-key.pem: >-
  < server-key.pem data>
kind: Secret
metadata:
 name: zabbix-db-server-tls-secret
type: Opaque

На стороне компонентов Zabbix:

apiVersion: v1
data:
 client-cert.pem: >-
  < client-cert.pem data>
 client-key.pem: >-
  < client-key.pem data>
 root-ca.pem: >-
  < root-ca.pem data>
kind: Secret
metadata:
 name: zabbix-db-client-tls-secret
type: Opaque

Сертификаты должны включать "-----BEGIN RSA PRIVATE KEY-----" и "-----END RSA PRIVATE KEY-----". Например:

Затем, во время развёртывания, в разделе компонента Zabbix и MySQL сервере (если используется встроенный сервер) выберите правильное значение параметра «TLS-подключение к базе данных (TLS connection to database)» и значение секрета «MySQL database certificates (client)».

Известные проблемы

  1. Агент Zabbix не имеет возможности определить правильное имя узла. Он всегда имеет динамическое имя хоста.