共计 2907 个字符,预计需要花费 8 分钟才能阅读完成。
作者|小熊博望运维经理 —— 王明松
简略介绍一下
- ELK
包含 ElasticSearch、Kibana 和 Logstash,Filebeat 负责在终端进行采集,将数据上报给 Logstash,存储在 ElasticSearch 或者其余存储(如 S3),最终通过 Kibana 来出现数据并进行剖析,设置告警等。咱们的原环境里一共有 5 个 ELK 集群,别离承当收集审计日志,收集业务日志,剖析业务日志的职能。其中收集审计日志是须要长期保留以供前期;收集业务日志是次要是谬误日志的收集和告警生成;剖析业务日志只是对业务状况进行实时展现,可靠性要求不高。通过评估,咱们筹备替换掉前两种收集审计日志和业务日志的共计 4 个 ELK 集群,只保留 1 个须要实时剖析业务日志的集群。 - 观测云
观测云是国内当先的可观测平台,基本功能能够齐全代替 ELK 来做日志收集,并且也能够做进一步的指标生成和告警告诉。 - DataKit
DataKit 是观测云提供的需装置到主机上的采集器,也是数据上报给观测云的入口。(编者注:观测云还提供一种须要独立部署的可编程数据处理平台 DataFlux Func,也能够作数据采集器应用。)
用观测云替换 ELK 的思路是什么?
咱们尝试了以下几种替换计划:
计划一:Logstash 接入,只替换 ElasticSearch 和 Kibana
在咱们开始测试的时候,因过后 DataKit 1.2.19(2022 年 5 月 12 日之前的版本)不反对串联 Filebeat 采集器,而之后的 DataKit 版本尽管开始反对串联 Filebeat,但并不稳固,比方不反对 6.x 版本的 Filebeat。
所以过后的思路是 Logstash 对接 DataKit 的 Logstreaming 采集器,观测云代替掉 ElasticSearch 和 Kibana 性能,这不是一个完满的计划,咱们还须要保护十分消耗资源而且容易 crash 的 Logstash。这原本就是一个权宜之计,而且在 DataKit 1.4.0 下面试验用 Logstash 6.x 接入并不稳固,最终放弃。参考文档:https://docs.guance.com/integ…
计划二:
Filebeat 接入,整体替换掉 ELK
咱们向观测云提了不少 issue,并都失去了回应,很快 DataKit 1.4.1 公布后(2022 年 6 月 7 日)就解决了各些问题,对于 Filebeat 6.x(咱们应用的是 6.2.2)和 Filebeat 7.x(咱们应用的是 7.12.0)的反对均能够。所以能够启用 DataKit 的 Beats 采集器反对,间接接管 Filebeat 的输入。
DataKit 1.4.1 版更新日志:
https://docs.guance.com/datak…
接入 Filebeat 文档链接:https://docs.guance.com/datak…
这无疑是老本最低,改变最小的一个计划。将对应服务器或者容器镜像里的 Filebeat 输入地址批改为 DataKit 网关地址即可,只不过仍然要保护俊俏的 Sidecar。
计划三:程序通过 Socket 间接输出日志给 DataKit,整体替换掉 Filebeat 和 ELK
这是最早的一个思路,心愿彻底扔掉任何内部程序,通过程序间接将相干日志对接给 DataKit,启用 DataKit 的日志采集的 Socket 端口获取(跟文件获取形式是互斥的,只能开启一个)。
文档链接:https://docs.guance.com/datak…
反对的语言有 Java,Golang 和 Python,对于 json 格局的日志反对成果十分好。然而这个只能采集利用的日志,无奈采集 Web Server 的 access_log,所以通过测试之后最终还是放弃了这个计划。(编者注:能够应用观测云 DataFlux Func 编程平台实现)
最终抉择计划二,DataKit 自身本人也是有日志采集性能的,为何不必 DataKit 来替换 Filebeat 呢?次要出于以下思考:
- 咱们现阶段只须要日志采集,仅需 DataKit 的小局部能力,可观测云默认会按 DataKit 个数免费,如果每台主机都装置 1 个,数量加起来是一笔不小的开销。尽管也能够改为按工夫线免费大幅升高费用,然而相比 Filebeat 能够收费应用,咱们优先选择收费了。
- DataKit 终端安装包比 Filebeat 要大,在寸土寸金的容器镜像里比拟侈靡。
- DataKit 带可配置的 Token ID 信息,用来对应观测云 SaaS 端的工作空间 ID,可能须要配置多套 Token ID 来区隔不同环境,这个会对生成容器镜像的研发造成困扰,不如沿用 Filebeat,上手成本低。
- 因为观测云是内部服务,由内网的 Filebeat 先采集,再输入到指定的有外网 IP 的 DataKit 网关,能够无效加重 NAT 网关的压力,也能够不便运维定期降级,做容灾等。
参考链接:https://docs.guance.com/datak…
(编者注:DataKit 本身也反对代理模式,能够多个内网 DataKit,数据汇聚到 1 个在 DMZ 的代理 DataKit 后,汇聚上报数据,观测云只计 1 个接入数。)参考链接:https://docs.guance.com/getti…
替换计划是什么呢?
前置条件
- 开明观测云账号
- 在一台机器上装好最新版本的 DataKitDataKit 版本:1.4.1 及之后
配置 DataKit
- DataKit 开启 Beats 数据采集性能
- 确保 TCP 端口对 Filebeat 服务器凋谢
- source 和 service 能够视状况预置在配置文件里,这两个键值会传递到观测云里
配置 Filebeat
- 批改 Filebeat 的配置文件
- 批改 output.logstash 的 hosts
- 地址改为 DataKit 的网关地址,留神此处填写多个地址的话不是一份数据多写,在没有配置 Load Balance 的状况下,只会随机选一个 host 写,配置了 Load Balance 就是负载平衡到多个 host
参考链接:https://www.elastic.co/guide/…
替换实现后,应用成果怎么样?
- 登录到观测云之后,关上日志 - 查看器,即可看到日志。
- Filebeat 配置 Fields 里自定义设置的 LogType,product 和 DataKit 里预置的 source(数据起源)和 service(服务)都能看到。
参考链接:https://www.elastic.co/guide/…
替换后的老本收益如何?
- 不再承当人力老本,稳定性进步
- 节俭了保护集群的人力老本若干。
- SaaS 服务性能弹性,再也不须要再放心 ELK 集群空间满,ELK 集群性能有余等问题导致集群停摆。
- 不再承当受权费
- ELK 如果须要告警并且告诉到内部,则须要购买白金级订阅来实现“检测告警内部操作”。
- 如果应用 Elastic Cloud,也须要订阅白金级能力应用“检测告警内部告诉和操作”。
参考链接:https://www.elastic.co/cn/sub…
- 基础设施老本缩小 90% 以上
- 替换的内部集群之前的老本约为:18000 元人民币每月。转到观测云之后老本仅为几百元人民币每月。
- 基础设施老本缩减为不到之前的 5%,而且 SaaS 服务按量付费,老本会更加弹性。