如何将本地的日志写入到es集群

如何将本地的日志写入到es集群,第1张

将nodename的值设置为test-node2,总之必须和之前配置值不同。

两台es服务同时起来,因为配置文件中均默认clustername=elasticsearch,所以这两台机器自动构建成一个集群,集群名字为elasticsearch。

3、elasticsearchservicewrapper安装

这个是对elasticsearch执行命令的包装服务,安装之后,方便elasticsearch的启动,停止等等 *** 作。

(1)下载elasticsearchservicewrapper

kubernetes是一个优秀的容器编排框架,提供容器调度方案以及各类网络、存储插件的集成。但其本身(in-tree)并不提供日志解决方案,而是以插件(add on)的方式提供,官方推荐的是EFK方案。

官网有对于 日志架构 的专门一章的描述,官方把kubernetes中的日志解决方案分为三种类型:

基础日志:比较好理解,和docker的日志方案类似,通过捕获标准输出流(stdout)和标准错误流(stderr)来fetch日志,使用的命令是 kubectl logs ,相信大家都比较熟悉了,这里不多赘述。基础日志由于是写在容器里面,所以当容器crash或者pod迁移后,之前的日志就没有了。

node级别日志:任何在容器中写入stdout和stderr的内容都会通过容器引擎重定向到某个文件,比如docker中会把日志信息写入 log-filelog 。这里要注意的是,kubernetes目前默认是不提供日志轮转的,可以使用 logrotate 这样的工具来实现轮转的效果。注意node级别的日志还是写在每个节点上的。

集群级别日志:有如下几个选项

后面两种暂时不讨论,主要讨论第一种方案(node agent),也是官方推荐的日志方案。使用node logging agent的架构图如下:

针对这种场景,官方推荐的这个node agent就是fluentd。fluentd本身也是cncf项目,性能比logstash要更好。由于和k8的结合比较好,所以在云原生场景中,一般推荐的解决方案都是EFK而非ELK

EFK就是elasticsearch+fluentd+kibana,对于es和kibana,我在之前的文章中已经有论述如何安装,可以参考 使用helm charts安装elasticsearch集群 这篇文章,这次主要讲fluentd的安装。

对于生产环境,如果节点数较多,比较建议的是先通过前端fluentd将日志收集到kafka,再通过统一的日志后端将kafka中的日志写入es中。如果节点数不是特别多,则可以直接通过fluentd将日志写入es。官方仓库中的EFK方案,就是fluentd直接写入es的。网址: >

        我们部署的版本是此篇文章发布时ElastAlert(V021)、ElastAlert server(300-beta0) 、elastalert-kibana-plugin(110)的最新版本。es和kibana的版本是720。ES和kibana部署不是本篇的重点,这里不做介绍。

        入正题之前得先说下ES,Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。 它能从项目一开始就赋予你的数据以搜索、分析和探索的能力。我们容器服务的日志现在大多数都入到了qbus,然后可以用es消费,通过kibana方便的查看日志。但是负责es的同事和我们都没有支持日志告警,目前是一个短板。X-Pack提供了报警组件Alert,但是这个功能是需要付费,ElastAlert能够完美替代Alert提供的所有功能。ElastAlert目前有6k+star,维护较好很受欢迎,使用python编写,V020以后使用python3,python2不再维护,以致在虚机物理机部署的坑很多,最终也是以容器的方式成功搭建。因为公司es之后要升级到72版本,ElastAlertV021(最新版本)才对es7支持的很好,elastalert-kibana-plugin最新版本才支持kibana7。

elastalert-kibana-plugin对ES63开始提供支持,公司目前使用的是ES62,之后要升级到ES7,所以ElastAlert用V021,ElastAlert server 300-beta0,elastalert-kibana-plugin 110。

        ElastAlert V021需要python3,目前我们使用linux内核都会默认装python2,安装python3后,使用混合环境安装ElastAlert 很多依赖装不成功,亦或装成功后模块有找不到,所以最终打算使用docker multi stage build方式构建ElastAlert server镜像,以容器的方式启动。

        官网上提供了ElastAlert server镜像构建方式,但很久不维护,还是使用python2构建的老的版本。我们需要重新构建。

通过docker logs elastalert -f 查看日之日,如果报错,指定告警级别为dubug查看错误信息

kibana插件如下:

custom_frequency是启服务之前创建的配置文件,test和test2是通过kibana dashboard创建。用户可以通过“创建”-“测试”-“保存”这一流程新建alert rules 和我们的hulk容器上的自定义告警流程差不多

>

translog是elasticsearch的事务日志文件,它记录了所有对索引分片的事务 *** 作(add/update/delete),每个分片对应一个translog文件。translog是用来恢复数据的。Es用“后写”的套路来加快写入速度 — 写入的索引并没有实时落盘到索引文件,而是先双写到内存和translog文件,

以上就是关于如何将本地的日志写入到es集群全部的内容,包括:如何将本地的日志写入到es集群、使用fluentd收集kubernetes集群日志、ES告警之ElastAlert入门教程(容器部署)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9780516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存