跳转到主要内容

用于验证服务之间连接性的实用程序

项目描述

conn-check 允许检查与外部服务的连接性。

您可以编写一个配置文件,定义您需要访问的服务,conn-check 将检查与每个服务的连接性。

它支持各种类型的服务,所有这些服务都允许进行基本网络检查,但其中一些还可以确认凭据是否有效。

配置

配置是通过yaml文件完成的。该文件定义了要执行的一系列检查

- type: tcp
  host: localhost
  port: 80
- type: tls
  host: localhost
  port: 443
  disable_tls_verification: false

每个检查定义了一个类型,然后为该类型提供相应的选项。

有关为您的应用程序配置 conn-check 的分步指南,请参阅教程

检查类型

tcp

简单的 TCP 连接检查。

主机

主机名。

端口

端口号。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

tls

使用 TLS 的检查(ssl 是此类的一个已弃用的别名)。

主机

主机名。

端口

端口号。

disable_tls_verification

可选标志,用于禁用 TLS 证书和握手的验证。默认值:false。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

udp

检查发送特定 UDP 数据包是否得到特定响应。

主机

主机名。

端口

端口号。

send

要发送的字符串。

expect

期望在响应中出现的字符串。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

http

检查 HTTP/HTTPS 请求是否成功(https 也可用)。

url

要获取的 URL。

method

可选的 HTTP 方法。默认值:"GET"。

expected_code

定义成功的可选状态码。默认值:200。

proxy_url

可选的 HTTP/HTTPS 代理 URL,包括协议,如果设置代理_{host,port} 则会被忽略。

proxy_host

可选的 HTTP/HTTPS 代理。

proxy_port

proxy_host 一起使用的可选端口。默认:8000。

headers

可选的头部信息,以键值对字典的形式发送。可以提供多个值,例如:[('foo', 'bar'), ('foo', 'baz')]

body

可选的原始请求数据字符串。

disable_tls_verification

可选标志,用于禁用 TLS 证书和握手的验证。默认值:false。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

allow_redirects

可选标志,用于跟随 30x 重定向。默认值:false。

params

可选的参数字典,用于 URL 编码并传递到查询字符串。

cookies

可选的 cookie 字典,用于传递到请求头部。

auth

可选的基本 HTTP 认证凭据,作为元组或列表:(username, password)

digest_auth

可选的摘要 HTTP 认证凭据,作为元组或列表:(username, password)

amqp

检查是否可以针对 AMQP 服务器进行认证。

主机

主机名。

端口

端口号。

username

用于认证的用户名。

password

用于认证的密码。

use_tls

可选标志,是否使用 TLS 连接。默认值:true。

vhost

可选的虚拟主机名称,用于连接。默认值 ‘/’。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

postgres

检查是否可以针对 PostgreSQL 数据库进行认证(postgresql 也可用)。

主机

主机名。

端口

端口号。

username

用于认证的用户名。

password

用于认证的密码。

database

要连接的数据库。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

redis

检查是否存在 Redis 服务器,可选地检查认证。

主机

主机名。

端口

端口号。

password

可选的密码,用于认证。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

memcache

检查是否存在 memcached 服务器(memcached 也可用)。

主机

主机名。

端口

端口号。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

mongodb

检查是否存在 MongoDB 服务器(mongo 也可用)。

主机

主机名。

端口

可选端口。默认:27017。

username

可选的用户名,用于认证。

password

可选的密码,用于认证。

database

可选的数据库名称,用于连接。如果没有设置,将使用 test 数据库。如果此数据库不存在(或不可用),则需要提供数据库名称。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

smtp

检查是否可以通过 SMTP 服务器发送电子邮件,并使用 SMTP 服务器进行认证。

注意 1:如果此检查成功,则实际会向在 to_address 中定义的电子邮件发送电子邮件,请小心配置此检查,以免意外发送垃圾邮件。

注意2:仅支持使用 use_tls 标志的 TLS 连接上的 EHLO/HELO,当前无法使用 STARTTLS 扩展 建立新的 TLS 连接。

主机

主机名。

端口

端口,TLS 通常为 465,纯文本为 25。

username

用于认证的用户名。

password

用于认证的密码。

from_address

