大型系统分布式日志采集系统ELK
全框架 SpringBootSecurity
1、传统系统日志收集的问题
2、Logstash操作工作原理
3、分布式日志收集ELK原理
4、Elasticsearch+Logstash+Kiabana整合
5、Logstash将数据推送到ES
6、Kibana图形界面展示ES日志信息

搭建环境虚拟机要求:2G以上内存

1.传统问题:

传统系统日志收集的问题

在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常底下。
通常,日志被分散在储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
命令方式:
tail -n 300 myes.log | grep 'node-1'    ##搜索某个日志在哪里
tail -100f myes.log
传统:

分布式日志收集问题      解决传统 日志分布在每台节点的问题 分散的。在搜索日志时候非常繁琐  (可以存放在redis哦,可以定时,但是不要存放在数据库中,不需要持久啊)

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

ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 
Kibana是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

ELK分布式日志收集系统原理:

在每个服务器节点安装Logstash插件,把节点的本底文件日志读取到Logstash中去,以每天的方式创建索引。然后再把本底的日志文件进行格式化转成json格式,写入到ES服务器集群中去。

小结:

ELK分布式日志收集原理
1、每台服务器集群节点安装Logstash日志收集系统插件
2、每台服务器节点将日志输入到Logstash中
3、Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中
4、浏览器使用安装Kibana查询日志信息

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

Logstash环境安装
1、上传logstash安装包(资料)
2、解压tar –zxvf logstash-6.4.3.tar.gz
3、在config目录下放入mayikt01.conf 读入并且读出日志信息

ELK搭建:

1、安装ElasticSearch 
2、安装Logstash
3、 安装Kibana

(1,3:https://www.cnblogs.com/toov5/p/10295790.html)

实际项目中 ELK+Kafka

上传安装包解压,本文使用的日志文件是 es自己产生的日志文件:

/home/elasticsearch/elasticsearch-6.4.3/logs 下面的日志

查询日志的Linux指令:   tail -n 300 myes.log | grep 'node-1'    ## 查询关键字‘node-1’的内容 前300行

实时搜索:tail -100f myes.log

在:/home/elasticsearch/logstash-6.4.3/config 目录下创建Logstash的配置文件:

内容如下:

input {
# 从文件读取日志信息 输送到控制台 path要对应读取的目录
file {
path => "/home/elasticsearch/elasticsearch-6.4.3/logs/myes.log"
        codec => "json" ## 以JSON格式读取日志
type => "elasticsearch"
start_position => "beginning"
} } # filter {
#
# } output {
# 标准输出
# stdout {}
# 输出进行格式化,采用Ruby库来解析日志
stdout { codec => rubydebug }
}

如图: (当然可以配置多个 输入 多个输出)

保存

切换到bin目录下启动(指定启动文件):  ./logstash -f ../config/toov501.conf

启动相当慢 小伙伴们要耐心等待哦

当前配置的形式是打印到窗口的方式: 启动后打印的日志非常漂亮~ JSON格式

配置下日志的输出到ES中:

修改下 outoput 就OK了

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

idex:索引! 根据每一天创建索引!!!!   默认doc!

注意如果你启动不成功,报错:

