logstash 的output插件前端
nginx,logstash和redis在同一臺機子上java
yum -y install redis,vim /etc/redis.conf 設置bind 0.0.0.0 ,使redis監聽在全部端口上node
systemctl start redis.service, cd /etc/logstash/conf.dlinux
vim nglogredissample.confnginx
input {web
file {redis
path => ["/var/log/nginx/access.log"]vim
type => "nginxlog"瀏覽器
start_position => "beginning"ruby
}
}
filter {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
}
output {
redis {
port => "6379"
host => ["127.0.0.1"]
data_type => "list"
key => "logstash-%{type}"
}
}
其中output是將nginx的日誌發送給redis的list,list是一個鏈表結構,主要功能是push、pop、獲取一個範圍的全部值等等,操做中
key理解爲鏈表的名字,Redis的list類型其實就是一個每一個子元素都是string類型的雙向鏈表。鏈表的最大長度是(2的32次方)。咱們
能夠經過push,pop操做從鏈表的頭部或者尾部添加刪除元素。這使得list既能夠用做棧,也能夠用做隊列
%{type}是調用前面的nginxlog, date_type是將數據存入redis的list中
刷新一下nginx的頁面,使用redis-cli登錄redis,並使用命令LLEN logstash-nginxlog 就可查看到該list有多少個元素了,使用
lindex logstash-nginxlog 0命令能夠查看第一個元素,若是這些元素沒被取出將會一直存在於此list中
再啓動一臺logstash服務器,yum -y install logstash-1.5.4-1.noarch.rpm, cd /etc/logstash/conf.d/,
vim server.conf
input {
redis {
port => "6379"
host => "192.168.204.135"
data_type => "list"
key => "logstash-nginxlog"
}
}
output {
stdout {
codec => rubydebug
}
}
這臺logstash服務器的目的是到redis上去取數據,並把數據輸出到標準輸出,這時刷新一下nginx的頁面就能夠看到數據了
開啓一臺elasticsearch服務器,yum -y install java-1.7.0-openjdk-devel, yum -y elasticsearch-1.7.2.noarch.rpm
編輯配置文件:vim /etc/elasticsearch/elasticsearch.yml
編輯:cluster.name: loges node.name: "node1"
service elasticsearch start
/usr/share/elasticsearch/bin/plugin -i bigdesk -u file:///root/bigdesk-master.zip 安裝插件
瀏覽器中http://192.168.204.131:9200/_plugin/bigdesk/ 訪問此插件
安裝kibana 4.1.4, kibana是一個前端展現數據工具,能夠安裝在elasticsearch集羣中的某一個節點,也能夠安裝在一臺單獨的節點
上
tar xf kibana-4.1.4-linux-x64.tar.gz -C /usr/local/ cd /usr/local
ln -s kibana-4.1.4-linux-x64 kibana cd kibana/config
vim kibana.yml
修改:其實默認無需修改什麼,由於kibana和上面的elasticsearch服務器在同一臺主機上
啓動程序在/usr/local/kibana/bin目錄下,在/usr/local/kibana目錄下使用bin/kibana -h 查看命令幫助
bin/kibana 運行在前臺, bin/kibana &運行在後臺 ss -tnl 查看5601端口是否開啓
瀏覽器中http://192.168.204.131:5601訪問kibana
如今將日誌輸出到ES集羣中去,並有kibana展現
修改前面一臺logstash服務器的配置文件,vim server.conf
input {
redis {
port => "6379"
host => "192.168.204.135"
data_type => "list"
key => "logstash-nginxlog"
}
}
output {
elasticsearch {
cluster => "loges"
index => "logstash-%{+YYYY.MM.dd}"
}
}
logstash -f ./server.conf --configtest
[2016-07-21 08:27:28.434] WARN -- Concurrent: [DEPRECATED] Java 7 is deprecated, please use Java 8.
Java 7 support is only best effort, it may not work. It will be removed in next release (1.0).
Configuration OK
檢查配置文件時告訴我,雖然java 7盡力支持但見我我使用java 8 所以之後要用java 8咯
實驗作到這裏報錯了,多是版本的問題,架構是部署logstash在web服務器上收集日誌,並將日誌傳給redis,另外部署一臺
logstash到redis上去取日誌,而後將取到的日誌傳給elasticsearch服務器