日志收集系统 ELK

  查看日志一直都是一个很困扰的问题,登录到服务器上查看几百兆的txt文件,从中找到某个问题可能会留下的日志记录......    尤其是现在,在集群式部署的服务器原来越多的时候,找到一个异常记录几乎要翻遍每一台服务器,想想就崩溃了!这个时候就特别希望能有一个集中查看日志的方案来拯救我。

  曾经找到一个名为log4Grid的项目,试用了一下。日志数据都保存到mssql数据库中,通过一个web项目来查询显示日志记录。只是实现了基本的日志数据收集和显示,项目没有持续更新,使用起来也不够稳定。不是一个成熟的日志收集项目。

  log4net项目里有一个SimpleSocketServer的小应用,可以把多个服务器上的log4net日志集中到一个服务器上,然后再选择log4net的某种记录方式写下来。但是不能满足方便查看的要求。

  后来因为公司要求学习Java,所以经常能搜索到的ELK系统也进入了考虑的范围。经过初步试用,感觉是能满足我的基本需求的。

  虽然能搜索到很多ELK的部署说明,但是自己操作的时候还是遇到了很多坑,中间还遇到了无法继续的情况。在这里我也记录下自己的部署过程(因为没有及时记录,竟然有些细节忘记了)。

  那时候还不知道Exceptionless呢。

下载列表:

jdk1.8 (oracle)

