ELK安裝配置

一環境說明

程序部署路徑/opt/devops/

centos7 64位操作系統

服務器 192.168.80.20

客戶端 192.168.80.10

logstash2.0

elasticsearch-2.0.0

kibana-4.2.0

安裝前的準備工作

1 關閉防火牆、selinxu

2 安裝redis

#yum install epel-release –y

#yum install redis –y

修改redis配置文件使redis監聽所有ip,默認情況下只監聽127.0.0.01

vi /etc/redis.conf

bind 0.0.0.0

啓動redis

#systemctl restart redis.service

 

logstash(服務端客戶端均需安裝)

1        logstash安裝

參考文檔http://udn.yyuap.com/doc/logstash-best-practice-cn/input/file.html

參考文檔 https://www.elastic.co/guide/en/logstash/current/introduction.html

grok正則測試工具網址爲https://grokdebug.herokuapp.com/

grok正則表達式  https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns

 

第一步:安裝java

logstash2.0版本需要java7及以上版本的支持,如果系統沒有安裝java環境需使用下面的命令進行安裝。

#rpm -ivh jdk-8u51-linux-x64.rpm

#vi /etc/profile.d/java.sh

exportJAVA_HOME="/usr/java/jdk1.8.0_51"

exportJRE_HOME="/usr/java/jdk1.8.0_51/jre/"

export PATH=$JAVA_HOME/bin:$PATH

#source /etc/profile

第二步:安裝logstash

將下載的logstash拷貝到/opt/devops/目錄下

mv logstash-2.0.0 /opt/devops/logstash

第三步:簡單測試

#cd/opt/devops/logstash/

#bin/logstash -e 'input { stdin { } } output { stdout {} }'


顯示啓動完成,手動輸入helloworld測試logstash是否正常啓動

The -e flagenables you to specify a configuration directly from the command line.Specifying configurations at the command line lets you quickly testconfigurations without having to edit a file between iterations. This pipelinetakes input from the standard input, stdin, andmoves that input to the standard output, stdout, in astructured format. Type hello world at the command prompt to see Logstashrespond:

2logstatsh配置

logstatsh默認情況下並沒有區分服務端和客戶端,在此我們人爲的將其分爲服務端和客戶端。客戶端負責收集日誌、按照預定義的正則進行切割日誌並將信息輸出到redis中,客戶端配置文件格式如下,有兩個配置文件input.confoutput.conf組成(當然也可以使用一個配置文件)整個配置文件有三部分組成input(輸入)、filter(過濾)、output(輸出)

2  客戶端配置

客戶端負責收集日誌、切割日誌並將切割後的日誌保存到redis中,我們假設將logstatsh部署在/opt/devops目錄,其配置文件位於/opt/devops/conf目錄

第一步配置詳解

#mkdir –pv /opt/devops/conf

#mkdir –pv /opt/devops/ patterns

#vi input.conf

input {

file {

    type =>"apachelog"

    tags=>"im/apache"

        path =>"/opt/devops/logstash/logs/logstash-tutorial-dataset"

        start_position => beginning

        sincedb_path => "/opt/devops/logstash/im_nginxlog.sincedb"

    }

}

filter {

    if [type] == "nginxlog" {

grok {

    patterns_dir=> "/opt/devops/logstash/patterns"

        match =>{"message"=>"%{COMBINEDAPACHELOG}"}

    }

    geoip {

        source =>"clientip"

      }

   }

}

解釋:

input段主要負責日誌的收集工作,其主要包含的字段及含義如下

type => "apachelog"  type主要用來判斷日誌的類型,例如:此處表示收集的日誌爲apache產生的日誌

tags=> "im/apache"  tags主要爲日誌打標籤的,例如:如果多臺apache生成不同的日誌,可以通過tagsapache日誌打標籤,表示是由哪個應用產生的apahe日誌,此處表示是由im應用產生的日誌

path=> "/opt/devops/logstash/logs/logstash-tutorial-dataset"path用於指定日誌的位置

