master端:elasticsearch + logstash + redis + kibanajava
slave端:logstash + nginx or logstash + rsyslognode
1.slave端收集nginx、syslog日誌經過logstash寫入到master上的redis中linux
2.master上的logstash讀取redis中的日誌輸出到elastic,kibana再匹配讀取elastic上內容nginx
1、環境配置redis
1.安裝jdkjson
tar zxf jdk-8u102-linux-x64.tar.gzvim
mv jdk1.8.0_102 /usr/local/javaruby
cat /etc/profile
bash
JAVA_HOME=/usr/local/java JRE_HOME=/usr/local/java/jre PATH=/usr/local/java/jre/bin:/usr/local/java/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JRE_HOME PATH CLASSPATH
source /etc/profile
2.安裝redis
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
tar zxf redis-3.2.3.tar.gz
cd redis-3.2.3
make
make install
./utils/install_server.sh
2、elasticsearch配置
1.安裝elastic
tar zxf elasticsearch-2.4.0.tar.gz
cd elasticsearch-2.4.0
cat config/elasticsearch.yml #配置文件
cluster.name: elk-test #配置集羣名稱(加入同一個集羣名稱要同樣) node.name: server-102 #配置節點名稱 node.master: true #配置是否做爲主節點(默認爲true) node.data: true #配置是否爲數據節點(默認爲true) path.data: /data/ela/data #配置數據路徑 path.logs: /data/ela/logs #配置日誌路徑 bootstrap.memory_lock: true #鎖住內存不讓內存在swap中使用 network.host: 172.16.0.102 #配置綁定ip地址(默認爲0.0.0.0) http.port: 9200 #配置端口號 node.max_local_storage_nodes: 1 #配置啓動1個節點 index.number_of_shards: 5 #配置索引碎片的數量(默認爲5) discovery.zen.minimum_master_nodes: 1 #配置集羣中主節點的數量(當節點大於三個時候可配置2-4) discovery.zen.ping.timeout: 5s #配置鏈接其餘節點的超時時間 discovery.zen.ping.multicast.enabled: false #配置容許發現多個集羣節點(默認爲true禁止) discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3:port"] #配置新節點被啓動時可以發現的主節點列表
mkdir -p /data/ela/data /data/ela/logs
useradd elk
chown -R elk.elk /data/ela/data /data/ela/logs /data/elasticsearch-2.4.0
/data/elasticsearch-2.4.0/bin/elasticsearch (elastic默認不能使用root啓動使用-Des.insecure.allow.root=true參數以root啓動)
2.安裝插件
Head插件(節點數據查看管理)
./elasticsearch/bin/plugin install mobz/elasticsearch-head
Kopf插件(集羣管理)
./elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
Bigdesk插件(監控查看CPU內存索引數據搜索狀況http鏈接數)
./elasticsearch/bin/plugin install hlstudio/bigdesk
Marvel插件(管理和監控,經過kibana上訪問插件)
./elasticsearch/bin/plugin install license
./elasticsearch/bin/plugin install marvel-agent
./kiabana/bin/kibana plugin --install elasticsearch/marvel/latest
3、logstash配置
安裝logstash
wget https://download.elastic.co/logstash/logstash/logstash-2.4.0.tar.gz
tar zxf logstash-2.4.0.tar.gz
cd logstash-2.4.0
vim config/logstash.conf #新建配置master端的文件
#讀取redis裏的日誌 input { redis { host => "100.100.100.102" data_type => "list" key => "logstash:redis" type => "redis-input" } } #過濾掉內容包含5.3.3與down之外日誌 filter { if [message] !~ "5.3.3|down" { ruby { code => "event.cancel" } } } #使用自帶的過濾規則顯示更多的字段 filter { grok { match => {"message" => "%{COMBINEDAPACHELOG}"} } } #合併非以[開頭的日誌 filter { multiline { pattern => "^[^[]" negate => true what => "previous" } } #輸出到elastic並創建索引 output { if [type] == "syslog" { elasticsearch { hosts => "172.16.0.102:9200" index => "syslog-%{+YYYY.MM.dd}" } } if [type] == "nginx" { elasticsearch { hosts => "172.16.0.102:9200" index => "nglog-%{+YYYY.MM.dd}" } } #匹配內容包含paramiko與simplejson的日誌通郵件發送 if [message] =~ /paramiko|simplejson/ { email { to => "12222222@wo.cn" from => "good_zabbix@163.com" contenttype => "text/plain; charset=UTF-8" address => "smtp.163.com" username => "test@163.com" password => "12344" subject => "服務器%{host}日誌異常" body => "%{@timestamp} %{type}: %{message}" } } }
./bin/logstash -f config/logstash-slave.conf #啓動master端logstash
vim config/logstash.conf #新建配置slave端的文件(安裝過程與master同樣)
#收集nginx與系統日誌 input { file { type => "nginx" path => "/usr/local/nginx/logs/access.log" add_field => {"ip"=>"100.100.100.100"} start_position => "beginning" #從文件頭開始讀取 } syslog { type => "syslog" host => "100.100.100.100" port => "514" } file { type=> "syslog" path => "/var/log/messages" } } #輸出日誌到master端的redis中 output { redis { host => "100.100.100.102" port => "6379" data_type => "list" key => "logstash:redis" } }
./bin/logstash -f config/logstash-slave.conf #啓動slave端logstash
4、kibana配置
1.安裝kibana
wget https://download.elastic.co/kibana/kibana/kibana-4.6.1-linux-x86_64.tar.gz
tar zxf kibana-4.6.1-linux-x86_64.tar.gz
cd kibana-4.6.1-linux-x86_64
cat config/kibana.yml
server.port: 5601 #端口 server.host: "172.16.0.102" #訪問ip地址 elasticsearch.url: "http://172.16.0.102:9200" #鏈接elastic kibana.index: ".kibana" #在elastic中添加.kibana索引
./bin/kibana