dj-wasabi.zabbix-agent

目录

概述

该角色已迁移至:https://github.com/ansible-collections/community.zabbix/ 在此存储库中,将为无法使用集合的人提供只读版本。更改/更新将仅应用于集合,而不会在此存储库中应用。

要求

操作系统

该角色支持以下操作系统:

  • Red Hat
  • Fedora
  • Debian
  • Ubuntu
  • opensuse
  • Windows(最佳努力)
  • macOS

因此,您需要这些操作系统中的一个。:-) 如果您想将此角色用于其他操作系统,请发送拉取请求或建议。

本地系统访问

为了成功安装,该角色需要在控制器上安装python-netaddr,以便能够管理IP地址。这要求您的本地计算机上可用该库(或者安装了pip以便能够运行)。这通常意味着运行该角色需要对本地计算机的sudo访问,因此如果您不是以root身份运行,您可能需要-K标志以输入本地计算机的密码。

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.0zabbix_agent_version: 3.4zabbix_agent_version: 2.2

zabbix_agent_server(和zabbix_agent_serveractive)应包含运行Zabbix服务器的主机的IP或FQDN。

问题

根据 #291 中讨论的问题,Ansible版本 2.9.{0,1,2} 在与Windows相关的目标上工作不正常。

角色变量

主要变量

在default/main.yml中有一些变量可以(或需要)被覆盖:

  • zabbix_agent_server:指向zabbix-server或zabbix-proxy的IP地址。

  • zabbix_agent_serveractive:指向进行主动检查的zabbix-server或zabbix-proxy的IP地址。

  • zabbix_agent_version:这是Zabbix的版本。默认值为4.4,但可以覆盖为Zabbix版本中提到的某个版本。以前直接使用zabbix_version变量,但可能会导致一些不便。该变量由向后兼容性维护。

  • zabbix_repo:默认值: zabbix

    • epel 从EPEL仓库安装代理
    • _zabbix_(默认)从Zabbix仓库安装代理
    • other 从现有或其他仓库安装代理
  • zabbix_agent_listeninterface:代理监听的接口。留空表示所有。

  • zabbix_agent_package:Zabbix代理软件包的名称。默认值:zabbix-agent。对于EPEL,它会自动重命名。

  • zabbix_sender_package:Zabbix发送器软件包的名称。默认值:zabbix-sender。对于EPEL,它会自动重命名。

  • zabbix_get_package:Zabbix获取软件包的名称。默认值:zabbix-get。对于EPEL,它会自动重命名。

  • zabbix_agent_package_state:Zabbix代理是否需要存在或更新到最新版本。

  • zabbix_agent_interfaces:配置通过API时可以使用的接口列表。

  • zabbix_selinux:启用SELinux策略,以便代理可以运行。默认:False。

  • 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:如果不需要在localhost上提升权限以使用pip本地安装软件包,请设置为False。默认:True

  • zabbix_install_pip_packages:如果不希望安装所需的pip包,请设置为False。在完全控制环境时很有用。默认:True

  • zabbix_agent_apt_priority:为APT仓库添加权重(Pin-Priority)。

TLS特定配置

这些变量适用于Zabbix 3.0及更高版本:

  • zabbix_agent_tlsconnect:代理如何连接到服务器或代理。用于主动检查。

    可能的值:

    • unencrypted
    • psk
    • cert
  • zabbix_agent_tlsaccept:接受哪些传入连接。

    可能的值:

    • unencrypted
    • 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:启用在客户端上自动生成和存储个别共享密钥和身份。

Zabbix API变量

当您希望利用zabbix-api自动创建和/或更新主机时,需要覆盖这些变量。

主机加密配置将与代理配置匹配。

zabbix_api_create_hostgroupzabbix_api_create_hosts设置为True时,将在执行Ansible剧本的主机上安装zabbix-api Python模块。

  • zabbix_url:Zabbix网页可用的URL。例如:http://zabbix.example.com

  • zabbix_api_http_user:用于使用基本身份验证访问Zabbix URL的HTTP用户

  • zabbix_api_http_password:用于访问Zabbix URL的HTTP密码,使用基本身份验证

  • zabbix_api_create_hosts:当您希望启用Zabbix API来创建/删除主机时。如果希望使用zabbix_create_host,则必须将其设置为True。默认:False

  • zabbix_api_create_hostgroup:当您希望启用Zabbix API来创建/删除主机组时。如果希望使用zabbix_create_hostgroup,则必须将其设置为True。默认:False

  • zabbix_api_user:具有API访问权限的用户的用户名。

  • zabbix_api_pass:具有API访问权限的用户的密码。

  • zabbix_create_hostgroup:如果需要创建主机组,则为present(默认值);如果要删除,则为absent。仅当zabbix_api_create_hostgroup设置为True时有效。

  • zabbix_host_status:当主机被监控时为enabled(默认值),当主机被禁用监控时为disabled。

  • zabbix_create_host:如果需要创建主机则为present(默认值);如果要删除,则为absent。仅当zabbix_api_create_hosts设置为True时有效。

  • zabbix_update_host:如果主机已经存在,则为yes(默认值)。仅当zabbix_api_create_hosts设置为True时有效。

  • zabbix_useuip:如果通过IP连接到zabbix-agent,则为1;如果通过fqdn,则为0。

  • zabbix_host_groups:该主机所属的主机组列表。

  • zabbix_link_templates:需要链接到该主机的模板列表。这些模板应存在。

  • zabbix_macros:带有macro_key和macro_value的列表,用于创建主机宏。

  • zabbix_inventory_mode:配置Zabbix库存模式。构建库存数据时所需,无论是在手动配置主机时还是通过某些自动填充选项时。若要自动构建库存数据,必须设置为automatic

  • zabbix_visible_hostname:配置在Zabbix网页UI中该节点的可见名称。

  • zabbix_validate_certs:如果需要验证API的TLS证书,则为yes(默认值)。如果使用自签名证书,则使用no。