No sincedb_path set, generating one based on the "path" setting {:sincedb_pa

解决方案:

https://stackoverflow.com/questions/32001752/logstash-fails-to-read-file-no-sincedb-path-set-generating-one-based-on-the-fi

Maybe you can do as follows:

change your input config like this:

input {
file {
path =>[ "/usr/share/logstash-1.5.3/test.txt"]
start_position => beginning
sincedb_path => "/opt/logstash/sincedb-access"
}
}

then touch a file for sincedb_path:

touch /opt/logstash/sincedb-access
chown logstash:logstash /opt/logstash/sincedb-access

the most important thing is:

ln -s /lib/x86_64-linux-gnu/libcrypt.so.1 /usr/lib/x86_64-linux-gnu/libcrypt.so

You may lost libcrypt.so file.

我们使用 kibana查询

http://192.168.91.7:5601/app/kibana#/dev_tools/console?_g=()

GET /es-2019.01.22

查看:

可以进行各种查询:

ES查询效率快 倒排索引!

可以用图形化界面,大家可以自己玩玩

ELK分布式日志收集搭建和使用的更多相关文章

  1. 传统ELK分布式日志收集的缺点?

    传统ELK图示: 单纯使用ElK实现分布式日志收集缺点? 1.logstash太多了,扩展不好. 如上图这种形式就是一个 tomcat 对应一个 logstash,新增一个节点就得同样的拥有 logs ...

  2. SpringBoot+kafka+ELK分布式日志收集

    一.背景 随着业务复杂度的提升以及微服务的兴起,传统单一项目会被按照业务规则进行垂直拆分,另外为了防止单点故障我们也会将重要的服务模块进行集群部署,通过负载均衡进行服务的调用.那么随着节点的增多,各个 ...

  3. .NetCore快速搭建ELK分布式日志中心

    懒人必备:.NetCore快速搭建ELK分布式日志中心   该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 ELK是什么 它是一个分布式日志解决方案,是Logstash.Elastaics ...

  4. .NetCore 分布式日志收集Exceptionless 在Windows下本地安装部署及应用实例

    自己安装时候遇到很多问题,接下来把这些问题写出来希望对大家有所帮助 搭建环境: 1.下载安装 java 8 SDK (不要安装最新的10.0) 并配置好环境变量(环境变量的配置就不做介绍了) 2.下载 ...

  5. 分布式日志收集收集系统:Flume(转)

    Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力.Fl ...

  6. 分布式日志收集框架Flume

    分布式日志收集框架Flume 1.业务现状分析 WebServer/ApplicationServer分散在各个机器上 想在大数据平台Hadoop进行统计分析 日志如何收集到Hadoop平台上 解决方 ...

  7. 分布式日志收集之Logstash 笔记(一)

    (一)logstash是什么? logstash是一种分布式日志收集框架,开发语言是JRuby,当然是为了与Java平台对接,不过与Ruby语法兼容良好,非常简洁强大,经常与ElasticSearch ...

  8. 分布式日志收集系统Apache Flume的设计详细介绍

    问题导读: 1.Flume传输的数据的基本单位是是什么? 2.Event是什么,流向是怎么样的? 3.Source:完成对日志数据的收集,分成什么打入Channel中? 4.Channel的作用是什么 ...

  9. ELK 分布式日志实战

    一.  ELK 分布式日志实战介绍 此实战方案以 Elk 5.5.2 版本为准,分布式日志将以下图分布进行安装部署以及配置. 当Elk需监控应用日志时,需在应用部署所在的服务器中,安装Filebeat ...

随机推荐

  1. 最终版的Web(Python实现)

    天啦,要考试了,要期末考试了,今天把最终版的Python搭建Web代码先写这里记下了.详细的过程先不写了. 这次是在前面的基础上重写 HTTPServer 与 BaseHTTPRequestHandl ...

  2. 截取视图某一段另存为部分视图(Partial View)

    在做ASP.NET MVC后台管理程序时,根据程序需要,Isus.NET需要实现一个功能,就是动态截取视图某一段另存为部分视图Partial View. 思路为在视图中,使用jQury的程序截图以及P ...

  3. "ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效"的快速解决方法

    引自:http://hi.baidu.com/fynaa/item/c2978952d8d542dfd48bacf6 讲了一大堆: 综合下: 解决方案:select session_id from v ...

  4. Nginx配置文件nginx.conf中文详解(转)

    #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | in ...

  5. python +Django 搭建web开发环境初步,显示当前时间

    1.python 的安装 网上很多关于django跟python 开发的资料,这块我正在实习准备用这个两个合起来搞一个基于web 的东西出来现在开始学习,写点东西记录一下心得. 开发环境是window ...

  6. SpringMVC学习笔记1

    1:IntelliJ新建Maven工程 2:pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...

  7. c语言条件编译#ifdef与#if defined

    c语言条件编译#ifdef与#if defined   c语言条件编译#ifdef与#if defined 摘自:https://www.cnblogs.com/zhangshenghui/p/566 ...

  8. JDK源码分析:Object.java

    一. 序言 Object.java是一切类的基类,所以了解该类有一定的必要 二 .属性及方法分析 方法列表: private static native void registerNatives(); ...

  9. 虚拟机网络连接模式中桥接模式和NAT模式的区别

    1.桥接模式:当虚拟机系统的网络连接模式为桥接模式时,相当于在主机系统和虚拟机系统之间连接了一个网桥,而网桥两端的网络都属于同一网络,主机和虚拟机是处于同一网络中的对等主机. 实例,在使用Xshell ...

  10. DingTalk机器人C#代码

    前面已经介绍了机器人的事情,今天直接贴一下代码. using System; using System.Collections.Generic; using System.ComponentModel ...