start_position=> beginning  start_position用於指定logstatsh第一次啓動時從什麼地方開始讀取日誌,如果不指定爲start_position => beginning logstatsh收集日誌是從最新的位置開始收集的,類似於tail –f 命令;如果logstatsh並不是第一次啓動還想從頭收集日誌在停止logstatsh後需手動刪除sincedb文件,如果配置文件中不指定sincedb文件的位置,logstatsh啓動後爲在/root/生成一個以.sincedb_開頭的隱藏文件,該文件的主要作用是記錄logstatsh收集日誌的位置logstatsh進程意外關閉,啓動後繼續從該位置收集日誌。

sincedb_path => "/opt/devops/logstash/im_nginxlog.sincedb"sincedb_path指定sincedb文件位置

filter字段主要負責將收集的日誌按照預定義的正則進行日誌切割

grok子段主要是logstatsh的正則部分,其主要包含的字段及含義如下

if [type] == "nginxlog" if [type]子段主要是用於做判斷的,如果滿足要求就執行下面的正則進行日誌切割

 

grok正則測試工具網址爲https://grokdebug.herokuapp.com/  ,使用該工具需***

 

match => {"message" => "%{COMBINEDAPACHELOG}"} match表示使用某種正則進行日誌切割

geoip子段的主要作用是通過ip來獲取地理位置,ip必須是日誌切割時通過正則定義的字段

source =>"clientip"souce用來提取日誌切割後的ip地址

 

#vi output.conf

output {

stdout {}

redis {

host => "172.20.19.113"

port => "6379"

data_type => "list"

key => "logstash"

}

}

 

解釋:

客戶端logstashoutput段主要負責將收集切割後的日誌輸出到redis中進行保存,方便服務端logstashredis中獲取日誌,其主要包含的字段及含義如下

stdout {}子段表示將切割後的日誌通過標準輸出打印到屏幕上,其主要作用是用來確認logstash是否正常工作,正式上線後可禁用此字段

redis子段表示將切割後的日誌存儲到redis,其主要包含的字段及含義如下

host => "172.20.19.113"   host表示redis服務所在主機ip

port => "6379"    port表示redis所使用的端口爲6379

data_type => "list"   data_type表示將切割後的日誌保存成redislist類型

key =>"logstash" 表示此日誌在rediskeylogstatsh(服務端的input段中的key需要和這裏的保持一致)

 

 

第二步啓動 logstatsh

假設logstatsh部署在/opt/devops/logstash/,其兩個配置文件input.confoutput.conf均在/opt/devops/logstash/conf

1 測試配置文件是否正確

#/opt/devops/logstash/bin/logstash-f /opt/devops/logstash/conf/ --configtest

2 啓動logstatsh

#nohup/opt/devops/logstash/bin/logstash -f /opt/devops/logstash/conf/  > /dev/null &

 

 

2     服務端配置

服務端logstatsh負責從redis獲取數據,並將數據傳遞給elasticsearch,我們假設將logstatsh部署在/opt/devops目錄,其配置文件位於/opt/devops/conf目錄

第一步配置詳解

#vi input.conf

input {

       redis{

               host => "192.168.80.10"

               port => "6379"

               type => "redis-input"

               data_type => "list"

               key => "logstash"

               }

     }

解釋:

input段主要負責從redis中提取數據,其主要包含的字段及含義如下

redis子段logstatsh服務端從redis中提取數據的相關配置,其主要包含的字段及含義如下

host => "192.168.80.10"表示redis服務所在服務器ip192.168.80.10

port => "6379"表示redis服務的端口爲6379

type => "redis-input" 表示logstatsh是從redis中獲取數據的

data_type => "list"表示存儲在redis切割後的日誌數據類型爲list

key => "logstash"需和客戶端的key保持一致

 

#output.conf

output {

       stdout {}

       file {

               message_format =>"%{message}"

               path => "/opt/logs/%{tags}/%{+YYYY-MM-dd}/%{type}"

               }

       elasticsearch{

               hosts =>["192.168.80.10:9200","192.168.80.20:9200"]

               }

        }

