使用Elasticsearch和Kibana来可视化Akamai DataStream 2的日志

Akamai DataStream 2 是什么?

Akamai DataStream 2是Akamai边缘平台的一个免费功能,可以将访问日志实时流式传输到指定目标。截至2023年11月,可以将访问日志传递到以下目标。

    • Amazon S3

 

    • Azure Storage

 

    • Custom HTTPS endpoint

 

    • Datadog

 

    • Elasticsearch

 

    • Google Cloud Storage

 

    • Loggly

 

    • New Relic

 

    • Oracle Cloud

 

    • S3-compatible destinations (Linode Object Storage対応可)

 

    • Splunk

 

    Sumo Logic

参考:DataStream 2 – 将日志流入到目标地

Elasticsearch / Kibana 是什么?

Elasticsearch是由Elastic公司开发的全文搜索引擎。它以双重许可证(Server Side Public License和Elastic License)提供,其源代码也是公开的。Kibana是用于可视化Elasticsearch数据的软件,与Elasticsearch以相同的条件提供。将这两个软件与称为Logstash的数据收集管道软件结合在一起,称为ELK Stack,它从最初的全文搜索引擎发展而来,并且现在也非常受欢迎作为日志分析和数据可视化基础架构。

这篇文章的目的

此外,本文将使用Akamai在2022年2月收购的IaaS(基础设施即服务)提供商Linode作为环境搭建的目标。Linode拥有一项名为StackScripts的独特部署自动化功能,可在大约10分钟内完成准备工作,包括接收访问日志的Elasticsearch+Kibana设置(在首次设置DataStream 2时,需等待约1个半小时以开始日志传送)。

参考:什么是Linode StackScripts?

此外,本文介绍了如何从零开始构建Elasticsearch和Kibana的环境,但如果您已经在运营这些环境,并且只需要Akamai DataStream 2所需的Elasticsearch索引映射、Kibana数据视图、可视化和仪表板的定义文件,我在GitHub上也公开了这些文件,可以下载并使用。

Elasticsearch和Kibana的定义文件。

在Linode上安装Elasticsearch和Kibana。

首先,从以下链接打开事先准备好的StackScript。该StackScript将自动安装Elasticsearch和Kibana。(需要登录Linode账户才能访问链接)

elasticsearch-kibana-用于akamai-datastream2
https://cloud.linode.com/stackscripts/1059555

如果由于某种原因无法打开此StackScript,请使用GitHub上上传的此StackScript来使用。

登录到Kibana

设置DataStream 2

请根据个人信息保护法等相关法规,选择要收集的日志内容。

在属性中启用DataStream 2

※此节的解释是在假设读者已经理解了Akamai属性管理器的基本操作方式的前提下撰写的。

Stream versionDataStream 2Stream namesDataSteam 2のセットアップ時に指定した名前Sampling rateログを送信する割合 (100で全てのログを送信)Log *** Headerリクエストに含まれる当該ヘッダーを収集するかどうかCookie Modeリクエストに含まれるCookieを収集するかどうかInclude Custom Log Fieldカスタムのログフィールドを追加するかどうかCustom Log Fieldカスタムのログフィールドに入れる値 (ここでは例として通信に使用しているTLSのCipher Suiteの名前を含めていますが、空欄でも構いません)Log Akamai Edge Server IP Addressリクエストを処理したエッジサーバーのIPアドレスを収集するかどうか (これは必ずOnにしてください)
请根据个人信息保护法等相关法规的考虑,选择要收集的日志内容。

辛苦了!现在你可以实时查看Akamai的访问日志了。

这次使用的StackScript将创建一个可视化仪表板,用于可视化包含在访问日志中的典型值。然而,DataStream 2提供的访问日志中还包含其他各种字段。在此基础上,您也可以通过Kibana的GUI来自定义仪表板。

发展性使用方法

发送有条件的访问日志

自定义字段的利用

DataStream 2提供的访问日志中存在称为自定义字段的字段。您可以在这里添加任意长度为1000字节的字符串,以包括边缘服务器所拥有的内置变量和属性的用户变量。

参考: 内置变量一览表的属性管理器

String ctt=dissect('ctt:%{ctt_val}').extract(doc["customField"].value)?.ctt_val;
if (ctt != null) emit(Integer.parseInt(ctt)); 

