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

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

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运行复制通过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运行复制tar zxf elasticsearch-6.3.2.tar.gz

mv elasticsearch-6.3.2 /usr/local/es调整系统文件描述符的软硬限制

代码语言:javascript代码运行次数:0运行复制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运行复制useradd es

mkdir -p /es/{

data,logs} # 日志及数据存放目录

chown -R es:es /usr/local/es /es # 使用es用户启动时,权限不对也会报错网络对时

代码语言:javascript代码运行次数:0运行复制ntpdate ntp.ntsc.ac.cn重启服务器

代码语言:javascript代码运行次数:0运行复制reboot编辑elasticsearch.yml配置文件,ES默认就是集群模式的,所以只有一个节点也是集群模式

代码语言:javascript代码运行次数:0运行复制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运行复制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运行复制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运行复制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运行复制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运行复制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运行复制su es

/usr/local/es/bin/elasticsearchfilebeat代码语言:javascript代码运行次数:0运行复制/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.ymlkibana代码语言:javascript代码运行次数:0运行复制/usr/local/kibana/bin/kibana 各个服务启动之后阻塞信息都是INFO就没问题,遇到WARN是no route的就关闭防火墙或者放行端口

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

← 上一篇: 皇都 的意思、解釋、用法、例句
下一篇: Steam红信介绍及解除方法 →

相关推荐