连锁门店可用性监测和进程监测最佳实践

前言

在连锁零售企业的数字化运营中,多门店通过网络实时访问总部业务系统(如收银、库存、会员管理等核心模块)是其日常经营的基础支撑。然而,由于门店分布广泛、网络环境复杂,网络或应用服务的任何中断都可能直接阻断交易流程、影响顾客体验,进而造成即时营收损失与长期品牌信任损耗。据行业调研,门店单次网络中断平均会造成 15-30 分钟的业务停滞,高峰时段(如周末、节假日)单店每小时营收损失可达数千元,叠加顾客投诉与复购率下降的隐性成本,对门店整体收益与品牌口碑形成显著冲击。

具体而言,门店终端离线将直接切断门店与总部的网络通路,线上业务停滞;DNS 解析异常会导致门店终端无法定位业务系统域名(如收银系统域名指向错误 IP),用户无法完成支付;DNS 污染/劫持可能将用户导向恶意或无效页面,引发交易失败甚至数据泄露风险;应用进程异常(如 POS 服务崩溃、库存同步程序卡死)则会使关键功能失效,导致顾客排队流失或订单积压。

因此,通过门店主动拨测与进程监测实时感知主机离线、DNS 解析异常、DNS 污染、应用进程中断等关键风险,是保障连锁门店网络稳定性与应用可用性、最小化业务中断损失的必要手段,也是支撑连锁企业规模化运营与数字化服务连续性的核心运维实践。

观测云简介

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

DataKit

DataKit 是观测云提供的开源、跨平台的数据收集和监控工具。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。在门店观测场景中,DataKit 可运行在 Windows 7、Server 2008R2 或更高版本,其可用性监测功能(拨测)、主机健康检查功能至关重要。

安装 DataKit

测试终端:Windows Server 2019 Datacenter Edition

进入观测云「集成」-「DataKit」页面,切换到 Windows 菜单页,可看到 Windows 版 DataKit 的安装命令。

在 windows server(模拟门店主机)上使用管理员权限打开 PowerShell,执行上述安装命令。

使用 datakit monitor 命令,如有下方的输出则证明 DataKit 安装成功。

复制代码
datakit monitor

新建拨测节点

进入「可用性监测」-「自建节点管理」菜单,点击「新建节点」。

根据实际情况填写节点信息,如下所示:

创建完成后,点击「获取配置」。

获得如下配置信息,稍后需要复制到 DataKit 的采集器配置文件中。

配置拨测节点参数

在客户端主机上进入 DataKit 的拨测采集器目录,默认是在 C:\Program Files\datakit\conf.d\network,将 dialtesting.conf.sample 文件复制一份,去掉其后缀、改名为 dialtesting.conf,如下图所示:

编辑 dialtesting.conf 配置文件,将观测云界面上自建拨测节点的配置填写到对应字段中。

保存后重启 datakit 服务,再执行 datakit monitor 命令时可以看到 dialtesting 采集器已经成功开启。

arduino 复制代码
datakit serivce -R
//重启datakit 服务

配置拨测任务

进入「可用性监测」-「新建监测任务」-「API拨测」。

按页面提示选择拨测类型,配置拨测目标地址、可用判断、拨测频率,勾选拨测节点为刚才创建的自建拨测节点,如下图所示:

本次测试所用配置的参数如下:

配置项 配置参数
拨测类型 HTTP协议
URL www.guance.com
名称 门店拨测-测试
可用判断 默认模式响应状态码是200
拨测节点 自建节点
拨测频率 1min

保存任务后稍等片刻,便可以在「查看器」看到该任务的拨测数据。

场景1:门店终端离线

场景描述

终端宕机、门店网络中断等情况都会导致门店无法访问总部系统、POS、进销存等关键业务平台,影响正常营业与交易。

场景模拟

当终端宕机、门店网络中断等异常情况发生时,门店终端上的 DataKit 拨测节点亦将无法上报拨测数据,因此我们在观测云上配置「数据断档」监控,可以有效地对终端离线等情况进行监控告警。我们将测试的 windows server 关机以便模拟该现象。

关键步骤

  • Step1:确保拨测任务正常,观测云上能看到持续产生的拨测数据。
  • Step2:在观测云上配置无数据告警。

