乐趣区

关于elk:Filebeat-接入观测云用观测云替换-ELK

作者|小熊博望运维经理 —— 王明松

简略介绍一下

  • 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 呢?次要出于以下思考:

  1. 咱们现阶段只须要日志采集,仅需 DataKit 的小局部能力,可观测云默认会按 DataKit 个数免费,如果每台主机都装置 1 个,数量加起来是一笔不小的开销。尽管也能够改为按工夫线免费大幅升高费用,然而相比 Filebeat 能够收费应用,咱们优先选择收费了。
  2. DataKit 终端安装包比 Filebeat 要大,在寸土寸金的容器镜像里比拟侈靡。
  3. DataKit 带可配置的 Token ID 信息,用来对应观测云 SaaS 端的工作空间 ID,可能须要配置多套 Token ID 来区隔不同环境,这个会对生成容器镜像的研发造成困扰,不如沿用 Filebeat,上手成本低。
  4. 因为观测云是内部服务,由内网的 Filebeat 先采集,再输入到指定的有外网 IP 的 DataKit 网关,能够无效加重 NAT 网关的压力,也能够不便运维定期降级,做容灾等。

参考链接:https://docs.guance.com/datak…

(编者注:DataKit 本身也反对代理模式,能够多个内网 DataKit,数据汇聚到 1 个在 DMZ 的代理 DataKit 后,汇聚上报数据,观测云只计 1 个接入数。)参考链接:https://docs.guance.com/getti…

替换计划是什么呢?

前置条件

  1. 开明观测云账号
  2. 在一台机器上装好最新版本的 DataKitDataKit 版本:1.4.1 及之后

配置 DataKit

  1. DataKit 开启 Beats 数据采集性能
  2. 确保 TCP 端口对 Filebeat 服务器凋谢
  3. source 和 service 能够视状况预置在配置文件里,这两个键值会传递到观测云里

配置 Filebeat

  1. 批改 Filebeat 的配置文件
  2. 批改 output.logstash 的 hosts
  3. 地址改为 DataKit 的网关地址,留神此处填写多个地址的话不是一份数据多写,在没有配置 Load Balance 的状况下,只会随机选一个 host 写,配置了 Load Balance 就是负载平衡到多个 host

参考链接:https://www.elastic.co/guide/…

替换实现后,应用成果怎么样?

  1. 登录到观测云之后,关上日志 - 查看器,即可看到日志。
  2. Filebeat 配置 Fields 里自定义设置的 LogType,product 和 DataKit 里预置的 source(数据起源)和 service(服务)都能看到。

参考链接:https://www.elastic.co/guide/…

替换后的老本收益如何?

  1. 不再承当人力老本,稳定性进步
  • 节俭了保护集群的人力老本若干。
  • SaaS 服务性能弹性,再也不须要再放心 ELK 集群空间满,ELK 集群性能有余等问题导致集群停摆。
  1. 不再承当受权费
  • ELK 如果须要告警并且告诉到内部,则须要购买白金级订阅来实现“检测告警内部操作”。
  • 如果应用 Elastic Cloud,也须要订阅白金级能力应用“检测告警内部告诉和操作”。

参考链接:https://www.elastic.co/cn/sub…

  1. 基础设施老本缩小 90% 以上
  • 替换的内部集群之前的老本约为:18000 元人民币每月。转到观测云之后老本仅为几百元人民币每月。
  • 基础设施老本缩减为不到之前的 5%,而且 SaaS 服务按量付费,老本会更加弹性。
退出移动版