Elasticsearch + Logstash + Kibana +Redis +Filebeat 单机版日志收集环境搭建
1.前置工作
1.虚拟机环境简介
Linux版本:Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
ip地址:192.168.1.4(虚拟机Nat配置可参考我的CSDN博客https://blog.csdn.net/yanshaoshuai/article/details/97689891)
Java环境:java 12.0.2(java环境安装可以参考我的CSDN博客https://blog.csdn.net/yanshaoshuai/article/details/87868286)
2.用户及权限配置
由于ELK产品不能以root用户运行,所以要先创建一个普通用户,并且最低要给予该用户你运行程序目录的执行权限,以及配置文件的修改权限和运行程序中产生文件的读写权限等。
#创建用户和组
[root@localhost gz]# groupadd es_group
[root@localhost gz]# useradd es_user
[root@localhost gz]# passwd es_user
Changing password for user es_user.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
#把用户添加到组
[root@localhost gz]# usermod -g es_group es_user
#更改目录所有者为新用户
[root@localhost es]# chown -R es_user:es_group /opt/es
2.Elasticsearch 7.2版本安装配置
下载链接:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.0-linux-x86_64.tar.gz
解压:切换到前面创建的es_user用户执行下面命令
[es_user@localhost es]$ tar -xzvf ./gz/elasticsearch-7.2.0-linux-x86_64.tar.gz -C .
切换到root用户修改elasticsearch配置文件:
[root@localhost ~]# vim /opt/es/elasticsearch-7.2.0/config/elasticsearch.yml
#配置文件内容
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /opt/es/elasticsearch-7.2.0/data
#
# Path to log files:
#
path.logs: /opt/es/elasticsearch-7.2.0/logs
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 192.168.1.4
#
# Set a custom port for HTTP:
#
http.port: 9200
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
cluster.initial_master_nodes: ["192.168.1.4"]
切换到es_user用户启动Elasticsearch:
./elasticsearch-7.2.0/bin/elasticsearch
启动报错及处理:
ES启动三个报错的处理
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [3829] for user [elk] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
在root用户下修改下面文件内容
最大文件打开数调整/etc/security/limits.conf
* - nofile 65536
最大打开进程数调整/etc/security/limits.d/20-nproc.conf
* - nproc 10240
内核参数调整 /etc/sysctl.conf
vm.max_map_count = 262144
修改完毕后再次启动即可。
启动成功测试:
[root@localhost ~]# curl 192.168.1.4:9200
{
"name" : "localhost.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "0cwX-EgVR8W-61tlZV7cXg",
"version" : {
"number" : "7.2.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "508c38a",
"build_date" : "2019-06-20T15:54:18.811730Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
后台启动加上 -d 参数即可
3.Kinaba 7.2版本安装配置
下载链接:https://artifacts.elastic.co/downloads/kibana/kibana-7.2.0-linux-x86_64.tar.gz
解压:切换到前面创建的es_user用户执行下面命令
tar -xzvf ./gz/kibana-7.2.0-linux-x86_64.tar.gz -C ./
修改Kibana配置文件:
vim ./kibana-7.2.0-linux-x86_64/config/kibana.yml
#配置文件内容
# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "192.168.1.4"
# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["http://192.168.1.4:9200"]
防火墙对外开放5601端口:
[root@localhost ~]# firewall-cmd --zone=public --add-port=5601/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
启动kibana:
./kibana-7.2.0-linux-x86_64/bin/kibana
远程访问kibana:
在浏览器输入192.168.1.4:5601回车即可访问到kibana

选择Explore on my own点击最下方箭头展开kibana选项卡,然后选择Dev Tools-->Console即可在kibana上操作ES了。
ES简单操作:
# 获取所有索引数据
GET _search
{
"query": {
"match_all": {}
}
}
# 查询索引下所有数据
GET /shijiange/_doc/_search?q=*
# 删除索引
DELETE /shijiange
# 添加索引数据(若无索引会创建索引)
PUT /shijiange/_doc/1
{
"name":"yanshaoshuai",
"age":19
}
# 覆盖
PUT /shijiange/_doc/1
{
"age":19
}
# 修改
POST /shijiange/_doc/1/_update
{
"doc":{
"name":"yan1"
}
}
Console中输入正确操作语句后点击后面绿色按钮即可执行该语句

4.Logstash7.2版本安装配置
下载链接:https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.tar.gz
解压:切换到es_user用户下执行以下操作
tar -xzvf /opt/es/gz/logstash-7.2.0.tar.gz -C /opt/es
简单启动
编写简单配置文件:
# 标准输入-->logstash-->标准输出 的配置文件
vim /opt/es/logstash-7.2.0/config/logstash_std.conf
input{
stdin{}
}
output{
stdout{
codec=>rubydebug
}
}
以logstash_std.conf配置文件启动:
/opt/es/logstash-7.2.0/bin/logstash -f ./logstash_std.conf
启动成功后光标停滞在启动日志末尾,此时输入的内容会被logstash接收并且将处理后的数据打印在标准输出上:

读取日志文件并输出到Elasticsearch
编写配置文件:
# /opt/es/example.log-->logstash-->elasticsearch-->kibana
vim ./logstash_elk.conf
#logstash_elk.conf内容
input {
file {
path => "/opt/es/example.log"
}
}
output {
elasticsearch {
hosts => ["http://192.168.1.4:9200"]
}
}
以logstash_elk.conf启动(在先启动elasticsearch的情况下):
/opt/es/logstash-7.2.0/bin/logstash -f ./logstash_elk.conf
启动成功后测试如下:
echo 'test the elk config' >> /opt/es/example.log
等待数秒后在Kibana上查询所有数据:

可以看到我们的ELK配置是成功的
但是Logstash作为日志收集软件在每一个机器上都启动一份的话显得过于臃肿,一般都是在各个服务其上用更轻量级的filebeat来简单的收集日志,然后多台服务器的日志发送到redis中,利用redis的消息队列功能实现日志的序列化,然后logstash再统一消费redis队列中的日志内容,利用其丰富的输入处理格式化能力将日志处理成便于阅读的格式然后发送给elasticsearch存储起来,接下来介绍filebeat和redis部分的内容。
5.Filebeat7.2版本安装配置
filebeat7.2下载链接:https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz
解压:切换到es_user用户执行以下操作
tar -xzvf filebeat-7.2.0-linux-x86_64.tar.gz -C ../
filebeat读取日志文件发送到logstash配置:
logstash配置文件:
vim ./logstash_beat.conf
#logstash_beat.conf内容
input {
beats {
host => '192.168.1.4'
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://192.168.1.4:9200"]
}
}
logstash以logstash_beat.conf启动:
/opt/es/logstash-7.2.0/bin/logstash -f ./logstash_beat.conf
修改filebeat配置:
vim filebeat-7.2.0-linux-x86_64/filebeat.yml
# filebeat.yml内容
filebeat.inputs:
- type: log
tail_files: true
backoff: "1s"
paths:
- /opt/es/example.log output:
logstash:
hosts: ["192.168.1.4:5044"]
启动filebeat:
./filebeat-7.2.0-linux-x86_64/filebeat -e -c ./filebeat-7.2.0-linux-x86_64/filebeat.yml
测试配置是否成功:
先删除之前的索引,否则会和之前的logstash发往elasticsearch所建立的索引冲突,从而产生Can't get text on a START_OBJECT at 1:446错误响应
在kibana执行:
DELETE /logstash-2019.08.18-000001
然后在命令行执行:
echo 'file-->logstash-->elasticsearch-->kibana' >> example.log
数秒后在kibana查看elasticsearch索引内容:

可以看到,我们新加的filebeat配置也可以成功的和ELK一起工作了。
接下来就是最后一步了,把redis也引入到我们的ELK之中,利用他的消息队列功能实现多个filebeat同时向ELK发送日志的功能。
6.引入Redis
redis的安装配置详细步骤请参考我dcsdn博客:https://blog.csdn.net/yanshaoshuai/article/details/97618991
在6379端口启动redis之后filebeat配置如下:
vim ./filebeat-7.2.0-linux-x86_64/filebeat.yml
# filebeat.yml内容
filebeat.inputs:
- type: log
tail_files: true
backoff: "1s"
paths:
- /opt/es/example.log
fields:
type: example.log
fields_under_root: true
output:
redis:
hosts: ["192.168.1.4:6379"]
key: 'queue'
在logstash的config目录下新建一个logstash_redis.conf配置文件,内容如下:
# logstash_redis.conf内容
input {
redis {
host => '192.168.1.4'
port => 6379
key => "queue"
data_type => "list"
}
}
output {
elasticsearch {
hosts => ["http://192.168.1.4:9200"]
}
}
先保证redis正运行在你配置的端口,这里是6379端口,然后启动logstash和filebeat:
#以logstash_redis.conf文件启动logstash
/opt/es/logstash-7.2.0/bin/logstash -f ./logstash_redis.conf
# 启动filebeat
./filebeat-7.2.0-linux-x86_64/filebeat -e -c ./filebeat-7.2.0-linux-x86_64/filebeat.yml
logstash和filebeat启动后,向example.log中追加一条数据:
echo 'file-->redis-->logstash-->elasticsearch-->kibana' >> example.log
数秒后在kibana执行查询可以看到我们刚才追加到example.log中的信息数据,证明现在filebeat-->redis-->logstash-->elasticsearch-->logstash的配置是成功的

当然也可以用其它的消息队列替代redis,企业中一般用的是kafka消息队列,其原理与redis类似,就不赘述了。
Elasticsearch + Logstash + Kibana +Redis +Filebeat 单机版日志收集环境搭建的更多相关文章
- ABP 使用ElasticSearch、Kibana、Docker 进行日志收集
ABP 使用ElasticSearch.Kibana.Docker 进行日志收集 后续会根据公司使用的技术,进行技术整理分享,都是干货哦别忘了关注我!!! 最近领导想要我把项目日志进行一个统一收集,因 ...
- FILEBEAT+ELK日志收集平台搭建流程
filebeat+elk日志收集平台搭建流程 1. 整体简介: 模式:单机 平台:Linux - centos - 7 ELK:elasticsearch.logstash.kiban ...
- ELK(elasticsearch+logstash+kibana)入门到熟练-从0开始搭建日志分析系统教程
#此文篇幅较长,涵盖了elk从搭建到运行的知识,看此文档,你需要会点linux,还要看得懂点正则表达式,还有一个聪明的大脑,如果你没有漏掉步骤的话,还搭建不起来elk,你来打我. ELK使用elast ...
- ELK学习笔记之CentOS 7下ELK(6.2.4)++LogStash+Filebeat+Log4j日志集成环境搭建
0x00 简介 现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的. 经 ...
- 写给大忙人的CentOS 7下最新版(6.2.4)ELK+Filebeat+Log4j日志集成环境搭建完整指南
现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的.经过仔细的分析和研究 ...
- ELK+Kafka日志收集环境搭建
1.搭建Elasticsearch环境并测试: (1)删除es的容器 (2)删除es的镜像 (3)宿主机调内存: 执行命令:sudo sysctl -w vm.max_map_count=655360 ...
- 【linux】【ELK】搭建Elasticsearch+Logstash+Kibana+Filebeat日志收集系统
前言 ELK是Elasticsearch.Logstash.Kibana的简称,这三者是核心套件,但并非全部. Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大功能:是 ...
- 用ElasticSearch,LogStash,Kibana搭建实时日志收集系统
用ElasticSearch,LogStash,Kibana搭建实时日志收集系统 介绍 这套系统,logstash负责收集处理日志文件内容存储到elasticsearch搜索引擎数据库中.kibana ...
- ELK日志系统:Elasticsearch+Logstash+Kibana+Filebeat搭建教程
ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程 系统架构 安装配置JDK环境 JDK安装(不能安装JRE) JDK下载地址:http://www.orac ...
随机推荐
- 201871030112-贾傲羊 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 课程班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 学习PSP流程并运用于结对项目:学习GitHub代码的管理;学习结对编程的流程与内容 这个作业在哪些方 ...
- C#类的一些基础知识(静态方法可以不用实例化调用)
将类成员函数声明为public static无需实例化即可调用类成员函数 using System; namespace ConsoleApp { class Program { static voi ...
- 03_利用pytorch解决线性回归问题
03_利用pytorch解决线性回归问题 目录 一.引言 二.利用torch解决线性回归问题 2.1 定义x和y 2.2 自定制线性回归模型类 2.3 指定gpu或者cpu 2.4 设置参数 2.5 ...
- windows利器使用与配置
1 概述 这篇文章主要讲述了一些windows下的"利器"级别工具的使用以及配置. 2 Listary Listary是一款强大的搜索工具,可以快速搜索过滤各种文件. 点击这里下载 ...
- 在Android、iOS、Web多平台使用AppGallery Connect性能管理服务
性能管理(App Performance Management,简称APM)是华为应用市场AppGallery Connect(简称AGC)质量系列服务中的其中一项,可以提供分钟级应用性能监控能力,支 ...
- 3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验
这次面试字节跳动也是做了很多的准备,还好顺利拿到了offer,特分享一下这次的4面技术面真题,以及一份字节2-2师兄整理的面试手册,希望能够给一些正在面试字节或计划面试大厂的朋友提供帮助. 字节跳动技 ...
- JAVAEE_Servlet_09_Adapter适配器GenericServlet
适配器 GenericServlet * 适配器 (Adapter) - 适配器的作用? 1.我们目前所有的Servlet类都直接实现了javax.servlet.Servlet接口,但是该接口中有些 ...
- 这一篇文章帮你搞定Java(含Java全套资源)
当下想学习Java开发的人越来越多,对于很多零基础的人来说,没有相关的视频教程及相关的学习线路,学起来是一件很费劲的事情,还有很多人从网上及其它渠道购买视频,这些视频资料的价格对于刚毕业的大学生来说也 ...
- 编写shell脚本让springboot项目在CentOS中开机自启动
springboot项目部署在CentOS系统上时,如果遇到停电关机,公司的实施人员就得跑到甲方现场重新启动项目并测试,很是麻烦,这里探讨如何编写shell脚本控制springboot项目开机时自动启 ...
- w1R3s靶机work_through
前言 这靶机挺简单的.虽然网友们有分享oscp向的靶机集,但是没有一个难度梯度,做起来就怪怪的. 打点 nmap -sP 192.168.218.0/24 发现主机IP 192.168.218.134 ...