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