进入「监控」-「监控器」-「新建监控器」,配置一个「可用性数据检测」类型的监控器。在配置时,将「数据断档」配置如下,这表示如果观测云在 5 分钟内没有收到数据上报,则触发一个严重级别事件,并按照监控器配置发送一条监控告警。

本测试任务的其他配置参数为:

配置项 配置参数
监控器类型 可用性数据检测
检测频率 1分钟
检测区间 最近1分钟
检测指标 拨测类型:HTTP拨测拨测地址:全部指标:平均响应时间维度:node_name,name筛选:name=门店拨测-测试
触发条件 Result:严重级别-大于5秒
数据断档 最近5分钟查询条件为空,触发严重事件
  • Step3:将测试用的 windows server 关机,模拟门店终端离线。
  • Step4:当数据断档时间超过设定阈值时,观测云将产生「数据断档」事件,并按照设定的通知渠道发送给告警接收人/团队。 进入观测云「事件中心」可查看该事件。

观测云还提供了「IoT 精简版」DataKit,专门为 IoT 设备设计的,具有更小的资源占用和更少的功能,以适应资源受限的嵌入式设备。部分连锁零售品牌在门店 SD-WAN 网关中安装 DataKit,来实现门店网络和终端的监控。

IoT 精简版 DataKit 的链接为
docs.guance.com/datakit/dat...

场景2:DNS 解析失败

场景描述

众所周知,客户端正确解析服务端网站域名是正常访问业务的前提。运营商 Local DNS 或互联网 DNS Server 故障都可能导致 DNS 解析异常,这些情况都会引起门店在线业务中断。

场景模拟

将测试 windows server 的 DNS 地址修改为一个错误的 IP 地址,模拟 DNS 解析异常。

关键配置

  • Step1:确保拨测任务正常,观测云上能看到持续产生的拨测数据。
  • Step2:在观测云上配置可用性监测告警,监控"可用率"指标。

进入「监控」-「监控器」-「新建监控器」,配置一个「可用性数据检测」类型的监控器。在配置时,将监控指标配置为「可用率」,这表示如果拨测任务的可用率下降,则触发事件并按照监控器配置发送一条监控告警。(「可用率」由创建拨测任务时的「可用判断」来决定,例如响应状态码≠200等)

本测试任务的其他配置参数为:

配置项 配置参数
监控器类型 可用性数据检测
检测频率 5分钟
检测区间 最近5分钟
检测指标 拨测类型:HTTP拨测拨测地址:www.guance.com指标:可用率维度:node_name
触发条件 严重级别:Result < 95
事件标题 门店拨测任务可用率下降,请立即关注,节点{{node_name}}
事件内容 故障开始时间:{{ date to_datetime }}故障等级:{{ df_status to_status_human }}当前可用率:{{ Result to_round(2) }}%节点:{{node_name}}
  • Step3:修改测试 windows server 的 DNS 地址,引发 DNS 解析异常。

配置 windows server 的网络适配器,将DNS服务器配置为 2.2.2.2 并保存。

此时通过浏览器访问目标网站,浏览器会提示找不到目标服务器 IP 地址,说明 DNS 地址配置成功。

  • Step4:等待片刻,观测云将产生「可用性下降」的事件并按照设定的通知渠道发送给告警接收人/团队。 进入观测云「事件中心」可查看该事件。可以点击右上角「关联查看」-「查看相关全部可用性监测」跳转到拨测查看器。

跳转到拨测查看器页面,可以看到当前的拨测任务都是失败状态(状态为橙红色)。

点击拨测详情,可查看请求失败原因,显然这是一个 DNS 解析异常而产生的错误。

yaml 复制代码
Get "https://www.guance.com": dial tcp: lookup www.guance.com: no such host

在 DNS 解析异常时,拨测数据依然可以从门店终端进行上报。这是因为 DataKit 和后端服务之间采用长连接,不会频繁进行 DNS 解析。

场景3:DNS 劫持/污染

场景描述

