您的位置:首页 > 其它

elk之logstash安装与配置

2016-03-11 20:05 471 查看
1.基本概念

ELK:Elasticsearch + Logstash + Kibana 

ELK官网:https://www.elastic.co/

ELK作用:数据采集分析展示一体化

Logstash的角色:数据采集

Elasticsearch的角色:数据存储分析

Kibana的角色:展示

2.安装

(a)logstash运行依赖jre,jre的安装可参考:ubuntu安装jre

(b)下载地址:https://www.elastic.co/,点击右上角downloads

(c)我选择的版本是logstash-2.2.2.tar.gz

(d)解压:tar -xzvf logstash-2.2.2.tar.gz

(e)解压即可用,执行程序在bin目录下面

3.启动参数

(a)启动参数查看 ./logstash -h

(b) -f  :指定配置路径

(c) -t  :测试配置

(d) -l :指定日志路径,否则输出到标准输出

(e)启动举例:

nohup ./logstash -f ../conf/logstach.conf -l ../log/logstash.log &


4.最简单的启动,启动完成后在屏幕输入"hello logstash",输出信息将会在标准输出格式化输出

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



5.配置

官方文档:https://www.elastic.co/guide/en/logstash/current/index.html

(a)logstash的配置主要由三块组成input、filter、output

(b)input :数据输入

(c)filter :数据预处理

(d)output :输出控制

6.插件

官方文档:https://www.elastic.co/guide/en/logstash/current/index.html

主要是参考官方文档的input、filter、output插件说明



7.配置举例

(a)需求:有多个路径的日志文件需要采集,需要对日志文件进行不同的解析,然后进行不同的处理,假设日志如下:

1457494295.865 200 GET /djgxZGNkYWJiZmE1MTNmZTE2MjBhNTY1MzlkMjAxYjY4MTIwMDIzMjkw HTTP/1.1 0.347 - 110.82.103.27 [ 09/Mar/2016:11:31:35 +0800 ] 0.347 godmusic.bs2dl.yy.com 758388 127 127.0.0.1:9999


(b)利用grok插件进行解析,grok插件有个模拟地址,http://grokdebug.herokuapp.com/

(c)数据输出到elasticsearch

(d)配置如下:logstash.conf

input {
file {
type => "udaccesslog"
path => "/data/ud_log/access.log"
}
file {
type => "routeraccesslog"
path => "/data/router_log/access.log"
}
}
filter {
if [type] == "udaccesslog" {
grok {
match => { "message" => "%{NUMBER:msec:float} %{NUMBER:status:int} %{WORD:method} %{URIPATHPARAM:request} (HTTP/%{NUMBER:http_version}) %{NUMBER:duration:float} (?:(?:%{URI:referrer}|-)|%{QS:referrer}) %{IP:clientip} (\[ %{HTTPDATE:timestamp} \]) %{NUMBER:upstream_duration:float} %{IPORHOST:domain} %{NUMBER:bytes_sent:int} %{NUMBER:request_length:int} %{IP:upstream_addr}\:%{NUMBER:upstream_port:int}" }
remove_field => [ "@version", "http_version", "msec", "host" ]
add_field => {
machine => "123.456.789"
zoneid => "8080"
}
}
mutate {
convert => {
"zoneid" => "integer"
}
}
}
if [type] == "routeraccesslog" {

}
}
output {
if [type] == "udaccesslog" {
elasticsearch {
hosts => ["123.456.787:9200", "123.456.788:9200", "123.456.789:9200"]
index => "udnginx-%{+YYYY.MM.dd}"
workers => 2
}
}
if [type] == "routeraccesslog" {
stdout { codec => rubydebug }
}
}


(e)配置的一些细节理解

file:默认从文件末尾读取,会记录读取的offset

index:可以理解成数据库database,可以按日期动态生成,这样方便按照日期管理数据

type:可以理解成数据库的table

grok:解析数据插件

mutate:可以改变值的类型的插件

(f)logstash的host不允许修改,所以建议用machine字段代替

(g)需留意logstash的资源使用率

小结:细节很多,主要看官网的配置文档

下一篇:elk之elasticsearch安装与部署

End;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ELK logstash