[comment]: # attributes: notoc

[comment]: # ({a6162aaf-be4ab03d})
# 2 简单检查

[comment]: # ({/a6162aaf-be4ab03d})

[comment]: # ({d5cd9560-76023448})
#### 概述

简单检查通常用于对服务进行远程的无 agent 检查。

请注意，简单检查不需要 Zabbix agent。Zabbix
服务器/proxy 负责处理简单检查（建立外部连接等）。

使用简单检查的示例：

    net.tcp.service[ftp,,155]
    net.tcp.service[http]
    net.tcp.service.perf[http,,8080]
    net.udp.service.perf[ntp]

::: noteclassic
简单检查监控项配置中的 *User name* 和 *Password* 字段（限制为 255 个字符）用于 VMware 监控项；在其他情况下将被忽略。
:::

[comment]: # ({/d5cd9560-76023448})

[comment]: # ({eeaded49-f59a5ccc})
#### 支持的检查

以下列出了不含可选参数和附加信息的监控项键。点击监控项键可查看完整详情。

另请参见 [VMware 监控项键](/manual/vm_monitoring/vmware_keys)。

|监控项键|描述|
|--|--------|
|[icmpping](#icmpping)|通过 ICMP ping 检查主机可达性。|
|[icmppingloss](#icmppingloss)|丢包百分比。|
|[icmppingretry](#icmppingretry)|通过带重试的 ICMP ping 检查主机可达性。|
|[icmppingsec](#icmppingsec)|ICMP ping 响应时间。|
|[net.tcp.service](#nettcpservice)|检查服务是否正在运行并接受 TCP 连接。|
|[net.tcp.service.perf](#nettcpserviceperf)|检查 TCP 服务的性能。|
|[net.udp.service](#netudpservice)|检查服务是否正在运行并响应 UDP 请求。|
|[net.udp.service.perf](#netudpserviceperf)|检查 UDP 服务的性能。|

[comment]: # ({/eeaded49-f59a5ccc})

[comment]: # ({99bf7f73-23d7246f})
#### 监控项键值详情

不带尖括号的参数为必填参数。带有尖括号 **<** **>** 标记的参数为可选参数。

[comment]: # ({/99bf7f73-23d7246f})

[comment]: # ({52d234e4-7d8dff2e})

##### icmpping\[<target>,<packets>,<interval>,<size>,<timeout>,<options>\] {#icmpping}

<br>
ICMP ping 的主机可访问性。<br>
返回值：*0* - ICMP ping 失败；*1* - ICMP ping 成功。

参数:

-   **target** - 主机 IP 或 DNS 名称;
-   **packets** - 数据包数量;
-   **interval** - 连续数据包之间的时间（以毫秒为单位）;
-   **size** - 数据包大小（以字节为单位）;
-   **timeout** - 超时（以毫秒为单位）;
-   **options** - 用于允许重定向：如果为空（默认值），则重定向响应被视为目标主机关闭；如果设置为 *allow_redirect*，则重定向响应被视为目标主机启动。

另请参阅 [默认值](#default-values) 表。

示例：

    icmpping[,4] #If at least one packet of the four is returned, the item will return 1.

[comment]: # ({/52d234e4-7d8dff2e})

[comment]: # ({1976ee61-6cd0f1b1})

##### icmppingloss\[<target>,<packets>,<interval>,<size>,<timeout>,<options>\] {#icmppingloss}

<br>
丢失数据包的百分比。<br>
返回值：*浮点数*。

参数：

- **target** - 主机 IP 或 DNS 名称；
- **packets** - 数据包数量；
- **interval** - 连续数据包之间的时间（以毫秒为单位）；
- **size** - 数据包大小（以字节为单位）；
- **timeout** - 超时（以毫秒为单位）；
- **options** - 用于允许重定向：如果为空（默认值），则重定向响应被视为目标主机关闭；如果设置为 *allow_redirect*，则重定向响应被视为目标主机启动。

另请参阅 [默认值](#default-values) 表。

[comment]: # ({/1976ee61-6cd0f1b1})

[comment]: # ({1f834525-a7b509ca})
##### icmppingretry\[<target>,<retries>,<backoff>,<size>,<timeout>,<options>\] {#icmppingretry}

<br>
通过带重试的 ICMP ping 检查主机可达性。如果第一个数据包成功，则停止；如果数据包失败，则重试，直到达到 `retries` 参数定义的最大尝试次数。此监控项有助于减少通过网络发送的数据包数量。<br>
返回值：*0* - ICMP ping 失败；*1* - ICMP ping 成功。

参数：

-   **target** - 主机 IP 或 DNS 名称；
-   **retries** - 对目标执行 ping 尝试的次数，不包括第一次尝试（0 或更大；默认值为 1）；
-   **backoff** - 每次后续请求中等待时间的乘数（范围为 1.0-5.0；默认值为 1.0）；
-   **size** - 数据包大小（字节）；
-   **timeout** - 超时时间（毫秒）；
-   **options** - 用于允许重定向：如果为空（默认值），则重定向响应会被视为目标主机不可用；如果设置为 *allow_redirect*，则重定向响应会被视为目标主机可用。

另请参见[默认值](#default-values)表。

[comment]: # ({/1f834525-a7b509ca})

[comment]: # ({5c6701a7-b5636838})

##### icmppingsec\[<target>,<packets>,<interval>,<size>,<timeout>,<mode>,<options>\] {#icmppingsec}

<br>
ICMP ping 响应时间（以秒为单位）。<br>
返回值：*Float*。

参数：

- **target** - 主机 IP 或 DNS 名称；
- **packets** - 数据包数量；
- **interval** - 连续数据包之间的时间（以毫秒为单位）；
- **size** - 数据包大小（以字节为单位）；
- **timeout** - 超时（以毫秒为单位）；
- **mode** - 可能的值：*min*、*max* 或 *avg*（默认）；
- **options** - 用于允许重定向：如果为空（默认值），则重定向响应将被视为目标主机已关闭；如果设置为 *allow_redirect*，则重定向响应将被视为目标主机已启动。

注释：

- 丢失或超时的数据包不用于计算；
- 如果主机不可用（已达到超时），则该监控项将返回 0；
- 如果返回值小于 0.0001 秒，则该值将设置为 0.0001 秒；
- 另请参阅 [默认值](#default-values) 表。

[comment]: # ({/5c6701a7-b5636838})

[comment]: # ({878d3b27-b0a71170})
##### net.tcp.service[service,<ip>,<port>] {#nettcpservice}

<br>
检查某个服务是否正在运行并接受 TCP 连接。<br>
返回值：*0* - 服务不可用；*1* - 服务正在运行。

参数：

-   **service** - 可选值：*ssh*、*ldap*、*smtp*、*ftp*、*http*、*pop*、*nntp*、*imap*、*tcp*、*https*、*telnet*（参见[详细信息](/manual/appendix/items/service_check_details)）；
-   **ip** - IP 地址或 DNS 名称（默认使用主机 IP/DNS）；
-   **port** - 端口号（默认使用标准服务端口号）。

注释：

-   请注意，当 *tcp* 作为服务类型时，必须指定端口；
-   这些检查可能会在系统守护进程日志文件中产生额外消息（通常会记录 SMTP 和 SSH 会话）；
-   当前不支持对加密协议的检查（例如使用 993 端口的 IMAP 或使用 995 端口的 POP）。作为变通方法，请对此类检查使用 `net.tcp.service[tcp,<ip>,port]`。

示例：

    net.tcp.service[ftp,,45] #此监控项可用于测试 TCP 45 端口上 FTP 服务器的可用性。

::: noteimportant
如果 SELinux 以 enforced 模式运行，自定义 TCP/UDP 简单检查可能会被策略阻止。要验证并允许新的出站连接，请查看审计拒绝记录：使用 ``grep denied /var/log/audit/audit.log``
:::

[comment]: # ({/878d3b27-b0a71170})

[comment]: # ({39da67f1-946385b4})

##### net.tcp.service.perf[service,<ip>,<port>] {#nettcpserviceperf}

<br>
检查 TCP 服务的性能。<br> 
返回值：*Float*：*0.000000* - 服务已关闭；*seconds* - 连接到服务所花费的秒数。

参数：

- **service** - 可能的值：*ssh*、*ldap*、*smtp*、*ftp*、*http*、*pop*、*nntp*、*imap*、*tcp*、*https*、*telnet*（参见[详细信息](/manual/appendix/items/service_check_details)）；
- **ip** - IP 地址或 DNS 名称（默认情况下使用主机 IP/DNS）； 
- **port** - 端口号（默认情况下使用标准服务端口号）。


注释：

 - 请注意，使用 *tcp* 服务时必须指定端口；
- 目前不支持检查加密协议（如端口 993 上的 IMAP 或端口 995 上的 POP）。作为解决方法，请使用 `net.tcp.service[tcp,<ip>,port]` 进行此类检查。

示例：

    net.tcp.service.perf[ssh] #此监控项可用于测试 SSH 服务器的初始响应速度。

[comment]: # ({/39da67f1-946385b4})

[comment]: # ({5cba2094-2859223a})

##### net.udp.service[service,<ip>,<port>] {#netudpservice}

<br>
检查服务是否正在运行并响应 UDP 请求。<br> 
返回值：*0* - 服务已关闭；*1* - 服务正在运行。

参数： 
- **service** - 可能的值：*ntp*（参见 [details](/manual/appendix/items/service_check_details)）；
- **ip** - IP 地址或 DNS 名称（默认情况下使用主机 IP/DNS）； 
- **port** - 端口号（默认情况下使用标准服务端口号）。

示例：

    net.udp.service[ntp,,45] #此监控项可用于测试 UDP 端口 45 上的 NTP 服务的可用性。

[comment]: # ({/5cba2094-2859223a})

[comment]: # ({bae0ccf0-9cf5922c})

##### net.udp.service.perf[service,<ip>,<port>] {#netudpserviceperf}

<br>
检查 UDP 服务的性能。<br>
返回值：*Float*：*0.000000* - 服务已关闭；*seconds* - 等待服务响应所花费的秒数。

Parameters:

- **service** - 可能的值：*ntp*（参见 [details](/manual/appendix/items/service_check_details)）；
- **ip** - IP 地址或 DNS 名称（默认情况下使用主机 IP/DNS）；
- **port** - 端口号（默认情况下使用标准服务端口号）。

示例：

    net.udp.service.perf[ntp] #此监控项可用于测试 NTP 服务的响应时间。

[comment]: # ({/bae0ccf0-9cf5922c})

[comment]: # ({621c13d4-85612a2b})
  
::: noteimportant
对于 LDAP 简单检查中的 SourceIP 支持（例如 `net.tcp.service[ldap]`），需要 OpenLDAP 版本 2.6.1 或更高版本。
:::

[comment]: # ({/621c13d4-85612a2b})

[comment]: # ({a509dbd8-92a6c4ae})
#### 超时处理

灵活的监控项超时虽然支持简单检查，但不适用于 `icmpping*` 和 VMware 监控项。请参见 [灵活超时支持](/manual/config/items/item#flexible-timeout-support)。

[comment]: # ({/a509dbd8-92a6c4ae})

[comment]: # ({25a7290c-b08a4508})
#### ICMP ping

Zabbix 使用外部工具 **[fping](https://fping.org/)** 来处理 ICMP ping（**icmpping**、**icmppingloss**、**icmppingretry**、**icmppingsec**）。

[comment]: # ({/25a7290c-b08a4508})

[comment]: # ({d8eb34a5-e3dd9826})
##### 安装

fping 不包含在 Zabbix 中，需要单独安装：

- 各种基于 Unix 的平台在其默认仓库中提供 fping 软件包，但默认未预装。在这种情况下，您可以使用包管理器安装 fping。

- Zabbix 为 RHEL 及其衍生版提供了 [fping 软件包](https://repo.zabbix.com/third-party/2024-10/)。请注意，这些软件包不提供官方支持。

- fping 也可以[从源码](https://github.com/schweikert/fping/blob/develop/README.md#installation)编译安装。

[comment]: # ({/d8eb34a5-e3dd9826})

[comment]: # ({1f866e68-9ced6345})
##### 配置

在 Zabbix 服务器/proxy 配置文件的 *[FpingLocation](/manual/appendix/config/zabbix_server#fpinglocation)* 参数中指定 fping 的位置  
（如果使用 IPv6 地址，则使用 *[Fping6Location](/manual/appendix/config/zabbix_server#fping6location)* 参数）。

运行 Zabbix 服务器/proxy 的用户应能够执行 fping，并且该用户应具有足够的权限。

另请参见：[已知问题](/manual/installation/known_issues#simple-checks)，了解如何使用低于 3.10 的 fping 版本处理简单检查。

[comment]: # ({/1f866e68-9ced6345})

[comment]: # ({feb0af93-3c21487d})
##### 默认值

ICMP 检查参数的默认值、限制和取值说明：

|参数|单位|说明|Fping 标志|默认值由以下设置|<|Zabbix 允许的限制<br>范围|<|
|--|--|--------|-|--|--|--|--|
| | | | |**fping**|**Zabbix**|**最小**|**最大**|
|packets|数量|发送到目标的请求数据包数量|-C| |3|1|10000|
|interval|毫秒|向单个目标连续发送数据包之间的等待时间|-p|1000| |20|无限制|
|size|字节|数据包大小（字节）<br>x86 上为 56 字节，x86_64 上为 68 字节|-b|56 或 68| |24|65507|
|timeout|毫秒|**fping v3.x** - 发送最后一个数据包后等待的超时时间，受 *-C* 标志影响<br> **fping v4.x** - 每个数据包各自的超时时间|-t|**fping v3.x** - 500<br>**fping v4.x** 及更新版本 - 继承自 *-p* 标志，但不超过 2000| |50|无限制|
|retries|数量|对目标执行 ping 尝试的次数，不包括第一次尝试|-r|3|1|0|无限制|
|backoff factor|数量|每次连续请求时等待时间的乘数|-B|1.5|1.0|1.0|5.0|

默认值可能会因平台和版本不同而略有差异。

此外，Zabbix 使用 fping 选项 *-i interval ms*（不要与上表中提到的监控项参数 *interval* 混淆，
后者对应 fping 选项 *-p*）以及 *-S source IP address*（在较旧的 fping 版本中为 *-I*）。
这些选项会通过使用不同的选项组合运行检查来自动检测。
Zabbix 会通过尝试 3 个值 0、1 和 10，来检测 fping 允许与 *-i* 一起使用的最小毫秒值。
第一个成功的值将用于后续的 ICMP 检查。
此过程由每个 [ICMP pinger](/manual/concepts/server#server-process-types-and-threads) 进程分别执行。

自动检测到的 fping 选项每小时失效一次，并会在下一次尝试执行 ICMP 检查时重新检测。
设置 [DebugLevel](/manual/appendix/config/zabbix_server#debuglevel)>=4，以便在服务器或 proxy 日志文件中查看此过程的详细信息。

Zabbix 会将通过任意 *icmpping\** 键检查的 IP 地址写入临时文件，然后将该文件传递给 fping。
如果监控项具有不同的键参数，则只有键参数相同的监控项才会被写入同一个文件。
写入同一个文件的所有 IP 地址都会由 fping 并行检查，
因此 Zabbix ICMP pinger 进程花费的时间是固定的，而与文件中的 IP 地址数量无关。

[comment]: # ({/feb0af93-3c21487d})
