目的
搭建该平台的目的就是为了运维、研发很方便的进行日志的查询
简介
logstsh
- 收集日志转到任意地方
- inputs >> codecs >> filters >> outputs
- 支持的插件(很多 官网)
- ruby
ElasticSearch
- 基于lucene的开源搜索引擎
- 实时、分布式、高可用、文档型、restful api
- java
kibana
- kibana是一个功能强大的elasticsearch数据显示客户端
- 纯html+js客户端,可以很方便的部署到Apache、Nginx等Http服务器
- 酷图
架构图
安装
依赖jdk
安装过程参考
实例
标注输入
input {
stdin{}
}
filter {
grok {
match => [ "message", "(?<ttt>\d{1,3})" ]
}
}
output{
stdout{
codec => rubydebug
}
}
输入结果
nginx 访问日志
nginx 配置
http {
log_format logstash_json '{ "@timestamp": "$time_iso8601", '
'"@fields": { '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"request": "$request", '
'"request_method": "$request_method", '
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" } }';
}
server {
access_log /var/log/nginx/xiaoma.log logstash_json;
}
nginx-access-json.conf
input{
file {
path => "/usr/local/logstash/conf/xiaoma.log"
type => "nginx_json"
start_position => "beginning"
format => "json_event"
sincedb_path => "/dev/null"
}
}
filter {
if [type] == "nginx_json" {
geoip {
source => "remote_addr"
}
}
}
output{
stdout{
codec => rubydebug
}
elasticsearch {
host => "127.0.0.1"
}
}
输入结果
mysql慢查询
input {
file {
type => "mysql-slow"
path => "/usr/local/src/mysql-slow.log"
start_position => "beginning"
}
}
filter {
grep {
match => [ "@message", "^# Time: " ]
negate => true
}
grok {
singles => true
pattern => [
"^# User@Host: %{USER:user}\[[^\]]+\] @ %{HOST:host} \[%{IP:ip}?]",
"^# Query_time: %{NUMBER:duration:float} \s*Lock_time: %{NUMBER:lock_wait:float} \s*Rows_sent: %{NUMBER:results:int} \s*Rows_examined: %{NUMBER:scanned:int}",
"^SET timestamp=%{NUMBER:timestamp};"
]
}
multiline {
pattern => "^# User@Host: "
negate => true
what => previous
}
date {
match => ["timestamp", UNIX]
}
mutate {
remove => "timestamp"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
host => "168.192.122.58"
protocol => "http"
workers => 5
}
}
输入结果