解釋:

output段主要負責將從redis提取的數據交給elasticsearch進行分析,,其主要包含的字段及含義如下

stdout {}子段表示將獲取的日誌通過標準輸出打印到屏幕上,其主要作用是用來確認logstash是否正常工作,正式上線後可禁用此字段

file子段表示將獲取的日誌保存到文件中,方便以後查看。

elasticsearch子段負責將獲取的日誌交給elasticsearch進行數據分析,其主要包含的字段及含義如下

hosts =>["192.168.80.10:9200","192.168.80.20:9200"]  host字段以數組的形式定義elasticsearch集羣各個節點ipelasticsearch使用的端口

cluster=> "yyuap"  cluset用來定義elasticsearch集羣,這裏elasticsearch集羣名稱爲elasticsearchlogstatsh2.0已廢棄)

 

第二步啓動 logstatsh

假設logstatsh部署在/opt/devops/logstash/,其兩個配置文件input.confoutput.conf均在/opt/devops/logstash/conf

1 測試配置文件是否正確

#/opt/devops/logstash/bin/logstash-f /opt/devops/logstash/conf/ --configtest

2 啓動logstatsh

#nohup /opt/devops/logstash/bin/logstash -f/opt/devops/logstash/conf/ >/var/log/logstash.log &

注意:客戶端logstatsh停止後,如果要再次啓動需要手動刪除/opt/devops/logstash/conf/dump.rdb然後再啓動logstatsh

 

elasticsearch

1        elasticsearch安裝

elasticsearch插件安裝參考文檔  

http://www.cnblogs.com/huangfox/p/3541300.html

第一步:安裝java(192.168.80.10192.168.80.20均需安裝)

elasticsearch2.0版本需要java7及以上版本的支持,如果系統沒有安裝java環境需使用下面的命令進行安裝。

#rpm -ivh jdk-8u51-linux-x64.rpm

#vi /etc/profile.d/java.sh

exportJAVA_HOME="/usr/java/jdk1.8.0_51"

exportJRE_HOME="/usr/java/jdk1.8.0_51/jre/"

export PATH=$JAVA_HOME/bin:$PATH

#source /etc/profile

第二步:安裝elasticsearch(192.168.80.10192.168.80.20均需安裝)

將下載的elasticsearch拷貝到/opt/devops/目錄下

mv elasticsearch-2.0.0 /opt/devops/elasticsearch

第三步 配置elasticsearch

(1)      192.168.80.10服務器配置

第一步創建mv elasticsearch數據目錄和日誌目錄

mkdir –pv /opt/devops/elasticsearch/data

mkdir –pv /opt/devops/elasticsearch/log

第二步創建elasticsearch運行時所需要的系統賬號

elasticsearch-2.0.0版本禁止使用root賬號直接運行,所以需要創建賬號用於運行elasticsearch

useradd elasticsearch –s /sbin/nologin

第三步修改配置文件

配置文件的位置在/opt/devops/elasticsearch/config/elasticsearch.yml,一個基本的elasticsearch需要做如下配置:

cluster.name: ssfy

位於配置文件的第17行,用於定義集羣名稱

node.name: ssfy-01

位於配置文件的第23行,用於定義集羣節點名稱

path.data: /opt/devops/elasticsearch/data

位於配置文件的第33行,用於定義elasticsearch存儲數據的位置

path.logs: /opt/devops/elasticsearch/log

位於配置文件的第37行,用於定義elasticsearch日誌文件的位置

network.host: 192.168.80.10

位於配置文件的第54行,用於定義elasticsearch偵聽ip,這裏需要配置爲elasticsearch所在服務器ip地址

http.port: 9200

位於配置文件的第58行,用於定義elasticsearch對外使用的端口

discovery.zen.ping.unicast.hosts: ["192.168.80.10", "192.168.80.20"]

位於配置文件的第79行,用於定義elasticsearch發送廣播的ip,默認情況下向elasticsearch所在網段的所以ip進行廣播

