前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >EFK(Elasticsearch+Filebeat+Kibana)日志收集系统

EFK(Elasticsearch+Filebeat+Kibana)日志收集系统

作者头像
互联网-小阿宇
发布于 2022-11-21 11:49:57
发布于 2022-11-21 11:49:57
58800
代码可运行
举报
文章被收录于专栏:互联网-小阿宇互联网-小阿宇
运行总次数:0
代码可运行

EFK简介

Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。

Beats 是数据采集的得力工具。将 Beats 和您的容器一起置于服务器上,或者将 Beats 作为函数加以部署,然后便可在 Elastisearch 中集中处理数据。如果需要更加强大的处理性能,Beats 还能将数据输送到 Logstash 进行转换和解析。

Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等。不仅如此,您还可以使用 Vega 语法来设计独属于您自己的可视化图形。所有这些都利用 Elasticsearch 的完整聚合功能。

Elasticsearch 通常与 Kibana 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 允许你通过 web 界面来浏览 Elasticsearch 日志数据。

EFK架构图

ELK和EFK的区别

ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来

ELK是Elasticsearch、Logstash、Kibana的简称,这三者都是开源软件,通常配合使用。

1. Elasticsearch -->存储数据

是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写,能对大容量的数据进行接近实时的存储、搜索和分析操作。

2. Logstash --> 收集数据

数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置。

3. Kibana --> 展示数据

数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示。

EFK是ELK日志分析系统的一个变种,加入了filebeat 可以更好的收集到资源日志 来为我们的日志分析做好准备工作。

优缺点

Filebeat 相对 Logstash 的优点:

  • 侵入低,无需修改 elasticsearch 和 kibana 的配置;
  • 性能高,IO 占用率比 logstash 小太多;

当然 Logstash 相比于 FileBeat 也有一定的优势,比如 Logstash 对于日志的格式化处理能力,FileBeat 只是将日志从日志文件中读取出来,当然如果收集的日志本身是有一定格式的,FileBeat 也可以格式化,但是相对于Logstash 来说,效果差很多。

安装环境

此次实验用的一台服务器进行操作 准备安装包,EFK的三个安装包保持相同版本

安装es的节点一定安装java环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
通过yum安装java
[root@localhost ~]# yum search jdk
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
================================================================= N/S matched: jdk =================================================================
copy-jdk-configs.noarch : JDKs configuration files copier
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-headless.x86_64 : The OpenJDK runtime environment without audio and video support
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment 8
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment 8
java-1.8.0-openjdk-accessibility.i686 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.8.0-openjdk-demo.i686 : OpenJDK Demos 8
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos 8
java-1.8.0-openjdk-devel.i686 : OpenJDK Development Environment 8
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment 8
java-1.8.0-openjdk-headless.i686 : OpenJDK Headless Runtime Environment 8
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 8
java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed in a single archive
java-1.8.0-openjdk-src.i686 : OpenJDK Source Bundle 8
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle 8
java-11-openjdk.i686 : OpenJDK Runtime Environment 11
java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11
java-11-openjdk-demo.i686 : OpenJDK Demos 11
java-11-openjdk-demo.x86_64 : OpenJDK Demos 11
java-11-openjdk-devel.i686 : OpenJDK Development Environment 11
java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11
java-11-openjdk-headless.i686 : OpenJDK Headless Runtime Environment 11
java-11-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 11
java-11-openjdk-javadoc.i686 : OpenJDK 11 API documentation
java-11-openjdk-javadoc.x86_64 : OpenJDK 11 API documentation
java-11-openjdk-javadoc-zip.i686 : OpenJDK 11 API documentation compressed in a single archive
java-11-openjdk-javadoc-zip.x86_64 : OpenJDK 11 API documentation compressed in a single archive
java-11-openjdk-jmods.i686 : JMods for OpenJDK 11
java-11-openjdk-jmods.x86_64 : JMods for OpenJDK 11
java-11-openjdk-src.i686 : OpenJDK Source Bundle 11
java-11-openjdk-src.x86_64 : OpenJDK Source Bundle 11
java-11-openjdk-static-libs.i686 : OpenJDK libraries for static linking 11
java-11-openjdk-static-libs.x86_64 : OpenJDK libraries for static linking 11
ldapjdk-javadoc.noarch : Javadoc for ldapjdk
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser plug-in and Web Start implementation
ldapjdk.noarch : The Mozilla LDAP Java SDK

  名称和简介匹配 only,使用“search all”试试。

查询到版本然后进行安装
[root@localhost ~]# yum -y install java-1.8.0-openjdk
[root@localhost ~]# java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

安装es

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar zxf elasticsearch-6.3.2.tar.gz
mv elasticsearch-6.3.2 /usr/local/es

