带你读《Elastic Stack 实战手册》之77:——4.2.3.CDN流媒体服务实时分析Elasticsearch实践(上)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《Elastic Stack 实战手册》之77:——4.2.3.CDN流媒体服务实时分析Elasticsearch实践(上)

4.2.3.CDN流媒体服务实时分析Elasticsearch实践

创作人:吴斌

审稿人李捷

 

发挥 Elastic Stack 在日志和实时数据分析计算领域的一些优势,对流媒体服务这样规模较大、实时性要求偏高,且分析、业务探索流程要求灵活的业务是一个比较百搭的选择。

 

数据逻辑架构如下

image.png


整体架构比较直观简单。我们省去了业务组建和存储层可能会用到的其他引擎,把目光主要集中在 Elasticsearch 上。

 

日志采集

 

日志的收集在正式进入数据管道前,可以选择落地或者直接吐到消息队列。这里采集的内容也主要分成 2 大部分

 

l CDN/网络访问日志

l 业务打点数据



业务打点的数据可以根据需求采集,实时部分主要会聚焦在,例如卡顿等这样的用户体验指标。网络访问的日志通常比较通用,这里我们也先给出一个例子,相信大家看上去会比较熟悉。

 

那么根据这里样例的数据,Elasticsearch 可以轻松的利用内置的 processor 和聚合功能做快速的分析,后面我们会举例说明。


{
  "receiveTimestamp": "2021-04-28T14:30:17.90993285Z",
   "spanId": "blahblah",
    "trace": "blah/f5c7578feaf277dd9a8d96",
    "@timestamp": "2021-04-28T14:30:17.549287Z",
    "logName": "logs/requests",
    "jsonPayload": {
      "@type": "loadbalancing.type.LoadBalancerLogEntry",
      "latencySeconds": "0.001749s",
      "statusDetails": "response_from_cache",
      "cacheIdCityCode": "ABC",
      "cacheId": "ABC-abcabc123"
    },
    "httpRequest": {
      "remoteIp": "10.0.0.1",
      "remoteIpIsp": {
        "ip": "10.0.0.2",
        "organization_name": "China Telecom",
        "asn": 8346,
        "network": "10.0.0.0/15"
      },
      "requestMethod": "GET",
      "responseSize": "125621",
      "userAgent": "Mozilla/5.0 (Linux; Android 10) Bindiego/7.1-1840",
      "frontendSrtt": 0.124,
      "cacheLookup": true,
      "geo": {
        "continent_name": "Asia",
           "country_iso_code": "CN",
        "country_name": "China",
        "location": {
          "lon": 123,
          "lat": 321
        }
      },
      "backendLatency": 0.001749,
      "requestUrl": "http://bindiego.com/vid/bindigo.m4s",
      "requestDomain": "bindiego.com",
      "cacheHit": true,
      "requestSize": "671",
      "requestProtocol": "http",
      "user_agent": {
        "original": "Mozilla/5.0 (Linux; Android 10) Bindiego/7.1-1840",
        "os": {
          "name": "Android",
          "version": "10",
          "full": "Android 10"
        },
        "name": "Android",
          "device": {
          "name": "Generic Smartphone"
        },
        "version": "10"
      },
      "status": 200,
      "resourceType": "m4s"
    }
  }

这里就是最终导入到 Elasticsearch 里可分析的网络性能数据。针对这个数据,我们分别对它经过的管道和处理做一个简单快速的剖析。


消息队列

 

日志采集器会直接把数据打到消息队列,这里主要起到一个抗反压缓冲的作用。有些队列有很多附加的功能,例如存储和窗口计算,这里我们只使用最单纯的功能。因为后面我们选取了分布式计算引擎来做这这部分。

 

分布式计算引擎

 

分布式计算引擎,其实在整体实时数据分析业务里,扮演的着实是非常重要的角色。例如实时指标的窗口计算,迟报数据的修正等等。但在我们这个简单的场景下为了后面在 Elasticsearch内更方便快捷的分析、过滤数据。

 

我们这里主要做了 ETL 和补全。例如把请求资源的域和资源类型提取出来,还有 CDN 缓存节点的区域代码等等。但是例如 IP 地址地理位置、用户设备类型和运营商(ISP)的反查,方便起见,我们利用了 Elasticsearch Ingest 节点预置的 Pipeline 去做。

 

这里要注意的就是,如果你的集群配置是全角色的节点,会对数据节点的性能有影响。建议使用独立的 ingest node 去做,且如果是在 K8S 上部署的话,还可以弹性扩容这组 nodeSet。