除了正常网络故障导致的 DNS 解析异常外,互联网中普遍存在 DNS 劫持/污染攻击,攻击者通过篡改 DNS 服务器的解析记录,将用户请求的合法域名恶意指向虚假或恶意网站,从而可能导致用户访问异常、数据泄露甚至门店在线业务服务中断。

场景模拟

通过修改 windows server 的 hosts 文件,强制将目标网站解析到某个 IP。同时,通过观测云的 pipeline 功能对拨测的 DNS 解析结果进行判断,如果解析的 IP 地址并不属于指定 IP 网段,则进行告警。

关键配置

  • Step1:确保拨测任务正常,观测云上能看到持续产生的拨测数据。本场景我们使用 baidu 进行来做演示。
  • Step2:检查拨测目标网站/业务系统的正确 IP 地址。在测试 windows server 上进行 DNS 解析,DNS Server 返回 baidu 的 IPv4 地址为 182.61.200.108 和 182.61.200.110,他们都属于 182.61.200.0/24 网段。
  • Step3:添加观测云 pipeline,对拨测任务的目标 IP 进行判断。

进入观测云「管理」-「pipelines」页面,新建一个中心 pipeline,将数据类型选为「可用性拨测」。数据来源选择「http_dial_testing」,配置自定义的 Pipeline 名称,点击「一键获取样本」将拨测任务的 JSON 格式的数据显示到网页中。

将以下 pipeline 代码粘贴到「定义解析规则」的空白处,这段代码表示:如果拨测任务的目标 IP 属于 182.61.200.0/24 网段,便添加一个字段 dns_result=true;若目标 IP 不属于该网段,则添加 dns_result=false。

scss 复制代码
json(_, dest_ip)
if cidr(dest_ip, "182.61.200.0/24") {
  add_key(dns_result, "true")
} else {
  add_key(dns_result, "false")
}

配置好解析规则后,点击「开始测试」可以看到测试结果,如符合预期则保存该 pipeline。后续的拨测任务将自动应用 pipeline 规则对数据进行处理。

  • Step4:配置监控告警,对 dns_result 这个字段进行判断。

进入观测云「监控」-「监控器」-「新建监控器」-「阈值检测」,参考下面的表格进行配置。

参数 选项 说明
检测频率 1分钟
检测区间 最近1分钟
检测指标 D::http_dial_testing:(count(dns_result)) {name= 'baidu-test' anddns_result= 'false' } BYnode_name`` 这是一个DQL检测语句,对拨测数据中dns_result=false的出现次数按拨测节点进行分组统计。
触发条件 严重级别:Result ≥ 1
事件标题 拨测任务遭到DNS污染,请立即处理
事件内容 故障开始时间:{{ date to_datetime }}故障等级:{{ df_status to_status_human }}节点:{{node_name}}故障描述:拨测任务疑似遭到DNS污染,解析结果为非法IP,请登陆观测云查看拨测任务
  • Step5:配置 windows server 的 hosts 文件,将 baidu 强制解析为某个 IP。保存后,浏览器访问 baidu 将无法正常访问。
  • Step6:在修改 DNS 解析记录之后稍等片刻,观测云将产生相关事件,并按照设定的通知渠道发送给告警接收人/团队。 进入观测云「事件中心」可查看该事件。

从事件跳转到「可用性监测」后,可以看到异常拨测任务中关键信息:

字段 字段说明
dst_ip 目标IP地址,是DNS Server实际解析到的IP地址。正常情况下是应用的合法IP,在遭到DNS劫持/污染时是非法网站IP。
dns_result 通过pipeline新增的、用于判断DNS解析结果是否正确的字段。在遭遇DNS劫持/污染时,DNS解析结果未落在指定网段,则该字段为false,反之为true。
Country、Province、City、ISP 国家、省份、城市、运营商信息,有助于帮助运维团队了解到DNS劫持/污染影响的范围,并与相关ISP协同进行处理。
node_name 自定义拨测节点名称,自定义名称需要能让运维团队直观看出门店信息,例如"广州市南沙区万达广场店-1号终端"
请求失败原因 展示了拨测任务出错的详细信息,能反映拨测节点当时的故障现场,帮助运维团队向ISP进行举证、投诉。

场景4:门店应用进程中断

场景描述

