使用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属性管理器的基本操作方式的前提下撰写的。
辛苦了!现在你可以实时查看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的索引模板、数据视图和仪表盘。
实际运用时需要考虑的因素
为了简化说明,本文未涵盖在实际操作中需要考虑的几个要点。在实际操作中,需要考虑以下几点:
-
- 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 相关的开发者文章。