community.zabbix.zabbix_service 模块 – 创建/更新/删除 Zabbix 服务

注意

此模块是 community.zabbix 集合(版本 3.2.0)的一部分。

如果您使用的是 ansible 包,您可能已经安装了此集合。 它不包含在 ansible-core 中。 要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.zabbix。 您需要进一步的要求才能使用此模块,请参阅要求 了解详细信息。

要在 playbook 中使用它,请指定:community.zabbix.zabbix_service

概要

  • 创建/更新/删除 Zabbix 服务。

要求

执行此模块的主机需要满足以下要求。

  • python >= 3.9

参数

参数

注释

算法

字符串

状态计算规则。 仅当存在子服务时适用。

  • status_to_ok,设置状态为 OK,如果

  • most_crit_if_all_children,如果所有子项都有问题,则为最严重

  • most_crit_of_child_serv,子服务中最严重

选择

  • "status_to_ok" ←(默认)

  • "most_crit_if_all_children"

  • "most_crit_of_child_serv"

子项

列表 / 元素=字符串

要链接到该服务的子服务。

描述

字符串

服务的描述。

http_login_password

字符串

基本身份验证密码

http_login_user

字符串

基本身份验证登录名

名称

字符串 / 必需

Zabbix 服务的名称

父项

列表 / 元素=字符串

要链接到该服务的父服务。

问题标签

列表 / 元素=字典

要为服务创建的问题标签。

运算符

字符串

映射条件运算符。

等于

类似

选择

  • "equals" ←(默认)

  • "like"

标签

字符串 / 必需

问题标签名称。

字符串

问题标签值。

默认值: ""

传播规则

字符串

状态传播值。 必须与 propagation_rule 一起设置。

as_is 按原样传播服务状态 - 不做任何更改

increase 将传播的状态增加给定的 propagation_value(按 1 到 5 个严重级别)

decrease 将传播的状态减少给定的 propagation_value(按 1 到 5 个严重级别)

ignore 忽略此服务 - 状态根本不传播到父服务

fixed 使用给定的 propagation_value 设置固定的服务状态

propagation_value 时为必需

默认值: "as_is"

传播值

字符串

状态传播值。 必须与 propagation_rule 一起设置。

propagation_rule=as_is 或 ignore 时的可能值

  • 未分类

propagation_rule=increase 或 decrease 时的可能值

  • 信息

  • 警告

  • 平均

  • 灾难

propagation_rule=fixed 时的可能值

  • 确定

  • 未分类

  • 信息

  • 警告

  • 平均

  • 灾难

propagation_rule 时为必需

排序顺序

字符串 / 必需

用于排序的服务位置。

状态

字符串

状态:present - 创建/更新服务; absent - 删除服务。

选择

  • "present" ←(默认)

  • "absent"

状态规则

列表 / 元素=字典

服务的状态规则。

限制状态

字符串 / 必需

限制状态。

ok 确定

not_classified 未分类

information 信息

warning 警告

average 平均

high

disaster 灾难

limit_value

integer / required

限制值:N、N% 或 W

可能的值:N 和 W 为 1-100000,N% 为 1-100

new_status

字符串 / 必需

新的状态值。

not_classified 未分类

information 信息

warning 警告

average 平均

high

disaster 灾难

type

字符串 / 必需

设置(新状态)状态的条件。

at_least_n_child_services_have_status_or_above 如果至少 (N) 个子服务具有 (Status) 状态或更高

at_least_npct_child_services_have_status_or_above 如果至少 (N%) 的子服务具有 (Status) 状态或更高

less_than_n_child_services_have_status_or_below 如果少于 (N) 个子服务具有 (Status) 状态或更低

less_than_npct_child_services_have_status_or_below 如果少于 (N%) 的子服务具有 (Status) 状态或更低

weight_child_services_with_status_or_above_at_least_w 如果具有 (Status) 状态或更高的子服务的权重至少为 (W)

weight_child_services_with_status_or_above_at_least_npct 如果具有 (Status) 状态或更高的子服务的权重至少为 (N%)

weight_child_services_with_status_or_below_less_w 如果具有 (Status) 状态或更低的子服务的权重小于 (W)

weight_child_services_with_status_or_below_less_npct 如果具有 (Status) 状态或更低的子服务的权重小于 (N%)

tags

列表 / 元素=字典

要为服务创建的服务标签。

标签

字符串 / 必需

服务标签名称。

字符串

服务标签值。

weight

字符串

服务权重。

默认值: "0"

示例

---
# If you want to use Username and Password to be authenticated by Zabbix Server
- name: Set credentials to access Zabbix Server API
  ansible.builtin.set_fact:
    ansible_user: Admin
    ansible_httpapi_pass: zabbix

# If you want to use API token to be authenticated by Zabbix Server
# https://www.zabbix.com/documentation/current/en/manual/web_interface/frontend_sections/administration/general#api-tokens
- name: Set API token
  ansible.builtin.set_fact:
    ansible_zabbix_auth_key: 8ec0d52432c15c91fcafe9888500cf9a607f44091ab554dbee860f6b44fac895

# Creates a new Zabbix service
- name: Create Zabbix service monitoring Apache2 in DCs in Toronto area
  # set task level variables
  vars:
    ansible_network_os: community.zabbix.zabbix
    ansible_connection: httpapi
    ansible_httpapi_port: 443
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_zabbix_url_path: "zabbixeu"  # If Zabbix WebUI runs on non-default (zabbix) path ,e.g. http://<FQDN>/zabbixeu
    ansible_host: zabbix-example-fqdn.org
  community.zabbix.zabbix_service:
    name: "apache2 service Toronto"
    description: Apache2 services in Toronto area
    sortorder: 0
    propagation_rule: increase
    propagation_value: warning
    weight: 1
    state: present
    tags:
      - tag: zabbix_service
        value: apache2
      - tag: area
        value: Toronto
    problem_tags:
      - tag: service_name
        value: httpd
      - tag: area
        operator: like
        value: toronto
    status_rules:
      - type: at_least_n_child_services_have_status_or_above
        limit_value: 4242
        limit_status: ok
        new_status: average

- name: Create Zabbix service monitoring all Apache2 services
  # set task level variables as we change ansible_connection plugin here
  vars:
    ansible_network_os: community.zabbix.zabbix
    ansible_connection: httpapi
    ansible_httpapi_port: 443
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_zabbix_url_path: "zabbixeu"  # If Zabbix WebUI runs on non-default (zabbix) path ,e.g. http://<FQDN>/zabbixeu
    ansible_host: zabbix-example-fqdn.org
  community.zabbix.zabbix_service:
    name: apache2 service
    description: Apache2 services
    tags:
      - tag: zabbix_service
        value: apache2
      - tag: area
        value: global
    children:
      - "apache2 service Toronto"

作者

  • Emmanuel Riviere (@emriver)

  • Evgeny Yurchenko (@BGmot)