云搜索服务提供集群 IP 溯源功能。开启 IP 溯源日志,将会在日志中记录 HTTP/HTTPS 请求来源的 IP 地址,以帮助用户确定有哪些客户端在访问云搜索服务。
在集群设置中,设置 logger.org.opensearch.http.HttpTracer
的值为 trace
,http.tracer.include
中是需要记录源IP的请求路径,http.tracer.exclude
中是不需要记录源 IP 的请求路径,exclude 的优先级高于 include。请求路径需要全匹配,支持(*)通配符表示,(*)表示零个或多个任意字符,但不支持关键字。在定位源 IP 结束后,需要更新 http 日志级别到 info,设置 logger.org.opensearch.http.HttpTracer:info
,以避免打印过多日志。
示例:
PUT /_cluster/settings { "persistent" : { "logger.org.opensearch.http.HttpTracer":"trace", "http.tracer.include":[ "/*/_bulk", // 在 TRACE 日志中记录任意索引的 _bulk 请求的 IP "/*/_doc", // 在 TRACE 日志中记录任意索引的 _doc 请求的 IP "/your_index/_search" // 在 TRACE 日志中记录 your_index 的 _search 请求的 IP ], "http.tracer.exclude":[ "/your_exclude_index/*" // 在 TRACE 日志中排除 your_exclude_index 索引的所有请求的 IP ] } }
在集群设置中,设置 logger.org.elasticsearch.http.HttpTracer
的值为 trace
,http.tracer.include
中是需要记录源 IP 的请求路径,http.tracer.exclude
中是不需要记录源 IP 的请求路径,exclude 的优先级高于 include。请求路径需要全匹配,支持(*)通配符表示,(*)表示零个或多个任意字符,但不支持关键字。在定位源 IP 结束后,需要更新 http 日志级别到 info,设置 logger.org.opensearch.http.HttpTracer:info
,以避免打印过多日志。
示例:
PUT /_cluster/settings { "persistent" : { "logger.org.elasticsearch.http.HttpTracer":"trace", "http.tracer.include":[ "/*/_bulk", // 在 TRACE 日志中记录任意索引的 _bulk 请求的 IP "/*/_doc", // 在 TRACE 日志中记录任意索引的 _doc 请求的 IP "/your_index/_search" // 在 TRACE 日志中记录 your_index 的 _search 请求的 IP ], "http.tracer.exclude":[ "/your_exclude_index/*" // 在 TRACE 日志中排除 your_exclude_index 索引的所有请求的 IP ] } }
在云搜索服务日志查询页面查看 IP 溯源日志
日志样例
[2024-12-05T14:43:47,609+0800][TRACE][o.e.h.HttpTracer ] [es-master-00c0ss3qrs5c-0] [43842][null][GET][/_nodes] received request from [Netty4HttpChannel{localAddress=/9.44.128.40:9200, remoteAddress=/192.168.0.22:39770}] [2024-12-05T14:43:47,610+0800][TRACE][o.e.h.HttpTracer ] [es-master-00c0ss3qrs5c-0] [43842][null][OK][application/json; charset=UTF-8][25861] sent response to [Netty4HttpChannel{localAddress=/9.44.128.40:9200, remoteAddress=/192.168.0.22:39770}] success [true]
在日志查询页面,设置日志级别为 TRACE,选择对应的时间段,通过关键字 received 进行搜索,即可看到相应的日志,其中 remoteAddress 即为访问云搜索服务的客户端 IP。
IP 溯源,获取到的 IP 来源。其中,左侧一列是发起 http 请求的位置,分别访问公网地址和私网地址,对应的记录的源 IP。
Client source | 访问地址 | |
---|---|---|
Ecs node | 公网 IP | 私网 IP |
VKE pod | 如果 Pod 所在 Node 绑定了公网 IP,那就是 Pod 所在 Node 的公网 IP。 | Pod 所在 Node 的私网 IP:nodeIP 网段与 ES PLB 网段相同。 |
VCI pod | VPC NAT 网关网 IP | Pod IP |