专栏首页java相关资料ELK日志收集原理+es集群+elk搭建+本地目录文件读取,搭建分布式日志收集系统

ELK日志收集原理+es集群+elk搭建+本地目录文件读取,搭建分布式日志收集系统

ELK分布式日志收集系统介绍

1.ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2.Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

3.Kibana是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

为什么要使用ELK

在传统项目中,如果在生产环境上,将项目部署在多台服务器上进行集群,如果生产环境需要通过日志定位到BUG的话,需要在每台服务器节点上使用传统的命令方式查询,这样的查询是非常低效,且非常考验人的忍耐力的,而ELK恰恰就帮助我们解决这样的问题

ELK的工作原理

1.在集群环境中,每一个实例节点都进行安装Logstash插件 2.每个服务器节点,都会将自身的本地日志文件输入到Logstash中 3.Logstash获取日志文件后格式化为json格式,根据每天创建不同的索引,输出到ES服务中进行存放 4.以图形化界面进行展示,搜索日志

Logstash介绍

Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 核心流程:Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。

Logstash工作原理

简单来说 1.本地数据文件输入到logstash中 2.logstash过滤些不要的数据,然后将数据转成指定的格式 3.输出到指定的数据源中

前提准备:

1.ES+kibana+logstash 一台虚拟机配置运行内存3G,由于本人电脑资源有限开了2台 共6个G

一、安装jdk

1.安装之前先检查一下系统有没有自带open-jdk

命令:

rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj

如果没有输入信息表示没有安装。 如果安装可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件 这句命令的关键字是java

2.首先检索包含java的列表

yum list java*

3.检索1.8的列表

yum list java-1.8*   

4.安装1.8.0的所有文件

yum install java-1.8.0-openjdk* -y

5.使用命令检查是否安装成功

java -version

二、集群环境下基于docker安装es和kibana

启动两个虚拟机 分别在不同的虚拟机启动es容器和kibana

启动虚拟机1,es名称为:es1

下载es 和 kibana
docker pull elasticsearch:6.7.2
docker pull kibana:6.7.2

运行容器
docker run -it  --name es1 -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch:6.7.2
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 --name kibana --network=container:es1 kibana:6.7.2

启动虚拟机2,es名称为:es2

下载es 和 kibana
docker pull elasticsearch:6.7.2
docker pull kibana:6.7.2

运行容器
docker run -it  --name es2 -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch:6.7.2
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 --name kibana --network=container:es2 kibana:6.7.2

如果在启动的ES过程中,报如下错误

解决方案: 分配给ES的内存太小了 1.进入etc目录,编辑sysctl.conf文件:

vi /etc/sysctl.conf 

2.添加配置:

vm.max_map_count=262144 或者 655360

3.执行:

sysctl -p

重启服务器

三、配置ES集群

进入容器修改集群配置服务器1

#进入容器
docker exec -it 容器ID /bin/bash

#编辑配置文件
vi /usr/share/elasticsearch/config/elasticsearch.yml

#注释掉原有的配置  添加配置
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.137.8
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.137.8:9300","192.168.137.9:9300"]
discovery.zen.minimum_master_nodes: 2

#保存退出

#退出容器
exit

进入容器修改集群配置服务器2

#进入容器
docker exec -it 容器ID /bin/bash

#编辑配置文件
vi /usr/share/elasticsearch/config/elasticsearch.yml

#注释掉原有的配置  添加配置
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.137.9
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.137.8:9300","192.168.137.9:9300"]
discovery.zen.minimum_master_nodes: 2

#保存退出

#退出容器
exit

最后重启两个服务器docker里面的es,让配置进行生效

docker restart 容器id

网页访问集群的两台es,可以发现es配置已经生效了

但是这样还并不能确定是否成功集群,访问如下ES集群其中任何IP地址即可

http://192.168.137.8:9200/_cat/nodes?pretty

如下图,就代表es集群成功搭建

四、下载logstash源码包

需要注意:每台服务器上都需要安装logstash,如下面操作,我这里只示例一个 因为集群下每个服务器都会有日志,所以每个服务都需要安装logstash去收集日志发到es中

下载源码包
官方地址
https://www.elastic.co/cn/downloads/logstash