下面是 Ingest 节点配置举例

 

完整代码戳这里:https://github.com/cloudymoma/raycom/blob/gcp-lb-log/scripts/elastic/index-gclb-pipeline.json


{
    "description": "IP & user agent lookup",
    "processors": [
      {
        "user_agent" : {
          "field" : "httpRequest.userAgent",
          "target_field" : "httpRequest.user_agent",
           "ignore_missing": true
               }
      },
      {
        "geoip" : {
          "field" : "httpRequest.remoteIp",
          "target_field" : "httpRequest.geo",
          "ignore_missing": true
        }
      },
      {
        "geoip" : {
          "field" : "httpRequest.remoteIp",
          "target_field" : "httpRequest.remoteIpIsp",
          "database_file" : "GeoLite2-ASN.mmdb",
          "ignore_missing": true
        }
      }
    ]
}

数据安全

 

数据安全这块顺带提一下,现在 Elasticsearch 的认证、授权都可以在 Basic License 里使用了,非常方便。这里简单提一下通讯这块,很多小伙伴用的是自签的证书。这个问题不大,经常被问到在使用 RestClient 开发的时候如何绕过去(例如在写计算引擎最后入库的时候)。其实方法也很简单,这里就给大家上个代码片段说明看下

 

配置https://github.com/elasticsearch-cn/elastic-on-gke#option-2-regional-tcp-lb

完整代码https://github.com/cloudymoma/raycom/blob/streaming/src/main/java/bindiego/io/ElasticsearchIO.java#L273-L296

 

try {
    SSLContext context = SSLContext.getInstance("TLS");
    context.init(null, new TrustManager[] {
        new X509TrustManager() {
            public void checkClientTrusted(X509Certificate[] chain, String authType) {}
            public void checkServerTrusted(X509Certificate[] chain, String authType) {}
            public X509Certificate[] getAcceptedIssuers() { return null; }
        }
    }, null);
    httpAsyncClientBuilder.setSSLContext(context)
        .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);
} catch (NoSuchAlgorithmException ex) {
    logger.error("Error when setup dummy SSLContext", ex);
} catch (KeyManagementException ex) {
    logger.error("Error when setup dummy SSLContext", ex);
} catch (Exception ex) {
    logger.error("Error when setup dummy SSLContext", ex);
}


《Elastic Stack 实战手册》——四、应用实践——4.2 可观测性应用场景 ——4.2.3.CDN流媒体服务实时分析Elasticsearch实践(下) https://developer.aliyun.com/article/1225999

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
8天前
|
边缘计算 网络安全 CDN
阿里云CDN服务的优劣势分析
阿里云CDN依托全球50+节点,提供高速、稳定、安全的内容分发服务,支持智能调度、灵活配置与DDoS防护,助力企业提升海外访问体验。虽价格略高,功能相对集中,但仍是全球化业务优选的可靠加速方案。
|
7月前
|
存储 SQL Apache
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
本文将从技术选型的视角,从开放性、系统架构、实时写入、实时存储、实时查询等多方面,深入分析 Apache Doris 与 Elasticsearch 的能力差异及性能表现
550 17
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
|
7月前
|
缓存 边缘计算 安全
阿里云CDN:全球加速网络的实践创新与价值解析
在数字化浪潮下,用户体验成为企业竞争力的核心。阿里云CDN凭借技术创新与全球化布局,提供高效稳定的加速解决方案。其三层优化体系(智能调度、缓存策略、安全防护)确保低延迟和高命中率,覆盖2800+全球节点,支持电商、教育、游戏等行业,帮助企业节省带宽成本,提升加载速度和安全性。未来,阿里云CDN将继续引领内容分发的行业标准。
397 7
|
9月前
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
377 3
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
10月前
|
数据采集 人工智能 运维
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
本文介绍了阿里云 Elasticsearch 推出的创新型 AI 搜索方案
537 3
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
|
9月前
|
数据采集 人工智能 运维
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
本文介绍了阿里云 Elasticsearch 推出的创新型 AI 搜索方案。
732 5
|
10月前
|
弹性计算 运维 Serverless
超值选择:阿里云Elasticsearch Serverless在企业数据检索与分析中的高性能与灵活性
本文介绍了阿里云Elasticsearch Serverless服务的高性价比与高度弹性灵活性。
410 8
|
11月前
|
存储 SQL 监控
|
5月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
2085 0
|
6月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
882 1

相关产品

  • 检索分析服务 Elasticsearch版