共计 1446 个字符,预计需要花费 4 分钟才能阅读完成。
- 网络分析神器——kyanos
- 2025-06-23 12:05
1、简介
Kyanos 是一个基于 eBPF 技术的开源协议可观测工具,它无需修改应用代码即可在内核层捕获和分析常见协议(如 HTTP、Redis、PostgreSQL、DNS 等)的实时通信数据,并提供详细的延迟拆解、请求响应内容和性能指标统计功能。
其设计目标是帮助开发、运维和 SRE 工程师更清晰地了解系统中请求的真实流向、性能瓶颈以及潜在的异常行为。
项目地址:https://github.com/hengyoush/kyanos
2、特点
-
零侵入部署: Kyanos 基于 eBPF 内核探针,无需修改业务应用或中间件配置,不影响业务性能。
-
丰富的协议支持,当前已支持:
- HTTP(含 path 提取)
- Redis
- PostgreSQL
- DNS
- HTTP2,未来计划支持更多协议(如 Kafka、MySQL 等)。
-
精细的延迟分析: 可展示一次请求在不同节点(用户态、内核态、网络栈等)的耗时,辅助排查瓶颈是否出现在网卡、进程、Socket 等环节。
-
强大的统计分析能力: 支持通过命令行按客户端 IP、服务端 IP、请求路径等维度聚合,获取最大耗时、平均延迟、请求 / 响应大小等指标。
-
丰富的交互操作: 可通过方向键、Enter 键等在终端内浏览请求详情,查看原始请求内容(最多 1024 字节)和每一步耗时。
3、典型使用场景
-
请求性能分析: 想了解“为什么服务响应慢”?用
kyanos watch http
可捕获延迟拆解信息,精准定位瓶颈(如网络慢、Socket 阻塞、应用处理耗时高等)。 -
服务负载统计: 通过
kyanos stat
结合-m
和
-g
参数,可实现对不同 IP、路径、协议的流量和响应情况统计,判断热点流量来源、流量分布和大请求 IP。
-
排查慢请求: 通过
kyanos stat --slow --time 5
可获取最近 5 秒内最慢的请求,便于快速聚焦异常。 -
安全审计与追踪: 实时捕获 Redis 或 PostgreSQL 协议内容,有助于监控敏感命令的使用(如 FLUSHALL、DROP TABLE 等)或识别潜在攻击行为。
4、安装
root@huqi-virtual-machine:/opt/kyanos# wget https://github.com/hengyoush/kyanos/releases/download/v1.5.0/kyanos_1.5.0_linux_amd64.tar.gz
5、使用示例
捕获 HTTP 流量
root@huqi-virtual-machine:~# kyanos watch http
捕获 Redis 流量
root@huqi-virtual-machine:~# kyanos watch redis
过去 5 秒最慢的请求
root@huqi-virtual-machine:~# kyanos stat --slow --time 5
6、高级用法
过滤特定 HTTP 路径
root@huqi-virtual-machine:~# kyanos watch http --path /api/v1/payment
过滤慢请求
root@huqi-virtual-machine:~# kyanos watch http --slow
按 IP 聚合响应耗时
root@huqi-virtual-machine:~# kyanos stat --metric total-time --group-by remote-ip
查询带宽 TOP5
root@huqi-virtual-machine:~# kyanos stat -m respsize -g client-ip