极限网关可视化——Elasticsearch 请求流量分析实战

现代的云计算架构中,如何监控和分析不同服务之间的流量,尤其是 Elasticsearch 的请求,变得至关重要。

极限网关(Infini Gateway)作为一款轻量级的高性能网关,能够帮助我们高效地记录和分析通过其流量,从而为运维和业务优化提供强有力的数据支持。

本文将带你一步一步实现如何通过极限网关进行流量日志分析,并利用可视化工具 Kibana 进行数据展示。

一、背景与目的

在微服务架构中,多个应用程序通过 Elasticsearch 进行数据查询和存储,如何精确地追踪每个请求的性能与行为,是开发者和运维人员所关注的重点。

极限网关作为一个代理层,能够有效地将这些请求进行日志记录,保存到 Elasticsearch中,以便后续分析。通过这种方式,我们不仅能实时监控请求的流量,还能深入了解业务运行状况和性能瓶颈。

本文目的:

  1. 通过极限网关进行请求流量的记录和分析;

  2. 配置 Elasticsearch 集群并集成日志监控;

  3. 在Kibana中可视化展示请求分析结果,帮助开发和运维人员做出更优的决策。


二、极限网关的配置与安装

1. 环境配置

极限网关通过 gateway.yml 配置文件来实现流量的监控与分析。解压安装包后,默认会有一个 gateway.yml 配置文件。

以下是需要修改的部分配置项:

go 复制代码
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_cacheget_cache。配置示例如下:

go 复制代码
- 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 插件,以便更高效地管理索引。安装命令如下:

go 复制代码
bin/easysearch-plugin install index-management

安装完成后,重启网关使插件生效。

特别说明:如果使用 Elasticsearch 作为日志存储,无需上述插件安装。

配置索引模板

在日志集群中,你还需要创建适合存储日志的索引模板。

以下是一个创建模板的命令示例:

go 复制代码
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 操作如下:

go 复制代码
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 类型字段即可解决。


六、启动与配置网关

一切配置完成后,启动网关服务:

go 复制代码
./bin/gateway

启动时,网关会输出类似如下的日志信息:

go 复制代码
[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的配置文件如下:

go 复制代码
elasticsearch.hosts: ["https://192.168.3.98:8000"]
elasticsearch.customHeaders: { "app": "kibana" }

保存配置并重启Kibana。


七、效果展示

经过以上步骤,所有通过网关访问Elasticsearch的请求都会被监控和记录,并存储到日志集群中。

kibana 8.15 dark 模式

在Kibana中,你可以创建自定义仪表盘,展示流量数据、请求延迟、成功率等关键性能指标,帮助团队实时洞察系统状态,优化服务。


八、总结

通过使用极限网关进行流量分析和日志记录,我们能够清晰地了解通过Elasticsearch的请求情况,并通过 Kibana 进行数据可视化展示。

这不仅有助于我们实时监控系统的运行状态,还能帮助定位性能瓶颈和优化业务流程。希望本文的配置和操作步骤能为你在实际生产环境中的流量分析提供帮助。


希望这篇博文能够帮助你顺利实现极限网关的日志分析与可视化!

相关推荐:

相关推荐
lilye6612 分钟前
程序化广告行业(39/89):广告投放的数据分析与优化秘籍
大数据·人工智能·数据分析
小小寂寞的城36 分钟前
Ubuntu里安装Jenkins
ubuntu·ci/cd·docker·jenkins
IT成长日记40 分钟前
Elasticsearch安全加固指南:启用登录认证与SSL加密
安全·elasticsearch·ssl
Elasticsearch2 小时前
现在支持通过 EDOT Collector 在 Kubernetes 上动态发现工作负载
elasticsearch
中科岩创2 小时前
某地老旧房屋自动化监测项目
大数据·物联网·自动化
viperrrrrrrrrr73 小时前
大数据学习(95)-谓词下推
大数据·sql·学习
汤姆yu4 小时前
基于python大数据的旅游可视化及推荐系统
大数据·旅游·可视化·算法推荐
zhangjin12224 小时前
kettle从入门到精通 第九十四课 ETL之kettle MySQL Bulk Loader大批量高性能数据写入
大数据·数据仓库·mysql·etl·kettle实战·kettlel批量插入·kettle mysql
哈哈真棒5 小时前
hadoop 集群的常用命令
大数据
阿里云大数据AI技术5 小时前
百观科技基于阿里云 EMR 的数据湖实践分享
大数据·数据库