发送 from 的电子邮件地址。

to_address

发送 to 的电子邮件地址。

message

可选的电子邮件正文。

subject

可选的电子邮件主题。

helo_fallback

可选标志,用于在 EHLO 扩展命令集失败时回退到 HELO

use_tls

启用连接 TLS 安全性的可选标志。默认:true。

超时

可选的连接超时时间(秒)。默认值:5(或来自 --connect-timeout 的值)。

超时

默认情况下,conn-check 的全局超时(max-timeout)设置为 9 秒,这是因为当与 Nagios 一起使用时,NRPE 命令的最大超时时间为 10 秒,因此我们需要确保检查有足够的时间输出任何错误(如果你达到 NRPE 超时,则不会返回任何输出,只会从 Nagios 收到套接字错误)。

如果你需要更长的超时,你可以始终自己设置 max-timeout(它是设置,但接受浮点数作为亚秒值)。

你还可以设置不同的连接超时,这是每个检查打开单个连接(不执行其他任何操作)所需的时间,这可以通过全局设置 --connect-timeout 或使用大多数检查类型接受的 timeout 参数来设置。

标签

每个检查类型还支持一个 tags 字段,它是一组可以与 conn-check 的 --include-tags--exclude-tags 参数一起使用的标签。

示例 YAML

- type: http
  url: http://google.com/
  tags:
    - external

仅运行“外部”检查

conn-check --include-tags=external ...

运行所有检查 除了 外部

conn-check --exclude-tags=external

缓冲/有序输出

conn-check 通常将输出缓冲到 STDOUT,以便可以有序输出,失败的检查首先打印,按目的地等分组。

如果你更愿意看到结果,可以使用 -U/--unbuffered-output 选项来禁用缓冲。

生成防火墙规则

conn-check 包含 conn-check-export-fw 工具,它接受与 conn-check 相同的参数,但使用 --dry-run 模式运行,并输出一系列 egress 防火墙规则,易于解析的 YAML 格式,例如

# Generated from the conn-check demo.yaml file
egress:
- from_host: mydevmachine
  ports: [8080]
  protocol: udp
  to_host: localhost
- from_host: mydevmachine
  ports: [80, 443]
  protocol: tcp
  to_host: login.ubuntu.com
- from_host: mydevmachine
  ports: [6379, 11211]
  protocol: tcp
  to_host: 127.0.0.1

然后你可以使用此输出生成你的环境的防火墙规则(例如使用 EC2 安全组OpenStack Neutroniptables 等)。

conn-check-convert-fw 是一个工具,它只做这件事,它接受多个防火墙规则 YAML 文件,合并/去重,并输出 AWS、Openstack Neutron、OpenStack Nova(客户端)、iptables 和 ufw 的命令(主要用于测试目的)。

它设计用于以下工作流程

  • 在每个主机上运行 conn-check 时,你运行 conn-check-export-fw 以生成包含出口防火墙规则的 YAML 文件。

  • 将这些文件传输到具有出口主机正确 DNS 条目的主机。

  • 在此主机上运行 conn-check-convert-fw 以生成防火墙命令集。

  • 这些命令由人工审核,可能与其他规则合并,例如添加入站规则,然后运行以更新你的环境的防火墙。

构建 wheels

为了更容易/更便携地分发此工具,你可以将 conn-check 及其所有依赖项构建为 Python wheels

make clean-wheels
make build-wheels
make build-wheels-extra EXTRA=amqp
make build-wheels-extra EXTRA=redis

构建轮子目标(build-wheels)会构建conn-check及其基本依赖项,但要包含其他检查(如amqp、redis或postgres)的可选额外依赖项,您需要使用带有EXTRA环境值的build-wheels-extra目标。

默认情况下,所有轮子都将放置在./wheels目录中。

自动生成conn-check YAML配置

conn-check-configs软件包包含从现有应用程序配置和环境生成检查的实用程序/库,例如从Django设置模块和Juju环境。

项目详情


下载文件

下载您平台上的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分发

conn-check-1.5.0.tar.gz (67.7 kB 查看散列)

上传时间

构建分发

conn_check-1.5.0-py2.py3-none-any.whl (47.5 kB 查看散列)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页