zabbix-agent
Содержание
- Обзор
- Требования
- Начало работы
- Переменные роли
- Зависимости
- Пример плейбука
- Molecule
- Развертывание пользовательских параметров
- Лицензия
- Информация об авторе
Введение
Эта роль была перенесена на: https://github.com/ansible-collections/community.zabbix/ В этом репозитории доступна версия только для чтения для тех, кто еще не может использовать коллекции. Изменения и обновления будут применяться только к коллекции, а не к этому репозиторию.
Требования
Операционные системы
Эта роль будет работать на следующих операционных системах:
- Red Hat
- Fedora
- Debian
- Ubuntu
- opensuse
- Windows (с учетом "лучших усилий")
- macOS
Так что вам потребуется одна из этих операционных систем.. :-) Пожалуйста, отправляйте запросы на изменение или предложения, если вы хотите использовать эту роль для других операционных систем.
Доступ к локальной системе
Для успешного завершения установки роли требуется python-netaddr
на контроллере для управления IP-адресами. Это означает, что библиотека должна быть доступна на вашем локальном компьютере (или что pip
должен быть установлен для ее запуска). Это, скорее всего, будет означать, что для выполнения роли потребуется доступ sudo
на вашем локальном компьютере, и поэтому вам может понадобиться флаг -K
, чтобы ввести пароль вашей локальной машины, если вы не работаете под root.
Версии Zabbix
Смотрите следующий список поддерживаемых операционных систем с релизами Zabbix:
Zabbix 4.4
- CentOS 7.x, 8.x
- Amazon 7.x
- RedHat 7.x, 8.x
- Fedora 27, 29
- OracleLinux 7.x, 8.x
- Scientific Linux 7.x, 8.x
- Ubuntu 14.04, 16.04, 18.04
- Debian 8, 9, 10
- macOS 10.14, 10.15
Zabbix 4.2
- CentOS 7.x
- Amazon 7.x
- RedHat 7.x
- Fedora 27, 29
- OracleLinux 7.x
- Scientific Linux 7.x
- Ubuntu 14.04, 16.04, 18.04
- Debian 8, 9, 10
- macOS 10.14, 10.15
Zabbix 4.0
- CentOS 7.x
- Amazon 7.x
- RedHat 7.x
- Fedora 27, 29
- OracleLinux 7.x
- Scientific Linux 7.x
- Ubuntu 14.04, 16.04, 18.04
- Debian 8, 9, 10
- macOS 10.14, 10.15
Zabbix 3.4
- CentOS 7.x
- Amazon 7.x
- RedHat 7.x
- Fedora 27, 29
- OracleLinux 7.x
- Scientific Linux 7.x
- Ubuntu 14.04, 16.04, 18.04
- Debian 7, 8, 9
Zabbix 3.2
- CentOS 7.x
- Amazon 7.x
- RedHat 7.x
- Fedora 27, 29
- OracleLinux 7.x
- Scientific Linux 7.x
- Ubuntu 14.04, 16.04
- Debian 7, 8
Zabbix 3.0
- CentOS 5.x, 6.x, 7.x
- Amazon 5.x, 6.x, 7.x
- RedHat 5.x, 6.x, 7.x
- OracleLinux 5.x, 6.x, 7.x
- Scientific Linux 5.x, 6.x, 7.x
- Ubuntu 14.04
- Debian 7, 8
Zabbix 2.4
- CentOS 6.x, 7.x
- Amazon 6.x, 7.x
- RedHat 6.x, 7.x
- OracleLinux 6.x, 7.x
- Scientific Linux 6.x, 7.x
- Ubuntu 12.04 14.04
- Debian 7
Zabbix 2.2
- CentOS 5.x, 6.x
- RedHat 5.x, 6.x
- OracleLinux 5.x, 6.x
- Scientific Linux 5.x, 6.x
- Ubuntu 12.04
- Debian 7
- xenserver 6
Начало работы
Установка
Установка этой роли очень проста: ansible-galaxy install dj-wasabi.zabbix-agent
Это установит роль zabbix-agent в вашу директорию roles
.
Минимальная конфигурация
Чтобы запустить Zabbix Agent, вам нужно определить следующие свойства перед выполнением роли:
- zabbix_agent_version
- zabbix_agent_server
- zabbix_agent_serveractive (при использовании активных проверок)
zabbix_agent_version
является необязательным. На хосте будет установлена последняя доступная основная версия Zabbix. Если вы хотите использовать более старую версию, пожалуйста, укажите это в формате основная.минорная. Пример: zabbix_agent_version: 4.0
, zabbix_agent_version: 3.4
или zabbix_agent_version: 2.2
.
zabbix_agent_server
(и zabbix_agent_serveractive
) должно содержать IP-адрес или полное доменное имя хоста, на котором работает Zabbix Server.
Проблемы
Из-за проблемы, обсуждаемой в #291, версия Ansible 2.9.{0,1,2} некорректно работает на Windows.
Переменные роли
Основные переменные
Есть несколько переменных в default/main.yml, которые могут (или должны) быть переопределены:
zabbix_agent_server
: IP-адрес для zabbix-server или zabbix-proxy.zabbix_agent_serveractive
: IP-адрес для zabbix-server или zabbix-proxy для активных проверок.zabbix_agent_version
: Это версия zabbix. По умолчанию это 4.4, но может быть переопределена одной из версий, указанных в Версии Zabbix. Ранее использовалась переменнаяzabbix_version
, но она могла вызвать некоторые неудобства. Эта переменная сохраняется для обратной совместимости.zabbix_repo
: По умолчанию: zabbix- epel установить агент из репозитория EPEL
- zabbix (по умолчанию) установить агент из репозитория Zabbix
- другое установить агент из существующего или другого репозитория
zabbix_agent_listeninterface
: Интерфейс, на котором прослушивает zabbix-agent. Оставьте пустым для всех.zabbix_agent_package
: Название пакета zabbix-agent. По умолчанию:zabbix-agent
. В случае EPEL оно автоматически переименовывается.zabbix_sender_package
: Название пакета zabbix-sender. По умолчанию:zabbix-sender
. В случае EPEL оно автоматически переименовывается.zabbix_get_package
: Название пакета zabbix-get. По умолчанию:zabbix-get
. В случае EPEL оно автоматически переименовывается.zabbix_agent_package_state
: Если Zabbix-agent необходимо присутствовать или быть последним.zabbix_agent_interfaces
: Список, который настраивает интерфейсы, которые вы можете использовать при настройке через API.zabbix_selinux
: Включает политику SELinux, чтобы агент мог работать. По умолчанию: Ложь.zabbix_agent_userparameters
: Список названий и скриптов пользовательских параметров (если есть). Подробное описание представлено в разделе Развертывание пользовательских параметров. По умолчанию:[]
(пустой список).name
: Название пользовательского параметра (должно совпадать с именем файла шаблона пользовательского параметра)scripts_dir
: Имя директории ваших пользовательских скриптов
zabbix_agent_userparameters_templates_src
: указывает относительный путь (изtemplates/
), где ищут шаблоны пользовательских параметров.zabbix_agent_userparameters_scripts_src
: указывает относительный путь (изfiles/
), где ищут скрипты пользовательских параметров.zabbix_agent_allowroot
: Разрешить агенту работать от имени 'root'. 0 - не разрешать, 1 - разрешать.zabbix_agent_runas_user
: Понизить привилегии до конкретного, существующего пользователя в системе. Действует только если запущено от имени 'root', и AllowRoot отключен.zabbix_agent_become_on_localhost
: Установите вFalse
, если вам не нужно повышать привилегии на localhost для локальной установки пакетов через pip. По умолчанию: Truezabbix_install_pip_packages
: Установите вFalse
, если вы не хотите устанавливать необходимые пакеты pip. Полезно, если вы полностью контролируете свою среду. По умолчанию: Truezabbix_agent_apt_priority
: Добавить вес (Pin-Priority
) для репозитория APT.
Конфигурация для TLS
Эти переменные специфичны для Zabbix 3.0 и выше:
zabbix_agent_tlsconnect
: Как агент должен подключаться к серверу или прокси. Используется для активных проверок.Возможные значения:
- без шифрования
- psk
- cert
zabbix_agent_tlsaccept
: Какие входящие соединения следует принимать.Возможные значения:
- без шифрования
- psk
- cert
zabbix_agent_tlscafile
: Полный путь к файлу, содержащему корневые сертификаты CA для проверки сертификатов.zabbix_agent_tlscrlfile
: Полный путь к файлу, содержащему отозванные сертификаты.zabbix_agent_tlsservercertissuer
: Разрешенный издатель сертификата сервера.zabbix_agent_tlsservercertsubject
: Разрешенная тема сертификата сервера.zabbix_agent_tlscertfile
: Полный путь к файлу, содержащему сертификат агента или цепочку сертификатов.zabbix_agent_tlskeyfile
: Полный путь к файлу, содержащему закрытый ключ агента.zabbix_agent_tlspskidentity
: Уникальная строка, учитывающая регистр, используемая для идентификации заранее заданного ключа.zabbix_agent_tlspskidentity_file
: Полный путь к файлу, содержащему идентификатор заранее заданного ключа.zabbix_agent_tlspskfile
: Полный путь к файлу, содержащему заранее заданный ключ.zabbix_agent_tlspsk_secret
: Предварительно заданный секретный ключ, который должен быть помещен в файл, указанный вagent_tlspskfile
.zabbix_agent_tlspsk_auto
: Включает автоматическую генерацию и хранение индивидуальных заранее заданных ключей и идентификаторов на клиентах.
Переменные API Zabbix
Эти переменные должны быть переопределены, когда вы хотите использовать API Zabbix для автоматического создания или обновления хостов.
Конфигурация шифрования хостов будет настроена в соответствии с конфигурацией агента.
Когда zabbix_api_create_hostgroup
или zabbix_api_create_hosts
установлены в True
, на хосте, выполняющем Ansible плейбук, будет установлен модуль zabbix-api
для Python.
zabbix_url
: URL, по которому доступна веб-страница Zabbix. Пример: http://zabbix.example.comzabbix_api_http_user
: HTTP-имя пользователя для доступа к zabbix url с базовой аутентификацией.zabbix_api_http_password
: HTTP-пароль для доступа к zabbix url с базовой аутентификацией.zabbix_api_create_hosts
: Когда вы хотите включить API Zabbix для создания/удаления хоста. Это должно быть установлено вTrue
, если вы хотите использоватьzabbix_create_host
. По умолчанию:False
.zabbix_api_create_hostgroup
: Когда вы хотите включить API Zabbix для создания/удаления групп хостов. Это должно быть установлено вTrue
, если вы хотите использоватьzabbix_create_hostgroup
. По умолчанию:False
.zabbix_api_user
: Имя пользователя, имеющего доступ к API.zabbix_api_pass
: Пароль для пользователя, имеющего доступ к API.zabbix_create_hostgroup
: настоящее (по умолчанию), если группу хостов нужно создать, или отсутствует, если вы хотите ее удалить. Это работает только когдаzabbix_api_create_hostgroup
установлен вTrue
.zabbix_host_status
: включен (по умолчанию), когда хост под мониторингом, отключен - когда хост отключен от мониторинга.zabbix_create_host
: настоящее (по умолчанию), если хост нужно создать, или отсутствует, если вы хотите его удалить. Это работает только когдаzabbix_api_create_hosts
установлен вTrue
.zabbix_update_host
: да (по умолчанию), если хост должен быть обновлен, если он уже существует. Это работает только когдаzabbix_api_create_hosts
установлен вTrue
.zabbix_useuip
: 1, если подключение к zabbix-agent осуществляется по ip, 0 - для fqdn.zabbix_host_groups
: Список групп хостов, к которым принадлежит этот хост.zabbix_link_templates
: Список шаблонов, которые необходимо связать с этим хостом. Шаблоны должны существовать.zabbix_macros
: Список с macro_key и macro_value для создания макросов хоста.zabbix_inventory_mode
: Настройка режима инвентаризации Zabbix. Необходимо для формирования инвентарных данных, вручную при настройке хоста или автоматически, используя некоторые автоматические варианты. Это должно быть установлено вautomatic
, если вы хотите автоматически формировать инвентарные данные.zabbix_visible_hostname
: Настройка видимого имени Zabbix внутри веб-интерфейса Zabbix для узла.zabbix_validate_certs
: да (по умолчанию), если необходимо проверять сертификаты TLS API. Используйтенет
, если используются самоподписанные сертификаты.
Переменные Windows
ПРИМЕЧАНИЕ
Поддержка Windows осуществляется на основе "лучших усилий" (у меня нет возможности тестировать/проверять изменения на различных версиях Windows). PR, специфичные для Windows, практически сразу будут объединены, если кто-то сможет предоставить механизм тестирования Windows через Travis для запросов на изменение.
zabbix_version_long
: Долгая (major.minor.patch) версия агента Zabbix. Это будет использоваться для генерации ссылкиzabbix_win_download_link
и для обновления агента Zabbix, еслиzabbix_agent_package_state: latest
.zabbix_win_download_link
: URL для загрузкиwin.zip
файла.zabbix_win_install_dir
: Директория, в которой нужно установить Zabbix.zabbix_agent_win_logfile
: Полный путь к файлу журнала для агента Zabbix.zabbix_agent_win_include
: Директория, в которой хранятся специфичные для Zabbix конфигурационные файлы.zabbix_agent_win_svc_recovery
: Включает настройки автоматического восстановления службы агента Zabbix.
Переменные macOS
zabbix_version_long
: Долгая (major.minor.patch) версия агента Zabbix. Это будет использоваться для генерации ссылкиzabbix_mac_download_link
.zabbix_mac_download_link
: URL для загрузки файлаpkg
.
Переменные Docker
Когда вы не хотите устанавливать агент Zabbix на хосте, а хотите запустить его в контейнере, следующие параметры будут полезны. Когда zabbix_agent_docker
установлен в True
, будет загружен образ Docker и запущен контейнер. Никакие другие установки на хосте не будут выполнены, за исключением файла PSK и "Директории включения Zabbix".
Следующие директории монтируются в контейнер:
- /etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d
- /:/hostfs:ro
- /etc:/hostfs/etc:ro
- /proc:/hostfs/proc:ro
- /sys:/hostfs/sys:ro
- /var/run:/var/run
Имейте в виду, что использование агента Zabbix в контейнере требует изменений в шаблоне Zabbix для Linux, так как /proc
, /sys
и /etc
монтируются в директорию /hostfs
.
zabbix_agent_docker
: Когда установлено вTrue
, он будет установливать контейнер Docker на целевом хосте, а не устанавливать на целевом. По умолчанию:False
.zabbix_agent_docker_state
: По умолчанию:started
.zabbix_agent_docker_name
: Имя контейнера. По умолчанию:zabbix-agent
.zabbix_agent_docker_image
: Имя образа Docker. По умолчанию:zabbix/zabbix-agent
.zabbix_agent_docker_image_tag
: Тег образа Docker.zabbix_agent_docker_user_gid
: Идентификатор группы пользователя zabbix в контейнере.zabbix_agent_docker_user_uid
: Идентификатор пользователя zabbix в контейнере.zabbix_agent_docker_network_mode
: Название (Docker) сети, которая должна использоваться для контейнера. По умолчаниюhost
.zabbix_agent_docker_restart_policy
: Политика перезапуска контейнера. По умолчанию:unless-stopped
.zabbix_agent_docker_privileged
: Когда установлено вTrue
, контейнер работает в привилегированном режиме.zabbix_agent_docker_ports
: Список значений<PORT>:<PORT>
, чтобы открыть порты для контейнера.zabbix_agent_docker_security_opts
: Список доступных параметров безопасности.zabbix_agent_docker_volumes
: Список всех директорий, которые должны быть доступны в контейнере.zabbix_agent_docker_env
: Словарь со всеми переменными окружения, которые нужно установить для контейнера.
Другие переменные
zabbix_agent_firewall_enable
: Нужно ли обновить IPtables, открыв TCP-порт для порта, указанного вzabbix_agent_listenport
.zabbix_agent_firewall_source
: Когда указано, IPtables будет настроен для разрешения трафика только с этого IP-адреса/диапазона.zabbix_agent_firewalld_enable
: Нужно ли обновить firewalld, открыв TCP-порт для порта, указанного вzabbix_agent_listenport
иzabbix_agent_jmx_listenport
, если он определен.zabbix_agent_firewalld_source
: Когда указано, firewalld будет настроен на разрешение трафика только для IP, указанного вzabbix_agent_server
.zabbix_agent_firewalld_zone
: Когда указано, правило firewalld будет прикреплено к этой зоне (только еслиzabbix_agent_firewalld_enable
установлен в true). Поведение по умолчанию - использовать зону по умолчанию, определенную конфигурацией firewalld удаленного хоста.zabbix_agent_firewall_action
: Когда добавлять правило или добавлять в IPTables. По умолчанию:insert
.zabbix_agent_firewall_chain
: В какуюцепочку
добавить правило в IPTables. По умолчаниюINPUT
.zabbix_agent_description
: Описание хоста в Zabbix.zabbix_agent_inventory_zabbix
: Добавляет факты в инвентарь Zabbix.
Переменные IPMI
zabbix_agent_ipmi_authtype
: Алгоритм аутентификации IPMI. Возможные значения: 1 (callback), 2 (user), 3 (operator), 4 (admin), 5 (OEM), при этом 2 является значением по умолчанию API.zabbix_agent_ipmi_password
: Пароль IPMI.zabbix_agent_ipmi_privilege
: Уровень привилегий IPMI. Возможные значения: 1 (callback), 2 (user), 3 (operator), 4 (admin), 5 (OEM), при этом 2 является значением по умолчанию API.zabbix_agent_ipmi_username
: Имя пользователя IPMI.
прокси
Когда целевой хост не имеет доступа к интернету, но у вас есть доступ к прокси, тогда нужно установить следующие параметры, чтобы загружать пакеты через прокси:
zabbix_http_proxy
zabbix_https_proxy
Зависимости
Зависимостей от других ролей нет.
Пример плейбука
agent_interfaces
Это настроит интерфейс агента Zabbix на хосте.
zabbix_agent_interfaces:
- type: 1
main: 1
useip: "{{ zabbix_useuip }}"
ip: "{{ zabbix_agent_ip }}"
dns: "{{ ansible_fqdn }}"
port: "{{ zabbix_agent_listenport }}"
Другие интерфейсы
Вы также можете настроить zabbix_agent_interfaces
, чтобы добавить/настроить интерфейсы snmp, jmx и ipmi.
Вам нужно использовать один из следующих номеров типа при конфигурации:
Тип интерфейса | Nr |
---|---|
Zabbix Agent | 1 |
snmp | 2 |
ipmi | 3 |
jmx | 4 |
Настройка интерфейса snmp будет выглядеть так:
zabbix_agent_interfaces:
- type: 2
main: 1
useip: "{{ zabbix_useuip }}"
ip: "{{ agent_ip }}"
dns: "{{ ansible_fqdn }}"
port: "{{ agent_listenport }}"
Переменные в конфигурации роли
Включение примера того, как использовать вашу роль (например, с переменными, переданными в качестве параметров), также приятно для пользователей:
- hosts: all
roles:
- role: dj-wasabi.zabbix-agent
zabbix_agent_server: 192.168.33.30
zabbix_agent_serveractive: 192.168.33.30
zabbix_url: http://zabbix.example.com
zabbix_api_use: true # используйте zabbix_api_create_hosts и/или zabbix_api_create_hostgroup начиная с 0.8.0
zabbix_api_user: Admin
zabbix_api_pass: zabbix
zabbix_create_host: present
zabbix_host_groups:
- Linux Servers
zabbix_link_templates:
- Template OS Linux
- Apache APP Template
zabbix_macros:
- macro_key: apache_type
macro_value: reverse_proxy
Комбинация group_vars и плейбука
Вы также можете использовать файлы group_vars или host_vars для установки переменных, необходимых для этой роли. Файл, который нужно изменить: group_vars/all
или host_vars/<zabbix_server>
(где
zabbix_agent_server: 192.168.33.30
zabbix_agent_serveractive: 192.168.33.30
zabbix_url: http://zabbix.example.com
zabbix_api_use: true # используйте zabbix_api_create_hosts и/или zabbix_api_create_hostgroup начиная с 0.8.0
zabbix_api_user: Admin
zabbix_api_pass: zabbix
zabbix_create_host: present
zabbix_host_groups:
- Linux Servers
zabbix_link_templates:
- Template OS Linux
- Apache APP Template
zabbix_macros:
- macro_key: apache_type
macro_value: reverse_proxy
И в плейбуке только указывать:
- hosts: all
roles:
- role: dj-wasabi.zabbix-agent
Пример связи агента с зашифрованным TLS PSK
Переменные, например, в плейбуке или в host_vars/myhost
:
zabbix_agent_tlsaccept: psk
zabbix_agent_tlsconnect: psk
zabbix_agent_tlspskidentity: "myhost PSK"
zabbix_agent_tlspsk_secret: b7e3d380b9d400676d47198ecf3592ccd4795a59668aa2ade29f0003abbbd40d
zabbix_agent_tlspskfile: /etc/zabbix/zabbix_agent_pskfile.psk
Molecule
Эта роль настроена для тестирования с Molecule. Вы можете найти на этой странице немного больше информации о Molecule: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/
С каждым Pull Request будет выполняться Molecule через travis.ci. Запросы на изменение будут объединяться только после успешного выполнения этих тестов.
Есть 2 сценария, которые выполняются с Travis.
по умолчанию
В первом сценарии Molecule запустит 5 контейнеров Docker с следующими операционными системами:
- Debian 8
- CentOS 7
- Ubuntu 16.04
- Ubuntu 18.04
- Mint
Этот сценарий будет выполнять базовую установку/конфигурацию, не регистрируя хост через API Zabbix на сервере.
с-сервером
Во втором сценарии будет запущено 4 контейнера Docker с следующими операционными системами:
- CentOS 7 (Zabbix Server)
- Debian 8
- CentOS 7
- Ubuntu 18.04
Сначала на одном контейнере будет установлен Zabbix Server. Эта установка использует другие роли dj-wasabi для установки/настройки Zabbix Server. Как только этот экземпляр запустится, на трех других агентах будет выполнена установка.
Каждый хост зарегистрирует себя на Zabbix Server, и статус должен быть 0 (это означает, что Zabbix Server и Zabbix Agent подключены).
Агент Ubuntu зарегистрирует себя через PSK, чтобы связь между Zabbix Server и Zabbix Agent была зашифрована с помощью заранее заданного ключа.
перед-предыдущей-версией
Третий и последний сценарий - перед-предыдущей-версией
. Это тот же самый сценарий, что и по умолчанию
, но использует предыдущую версию Zabbix.
Развертывание пользовательских параметров
Следующие шаги необходимы для установки пользовательских параметров и/или скриптов:
- Поместите файл желаемого пользовательского параметра в директорию
templates/userparameters
и назовите его как<userparameter_name>.j2
. Например:templates/userparameters/mysql.j2
. Вы можете изменить директорию по умолчанию на произвольную, изменив переменнуюzabbix_agent_userparameters_templates_src
. - Поместите директорию со скриптами (если есть) в директорию
files/scripts
. Например:files/scripts/mysql
. Вы можете изменить директорию по умолчанию на произвольную, изменив переменнуюzabbix_agent_userparameters_scripts_src
. - Добавьте переменную
zabbix_agent_userparameters
в плейбук как список словарей и определите имя пользовательского параметра и имя директории скриптов (если скриптов нет, просто не указывайте переменнуюscripts_dir
).
Пример:
- hosts: mysql_servers
tasks:
- include_role:
name: dj-wasabi.zabbix-agent
vars:
zabbix_agent_server: zabbix.mydomain.com
zabbix_agent_userparameters:
- name: mysql
scripts_dir: mysql
- name: galera
Пример файла "templates/userparameters/mysql.j2":
UserParameter=mysql.ping_to,mysqladmin -uroot ping | grep -c alive
Лицензия
MIT
Информация об авторе
Пожалуйста, отправляйте предложения или запросы на изменение, чтобы улучшить эту роль. Также дайте мне знать, если вы столкнетесь с какими-либо проблемами при установке или использовании этой роли.
Github: https://github.com/dj-wasabi/ansible-zabbix-agent
email: ikben [ at ] werner-dijkerman . nl
Installing and maintaining zabbix-agent for RedHat/Debian/Ubuntu/Windows/Suse.
ansible-galaxy install dj-wasabi/ansible-zabbix-agent