Windows变量

注意

对Windows的支持是最佳努力(我无法在各种可用的Windows实例上测试/验证更改)。针对Windows的PR将几乎立即合并,除非有人能够通过Travis为拉取请求提供Windows测试机制。

  • zabbix_version_long:Zabbix代理的长(major.minor.patch)版本。这将用于生成zabbix_win_download_link链接,并在zabbix_agent_package_state: latest时用于Zabbix代理更新。

  • zabbix_win_download_link:指向win.zip文件的下载URL。

  • 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:Zabbix代理的长(major.minor.patch)版本。这将用于生成zabbix_mac_download_link链接。

  • zabbix_mac_download_link:指向pkg文件的下载URL。

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用户的组ID。

  • zabbix_agent_docker_user_uid:容器内Zabbix用户的用户ID。

  • 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:如果需要通过打开TCP端口来更新Iptables以配置在zabbix_agent_listenport中定义的端口。

  • zabbix_agent_firewall_source:提供时,Iptables将配置为仅允许来自该IP地址/范围的流量。

  • zabbix_agent_firewalld_enable:如果需要通过打开TCP端口对zabbix_agent_listenportzabbix_agent_jmx_listenport(如果定义了)更新firewalld。

  • zabbix_agent_firewalld_source:提供时,firewalld将配置以仅允许来自配置在zabbix_agent_server中的IP的流量。

  • zabbix_agent_firewalld_zone:提供时,将firewalld规则附加到该区域(仅在zabbix_agent_firewalld_enable设置为true时)。默认行为是使用远程主机firewalld配置定义的默认区域。

  • zabbix_agent_firewall_action:何时insert规则或append到Iptables。默认:insert

  • zabbix_agent_firewall_chain:将规则添加到Iptables的哪个chain。默认INPUT

  • zabbix_agent_description:Zabbix中主机的描述。

  • zabbix_agent_inventory_zabbix:为Zabbix库存添加事实。

IPMI变量

  • zabbix_agent_ipmi_authtype:IPMI身份验证算法。可能的值为1(回调)、2(用户)、3(操作员)、4(管理员)、5(OEM),其中2为API默认值。

  • zabbix_agent_ipmi_password:IPMI密码。

  • zabbix_agent_ipmi_privilege:IPMI特权级别。可能的值为1(回调)、2(用户)、3(操作员)、4(管理员)、5(OEM),其中2为API默认值。

  • zabbix_agent_ipmi_username:IPMI用户名。

代理

当目标主机无法访问互联网,但您可以使用代理时,以下属性需要配置,以便通过代理下载软件包:

  • zabbix_http_proxy
  • zabbix_https_proxy

依赖

该角色没有对其他角色的依赖。

示例剧本

代理接口

这将在主机上配置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接口。

在配置时,您必须使用以下类型号之一:

接口类型 编号
Zabbix代理 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服务器
       zabbix_link_templates:
         - Linux操作系统模板
         - Apache应用程序模板
       zabbix_macros:
         - macro_key: apache_type
           macro_value: reverse_proxy

组变量和剧本的组合

您还可以使用group_vars或host_vars文件设置该角色所需的变量。您应该更改的文件:group_vars/allhost_vars/<zabbix_server>(其中是运行Zabbix服务器的机器的主机名)

    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服务器
    zabbix_link_templates:
      - Linux操作系统模板
      - Apache应用程序模板
    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/

每次提交拉取请求时,Molecule将通过travis.ci执行。仅当这些测试成功运行时,拉取请求才会被合并。

有两个场景将在Travis中执行。

默认

第一个场景将启动5个运行以下操作系统的Docker容器:

  • Debian 8
  • CentOS 7
  • Ubuntu 16.04
  • Ubuntu 18.04
  • Mint

这个场景将进行基本的安装/配置,而不通过Zabbix API注册主机到服务器。

带服务器

第二个场景将启动4个运行以下操作系统的Docker容器:

  • CentOS 7(Zabbix服务器)
  • Debian 8
  • CentOS 7
  • Ubuntu 18.04

首先,将在一个容器中安装Zabbix服务器。此安装使用其他dj-wasabi角色来安装/配置Zabbix服务器。一旦该实例运行,另外三个代理将被安装。

每个主机将自己注册到Zabbix服务器,状态应为0(这意味着Zabbix服务器和Zabbix代理已连接)。

Ubuntu代理将通过PSK进行自我注册,从而使Zabbix服务器和Zabbix代理之间的通信通过预共享密钥进行加密。

以前的版本

第三个也是最后一个场景是before-last-version。此场景与默认相同,但使用之前的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

邮箱:ikben [ at ] werner-dijkerman . nl

关于项目

Installing and maintaining zabbix-agent for RedHat/Debian/Ubuntu/Windows/Suse.

安装
ansible-galaxy install dj-wasabi.zabbix-agent
许可证
mit
下载
4.2M
拥有者
DevOps Engineer, Technical reviewer Packt Pub / Manning / BPB Online / O'Reilly Media