Установка с 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 не имеет возможности определить правильное имя узла. Он всегда имеет динамическое имя хоста.