ELK配置之經過redis進行架構擴展

注:請在上一篇文章基礎上,在server端安裝redis,其餘軟件包安裝方式不變。node

上一篇文章:http://linuxg.blog.51cto.com/4410110/1760376linux

1、在Server端配置redis

一、說明數據庫

上一篇博客中介紹的是單個logstash進程(就是在每一個客戶端配置安裝logstash,直接將日誌output到ElasticSearch上),實現對數據的讀取、解析和輸出處理json

可是在生產環境中,在每臺應用服務器運行logstash進程並將數據直接發送到Elasticsearch裏,顯然是不科學的,緣由:瀏覽器

第一,過多的客戶端鏈接對Elasticsearch是一種額外的壓力;緩存

第二,網絡抖動會影響到 logstash 進程,進而影響生產應用;服務器

第三,運維人員未必願意在每臺生產服務器上部署 Java,或者讓logstash跟業務代碼爭奪Java資源。網絡

因此,在實際運用中,logstash 進程會被分爲兩個不一樣的角色。運行在應用服務器上的,儘可能減輕運行壓力,只作讀取和轉發,這個角色叫作shipper;app

運行在獨立服務器上,完成數據解析處理,負責寫入Elasticsearch 的角色,叫indexer。

Logstash 社區一般習慣用 shipper,broker 和 indexer 來描述數據流中不一樣進程各自的角色。

以下圖:本次實驗將broker(redis)和Indexer、Search&Storage、kibana都安裝在10.0.90.24這臺server 端上

wKiom1cHXFbjiRZLAAF0zggip4c956.jpg

二、安裝redis,經過redis來傳輸,充當Broker角色

Redis服務器是logstash官方推薦的broker選擇,Broker角色也就意味着會同時存在輸入和輸出兩個插件,作爲緩存隊列。

Redis服務器一般都是用做NoSQL數據庫,不過logstash只是用來作消息隊列,因此不要擔憂logstash裏的Redis會撐爆你的內存和磁盤。

開始安裝配置:

#wget http://download.redis.io/releases/redis-3.0.7.tar.gz

#tar xf redis-3.0.7.tar.gz -C /usr/local/

#cd /usr/local/redis-3.0.7

#make

注:若是想運行make test 須要升級tcl軟件包(版本在8.0以上)

複製程序變量

#cp src/redis-cli /usr/bin

#cp src/redis-server /usr/bin

建立目錄

#mkdir conf log db data

修改redis配置文件

#cp sentinel.conf conf/redis-6379.conf

修改成以下:

# cat redis-6379.conf | egrep -v "^#|^$"

daemonize yes

pidfile /var/run/redis_6379.pid

port 6379

tcp-backlog 511

bind 10.0.90.24

timeout 0

tcp-keepalive 0

loglevel notice

logfile /var/log/redis/redis_6379.log

databases 16

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename redis_6379.rdb

dir /usr/local/redis-3.0.7/db/

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

啓動redis

#redis-server /usr/local/redis-3.0.7/conf/redis-6379.conf

三、修改shipper的配置

#cd /usr/local/logstash/config

修改logstash-indexer.conf爲以下內容:

#cat logstash-indexer.conf

input {

    redis {

    host => "10.0.90.24"

    port => "6379"

    type => "redis-input"

    data_type => "list"

    key => "logstash:redis"

    }

}

output {

    stdout {}

    elasticsearch {

     hosts => "10.0.90.24"

     codec => "json"

     }

}

測試:

#/usr/local/logstash/bin/logstash --configtest -f logstash-indexer.conf 

Configuration OK

啓動

#nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-indexer.conf &

經過kibana查看刷新界面,就能夠看到日誌已經傳送過來,以下圖:

wKiom1cHV4CDK7jwAAGRM451eBc934.png2、在Client端配置

一、首先配置logstash

注:我已經在客戶端安裝了httpd,本次以httpd日誌爲例

#cd /usr/local/logstash/config

修改配置,以下:

# cat logstash-http.conf 

input {

  file {

        type => "http_access"

        path => ["/var/log/httpd/access_log"]

    }

}

output {

        redis {

        host => ["10.0.90.24:6379"]

        data_type => "list"

        key => "logstash:redis"

}

}

測試:

#/usr/local/logstash/bin/logstash --configtest -f logstash-http.conf 

Configuration OK

啓動

#nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-http.conf &

二、測試日誌收集狀況

先經過瀏覽器訪問http://10.0.90.25,出現http的測試頁面便可

再經過echo一條測試命令到http的access_log日誌,以下

#echo "this is a test for http log file" >> access_log

三、在kibana界面刷新頁面,查看狀況,以下:

wKiom1cHWPLyS71HAAEzg0PSk74051.png

能夠看到已經經過redis將日誌收集到了elasticsearch中。

以上是簡單的log收集,還在進一步研究,不足之處請多多指出,謝謝。

相關文章
相關標籤/搜索