码迷,mamicode.com
首页 > 其他好文 > 详细

Elasticsearch+Kibana+Logstash 搭建日志平台

时间:2015-06-17 21:37:56      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:elasticsearch   logstash   kibana   

大型日志平台搭建


Java 环境部署


网上很多教程,此处只做出测试

java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

Elasticsearch 搭建


curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.5.1.tar.gz
tar zxvf elasticsearch-1.5.1.tar.gz
cd elasticsearch-1.5.1/
./bin/elasticsearch

es在此处不需要设置多少东西,基本上默认的就可以满足我们的要求了...

Logstash 搭建

初步搭建

curl -O http://download.elastic.co/logstash/logstash/logstash-1.5.1.tar.gz

现在你应该有了一个叫logstash-1.5.2.tar.gz的文件了。 我们把它解压一下

tar zxvf logstash-1.4.2.tar.gz
cd logstash-1.5.1

现在我们来运行一下:
bin/logstash -e 'input { stdin { } } output { stdout {} }'

我们现在可以在命令行下输入一些字符,然后我们将看到logstash的输出内容:
hello world
2015-06-17T01:22:14.405+1000 0.0.0.0 hello world

Ok,还挺有意思的吧... 以上例子我们在运行logstash中,定义了一个叫"stdin"的input还有一个"stdout"的output,无论我们输入什么字符,Logstash都会按照某种格式来返回我们输入的字符。这里注意我们在命令行中使用了-e参数,该参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。
让我们再试个更有意思的例子。首先我们在命令行下使用CTRL-C命令退出之前运行的Logstash。现在我们重新运行Logstash使用下面的命令:

bin/logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'

我们再输入一些字符,这次我们输入"goodnight moon" 将出现:

goodnight moon
{
  "message" => "goodnight moon",
  "@timestamp" => "2013-11-20T23:48:05.335Z",
  "@version" => "1",
  "host" => "my-laptop"
}

以上示例通过重新设置了叫"stdout"的output(添加了"codec"参数),我们就可以改变Logstash的输出表现。类似的我们可以通过在你的配置文件中添加或者修改inputs、outputs、filters,就可以使随意的格式化日志数据成为可能,从而订制更合理的存储格式为查询提供便利。

集成Elasticsearch插入数据

以上的步骤已经成功的搭建了logstash,接下来增加logstash的配置文件,使其配置文件启动,将数据存入ES中,显示

1、在/root/config/目录下面增加logs.conf
input{
    file{
        type => "all"
        path => "/root/tomcat7/logs/catalina.out"
    }
    file{
        type => "access"
        path => "/root/tomcat7/logs/access.log"
    }
}filter {
    multiline {
      pattern => "^[^\[]"
      what => "previous"
    }
    if [type] == "access" {
      grok {
        pattern => "(?<request_info>{.*}$)"
      }
      json {
        source => request_info
      }
      geoip {
        source => "client_ip"
        fields => ["country_name", "region_name", "city_name", "real_region_name", "latitude", "longitude"]
        remove_field => [ "[geoip][longitude]", "[geoip][latitude]","location","region_name" ]
      }
      useragent {
          source => "user_agent"
          prefix => "useragent_"
          remove_field => [ "useragent_device", "useragent_major", "useragent_minor" ,"useragent_patch","useragent_os","useragent_o
s_major","useragent_os_minor"]
      }
    } else if [type] == 'all' {
      grok {
	pattern => "\[(?<level>\w*).*\] (?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s"
      }
    }
    mutate {
      remove_field => [ "request_info", "@version", "tags" ]
      remove_tag => [ "_grokparsefailure" ]
      replace => [ "host", "gd1_prd_yowoo_tomcat4" ]
    }
}
output {
  stdout { codec => rubydebug }
  elasticsearch {
    host => "localhost"
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
    index_type => "%{type}"
  }
}

2、启动logstash(配置文件启动)

sh logstash -f /root/config/logs.conf

3、在上述的配置文件中,有指定了tomcat的日志,all是tomcat的日志,access是我们自己在程序中写的的日志,在log4j.xml中有:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- all log for console -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %l %M - %m%n" />
		</layout>
	</appender>

	<!-- access log -->
	<appender name="access" class="org.apache.log4j.DailyRollingFileAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} - %m%n" />
		</layout>
		<param name="Append" value="true" />
		<param name="File" value="/root/tomcat7/logs/access.log"<span style="font-family: Arial, Helvetica, sans-serif;"> /></span>
		<param name="DatePattern" value="'.'yyyy-MM-dd'.'" />
		<filter class="com.lives.platform.common.log.AccessLogFilter" />
	</appender>


	<root>
		<priority value="debug" />
		<appender-ref ref="console" />
		<appender-ref ref="access" />
	</root>

</log4j:configuration>

在log4j.xml中配置的是日滚的日志文件,logstash指向了生成日志文件的地址,进行监听,日志不会的,我在博客中有一个分类叫日志,进去看哇...

Kibana 搭建

下载Kibana

wget https://download.elastic.co/kibana/kibana/kibana-4.1.0-linux-x64.tar.gz

解压出来就行了...

配置使其读取ES的数据展示

进入Kibana目录/config中,修改kibana.yml文件,指定ES访问地址(ps:以前的版本是修改conf.js,不要让被人误导你...)
# Kibana is served by a back end server. This controls which port to use.
port: 5601

# The host to bind the server to.
host: "0.0.0.0"

# The Elasticsearch instance to use for all your queries.
elasticsearch_url: "http://localhost:9200"

最后进入web页面中查看 

技术分享


谢谢观看,牛逼不,还有谁,有任何问题请加QQ:772846384 验证问题 答案:花言巧语骗人心

Elasticsearch+Kibana+Logstash 搭建日志平台

标签:elasticsearch   logstash   kibana   

原文地址:http://blog.csdn.net/u014201191/article/details/46537543

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!