门店的 windows 终端上会运行「点单系统」等重要应用,应用进程的正常运行对门店运营至关重要,总部的运维团队应当第一时间收到门店应用的进程异常告警。

场景模拟

DataKit 可以采集应用进程的指标,并对应用进程的存活进行监控告警。因此在模拟该场景时,可在 windows server 上指定运行中的 chrome 浏览器进程,通过结束 chrome 进程来模拟门店应用进程中断。

关键步骤

  • Step1:打开 DataKit 的「host_healthcheck」采集器,上报进程的存活指标。

进入已安装 DataKit 的 windows server 的如下路径 C:\Program Files\datakit\conf.d\host,将 host_healthcheck.conf.sample 文件复制一份并修改名称为 host_healthcheck.conf。

修改 host_healthcheck.conf 文件,将 names 字段的值配置为应用进程名(对应 DataKit 采集到的 process_name 字段的值)。

配置文件中的值对应进程名称,即 process_name 字段的值。可在「基础设施」-「进程」中找到指定进程。

修改配置文件后需重启 DataKit 方可使配置生效。

复制代码
datakit service -R

通过 datakit monitor 命令观察,如果看到 host_healthcheck 采集器正常上报数据,则配置成功,如下图所示。

进入「指标」-「指标分析」,可以看到 host_process_exception 指标集下新增了 exception 指标,并且按照采集器配置文件中频率进行刷新。(在本次测试中, host_healthcheck 采集器的采集频率为 1 分钟)当应用进程正常运行时,该指标的值为 0。而当进程异常终止时,该指标将接收到 DataKit 上报的异常信号,exception 指标的值为 1。

也可以采用 DQL 方式进行查看 exception 指标的变化情况。

ruby 复制代码
M::`host_process_exception`:(avg(`exception`)) { `process` = 'chrome.exe' }
  • Step2:配置监控器,对应用进程的存活进行监控。
配置项 配置参数
监控器类型 阈值检测
检测频率 1分钟
检测区间 最近1分钟
检测指标 M::host_process_exception:(avg(exception)) {process= 'chrome.exe' } BYhost``
触发条件 严重级别:Result = 1
事件标题 {{host}}主机的应用进程异常终止,请立即处理
事件内容 故障开始时间:{{ date to_datetime }}故障等级:{{ df_status to_status_human }}异常主机:{{host}}故障描述:{{host}}主机的应用进程异常,请登陆观测云进行查看

关键配置如下图所示,配置完成后保存监控器。

  • Step3:结束应用进程,触发告警。在 windows server 上使用「任务管理器」结束 chrome 浏览器进程。
  • Step4:当进程被终止后,观测云将接收到 DataKit 上报的 exception=1 的信号,并将按照监控器配置产生 Critical 级别事件,通过设定的通知渠道发送给告警接收人/团队。 进入观测云「事件中心」可查看该事件。

如下图所示,观测云将接收到 chrome 进程的 excetpion 指标值为 1 的信号。

监控器产生的事件如下:

总结

综上,通过在连锁门店部署针对 DNS 解析异常、DNS 污染、主机离线及应用进程异常的拨测与监测方案,能够实时感知网络与应用层的潜在风险,快速定位中断根因,有效规避因网络或服务不可用导致的交易停滞、顾客流失及隐性收益损失。该实践以"主动监测+精准告警"为核心,为连锁企业构建了覆盖全网门店的业务连续性保障体系,是支撑数字化运营稳定、提升门店服务韧性的关键基础。

相关推荐
一枚前端小能手10 天前
🚀 应用出了问题你都不知道,别着急我来帮你
前端·监控
可观测性用观测云16 天前
Milvus 可观测性最佳实践
监控
岚天start17 天前
Linux系统网络排查工具总结
linux·运维·网络·监控·扫描·连通性·流量
可观测性用观测云18 天前
Ceph 可观测性最佳实践
监控
云游20 天前
大模型性能指标的监控系统(prometheus3.5.0)和可视化工具(grafana12.1.0)基础篇
grafana·prometheus·可视化·监控
海风极客20 天前
一个案例带你搞懂Prometheus指标类型(下)
监控
可观测性用观测云21 天前
OpenTelemetry WebSocket 监控终极方案:打通最后一公里
监控