《Elastic Stack 实战手册》——四、应用实践——4.2 可观测性应用场景 ——4.2.3.CDN流媒体服务实时分析Elasticsearch实践(上) https://developer.aliyun.com/article/1226000
索引管理
索引生命周期管理 Elasticsearch 也提供了非常便利的工具。
生命周期配置,这里应该根据业务需求和节点规模综合考量。
{ "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "20GB", "max_docs": 20000000, "max_age": "7d" } } }, "delete": { "min_age": "30d", "actions": { "delete": {} } } } } }
完整版:https://github.com/cloudymoma/raycom/blob/gcp-lb-log/scripts/elastic/index-gclb-template.json
模版为每次生成的索引应用相同的配置,且指定了生命周期的政策文件和注入别名。
{ "index_patterns": [ "bindiego*" ], "order": 999, "settings": { "number_of_shards": 2, "number_of_replicas": 1, "final_pipeline": "bindiego", "index.lifecycle.name": "bindiego-policy", "index.lifecycle.rollover_alias": "bindiego-ingest" }, "mappings": {
最后我们配置了脚本一次性把上述配置应用,且在 Kibana 里为我们建立好查询的 index
pattern。
详细戳这里:
https://github.com/cloudymoma/raycom/blob/gcp-lb-log/scripts/elastic/init.sh
数据面板
这里虽然是个人弱项,但是借助 Kibana 强大的可视化功能,可以根据第一部分整理出来的数据绘制实时面板。
完整可复用面板:https://github.com/cloudymoma/raycom/blob/gcp-lb-log/scripts/elastic/gclb_dashboard.ndjson
部分截图:https://github.com/cloudymoma/raycom/tree/gcp-lb-log#dashboards-in-kibana
下面我举一些可能常被忽视的好用功能给大家打个样。
1、IP 反查出的 Geo 和 ISP 信息
通过这些信息,可以快速反映出各个运营商网络的情况,甚至一些盗链的线索初判断。
2、Vega 在 Kibana 里绘制数据
当我们觉得 Kibana 自身图表不够丰富的时候,可以借助 Vega。上面这个图就展示了来自不同地区的用户,分别命中 CDN 缓存点的流量分配。数据通过用 Elasticsearch 的 CompositeAggregation 提取。
3、Kibana TSVB
这个是我个人最喜欢的绘图方法了,可以非常灵活的对指标进行计算。下面这两个图表就展示过滤出直播业务的缓存命中、请求返回和缓存填充的数据量这些信息。
总结
由于业务数据的敏感性,这里就不列举细节了。但数据管道和治理,都依旧遵循同样的原则。整体数据管道的选型也非常灵活,采集部分即可以是 Beats 生态中的产品,也可以是自己开发的 agent。队列常用的有 Kafka 或者云上托管服务。分布式计算层因为业务比较简单,我比较推荐使用 Apache Beam,这样执行引擎可以在比如 Flink、Spark Streaming 和任何 Beam 支持的平台上相对灵活的切换。
今天我们给出的案例是一个非常简单,且可以快速复用的开源项目。大家有任何需求和疑问也欢迎到社区一起交流、学习。
创作人简介:
吴斌,Elastic 中文社区副主席,现就职于大型互联网公司任职云架构师。专注于海量数据处理、挖掘、分析和企业级搜索领域。十分熟悉分布式应用,高可用架构和自动化技术。曾在海外世界百强大学计算机学院任教 6 年。更是一位开源软件社区的积极贡献者和组织者。