具体工作流程如下:
1.1 logstash agent 监控并过滤日志,将过滤的日志内容发给 redis(redis 只处理队列,不存储),logstash index 将日志收集一起交给elasticsearch(全文搜索服务),elasticsearch可以通过自定义搜索,并通过结合kibana,进行页面展示。
1.2 logstash 的收集方式分为 standalone 和 centralized,前者是将所有功能都集中在一个服务器上面,自发自收,后者是一台服务器接收所有的shipper (logstash agent -f ...)的日志
服务器 (233-128)( index 负责收集日志并将日志交给 elasticsearch 做搜索): logstash index,ElasticSearch,kibana,JDK
日志源服务器(233-129)(agent 负责监控、过滤日志): logstash agent,JDK
服务器 (233-130):redis (可以指定一台线上的服务器)
在安装logstash之前,需要对jdk进行安装,用jdk 运行 java 程序
yum install java-1.7.0-openjdk
设置环境变量:#vim ./bashrc
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_6
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
然后,重新执行刚修改过的初始化文件 source .bashrc
wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.zip
unzip elasticsearch-0.90.5.zip
bin/elasticsearch
netstat -tpln
curl -X GET 127.0.0.1:9200
ogstash下载即可使用,命令行参数可以参考logstash flags ,主要有
agent #运行Agent模式
-f CONFIGFILE #指定配置文件
web #自动Web
-p PORT #指定端口,默认9292
新版的logstash 已经内置kibana , 也可以重新安装:
wget http://download.elasticsearch.org/kibana/kibana/kibana-latest.zip
unzip kibana-latest.zip
cp -r kibana-latest /var/www/html
vim redis.conf
input {
redis {
host => "233-130"
data_type => "list"
port => "6379"
key => "log stash:redis"
type => "redis-input"
}
}
output {
elasticsearch {
embedded => true
}
}
# logstash 的配置文件由 input, filter, output 等几个基本的部分组成
input 在指定服务器收集数据
output 就是输出到哪
filter 代表一个过滤规则,意思是什么内容会被收集
上面这段是让 logstash 去233-130 这个redis服务器上去收集日志
redis端口为6379,
key是 log stash:redis
类型为 redis-input(注意:这几个值必须跟logstash agent的 output 所对应),
收集完成后输出到 elasticsearch ,embedded => true 的意思是使用logstash 内嵌的 elastic search。
如果有独立的elasticsearch服务器,需要将这条改为host => 'elasticsearch的ip' port => 端口
java -jar logstash-1.2.1-flatjar.jar agent -f redis.conf &
java -jar logstash-1.2.1-flatjar.jar web & #启动logstash的内置web
losf -i: 9292
losf -i: 9200
在浏览器上查看http://~~233-128:9292 页面
现在还没有数据,登录到 服务器233-129 安装基本软件包和logstash
( logstash agent,JDK 的安装同上)
vim redis.conf
input {
file {
type => "nagios-log"
path => "/var/log/messages"
}
}
#filter {
# grep {
# match => [ "@message", "mysql|GET|error" ]
# }
#}
output {
redis {
host => "233-130"
data_type => "list"
key => "logstash:demo"
}
}
# java -jar logstash-1.2.1-flatjar.jar agent -f redis.conf &
在启动之前先确定233-130是否已启动redis,
wget http://download.redis.io/releases/redis-2.6.16.tar.gz
tar redis-2.6.16.tar.gz
cd redis-2.6.tar.gz
make
按照提示:
可以去redis目录下运行make test了,这次正常跑通。提示:
\o/ All tests passed without errors!Cleanup: may take some time... OK
说明redis安装正常。可以运行。
make install
然后,启动,cd src && ./redis-server
运行 ./redis-cli 就可以手动写数据
可以查看端口监听情况:netstat -lntp
losf -i:6379
简单配置 redis.conf 文件
现在浏览器上查看http://~~233-128:9292 页面,应该有数据了
http://233-128:9292/index.html#/dashboard
http://233-128/kibana-latest/index.html#/dashboard/file/logstash.json
logstash 默认配置中使用redis, redis 是一个开源的key / value 数据库,用于在索引前队列化日志,并使用elasticsearch 存储日志,并作为查看系统的后端。
下图是展示架构中各种组件类型,包括shipper , broker , indexer 以及 viewer :
shipper 将从各台服务器中监控的日志通过redis 输入到队列通道中,通过数据过滤,然后存储到elasticsearch中。以上三个功能是通过配置shipter 信息执行的,这些信息存储在“.conf”文件中,该文件使用三种不同类型的插件:输入(input),过滤器(filter),以及输出(output)。
参考链接:
http://www.cnblogs.com/buzzlight/p/logstash_elasticsearch_kibana_log.html
http://storysky.blog.51cto.com/628458/1158707