ELK分布式日志搜集分析系统
ELK分布式日志收集系统介绍
那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。(引用官网ELK Stack:Elasticsearch、Logstash 和 Kibana | Elastic)
ElasticSearch 是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
Filebeat 是用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到ElasticSearch或Logstash进行索引。
Filebeat与Logstash优劣势:
优势
Logstash 主要的有点就是它的灵活性,主要因为它有很多插件,详细的文档以及直白的配置格式让它可以在多种场景下应用。我们基本上可以在网上找到很多资源,几乎可以处理任何问题。
Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,尽管它还十分年轻,正式因为它简单,所以几乎没有什么可以出错的地方,所以它的可靠性还是很高的。它也为我们提供了很多可以调节的点,例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。
劣势
Logstash 致命的问题是它的性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已经有很大提升,与它的替代者们相比还是要慢很多的。这里有Logstash 与 filebeat 的性能对比。它在大数据量的情况下会是个问题。另一个问题是它目前不支持缓存,目前的典型替代方案是将 Redis 或 Kafka 作为中心缓冲池。
Filebeat 的应用范围十分有限,所以在某些场景下我们会碰到问题。例如,如果使用 Logstash 作为下游管道,我们同样会遇到性能问题。正因为如此,Filebeat 的范围在扩大。开始时,它只能将日志发送到 Logstash 和 Elasticsearch,而现在它可以将日志发送给 Kafka 和 Redis,在 5.x 版本中,它还具备过滤的能力。
ELK分布式日志收集原理
1、服务器集群节点安装Logstash日志收集系统插件
2、每台服务器节点将日志输入到Logstash中
3、Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中
4、浏览器使用Kibana查询详细的日志信息
一个完整的集中式日志系统,是离不开以下几个主要特点的。
- 收集-能够采集多种来源的日志数据
- 传输-能够稳定的把日志数据传输到中央系统
- 存储-如何存储日志数据
- 分析-可以支持 UI 分析
- 警告-能够提供错误报告,监控机制
基础日志流动过程
日志数据直接处理:
Filebeat -> Elasticsearch
索引之前过滤拆分字段,通过Logstash中转:
Filebeat -> Logstash -> Elasticsearch
如果日志数据量过大,建议中间再加一个消息队列
Filebeat -> Kafka / Redis -> Logstash -> Elasticsearch
Docker介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Dokcer的应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
Dokcer基础命令
// 查看运行中的容器 $ docker ps // 查看所有容器 $ docker ps -a // 启动一个已停止的容器 $ docker start
<容器 id="">
// 启动一个已启动的容器 $ docker stop
<容器 id="">
// 重启容器 $ docker restart
<容器 id="">
// 查看容器的配置和状态信息 $ docker inspect
<容器 id="">
// 删除容器 $ docker rm -f
<容器 id="">
// 进入容器 $ docker exec -it
<容器 id="">
/bin/bash // 查看镜像 $ docker images // 查找镜像 $ docker search
<镜像名>
// 拉取远程镜像 $ docker pull
<镜像名>
// 删除镜像 $ docker rmi
<镜像名>镜像名>
镜像名>
镜像名>
容器>
容器>
容器>
容器>
容器>
容器>
安装elasticsearch:
docker run -d --name elasticsearch \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ docker.elastic.co/elasticsearch/elasticsearch:6.2.4 访问地址: http://localhost:9200
安装kibana:
启动命令 docker run -d -u 0 --name kibana \ -p 5601:5601\ docker.elastic.co/kibana/kibana:6.2.4 修改配置文件 1、docker exec -it kibana /bin/bash (进入容器) 2、/usr/share/kibana/config/kibana.yml (文件位置) 3、elasticsearch.url: http://localhost:9200 xpack.monitoring.ui.container.elasticsearch.enabled: false (实际部署不要用127.0.0.1,要用虚拟机或服务器IP) 修改完配置文件后退出 exit 重启容器 docker restart kibana
安装logstash:
命令 docker run -d -u 0 --name logstash \ -p 5044:5044\ docker.elastic.co/logstash/logstash:6.2.4 进入容器 docker exec -it logstash /bin/bash 修改配置文件 (/usr/share/logstash/pipeline) logstash.conf input { tcp { port => 5044 codec => json_lines } } output{ elasticsearch { hosts => ["localhost:9200"] action => "index" index => "%{[appname]}" } stdout { codec => rubydebug } } 退出容器 exit 重启容器 doccker restart logstash
Logstash的文件配置详解篇:
完毕!!!
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177465.html原文链接:https://javaforall.net
https://blog.csdn.net/_14985851/article/details/122696002