filebeat接入观测云——用观测云替换ELK

可观测性
0
0
本文作者:小熊博望运维经理 王明松 # 一、简介 ELK包括 [Elasticsearch](https://www.elastic.co/cn/logstash/)、[Kibana](https://www.elastic.co/cn/kibana/)和 [Logstash](https://www.elastic.co/cn/logstash/),[filebeat](https://www.elastic.co/cn/beats/filebeat)负责在终端进行采集,将数据上报给Logstash,存储在Elasticsearch或者其他存储(如S3),最终通过Kibana来呈现数据并进行分析,设置告警等。 替换之前一共有5个ELK集群,分别承担收集审计日志,收集业务日志,分析业务日志的职能。 其中收集审计日志是需要长期保存以供后期; 收集业务日志是主要是错误日志的收集和告警生成; 分析业务日志只是对业务情况进行实时展示,可靠性要求不高。 经过评估,准备替换掉其中前两种需求的共计4个ELK集群,只保留一个需要实时分析日志的集群。 [观测云](http://www.guance.com/)是国内领先的可观测平台,其基本功能与ELK一致。观测云的[日志](https://docs.guance.com/logs/)功能可以完全替代ELK来做日志收集,并且也可以做进一步的[指标](https://docs.guance.com/metrics/)生成和[告警](https://docs.guance.com/monitoring/)通知。 [datakit](https://docs.guance.com/datakit/)是观测云的客户端,是数据上报给观测云的唯一入口 # 二、替换思路 先后经过两次方案调整 ## 方案一:logstash接入,只替换Elasticsearch和Kibana [datakit 1.2.19](https://docs.guance.com/datakit/changelog/#cl-1.2.19)也就是2022年05月12日 之前的版本并不支持 filebeat采集器。 datakit 1.4.0 及之前的版本 功能不完全,有问题,而且不支持6.x版本的filebeat 所以当时的思路是 [logstash对接datakit的logstreaming采集器](https://docs.guance.com/integrations/logs/logstash/),观测云替代掉Elasticsearch和Kibana功能,这不是一个完美的方案,我们还需要维护非常耗费资源而且容易crash的logstash 这本来就是一个权宜之计,而且在datakit1.4.0 上面实验用logstash 6.x 接入并不成功,最终放弃。 ## 方案二:filebeat接入,整体替换掉ELK datakit 1.4.1 及以后版本 解决了各种问题,对于filebeat 6.x(我们使用的是6.2.2) filebeat 7.x(我们使用的是7.12.0)的支持均可以。 所以可以启用 [datakit的beats采集器支持](https://docs.guance.com/datakit/beats_output/),直接接受filebeat的输出。 这无疑是成本最低,改动最小的一个方案。将对应服务器或者容器镜像里的filebeat输出地址修改为datakit即可。只不过依然要维护丑陋的sidecar。 ## 方案三:程序通过socket直接输入日志给datakit,整体替换掉filebeat和ELK 这是最早的一个思路,希望彻底扔掉任何外部程序,通过程序直接将相关日志对接给datakit,需要启用[datakit的日志采集的socket端口获取](https://docs.guance.com/datakit/logging/#socket)(跟文件获取方式是互斥的,只能开启一个)。 [支持的语言有java,golang和python](https://docs.guance.com/datakit/logging_socket/),对于json格式的日志支持效果非常好 但是这个只能采集应用的日志,无法采集web server的 access\_log,所以经过测试之后最终还是放弃了这个方案。 ## 最终选择方案二 [datakit本身自己也是有日志采集功能](https://docs.guance.com/datakit/logging/)的,为何不用datakit来替代filebeat,主要出于以下考虑: 1. 我们现阶段只需要日志采集,而datakit功能丰富还会采集其他信息,观测云默认会[按datakit个数收费](https://docs.guance.com/billing/billing-method/#default),众多机器加起来是一笔不小的开支。虽然可以改为[按时间线收费](https://docs.guance.com/billing/billing-method/#time-data),但是依然会增加额外的成本,这个就非常没有必要了。 2. datakit终端比filebeat要大,在寸土寸金的容器镜像里比较奢侈 3. datakit配置有账号信息,而且还需要及时升级这个会对生成容器镜像的研发造成困扰,不如沿用filebeat,上手成本低。 4. 因为观测云是外部服务,由filebeat输出到有外网ip的统一的网关,可以有效减轻nat网关的压力,也可以方便运维定期升级,做容灾等。 # 三、替换方案 ## 前置条件 1. 开通观测云账号 2. 在一台机器上装好最新版本的datakit datakit版本选择 :[1.4.1](https://docs.guance.com/datakit/changelog/#cl-1.4.1)及之后,之前的版本会有问题。 ## 配置datakit datakit开启[Beats 数据采集功能](https://docs.guance.com/datakit/beats_output/) 确保tcp端口对filebeat服务器开放 source和service可以视情况预制在配置文件里,这两个键值会传递到观测云里 ## 配置filebeat 修改filebeat的配置文件,修改[output.logstash的hosts](https://www.elastic.co/guide/en/beats/filebeat/current/logstash-output.html#hosts),地址改为datakit的地址,注意这个地方填写多个地址的话不是一份数据多写,在没有配置[loadbalance](https://www.elastic.co/guide/en/beats/filebeat/current/logstash-output.html#loadbalance)的情况下,只会随机选一个host写,配置了[loadbalance](https://www.elastic.co/guide/en/beats/filebeat/current/logstash-output.html#loadbalance)就是负载均衡到多个host。 # 四、使用效果 1.登录到观测云之后,打开日志-查看器,即可看到日志 ![image.png](https://dev-media.amazoncloud.cn/1870ffcc64fb4b43b27b2bec255e244a_image.png "image.png") 2.[filebeat配置fields里](https://www.elastic.co/guide/en/beats/filebeat/master/configuration-general-options.html#libbeat-configuration-fields)自定义设置的logtype,product 和datakit里预制的source(数据来源)和service(服务)都能看到 # 五、成本收益 1. **不再承担人力成本,稳定性提高** 节省了维护集群的人力成本若干。 saas服务性能弹性,再也不需要再担心ELK集群空间满,ELK集群性能不足等问题导致集群停摆。 2. **不再承担授权费** ELK如果需要告警并且通知到外部,则需要购买 [白金级订阅来实现”检测告警外部操作“](https://www.elastic.co/cn/subscriptions)。 如果使用Elastic Cloud,也需要[订阅白金级才能使用”检测告警外部通知和操作“](https://www.elastic.co/cn/pricing/)。 3. **基础设施成本减少90%以上** 替换的外部集群之前的成本约为为:18000元人民币每月。 转到观测云之后新增成本为几百元人民币每月。 基础设施成本缩减为不到之前的5%,而且saas服务按量付费,成本会更加弹性。
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