极限网关可视化——Elasticsearch 请求流量分析实战
现代的云计算架构中,如何监控和分析不同服务之间的流量,尤其是 Elasticsearch 的请求,变得至关重要。
极限网关(Infini Gateway)作为一款轻量级的高性能网关,能够帮助我们高效地记录和分析通过其流量,从而为运维和业务优化提供强有力的数据支持。
本文将带你一步一步实现如何通过极限网关进行流量日志分析,并利用可视化工具 Kibana 进行数据展示。
一、背景与目的
在微服务架构中,多个应用程序通过 Elasticsearch 进行数据查询和存储,如何精确地追踪每个请求的性能与行为,是开发者和运维人员所关注的重点。
极限网关作为一个代理层,能够有效地将这些请求进行日志记录,保存到 Elasticsearch中,以便后续分析。通过这种方式,我们不仅能实时监控请求的流量,还能深入了解业务运行状况和性能瓶颈。
本文目的:
通过极限网关进行请求流量的记录和分析;
配置 Elasticsearch 集群并集成日志监控;
在Kibana中可视化展示请求分析结果,帮助开发和运维人员做出更优的决策。
二、极限网关的配置与安装
1. 环境配置
极限网关通过 gateway.yml
配置文件来实现流量的监控与分析。解压安装包后,默认会有一个 gateway.yml
配置文件。
以下是需要修改的部分配置项:
env:
LOGGING_ES_ENDPOINT: http://localhost:9200
LOGGING_ES_USER: elastic
LOGGING_ES_PASS: password
PROD_ES_ENDPOINT: http://localhost:9200
PROD_ES_USER: elastic
PROD_ES_PASS: password
GW_BINDING: "0.0.0.0:8000"
API_BINDING: "0.0.0.0:2900"
这些配置项的含义如下:
LOGGING_ES_ENDPOINT:定义日志集群的Elasticsearch访问地址,所有的请求日志都会被写入到此集群中。
PROD_ES_ENDPOINT:定义生产集群的访问地址,网关将代理所有的生产请求。
GW_BINDING:网关代理服务的监听地址和端口。
API_BINDING:网关API服务的监听地址和端口。
你可以根据实际环境修改这些值,例如在开发和测试环境中,日志集群和生产集群可以设置为同一地址。
2. 启用缓存功能
如果你需要启用极限网关的缓存功能,可以在 default_flow
配置中添加 set_cache
与 get_cache
。配置示例如下:
- name: default_flow
filter:
- get_cache:
- elasticsearch:
elasticsearch: prod
max_connection_per_node: 1000
- set_cache:
这个配置允许网关使用缓存,减少重复的请求到Elasticsearch的压力,提升查询性能。
更多配置参数参考:极限网关 INFINI Gateway 配置文件核心解读
我实现可视化分析的配置是基于官方提供的模版配置走了微调,篇幅原因没有提供。
三、INFINI Easysearch 配置(非必须)
如果你选择使用 INFINI Easysearch 来作为日志存储,除了Elasticsearch的常规配置外,你还需要安装 index-management 插件,以便更高效地管理索引。安装命令如下:
bin/easysearch-plugin install index-management
安装完成后,重启网关使插件生效。
特别说明:如果使用 Elasticsearch 作为日志存储,无需上述插件安装。
配置索引模板
在日志集群中,你还需要创建适合存储日志的索引模板。
以下是一个创建模板的命令示例:
curl -X PUT "localhost:9200/_template/logging_template" -H 'Content-Type: application/json' -d'
{
"template": {
"settings": {
"index.lifecycle.name": "logging_policy"
},
"mappings": {
"_doc": {
"properties": {
"timestamp": {"type": "date"},
"request_duration": {"type": "float"}
}
}
}
}
}'
Kibana 操作如下:
PUT /_template/logging_template
{
"template": {
"settings": {
"index.lifecycle.name": "logging_policy"
},
"mappings": {
"_doc": {
"properties": {
"timestamp": {
"type": "date"
},
"request_duration": {
"type": "float"
}
}
}
}
}
}
这个模板定义了日志索引的生命周期策略和字段映射,确保所有请求日志能够高效存储和检索。
四、配置Elasticsearch索引生命周期
在使用日志集群时,配置合适的 索引生命周期管理 (ILM) 策略是非常关键的。
ILM 帮助我们根据需求自动管理索引的滚动、合并、删除等操作。
你可以根据实际的日志流量设置不同的保留策略,避免索引过于庞大,影响查询性能。
五、导入 Kibana 仪表板
下载最新版本的仪表板文件 INFINI-Gateway-7.9.2-2021-01-15.ndjson.zip 并导入到Kibana中,开始进行数据的可视化。
官方提供的下载地址:https://pan.baidu.com/s/1iIXCrmMH-24fSzwcvIn8zg?pwd=gm2x#list/path=%2Fdashboard&parentPath=%2F
本地下载解压后如下图所示:
导入方法:
第一步:打开Kibana;
第二步:找到 Stack Management 界面;
第三步:找到 Saved Objects 菜单栏,点击右上角的 Import,选择本地文件后,会出现如下截图。
如果有报错,可以加上如下 session storage 的设置。
导入完成后,你将在Kibana中看到与Elasticsearch请求相关的各种图表、仪表盘和分析视图,帮助你实时了解流量的变化趋势。
报错解决方案:上述导入完成后,可能会有字段类型 text 和 keyword 混合类型,可以通过手动更改 kibana 选择对应报错字段的 keyword 类型字段即可解决。
六、启动与配置网关
一切配置完成后,启动网关服务:
./bin/gateway
启动时,网关会输出类似如下的日志信息:
[GATEWAY] A light-weight, powerful and high-performance elasticsearch gateway.
[GATEWAY] 1.0.0_SNAPSHOT, Wed Feb 3 00:12:02 2021 +0800, medcl
[GATEWAY] api server listen at: http://0.0.0.0:2900
[GATEWAY] entry [es_gateway] listen at: http://0.0.0.0:8000
此时,网关已经启动并开始监听流量。
修改应用配置
最后,你需要将所有原本指向Elasticsearch的应用(如Kibana、Logstash、Beats等)配置为访问网关的地址。修改Kibana的配置文件如下:
elasticsearch.hosts: ["https://192.168.3.98:8000"]
elasticsearch.customHeaders: { "app": "kibana" }
保存配置并重启Kibana。
七、效果展示
经过以上步骤,所有通过网关访问Elasticsearch的请求都会被监控和记录,并存储到日志集群中。
kibana 8.15 dark 模式
在Kibana中,你可以创建自定义仪表盘,展示流量数据、请求延迟、成功率等关键性能指标,帮助团队实时洞察系统状态,优化服务。
八、总结
通过使用极限网关进行流量分析和日志记录,我们能够清晰地了解通过Elasticsearch的请求情况,并通过 Kibana 进行数据可视化展示。
这不仅有助于我们实时监控系统的运行状态,还能帮助定位性能瓶颈和优化业务流程。希望本文的配置和操作步骤能为你在实际生产环境中的流量分析提供帮助。
希望这篇博文能够帮助你顺利实现极限网关的日志分析与可视化!
相关推荐:
极限网关核心架构解析:从 Nginx 到 INFINI Gateway 的演进
极限网关 INFINI Gateway 从 0 到 1:简单易懂的入门教程
极限网关 INFINI Gateway 配置文件核心解读
给 Elasticsearch "穿上盔甲"——极限网关一招搞定 TLS 安全防护
如何防止 Elasticsearch 服务 OOM ?极限网关来为你的 ES 服务保驾护航!
极限网关——一个面向Elasticsearch的高性能应用网关
更短时间更快习得更多干货!
和全球超2000+ Elastic 爱好者一起精进!
elastic6.cn——ElasticStack进阶助手
抢先一步学习进阶干货!