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.0,zabbix_agent_version: 3.4或zabbix_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。默认:Truezabbix_install_pip_packages:如果不希望安装所需的pip包,请设置为False。在完全控制环境时很有用。默认:Truezabbix_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_hostgroup或zabbix_api_create_hosts设置为True时,将在执行Ansible剧本的主机上安装zabbix-api Python模块。
zabbix_url:Zabbix网页可用的URL。例如:http://zabbix.example.comzabbix_api_http_user:用于使用基本身份验证访问Zabbix URL的HTTP用户zabbix_api_http_password:用于访问Zabbix URL的HTTP密码,使用基本身份验证zabbix_api_create_hosts:当您希望启用Zabbix API来创建/删除主机时。如果希望使用zabbix_create_host,则必须将其设置为True。默认:Falsezabbix_api_create_hostgroup:当您希望启用Zabbix API来创建/删除主机组时。如果希望使用zabbix_create_hostgroup,则必须将其设置为True。默认:Falsezabbix_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容器,而不是在目标上安装。默认:Falsezabbix_agent_docker_state:默认:startedzabbix_agent_docker_name:容器的名称。默认:zabbix-agentzabbix_agent_docker_image:Docker映像的名称。默认:zabbix/zabbix-agentzabbix_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-stoppedzabbix_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_listenport和zabbix_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。默认INPUTzabbix_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_proxyzabbix_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/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服务器
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