娇w兴 发表于 2015-11-27 12:41:26

Elasticsearch+Kibana+Logstash 搭建日志平台

大型日志平台搭建




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


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


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


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


<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?>
<!DOCTYPE log4j:configuration SYSTEM &quot;log4j.dtd&quot;>
<log4j:configuration xmlns:log4j=&quot;http://jakarta.apache.org/log4j/&quot;>
<!-- all log for console -->
<appender name=&quot;console&quot; class=&quot;org.apache.log4j.ConsoleAppender&quot;>
<layout class=&quot;org.apache.log4j.PatternLayout&quot;>
<param name=&quot;ConversionPattern&quot; value=&quot;[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %l %M - %m%n&quot; />
</layout>
</appender>
<!-- access log -->
<appender name=&quot;access&quot; class=&quot;org.apache.log4j.DailyRollingFileAppender&quot;>
<layout class=&quot;org.apache.log4j.PatternLayout&quot;>
<param name=&quot;ConversionPattern&quot; value=&quot;[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} - %m%n&quot; />
</layout>
<param name=&quot;Append&quot; value=&quot;true&quot; />
<param name=&quot;File&quot; value=&quot;/root/tomcat7/logs/access.log&quot;<span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;> /></span>
<param name=&quot;DatePattern&quot; value=&quot;'.'yyyy-MM-dd'.'&quot; />
<filter class=&quot;com.lives.platform.common.log.AccessLogFilter&quot; />
</appender>

<root>
<priority value=&quot;debug&quot; />
<appender-ref ref=&quot;console&quot; />
<appender-ref ref=&quot;access&quot; />
</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: &quot;0.0.0.0&quot;
# The Elasticsearch instance to use for all your queries.
elasticsearch_url: &quot;http://localhost:9200&quot;

最后进入web页面中查看







谢谢观看,牛逼不,还有谁,有任何问题请加QQ:772846384 验证问题 答案:花言巧语骗人心  
页: [1]
查看完整版本: Elasticsearch+Kibana+Logstash 搭建日志平台