logstash (https://www.elastic.co/downloads)

elasticsearch (https://www.elastic.co/downloads)

kibana (https://www.elastic.co/downloads)

redis for x64 (github)

Nssm(http://nssm.cc/download)

一. jdk安装

ELK是运行在JVM上的所以也要安装jdk,jdk安装在Windows系统上后需要配置系统环境变量。详细配置可以看成是另外一件事,请自行搜索网上文章。

二. elasticsearch

elasticsearch 是ELK的核心负责存储和检索。

将elasticsearch 解压到一个目录下,在\bin目录下找到服务的安装、启动文件 service.bat:

执行命令 service.bat install 安装windows服务

执行命令 service.bat start 启动windows服务

用浏览器访问 http://localhost:9200/ 能返回一个正常的页面就说明服务启动成功了

三. kibana

kibana 是ELK中负责显示检索结果的。

将kibana 解压到一个目录下,将nssm复制到kibana的\bin目录下(为了简单所以直接复制nssm):

执行命名 nssm install kibana

在nssm的界面上选择启动文件kibana.bat,设置自动启动,完成。

用浏览器访问 http://localhost:5601/ 能返回一个正常页面的话说明服务启动成功了

四. logstash

logstash在ELK中负责收集转化数据的,从日志中获取的数据由它传给elasticsearch。

将logstash解压到一个目录下,在\bin的同级目录下新建\conf目录,在该目录下存放配置文件。

启动服务时使用 logstash.bat ..\conf\xx.conf 的命令。

在logstash进入工作状态前,为了测试其能否正常工作,做了一个从日志文件获取数据的配置 example.conf:

input {
   file {
       path => "C:\logs\log.log"
   }
}
filter {}
output {
   stdout {
      codec => rubydebug
  }
}

当日志文件有新增时就会在控制台上输出。

一般情况下应该从log4j(我系统是log4j的)的输出获取数据,配置 log4j.conf :

input {
  log4j{
    mode => "server"
    type=>"log4j-json"
    port=>4712
  }
}
filter {}
output {
   stdout { codec => rubydebug }
   elasticsearch { hosts => ["127.0.0.1"] }
}

这就是在单机上配置ELK的关键点,跨服务器还没试过。

logstash的配置文件很容易出错误,最后我只放基本的配置,用ANSI不用中文不用注释。

对应的在系统内log4j要配置SocketAppender输出,log4j的properties配置:

log4j.rootLogger=info,logstash
# Socket,logstash
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.Port=4712
log4j.appender.logstash.RemoteHost=localhost
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true

把新的输出配置logstash加到log4j.rootLogger= 后就能获得全部的日志输出。

如果收到以下提示信息,说明没找到log4j的SocketAppender输出请检查日志配置是否正确

log4j:WARN No appenders could be found for logger (org.apache.http.client.protoc
ol.RequestAuthCache).
log4j:WARN Please initialize the log4j system properly.
时间: 10-14

日志收集系统 ELK的相关文章

ELK+kafka构建日志收集系统

ELK+kafka构建日志收集系统 原文  http://lx.wxqrcode.com/index.php/post/101.html 背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis换成了专业的消息信息发布订阅系统Kafka, Kafka的更多介绍大家可以看这里: 传送门 ,关于ELK的知识网上有很多的哦, 此篇博客主要是总结一下目前线上这个

开源日志分析系统ELK平台搭建部署

开源日志分析系统ELK平台搭建部署 一.前言 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总. 集中化管理

第11天 日志收集系统kafka库实战

本节主要内容: 1. 日志收集系统设计2. 日志客户端开发 1. 项目背景    a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题    b. 当系统机器比较少时,登陆到服务器上查看即可满足    c. 当系统机器规模巨大,登陆到机器上查看几乎不现实 2. 解决方案    a. 把机器上的日志实时收集,统一的存储到中心系统    b. 然后再对这些日志建立索引,通过搜索即可以找到对应日志    c. 通过提供界面友好的web界面,通过web即可以完成日志搜索 3. 面临的问题   

Go语言系列(十一)- 日志收集系统

一.日志收集系统背景 1 项目背景 a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 b. 当系统机器比较少时,登陆到服务器上查看即可满足 c. 当系统机器规模巨大,登陆到机器上查看几乎不现实 2 解决方案 a. 把机器上的日志实时收集,统一的存储到中心系统 b. 然后再对这些日志建立索引,通过搜索即可以找到对应日志 c. 通过提供界面友好的web界面,通过web即可以完成日志搜索 3 遇到的问题 a. 实时日志量非常大,每天几十亿条b. 日志准实时收集,延迟控制在分钟级别c. 能

用fabric部署维护kle日志收集系统

最近搞了一个logstash kafka elasticsearch kibana 整合部署的日志收集系统.部署参考lagstash + elasticsearch + kibana 3 + kafka 日志管理系统部署 02 上线过程中有一些环节,觉得还是值的大家注意的比如: 1,应用运维和研发人员要讨论一下日志格式的定义, 2,在logstash取日志和消费端logstash消费日志麻.过滤日志的时候怎么要高效,避免服务本身告成系统压力过大,如果每天要处理过亿日志量,性能不注意,哈哈,可以使

打造分布式日志收集系统

前言 系统一大,就会拆分成多个独立的进程,比如web+wcf/web api等,也就成了分布式系统. 要看一个请求怎么从头到尾走的,就有些困难了,要是进行DEBUG.跟踪,就更加麻烦了,困难程度要视进程多少而定,越多越复杂. 分布式日志收集系统就登场了. 今天介绍一款 全开源日志收集.展示系统 - logstash(基于java)+kibana(基于JRuby, logstash已自带)+ElasticSearch+RabbitMQ 架构图如下 这张图是拷贝来的 里面虽然是Redis,但是没关系

分布式日志收集系统:Flume

Flume知识点: Event 是一行一行的数据 1.flume是分布式的日志收集系统,把收集来的数据传送到目的地去. 2.flume里面有个核心概念,叫做agent.agent是一个java进程,运行在日志收集节点. 3.agent里面包含3个核心组件:source.channel.sink. 3.1 source组件是专用于收集日志的,可以处理各种类型各种格式的日志数据,包括avro.thrift.exec.jms.spooling directory.netcat.sequence gen

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

问题导读: 1.Flume传输的数据的基本单位是是什么? 2.Event是什么,流向是怎么样的? 3.Source:完成对日志数据的收集,分成什么打入Channel中? 4.Channel的作用是什么? 5.取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器,由谁来完成? 6.Flume支那些数据格式? 7.对于直接读取文件Source,有两种方式,分别是什么? 8.Channel有多种方式有哪些方式? 概述Flume是Cloudera公司的一款高性能.高可能的分布

一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等

作者:大数据女神-诺蓝(微信公号:dashujunvshen).本文是36大数据专稿,转载必须标明来源36大数据. 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务.集群管理.RPC.基础设施.搜索引擎.Iaas和监控管理等大数据开源工具. 日志收集系统 一.Facebook Scribe 贡献者:Facebook 简介:Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用.它能够从各种