国内加速下载网址
https://www.newbe.pro/Mirrors/Mirrors-Logstash/

下载地址
wget https://mirrors.huaweicloud.com/logstash/6.7.2/logstash-6.7.2.zip

下载zip命令解压
yum -y install zip

解压
unzip logstash-6.7.2.zip
修改配置文件

进入到logstash/config目录

#新建sunny_log.conf文件
vim sunny_log.conf

#添加配置文件
input {
    # 从文件读取日志信息 输送到控制台
    file {
        path => "/usr/local/software/my/logs/eureka_all_2020-06-30_0.log"
        codec => "json" ## 以JSON格式读取日志
        type => "elasticsearch"
        start_position => "beginning"
    }
}

# filter {
#
# }

output {
    # 标准输出
    # stdout {}
    # 输出进行格式化,采用Ruby库来解析日志
     stdout { codec => rubydebug }
         elasticsearch {
        hosts => ["192.168.137.8:9200","192.168.137.9:9200"]
        index => "es-%{+YYYY.MM.dd}"
    }
}

#保存

添加完配置后,进入logstash/bin目录下,启动logstash

 ./logstash -f ../config/sunny_log.conf

启动成功

五、通过kibana查看日志

以上的配置是读取一个日志文件,那如果需要读取多个日志文件该怎么办呢? 很简单,我们稍微改动配置文件即可 读取logs目录下,所有以log结尾的文件,都输出到es中

可能又会有人疑惑,我能否同步多个目录呢 假如logs下有两个目录,每个目录不同的日志文件 /:代表logs下所有目录都匹配 //*.log:代表logs下匹配所有目录下的目录里面的log文件

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于docker 安装elasticsearch + kibana + ik分词器(6.7.2版本)

    解决1:如果发现es启动到一半自动停止,有效解决办法,增加内存4G以上,和增加处理器为2即可解决

    黎明大大
  • Spring5.2.x源码下载及编译

    学习Spring源码的重要前提,则是需要去编译源码到本地环境,这样则是方便我们在本地环境添加注释、断点调试、查看类图等,不过相信很多小伙伴在编译Spring源码...

    黎明大大
  • 基于Docker部署GitLab环境搭建,以及项目管理

    但是通过命令启动后,会发现启动没有报错,但是也无法进行访问,是因为我们还要需要进行其他的额外配置,进入刚刚创建的挂载目录

    黎明大大
  • WPF 在 DrawingContext 的 push 如何使用

    如果在一个 DrawingContext 画出一个 DrawingVisual ,如何修改这个 DrawingVisual 的大小,对他进行变换?

    林德熙
  • 韩大学设立人工智能武器实验室,遭50位顶尖学者抵制

    韩国著名大学——韩国科学技术院(Korea Advanced Institute of Science andTechnology,KAIST)于2018年2月...

    人工智能快报
  • ELK7.x日志系统搭建 1. elk基础搭建

    什么是 ELK ? 通俗来讲, ELK 是由 Elasticsearch 、 Logstash 、 Kibana 三个开源软件组成的一个组合体,这三个软件当中,...

    憧憬博客
  • 中文分词基本算法主要分类

    基于词典的方法、基于统计的方法、基于规则的方法、(传说中还有基于理解的-神经网络-专家系统)

    racaljk
  • Python2 进程扫描脚本 原

    因近期有开发人员在跑脚本时占用系统内存太多导致系统其它进程宕掉,所以需要对系统进程进行扫描监控,如果检测到占用系统内存大于5G的进程就直接kill掉,但是担心误...

    阿dai学长
  • Core + Vue 后台管理基础框架9——统一日志

      前阵子有园友留言,提到日志相关的东西,同时,最近圈子里也有提到日志这个东西。一个充分、集中的统一日志平台还是很有必要的,否则系统出问题了只能靠猜或者干瞪眼。...

    guokun
  • 推荐 | 10个好用的Web日志安全分析工具

    首先,我们应该清楚,日志文件不但可以帮助我们溯源,找到入侵者攻击路径,而且在平常的运维中,日志也可以反应出很多的安全攻击行为。

    Bypass

扫码关注云+社区

领取腾讯云代金券