调整系统文件描述符的软硬限制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/security/limits.conf
 末尾添加
 打开文件的软限制,ES要求系统文件描述符大于65535
* soft nofile 655360
 打开文件的硬限制
* hard nofile 655360
 用户可用进程数软限制
* soft nproc 2048
 用户可用进程数硬限制
* hard nproc 4096
 JVM能够使用最大线程数
echo "vm.max_map_count=655360" >> /etc/sysctl.conf
sysctl -p 

配置Elasticsearch服务环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
useradd es
mkdir -p /es/{data,logs}  # 日志及数据存放目录
chown -R es:es /usr/local/es /es # 使用es用户启动时,权限不对也会报错

网络对时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ntpdate ntp.ntsc.ac.cn

重启服务器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reboot

编辑elasticsearch.yml配置文件,ES默认就是集群模式的,所以只有一个节点也是集群模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /usr/local/es/config/elasticsearch.yml 
 取消注释
cluster.name: my-application
node.name: node-1
 添加
node.master: true
node.data: true
 取消注释并修改
path.data: /es/data
path.logs: /es/logs
network.host: 192.168.1.10   # 改为本机ip
discovery.zen.minimum_master_nodes: 1 # master的最少节点数
 取消注释
http.port: 9200

安装Kibana

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar zxf kibana-6.3.2-linux-x86_64.tar.gz
mv kibana-6.3.2-linux-x86_64 /usr/local/kibana

修改Kibana配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /usr/local/kibana/config/kibana.yml
 取消注释
server.port: 5601
server.host: "192.168.1.10"
 用来连接es服务
elasticsearch.url: "http://192.168.1.10:9200"

安装Filebeat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar zxf filebeat-6.3.2-linux-x86_64.tar.gz 
mv filebeat-6.3.2-linux-x86_64 /usr/local/filebeat

