跳至正文

端点与 TLS ​

端点探针在应用加密前、解密后取得明文;不依赖 TLS 私钥,不终止或代理业务连接,也不能从任意镜像密文恢复正文。

接入一个应用 ​

在新目录生成配置,将 /opt/billing/server 替换为 /proc/PID/exe 显示的真实绝对路径:

sh
netflowscout configure --service billing --executable /opt/billing/server \
  --verification --out ./netflowscout.json --endpoint-out ./billing.json
netflowscout check --config ./netflowscout.json
sudo netflowscout doctor --config ./netflowscout.json --endpoint-config ./billing.json

默认新配置使用 module/protocol/role=auto。自动模块只接受唯一可识别的受支持运行时;混合 Go/OpenSSL 目标需要显式选 gotls 或 openssl。多份 libssl 映射需要指定目标文件系统内的 library 路径。可读路径或 build info 不等于已成功采集。

安装配置时保持主配置及规则 root:netflowscout / 0640,端点文件 root / 0600,并与主配置的 stream_socket 对齐。启动方式见安装指南。

自动发现与重新挂载 ​

发现身份包含 PID、开始时间、可执行文件 inode 和 cgroup。应用退出、exec 或迁移 cgroup 后,旧探针退出,新进程重新挂载。进程代际校验防止 PID 复用导致错误归因。

选项说明
match.executable精确路径,不支持通配符或符号链接别名
match.uid限定真实 UID
match.cgroup_prefix按路径边界限定服务或容器
poll_ms默认 1000;100–60000
max_targets默认 8;1–16,每目标一个探针
runtime_dir唯一绝对路径,最多 70 字节,当前 UID 所有的 0700 目录

轮询、挂载和订阅存在空档。短进程、已经发生的请求和 prepare 状态无法补采。首次请求和应用重启后的验收都应等待状态为 attached。

管理多个服务 ​

下载完整 policies 示例,按现场修改。核心结构如下,片段需合并到完整端点配置:

json
{
  "policies": [
    {"id":"skip-maintenance","exclude":true,"match":{"cgroup_prefix":"/system.slice/maintenance.service"}},
    {"id":"billing","priority":20,"service":"billing","match":{"executable":"/opt/billing/server"}},
    {"id":"orders","priority":10,"service":"orders","module":"gotls","match":{"executable":"/opt/orders/server"}}
  ]
}

policies 与根级 match 互斥。排除优先,然后选择最高 priority;同优先级包含策略冲突会拒绝目标。不同发现实例需保持范围互斥,避免重复采集。修改策略或插件识别声明后,重启对应 discovery 单元。

归因与协议识别 ​

观察记录带服务、PID、进程开始时间、可执行文件、网络命名空间、cgroup 和容器信息。process.start_ns 为十进制字符串,避免精度损失。跨进程窗口不会随意归到第一个进程;逐进程告警应同时按 process.pid, process.start_ns 分组。

插件签名和端口提示用于识别协议、判断本地客户端或服务端角色。非标准端口或模糊签名可显式指定 protocol/role/connections。未知流等待识别有字节、回调和时间上限,不无限缓存明文。自定义协议的端点配置必须包含与分析器一致的 plugins 目录。

HTTP/3 使用独立的 goquic 探针,不使用普通 TLS 探针;版本、符号及 QPACK 限制见协议支持。