Vigil探针模式详解Poll、Push、Script、Local的实战应用【免费下载链接】vigil Microservices Status Page. Monitors a distributed infrastructure and sends alerts (Slack, SMS, etc.).项目地址: https://gitcode.com/gh_mirrors/vig/vigilVigil是一款强大的微服务状态监控工具能够自动监控基础设施服务并在服务出现故障时通过Slack、SMS等多种渠道发送警报。本文将详细解析Vigil的四种探针模式——Poll、Push、Script和Local帮助新手和普通用户快速掌握它们的实战应用。Poll模式主动探测远程服务状态Poll模式是Vigil最常用的探针模式之一它通过定期主动探测HTTP、TCP或ICMP目标来监控服务状态。这种模式适用于大多数可以通过网络直接访问的服务。Poll模式的核心配置在Vigil的配置文件中与Poll模式相关的关键参数包括poll_interval探测间隔时间秒默认值为120秒poll_retry首次探测失败后的重试间隔秒默认值为2秒poll_delay_dead判定节点为dead状态的延迟时间秒默认值为10秒poll_delay_sick判定节点为sick状态的延迟时间秒默认值为5秒这些参数可以在配置文件的[metrics]部分进行设置以适应不同服务的监控需求。Poll模式的工作原理当节点设置为Poll模式时Vigil会根据配置的时间间隔定期向指定的副本URL发送请求。例如对于HTTP服务Vigil会检查响应状态码是否在健康范围内默认200-400之间。如果响应时间超过poll_delay_sick阈值节点会被标记为sick如果超过poll_delay_dead阈值或完全无响应则会被标记为dead。Poll模式的实战配置示例在配置文件中Poll模式的节点可以这样设置[[probe.service.node]] id web-server label Web Server mode poll replicas [http://192.168.1.100:8080, tcp://192.168.1.101:22] http_headers { Authorization Bearer xxxx }这个配置定义了一个名为Web Server的节点它会定期探测两个副本一个HTTP服务和一个TCP服务。Push模式应用主动上报健康状态Push模式与Poll模式相反它不是由Vigil主动探测服务而是由应用程序通过Vigil Reporter库主动向Vigil上报健康状态。这种模式特别适用于需要监控应用内部状态的场景。Push模式的优势Push模式的主要优势在于能够提供更详细的应用内部状态信息如CPU和内存使用率减少监控服务器的网络负载尤其适用于监控大量微服务可以更快地发现应用级别的问题而不仅仅是网络可达性Push模式的核心配置与Push模式相关的关键参数包括push_delay_dead判定节点为dead状态的延迟时间秒默认值为20秒push_system_cpu_sick_aboveCPU使用率阈值超过此值节点被标记为sick默认0.90push_system_ram_sick_above内存使用率阈值超过此值节点被标记为sick默认0.90Push模式的实现方式要使用Push模式需要在应用程序中集成Vigil Reporter库。Vigil提供了多种编程语言的Reporter库包括NodeJS: node-vigil-reporterPython: py-vigil-reporterGolang: go-vigil-reporterRust: rs-vigil-reporter集成后应用程序会定期向Vigil服务器发送健康状态报告。如果Vigil在push_delay_dead时间内没有收到报告节点将被标记为dead。Script模式自定义脚本实现灵活监控Script模式允许用户编写自定义的shell脚本来实现复杂的监控逻辑当Poll和Push模式无法满足需求时Script模式提供了极大的灵活性。Script模式的适用场景Script模式特别适用于以下场景需要执行多步骤检查的复杂服务需要解析响应内容来判断健康状态的服务监控内部系统或非标准协议的服务Script模式的核心配置与Script模式相关的关键参数包括script_interval脚本执行间隔时间秒默认值为300秒script_parallelism最大并行执行的脚本数量默认值为2Script模式的实现方式在Script模式下用户需要提供一个或多个shell脚本Vigil会定期执行这些脚本并根据返回码判断服务状态返回码0服务状态为healthy返回码1服务状态为sick返回码2及以上服务状态为deadScript模式的配置示例以下是一个Script模式节点的配置示例[[probe.service.node]] id custom-check label Custom Service Check mode script scripts [ #!/bin/bash # 检查数据库连接 if ! mysqladmin ping -h db.example.com -u monitor -psecret; then exit 2 # 返回码2表示dead状态 fi # 检查磁盘空间 DISK_USAGE$(df -P / | awk NR2 {print $5} | sed s/%//) if [ $DISK_USAGE -gt 90 ]; then exit 1 # 返回码1表示sick状态 fi exit 0 # 返回码0表示healthy状态 ]这个脚本首先检查数据库连接如果失败返回2dead然后检查磁盘使用率如果超过90%返回1sick否则返回0healthy。Local模式监控内网服务的解决方案Local模式用于监控无法从Vigil服务器直接访问的内部服务通常与Vigil Local slave daemon配合使用。这种模式适用于监控防火墙后的服务或本地环回地址上的服务。Local模式的工作原理Local模式的工作流程如下在内部网络中部署Vigil Local slave daemon配置Vigil Local监控本地服务可以使用Poll或Script模式Vigil Local定期向主Vigil服务器报告监控结果如果主Vigil服务器在local_delay_dead时间内没有收到报告节点将被标记为deadLocal模式的核心配置与Local模式相关的关键参数是local_delay_dead判定节点为dead状态的延迟时间秒默认值为40秒Local模式的配置示例以下是一个Local模式节点的配置示例[[probe.service.node]] id intranet-service label Intranet Service mode local要使这个配置生效还需要在内部网络中正确部署和配置Vigil Local。具体步骤可以参考Vigil Local的官方文档。四种探针模式的对比与选择建议模式适用场景优势劣势Poll可直接访问的标准服务配置简单无需修改应用只能监控网络可达性无法获取应用内部状态Push需要详细内部状态的应用可获取应用内部指标减少网络负载需要修改应用代码增加开发成本Script复杂的自定义监控需求灵活性高可实现任意监控逻辑脚本维护成本高存在安全风险Local内网服务或防火墙后服务可监控无法直接访问的服务需要额外部署和维护Vigil Local选择建议对于大多数外部服务优先考虑使用Poll模式对于重要的应用服务建议使用Push模式以获取更详细的状态信息对于特殊的监控需求如复杂的业务逻辑检查可使用Script模式对于内网服务或无法直接访问的服务使用Local模式总结Vigil提供的四种探针模式各有特点能够满足不同场景下的监控需求。通过灵活配置和组合这些模式可以构建一个全面而高效的微服务监控系统。无论是简单的网络可达性检查还是复杂的应用内部状态监控Vigil都能提供可靠的解决方案。要开始使用Vigil你可以通过以下命令克隆仓库git clone https://gitcode.com/gh_mirrors/vig/vigil然后参考项目中的配置文件示例和文档根据你的具体需求选择合适的探针模式进行配置。【免费下载链接】vigil Microservices Status Page. Monitors a distributed infrastructure and sends alerts (Slack, SMS, etc.).项目地址: https://gitcode.com/gh_mirrors/vig/vigil创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考