node.max_local_storage_nodes: 1

位於配置文件的第92行,用於定義一臺主機只允許啓動一個elasticsearch節點

action.destructive_requires_name: true

位於配置文件的第96行,用於定義刪除索引時必須明確提供索引名

(2)      192.168.80.10服務器配置

第一步創建mv elasticsearch數據目錄和日誌目錄

mkdir –pv /opt/devops/elasticsearch/data

mkdir –pv /opt/devops/elasticsearch/log

第二步創建elasticsearch運行時所需要的系統賬號

elasticsearch-2.0.0版本禁止使用root賬號直接運行,所以需要創建賬號用於運行elasticsearch

useradd elasticsearch –s /sbin/nologin

第三步修改配置文件

配置文件的位置在/opt/devops/elasticsearch/config/elasticsearch.yml,一個基本的elasticsearch需要做如下配置:

cluster.name: ssfy

node.name: ssfy-02

path.data: /opt/devops/elasticsearch/data

path.logs: /opt/devops/elasticsearch/log

network.host: 192.168.80.20

http.port: 9200

discovery.zen.ping.unicast.hosts: ["192.168.80.10", "192.168.80.20"]

node.max_local_storage_nodes: 1

action.destructive_requires_name: true

(3)      啓動elasticsearch

#su – elasticsearch

#nohup/opt/devops/elasticsearch/bin/elasticsearch >/dev/null &

 

檢驗是否正常啓動

瀏覽器中輸入http://192.168.80.10:9300或者http://192.168.80.20:9300


註釋:elasticsearch集羣內部通信端口爲9300,對外通信端口爲9200

(4)      安裝elasticsearch插件

第一個插件head

elasticsearch-head是一個elasticsearch的集羣管理工具,它是完全由html5編寫的獨立網頁程序,你可以通過插件把它集成到es

安裝命令:

$/opt/devops/elasticsearch/bin

$./plugin install mobz/elasticsearch-head

安裝完成後\plugins目錄下會有head的文件夾。

進入http://192.168.80.10:9200/_plugin/head/ 


第二個插件——bigdesk

bigdeskelasticsearch的一個集羣監控工具,可以通過它來查看es集羣的各種狀態,如:cpu、內存使用情況,索引數據、搜索情況,http連接數等。

安裝命令:

$/opt/devops/elasticsearch/bin

$./plugin install lukas-vlcek/bigdesk

安裝完成後\plugins目錄下會有bigdesk的文件夾。

注意:elasticsearch2.0.0不能通過上面的方法進行安裝,需要手動下載bigdesk放到/opt/devops/elasticsearch/plugins目錄,然後修改兩處配置文件

首先添加配置文件plugin-descriptor.propertie

#vi elasticsearch-2.0.0/plugins/bigdesk/plugin-descriptor.properties

description=bigdesk

version=master

site=true

name=bigdesk

然後,修改配置文件

elasticsearch-2.0.0/plugins/bigdesk/_site/js/store/BigdeskStore.js142行將major ==1改爲major>= 1

進入http://192.168.80.10:9200/_plugin/bigdesk/ 如下圖

kibana

1        kibana安裝

注意:kibana-4.2.0需要elasticsearch2.0.0及以上版本的支持

第一步拷貝軟件包

將下載的elasticsearch拷貝到/opt/devops/目錄下

#mv kibana-4.2.0/opt/devops/kibana

第二步修改kibana配置文件

kibana配置文件只需修改一處即可,我們需要告訴Kibana在哪裏可以找到elasticsearch。打開配置文件並修改elasticsearch參數:

#vi /opt/devops/kibana/config/

elasticsearch.url: "http://192.168.80.10:9200"

elasticsearch.url: http://192.168.80.20:9200

第三步啓動kibana

#nohup /opt/devops/kibana/bin/kibana > /var/log/kibana.log&

第四步測試

kibana端口爲5601

在瀏覽器中輸入

http://192.168.80.10:5601http://192.168.80.20:5601

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章