分类 Logstash 下的文章

Elasticsearch集群搭建

之前对于CDN的日志处理模型是从
logstash agent==>>redis==>>logstash index==>>elasticsearch==>>kibana3,对于elasticsearch集群搭建,可以把索引进行分片存储,一个索引可以分成若干个片,分别存储到集群里面,而对于集群里面的负载均衡,副本分配,索引动态均衡(根据节点的增加或者减少)都是elasticsearch自己内部完成的,一有情况就会重新进行分配。
下面先是介绍几个关于elasticsearch的几个名词

- 阅读剩余部分 -

logstash+elasticsearch+kibana3+redis分布式搭建

之前的logstash都是单机模式,把几个组件都安装在一台机器上,这一次把每个组件都安装到独立的server上,下面是架构图。

logstash
日志通过syslog-ng传输到logstash的agent端,agent主要就是负责接收日志,然后把日志放到redis,redis在这里的作用就是一个队列,主要是日志的缓存,redis是以内存做缓存的,一段时间存到磁盘上。在redis另一端是logstash index,这端主要是从redis取出日志,然后进行filter和output,filter就是对日志进行切割,匹配,过滤,logstash index这里可以是集群的,都从redis拿就行。取出来之后output可以到elasticsearch,elasticsearch也可以是集群,专门做索引。在最前端就是kibana3,再js里面配置从elasticsearch的端口读取数据,呈现到前端。

- 阅读剩余部分 -

logstash+kibana3 GeoIP地理位置

原日志从logstash输入,根据filter匹配或者修改,通过json输出到elasticsearch,然后到kibana3。所以要显示地理位置,要在logstash里面设置。logstash的jar包默认应该是有GeoIP的包的。下面是配置,pattern主要是针对Nginx的combined日志格式

log_format  access  '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '   '"$http_user_agent"

filter {
grok {
        type => "linux-syslog"
        pattern => "%{IPORHOST:source_ip} - %{USERNAME:remote_user} \[%{HTTPDATE:time_local}\] %{QS:request} %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent}
}
geoip {
   source => "source_ip"
   type => "linux-syslog"
   add_tag => [ "geoip" ]
#   database => "/var/geoip/GeoLiteCity.dat" 不是必须
}
}

kibana5

- 阅读剩余部分 -

logstash+kibana3搭建

之前玩过一段时间的logstash+kibana3,还有elasticsearch。但是困于libana安装环境的复杂,自从kibana3出来之后就方便了很多,对于logstash的版本也会有一些问题。

logstash


yum install java-1.6.0*
wget https://download.elasticsearch.org/logstash/logstash/logstash-1.2.1-flatjar.jar
mkdir -p /usr/local/bin/logstash/
mkdir -p /etc/logstash/
cd /usr/local/bin/logstash/ && ln -s ./logstash-1.2.1-flatjar.jar ./logstash.jar

编辑logstash的配置文件

- 阅读剩余部分 -