ELK是什么?
ELK是elastic三个产品的首字母缩写:Elasticsearch、Logstash、Kibana。
Elasticsearch 是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可靠性和管理便捷性而设计。
Logstash 是动态数据收集管道,拥有可扩展的插件生态系统,能够与 Elasticsearch 产生强大的协同作用。
Kibana 能够以图表的形式呈现数据,并且具有可扩展的用户界面,供您全方位配置和管理 Elastic Stack。
除了上面三个产品外,在信息收集过程中,还需要在被采集系统安装Beats,用来采集系统中的数据。
Beats 是轻量型采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据。
下面分别介绍这几类产品。
Beats
Beats 平台集合了多种单一用途数据采集器。这些采集器安装后可用作轻量型代理,从成百上千或成千上万台机器向 Logstash 或 Elasticsearch 发送数据。Beats中包含以下集中采集器:
Filebeat 能够读取并转发日志行,如果出现中断,还会在一切恢复正常后,从中断前停止的位置继续开始。
Filebeat 内置的多种模块(auditd、Apache、NGINX、System 和 MySQL)可实现对常见日志格式的一键收集、解析和可视化。
部署 Filebeat 在独立的容器或是同一个宿主机上,都可收集宿主机上面所有容器的日志。通过挂载共享的磁盘卷,Filebeat 即可读取所有的这些日志文件。或是借助 Docker JSON 驱动,Filebeat 即可通过 Docker prospector 来收集您容器的日志。如果还要更简单?为 Docker 准备的 Autodiscovery 可以让您根据一个条件来开启 Filebeat 的特定模块,或是收集指定目录的日志。
当将数据发送到 Logstash 或 Elasticsearch 时,Filebeat 使用背压敏感协议,以考虑更多的数据量。如果 Logstash 正在忙于处理数据,则可以让 Filebeat 知道减慢读取速度。一旦拥堵得到解决,Filebeat 就会恢复到原来的步伐并继续运行。
Filebeat 是 Elastic Stack 的一部分,因此能够与 Logstash、Elasticsearch 和 Kibana 无缝协作。无论您要使用 Logstash 转换或充实日志和文件,还是在 Elasticsearch 中随意处理一些数据分析,亦或在 Kibana 中构建和分享仪表板,Filebeat 都能轻松地将您的数据发送至最关键的地方。
用于从系统和服务收集指标。从 CPU 到内存,从 Redis 到 Nginx,Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据。
将 Metricbeat 部署到您所有的 Linux、Windows 和 Mac 主机,并将它连接到 Elasticsearch 就大功告成啦:您可以获取系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据,以及获得如同系统上 top 命令类似的各个进程的统计数据。
Metricbeat 提供多种内部模块,用于从服务中收集指标,例如 Apache、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus、Redis 等等。安装简单,完全零依赖性。只需在配置文件中启用您所需的模块即可。而且,如果您没有看到您要找的模块,还可以自己构建。新 Metricbeat 模块使用 Go 语言编写,创建过程简单。
可以将 Metricbeat 部署到同一台主机上单独的容器内,它将收集与主机上运行的其他每一个容器相关的统计数据。它在收集统计数据时直接从 proc 文件系统读取 cgroup 信息,这就意味着它无需特权即可访问 Docker API,这同样适用于其他运行时。针对 Docker 的 Autodiscovery 让事情进一步简化,您只需指定一个条件即可自动开启 Metricbeat 相应的模块。
将指标通过假脱机传输方式输送至磁盘,这样您的数据管道再也不会错过任何一个数据点,即使发生中断(例如网络问题),也勿需担心。Metricbeat 会保留输入数据,当恢复正常后,会将这些指标输送至 Elasticsearch 或 Logstash。
Metricbeat 是 Elastic Stack 的一部分,因此能够与 Logstash、Elasticsearch 和 Kibana 无缝协作。无论您要使用 Logstash 转换或充实指标,还是在 Elasticsearch 中随意处理一些数据分析,亦或在 Kibana 中构建和分享仪表板,Metricbeat 都能轻松地将您的数据发送至最关键的地方。