ELK配備

6448 ワード

マスター端子:elasticsearch+logstash+redis+kibana
slave端:logstash+nginx or logstash+rsyslog
1.slave側収集nginx、syslogログをlogstashでmaster上のredisに書き込む
2.master上のlogstashはredis中のログをelasticに出力し、kibanaはelastic上の内容を再マッチングする
一、環境構成
 1.jdkのインストール
  wget http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz?AuthParam=1473218169_4d538ded6eda268bfa110cc3f1af771b
  tar zxf jdk-8u102-linux-x64.tar.gz
  mv jdk1.8.0_102/usr/local/java
  cat/etc/profile
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 
二、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 
  
三、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 => "[email protected]"
                from => "[email protected]"
                contenttype => "text/plain; charset=UTF-8"
                address => "smtp.163.com"
                username => "[email protected]"
                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の起動
    四、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