另外,如果使用Akamai的边缘计算平台EdgeWorkers在Akamai的边缘上运行,您可以使用基于JavaScript的代码设置任意用户变量。通过将其包含在自定义字段中,您可以在日志分析基础设施中汇总EdgeWorkers应用程序的调试信息和与业务逻辑相关的值。请注意,截至2023年6月,自定义字段的长度限制为1000字节。

参考:请求对象的setVariable()方法。

EdgeWorkers的调试

在 EdgeWorkers 中,当超出各种限制(如 CPU 时间、内存使用量、执行时间等)时,操作会在中途被终止。基于这一点,在实际运营中,可能会遇到仅在特定条件下才能正常工作的情况,这取决于请求的内容。可以在 Akamai 的控制中心(Akamai Control Center)门户网站上查看错误统计信息,但无法查看错误发生时的请求详细信息。通过使用 DataStream 2,在发生错误时,不仅可以获得请求信息,还可以在 ewExecutionInfo 和 ewUsageInfo 字段中获得 EdgeWorkers 运行时的详细操作状态,这对故障排除非常有帮助。

监视Web应用防火墙的检测情况。

将Common Media Client Data (CMCD)的数据可视化

常用媒体客户端数据(CMCD)是视频播放器收集的各种指标的标准化数据格式,用于将数据发送到CDN边缘服务器和源服务器。CTA WAVE项目于2020年9月公开了CMCD的规范。

网络应用视频生态系统 – 通用媒体客户端数据 (Chinese)

支持CMCD的视频播放器通过HTTP请求头或查询参数向服务器发送各种信息。如果使用Akamai自适应媒体传送(AMD),可以在DataStream 2的日志中添加CMCD字段,并且可以使用在本文中构建的Elasticsearch + Kibana来可视化视频播放质量和各种信息。这样,除了现有的视频QoS/QoE测量工具提供的信息外,还可以将Akamai日志和质量度量相关联。有关使用CMCD的好处的详细信息,请参阅以下文章。

用CMCD增强您的播放器分析和CDN日志 (英语) ,以获取更多的信息

大多数视频播放器的实现方式是将CMCD作为查询参数发送到服务器,但如果希望通过请求头发送CMCD数据,则需要在AMD中添加CORS头设置。若要更改CORS头,请参考以下指南。

常见的媒体客户数据

※2023年4月19日,我们已经更新了此文章中提到的StackScript。从此日期以后使用StackScript安装Elasticsearch+Kibana时,将会创建支持CMCD的索引模板、数据视图和仪表盘。

CMCDのフィールド

实际运用时需要考虑的因素

为了简化说明,本文未涵盖在实际操作中需要考虑的几个要点。在实际操作中,需要考虑以下几点:

    • DataStream 2のログ転送エラーアラートの有効化

 

    • ElasticsearchのAPIエンドポイントのHTTPS化

 

    • Elasticsearchノードの冗長化

 

    • Linode Block Storageを使った仮想マシンの追加ストレージの確保

 

    アクセスログのライフサイクル管理

为了简化获取SSL证书的步骤,本文将禁用Elasticsearch的HTTPS功能。建议在实际运营中获取正式的SSL证书,并将通信从DataStream 2转换为HTTPS协议连接至Elasticsearch。由于DataStream 2不接受自签名证书,因此您需要部署由正式认证机构颁发的SSL证书到Elasticsearch。您可以通过搜索关键词“Elasticsearch Let’s Encrypt”等在互联网上找到相关信息。

另外,为了禁用HTTPS,StackScript会修改Elasticsearch的配置文件,所以要再次启用HTTPS,需要将SSL证书部署到/etc/elasticsearch/elasticsearch.yml中的xpack.security.http.ssl的enabled标志设置为true。然后,需要修改DataStream 2的设置,将访问日志的目标终端点从http://更改为https://。

提供更多的相关信息

    • DataStream 2のerrorCodeフィールドの値一覧

 

    プロパティマネージャーのビルトイン変数一覧

相关文章

在 Akamai Technologies 合资公司的 Qiita 上,我们发布了与 Linode 相关的开发者文章。

 

广告
将在 10 秒后关闭
bannerAds