ELK指的是由Elastic公司提供的三个开源组件Elasticsearch、Logstash和Kibana。

  Logstash:开源的服务器端数据处理管道,能够同时 从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(我们的存储库当然是 Elasticsearch。)

  Elasticsearch:一个分布式的 RESTful 风格的搜索和数据分析引擎。

  Kibana:能够可视化 Elasticsearch 中的数据并操作 Elastic Stack(ELK Stack从5.x开始称作Elastic Stack)

本文介绍ELK在win10 64ibit系统下的安装和简单配置,更多信息见:

  Elastic官网

  官方文档

  elasticsearch中文文档

注:ELK6.x需要java 8,不支持java 9

Logstash安装:

  下载地址:https://www.elastic.co/cn/downloads/logstash

  下载zip文件并解压文件到你的磁盘中,接下来让我们来验证安装是否正确。通过cmd切换到安装目录下,运行一个最基础的logstash pipeline:

输入logstash -e "" 之后, 稍等片刻,logstash开始启动。在信息的末尾会出现如下提示:

我们输入“hello”后键入回车键,会发现控制台信息更新,内容如下。

看到这里,我们的安装就成功了。

logstash命令行支持两种方式加载配置项

logstash -e

  logstash -e "" 等同于 logstash -e "input {stdin {}} output {stdout { codec => rubydebug }}"

logstash -f 

  加载指定配置文件,启动logstash,如 H:\elk\logstash-6.1.1\bin>logstash -f ../logstash-test.conf

更多配置,使用logstash -f 或logstash -f或者logstash --help查看。

logstash pipeline有两个必备元素,input and output,还有一个可选元素filter.通过input插件载入数据,filter插件按照指定修改数据,最后使用output将数据输出在指定的位置。

下面是一个简单的logstash.conf示例,将指定目录下符合匹配规则的文件,转存储到elasticsearch :

input {
  file {
    path =>["D:/logs/**/*.log*","D:/logs/**/*.log"]#指定输入文件路径,支持数组
    #add_field => {"test"=>"test"} #添加自定义字段
    #tags => "tag1" #标签
    #exclude => "xxx.log" #排除文件
    start_position => "beginning" #监听文件的起始位置
    sincedb_path => "NUL" #logstash默认是增量读取的,此项配置表示文件读取进度的记录。在window下值为"NUL",linux下为"/dev/null"时,表示每次都从头开始读取文件,在正式环境中一定要关闭
    codec => multiline { 
      pattern => "^\[" #正则匹配条件,作为判断是否和前一行合并的依据
      negate => true #boolean类型,设置正向匹配还是反向匹配,默认是false,可选
      what => "previous" #设置未匹配的内容是向前合并还是向后合并,previous, next 两个值选择,必选
    }
  }
}
output {
  elasticsearch {
    hosts => "localhost:9200" #指定转存储目标,我们使用的是elasticsearch
  }
}
好吧,我们的elasticsearch还没有安装接下来我们下载并安装elasticsearchkibana
各自解压后进入elasticsearch的config目录,修改elasticsearch.yml,放开network.host的注释,指定一个ip以通知其他应用。我这里设置成0.0.0.0。
修改kibana下的kibana.yml,设置elasticsearch.url为"http://localhost:9200"。
依次启动elasticsearch,kibana,然后使用上面的配置文件启动logstash
访问http://localhost:5601
使用discover,可以看到message中可以看到包含多行日志的message。

使用elk转存储日志的更多相关文章

  1. ELK+kafka构建日志收集系统

    ELK+kafka构建日志收集系统   原文  http://lx.wxqrcode.com/index.php/post/101.html   背景: 最近线上上了ELK,但是只用了一台Redis在 ...

  2. ELK+Kafka 企业日志收集平台(一)

    背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis ...

  3. ELK搭建实时日志分析平台之一ElasticSearch搭建

    文:铁乐与猫 系统:CentOS Linux release 7.3.1611 (Core) 注:我这里为测试和实验方便,ELK整套都装在同一台服务器环境中了,生产环境的话,可以分开搭建在不同的服务器 ...

  4. ELK之收集日志到mysql数据库

    写入数据库的目的是持久化保存重要数据,比如状态码.客户端浏览器版本等,用于后期按月做数据统计等. 环境准备 linux-elk1:10.0.0.22,Kibana ES Logstash Nginx ...

  5. ELK + kafka 分布式日志解决方案

    概述 本文介绍使用ELK(elasticsearch.logstash.kibana) + kafka来搭建一个日志系统.主要演示使用spring aop进行日志收集,然后通过kafka将日志发送给l ...

  6. ELK +Nlog 分布式日志系统的搭建 For Windows

    前言 我们为啥需要全文搜索 首先,我们来列举一下关系型数据库中的几种模糊查询 MySql : 一般情况下LIKE 模糊查询  SELECT * FROM `LhzxUsers` WHERE UserN ...

  7. ELK对nginx日志进行流量监控

    ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...

  8. 基于Centos 7.4 搭建ELK整合SpringBoot日志收集

    基于Centos 7.4搭建es7.12.0+logstash-7.12.0+kibana-7.12.0(ELK)整合SpringBoot日志收集 注:Skywalking和logstash可共用一个 ...

  9. ELK Stack企业日志平台文档

                                          ELK Stack企业日志平台文档           实验环境 主机名 IP地址 配置 系统版本 用途 controlno ...

随机推荐

  1. vue中使用keepAlive组件缓存遇到的坑

    项目开发中在用户由分类页category进入detail需保存用户状态,查阅了Vue官网后,发现vue2.0提供了一个keep-alive组件. 上一篇讲了keep-alive的基本用法,现在说说遇到 ...

  2. maven pom.xml 中各个标签元素的作用

    <groupId> : 项目或者组织的唯一标识 <artifactId>项目的通用名称 <artifactId>项目的通用名称 <version> 项目 ...

  3. 《深入理解Java虚拟机:JVM高级特性与最佳实践》【PDF】下载

    <深入理解Java虚拟机:JVM高级特性与最佳实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062566 内容简介 作为一位 ...

  4. 非常有用的GitHub链接

    平常开发工作中,我经常取Github上搜索项目,Clone下来学习使用,在这个过程中,发现了好多比较好的Github地址,记录下来,分享出去. image 非常有用的GitHub链接(顺序不分先后): ...

  5. 【java】实现一个简单的正则:判断一个字符串是否全由数字组成

    package 正则; public class TestIsNum { public static void main(String[] args) { String s1="abc&qu ...

  6. JavaScript基础2——关于变量

    变量的声明                            变量的定义:使用var关键字来声明,区分大小写的.注意:不用var,会污染全局变量.        变量的命名规范是:字母,数字,$符 ...

  7. ImportError: No module named 'request'

    使用系统自带的Python 2.7执行python时出现ImportError: No module named 'request'这样的报错,这是系统自带的Python没有requests库,这里可 ...

  8. VR\AR 使用 SceneKit

    VR\AR 使用 SceneKit http://www.jianshu.com/c/70d63e3941fd

  9. JAVA 解析、编辑nginx.conf

    最近工程开发遇到一个需求:用Java去解析并编辑nginx.conf 在github上找到nginx-java-parser工具,项目地址:https://github.com/odiszapc/ng ...

  10. DataInputStream EOFEXCEPTION

    在编写socket通信时,服务端使用了DataInputStream.readUTF()读取字节流时,出现EOFEXCEPTION 原因是客户端没有使用DataOutputStream.writeUT ...