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 单机版日志收集环境搭建的更多相关文章

  1. ABP 使用ElasticSearch、Kibana、Docker 进行日志收集

    ABP 使用ElasticSearch.Kibana.Docker 进行日志收集 后续会根据公司使用的技术,进行技术整理分享,都是干货哦别忘了关注我!!! 最近领导想要我把项目日志进行一个统一收集,因 ...

  2. FILEBEAT+ELK日志收集平台搭建流程

    filebeat+elk日志收集平台搭建流程 1.         整体简介: 模式:单机 平台:Linux - centos - 7 ELK:elasticsearch.logstash.kiban ...

  3. ELK(elasticsearch+logstash+kibana)入门到熟练-从0开始搭建日志分析系统教程

    #此文篇幅较长,涵盖了elk从搭建到运行的知识,看此文档,你需要会点linux,还要看得懂点正则表达式,还有一个聪明的大脑,如果你没有漏掉步骤的话,还搭建不起来elk,你来打我. ELK使用elast ...

  4. ELK学习笔记之CentOS 7下ELK(6.2.4)++LogStash+Filebeat+Log4j日志集成环境搭建

    0x00 简介 现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的. 经 ...

  5. 写给大忙人的CentOS 7下最新版(6.2.4)ELK+Filebeat+Log4j日志集成环境搭建完整指南

    现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的.经过仔细的分析和研究 ...

  6. ELK+Kafka日志收集环境搭建

    1.搭建Elasticsearch环境并测试: (1)删除es的容器 (2)删除es的镜像 (3)宿主机调内存: 执行命令:sudo sysctl -w vm.max_map_count=655360 ...

  7. 【linux】【ELK】搭建Elasticsearch+Logstash+Kibana+Filebeat日志收集系统

    前言 ELK是Elasticsearch.Logstash.Kibana的简称,这三者是核心套件,但并非全部. Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大功能:是 ...

  8. 用ElasticSearch,LogStash,Kibana搭建实时日志收集系统

    用ElasticSearch,LogStash,Kibana搭建实时日志收集系统 介绍 这套系统,logstash负责收集处理日志文件内容存储到elasticsearch搜索引擎数据库中.kibana ...

  9. ELK日志系统:Elasticsearch+Logstash+Kibana+Filebeat搭建教程

    ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程 系统架构 安装配置JDK环境 JDK安装(不能安装JRE) JDK下载地址:http://www.orac ...

随机推荐

  1. Windows系统搭建ELK日志收集服务器

    一.ELK是什么?ELK是由Elasticsearch.Logstash.Kibana这3个软件的首字母缩写. Elasticsearch是一个分布式搜索分析引擎,稳定.可水平扩展.易于管理是它的主要 ...

  2. Dynamics CRM实体系列之视图

    这一节开始讲视图.视图在Dynamics CRM中代表着实体的数据展示列表,通过这个列表可以对数据进行一个初步预览,也可以进行一些数据的定向筛选和搜索进行精确的浏览一部分数据.同时视图也是查看详细实体 ...

  3. Unlink学习总结

    Unlink 本文参考了CTF-wiki 和glibc 源码 原理: 我们在利用 unlink 所造成的漏洞时,其实就是借助 unlink 操作来达成修改指针的效果. 我们先来简单回顾一下 unlin ...

  4. Spring 学习笔记(三):Spring Bean

    1 Bean配置 Spring可以看做是一个管理Bean的工厂,开发者需要将Bean配置在XML或者Properties配置文件中.实际开发中常使用XML的格式,其中<bean>中的属性或 ...

  5. (十三)VMware Harbor 身份验证模式

    VMware Harbor 修改Harbor仓库admin用户 参考:https://blog.csdn.net/qq_40460909 https://blog.csdn.net/qq_404609 ...

  6. 推荐个开源在线文档,助道友领悟 Django 之“道”

    本文面向有手(需要一点点 Python Django 基础)的小伙伴,急需文档管理者食用最佳. 作者:HelloGitHub-吱吱(首发于 HelloGitHub 公众号) 嗷嗷待哺的小白:" ...

  7. .Net之静态资源

    介绍 静态文件都存储在Core Web根目录中.默认目录是<content_root>/wwwroot,但可通过 UseWebRoot方法更改访问目录.而content_root是指web ...

  8. hdu2870暴力或者dp优化

    题意:       给你一个矩阵,俩面的字母有一些转换规则,让你找到最大的相同字母字矩阵.. 思路:      一共有三种情况,就是a,b,c三种,我们可以分开来处理这三种情况,比如先处理a的,吧能转 ...

  9. Android常见App加固厂商脱壳方法的整理

    目录 简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结构 壳史 壳的识别 Apk文件结构 Dex文件结构 壳史 第一代壳 Dex ...

  10. Dalvik模式下在Android so库文件.init段、.init_array段构造函数上下断点

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78244766 在前面的博客<在Android so文件的.init..ini ...