举例收集nginx的日志 安装nginx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install epel-release
yum -y install nginx
启动
nginx
查看配置文件
cat /etc/nginx/nginx.conf
得知配置文件存放在/var/log/nginx/*.log
访问测试

整合环境 修改filebeat配置文件,将本机的nginx日志文件打标签为nginx,方便elasticsearch来创建索引

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /usr/local/filebeat/filebeat.yml
 添加注释
 filebeat.inputs:
 - type: log
 paths:
    - /var/log/*.log
 添加以下内容为inputs配置
filebeat:
  prospectors:
    - type: log
      paths:
        - /var/log/nginx/*.log
      tags: ["nginx"]
 修改
  enabled: true # 表示以上配置是否生效
修改
setup.kibana:
  host: "192.168.1.10:5601" #kibana的主机ip

 output.elasticsearch:
  hosts: ["192.168.1.10:9200"] #es主机的ip

进行启动

  • es
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
su es
/usr/local/es/bin/elasticsearch
  • filebeat
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml
  • kibana
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/kibana/bin/kibana

各个服务启动之后阻塞信息都是INFO就没问题,遇到WARN是no route的就关闭防火墙或者放行端口

在访问kibana的ip:5601,http://192.168.1.10:5601

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
openjdk 在线安装
ldapjdk-javadoc.noarch : Javadoc for ldapjdk
用户7741497
2022/02/22
1.1K0
CentOS在线安装JDK
备注:通过yum命令在线安装jdk简单、快捷、无需配置环境变量即可使用java相关服务。
名山丶深处
2022/05/10
8590
Centos7 安装java1.7和tomcat7并部署应用 Centos7 安装java1.7和tomcat7并部署应用
yum install java-1.7.0-openjdk-devel.x86_64
尾尾部落
2018/09/04
6910
ELK+FileBeat日志分析系统(正式环境nginx日志)
ElasticSearch、Logstash和Kibana 这里还用到一个插件那就是filebeat进行进行采集日志 添加filebeat插件现在已经是非常提倡的做法
全栈程序员站长
2021/06/08
5650
ELK+FileBeat日志分析系统(正式环境nginx日志)
Elasticsearch 7.5.1群集部署
注:本博文只用于实现简单群集配置,更深入的资料可以参考官方文档 Elasticsearch官方文档 kibana官方文档
小手冰凉
2020/05/12
1.2K0
Elasticsearch 7.5.1群集部署
Linux CentOS 7 安装JDK详细步骤
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
zoro
2019/04/11
8.5K0
CentOS下安装JDK的三种方法
由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装:
用户1518699
2018/09/12
2.2K0
kubernetes Filebeat+ELK日志收集监控方案
接收来自filebeat的数据,根据其中的tags进行分类,再添加index进行分类,例如nginx-access-%{+YYYY.MM.dd},在kibana中会根据这个index获取日志。
kubernetes中文社区
2019/06/24
3.2K0
kubernetes  Filebeat+ELK日志收集监控方案
CentOS下安装JDK的三种方法
//安装完之后,默认的安装目录是在: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
流柯
2018/08/31
2.8K0
FileBeat + Kafka Logstash+ ElasticSearch+Kibana 搭建日志管理平台
除了kafka以外,其它四个均可以在elastic官网中下载,具体的可以在下载地址选择软件和版本进行下载,本文档都是基于6.0.0的版本操作的 Kafka可以在Apache中下载
BUG弄潮儿
2022/03/08
7400
FileBeat + Kafka Logstash+ ElasticSearch+Kibana 搭建日志管理平台
kubernetes-平台日志收集ELK(十七)
使用ELK Stack收集Kubernetes平台中日志与可视化 K8S系统的组件日志 K8S Cluster里面部署的应用程序日志 日志系统: ELK安装 安装jdk [root@localhost
yuezhimi
2020/09/30
6030
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
随着时间的积累,日志数据会越来越多,当你需要查看并分析庞杂的日志数据时,可通过 Filebeat+Kafka+Logstash+Elasticsearch 采集日志数据到Elasticsearch(简称ES)中,并通过 Kibana 进行可视化展示与分析。
高楼Zee
2021/09/23
2K0
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
搭建ELK日志分析平台+Filebeat
一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大也就是日志量多而复杂的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。
子润先生
2021/07/08
1.4K0
ELK:配置使用 Filebeat
Logstash 是一个 Java 程序,当作为收集日志的 Agent 时,显得太臃肿了。这时需要一个轻量级的日志收集 Agent,其实可以先看看官方是否提供相关的 Agent,现在的需求是收集特定的日志文件, 官方提供了这样的工具:Filebeat,官方给 Filebeat 的定义就是轻量级的日志收集工具。
BUG弄潮儿
2021/08/13
3870
Elasticsearch Logstash Kibana Filebeat 搭建
ELK+Filebeat的流程应该是这样的:Filebeat->Logstash->(Elasticsearch<->Kibana)由我们自己的程序产生出日志,由Filebeat进行处理,将日志数据输出到Logstash中,Logstash再将数据输出到Elasticsearch中,Elasticsearch再与Kibana相结合展示给用户。
BUG弄潮儿
2020/06/15
1.7K0
Elasticsearch Logstash Kibana Filebeat 搭建
CentOS7上安装Elasticsearch+Logstash+Kibana日志管理系统
集中日志记录在尝试识别服务器或应用程序的问题时非常有用,因为它允许您在单个位置搜索所有日志。它也很有用,因为它允许您通过在特定时间范围内关联其日志来识别跨多个服务器的问题。本系列教程将教您如何在CentOS上安装Logstash和Kibana,然后如何添加更多过滤器来构造您的日志数据。
菲宇
2019/06/13
3.3K0
CentOS7上安装Elasticsearch+Logstash+Kibana日志管理系统
ELK日志收集系统部署
日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核、各种应用服务器等等。日志的内容、规模和用途也各不相同,很难一概而论。
用户7353950
2022/06/23
1.3K0
ELK日志收集系统部署
搭建ELK日志分析系统详解
日志分析是我们运维解决系统故障、发现问题的主要手段。为了可以集中管理多台服务器的日志记录,开源实时日志分析ELK平台应用而生,ELK由Elasticsearch、Logstash和Kibana三个开源工具组成,这三个工具可以分别部署在不同的服务器上,并且相互关联,不过需要收集哪台服务器的日志,就必须在该服务器上部署Logstash。ELK的官网是:https://www.elastic.co/cn/ .
小手冰凉
2019/10/15
1.7K0
搭建ELK日志分析系统详解
[喵咪BELK实战(2)] elasticsearch+kibana搭建
[喵咪BELK实战(2)] elasticsearch+kibana搭建 前言 上一节我们介绍了日志系统和BELK之后就要到激动人心的安装环境了,实践出真知都知道日志系统很重要只有把它搭建起来才有效果
喵了个咪233
2018/03/02
8680
[喵咪BELK实战(2)] elasticsearch+kibana搭建
【ES三周年】在Docker环境下部署EFK日志收集系统
一、EFK日志收集系统介绍1.EFK简介EFK:分别表示:Elasticsearch , Filebeat, Kibana , 其中ELasticsearch负责日志保存和搜索,Filebeat负责收集日志,Kibana 负责界面,三者配合起来,形成一个非常完美的解决方案。2.Elasticsearch简介Elasticsearch是一个基于Apache Lucene的开源搜索和数据分析引擎引擎,Elasticsearch使用Java进行开发,并使用Lucene作为其核心实现所有索引和搜索的功能。3.Ela
江湖有缘
2023/01/20
4.4K0
【ES三周年】在Docker环境下部署EFK日志收集系统
相关推荐
openjdk 在线安装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验