天天看点

logstash+elasticsearch +kibana 日志管理系统

logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。

kibana 也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面。他可以为 logstash 和 elasticsearch 提供的日志分析的 web 界面。

目的就是为了运维、研发很方便的进行日志的查询。kibana一个免费的web壳;logstash集成各种收集日志插件,还是一个比较优秀的正则切割日志工具;elasticsearch一个开源的搜索引擎框架(支持群集架构方式)

工作原理图显示如下:

简单来讲他具体的工作流程就是 logstash agent 监控并过滤日志,将过滤后的日志内容发给redis(这里的redis只处理队列不做存储),logstash index将日志收集在一起交给

全文搜索服务elasticsearch 可以用elasticsearch进行自定义搜索通过kibana 来结合自定义搜索进行页面展示

网上在国内找了很多的文章,但是大部分都是使用的logstash的旧版本,直接使用一个jar包,从logstash的官方网站上找到最新版本logstash-1.4.0,当前服务器操作系统ubuntu

1、安装软件列表

jdk 运行java程序必须

redis 用来处理日志队列

logstash 收集、过滤日志

elasticsearch 全文搜索服务(logstash集成了一个)

kibana 页面展

2、客户端安装

root@ay140104220747005ca6z-225:/soft/logstash-1.4.0#pwd

/soft/logstash-1.4.0

root@ay140104220747005ca6z-225:/soft/logstash-1.4.0#ls

bin lib  license  locales patterns  readme.md  shiper.conf spec  vendor

客户端主要配置shiper.conf文件(一般客户端上命名shiper.conf服务器端命名indexer.conf)

input {

  file {

    type=> "225-hd-prod"

    path=> [ "/mnt/servers/hd-prod/logs/catalina.out" ]

    codec=> multiline {

     pattern => "(^.+exception:.+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*caused by:.+)"

     what=> "previous"

  }

    }

}

filter {

  grok {

    match=> { "message" => "%{datestamp:timestamp}%{loglevel:level} %{greedydata:syslog_message}" }

   #match => [ "message","%{tomcatlog}","message", "%{catalinalog}" ]

  date {

    match=> [ "timestamp","dd/mm/yy:hh:mm:ss z" ]

output {

  stdout{ }

#  stdout{ codec => rubydebug }

  redis {host => "xxxx" data_type => "list" key=> "logstash:redis" }

这里我只是分析了一下tomcat的catalina.out文件(此java实例使用log4j将所有的信息全部写入catalina文件里面)

logstash所有参数文章介绍

客户端logstash启动命令 /soft/logstash-1.4.0/bin/logstash -f /soft/logstash-1.4.0/shiper.conf &

3、服务器端配置

由于服务器原因所有我这边把redis、elasticsearch全部放在logstash的服务器端

redis安装配置

root@ay140328152940950c78z:/usr/local/redis# ls

00-releasenotes contributing  deps     logstash.conf  manifesto readme      redis.conf.bak  runtest-sentinel  src   utils

bugs            copying       install  makefile      prod.conf  redis.conf  runtest         sentinel.conf     tests

redis默认不用修改任何配置文件直接启动就行redis-server redis.conf

elasticsearch安装配置

root@ay140328152940950c78z:/usr/local/redis# cd/soft/elasticsearch-1.0.1/

root@ay140328152940950c78z:/soft/elasticsearch-1.0.1#ls

bin config  data  lib license.txt  logs  notice.txt readme.textile

elasticsearch可以直接启动(不修改配置文件启动的话,所有生成的index在从新启动之后都会消失,以前的log信息就不会出现在kibana中),若是想让log信息持久保存可以查阅可以修改config下的elasticsearch.yml

gateway.type: local

gateway.recover_after_nodes: 1

gateway.recover_after_time: 5m

gateway.expected_nodes: 2

gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的hdfs,和amazon的s3服务器。

设置集群中n个节点启动时进行数据恢复,默认为1。

设置初始化数据恢复进程的超时时间,默认是5分钟。

设置这个集群中节点的数量,默认为2,一旦这n个节点启动,就会立即进行数据恢复

elasticsearch启动命令 /soft/elasticsearch-1.0.1/bin/elasticsearch &

logstash安装配置

root@ay140328152940950c78z:/soft/elasticsearch-1.0.1/config#cd /soft/logstash-1.4.0/

root@ay140328152940950c78z:/soft/logstash-1.4.0#ls

bin data  indexer.conf  lib license  locales  log.conf patterns  readme.md  sh.conf spec  test.conf  vendor

服务端logstash主要配置文件indexer.conf

redis {

       host => ‘127.0.0.1‘

       data_type => ‘list‘

       port => "6379"

       key => ‘logstash:redis‘

       type => ‘redis-input‘

       codec => json

        }

       }

       stdout {}

#      stdout { codec => rubydebug }

        elasticsearch {

       host => localhost

                        }

启动服务端的logstash命令/soft/logstash-1.4.0/bin/logstash -f /soft/logstash-1.4.0/indexer.conf &

启动之后开始启动logstash的图形界面服务 /soft/logstash-1.4.0/bin/logstash-web &

启动之后查看一下logstash是否完全启动

[root@logstash ~]# netstat -tlnp | grep java (9292端口是kibana页面展示的端口)

tcp 0 0 :::9292 :::* listen 2292/java

tcp 0 0 :::9200 :::* listen 2161/java

tcp 0 0 :::9300 :::* listen 2161/java

tcp 0 0 :::9301 :::* listen 2292/java

tcp 0 0 :::9302 :::* listen 2292/java

关于logstash所有配置就完成了接下来直接访问就能看到kibana的欢迎界面,关于kibana如何使用就不多写了,搭建一个完整的logstash特别是在国内资料过时的情况下真是十分艰难!

本文出自 “” 博客,请务必保留此出处