ELK部署

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

  wget http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz?AuthParam=1473218169_4d538ded6eda268bfa110cc3f1af771bbootstrap

  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

 wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.0/elasticsearch-2.4.0.tar.gz

 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配置

  1. 安裝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

相關文章
相關標籤/搜索