将redis加入到elk日志系统里
之前在http://blog.51cto.com/chenx1242/2048014?里面,我畫的那個架構圖里說了整個架構可以加入redis,但是在文章里我沒有寫到redis怎么加進去。為了讓整個系統更好的分層,是非常建議引入 Redis 的,畢竟Redis 服務器是logstash官方推薦的broker選擇。Redis 作為一個緩存,能夠幫助我們在主節點上屏蔽掉多個從節點之間不同日志文件的差異,負責管理日志端(從節點)的人可以專注于向 Redis 里生產數據,而負責數據分析聚合端的人則可以專注于從 Redis 內消費數據。所以這一次實驗要把redis加進去,同時也要部署一個nginx,讓elk再去采集nginx的日志。
整個架構圖圖下:
?
?
部署redis
安裝redis的方法請去看http://blog.51cto.com/chenx1242/1793895? ,我這里使用的redis版本是4.0.6,在執行#make test的時候可能會有如下的錯誤:
?
那就安裝新一點的tcl吧,方法如下:
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/ cd /usr/local/tcl8.6.1/unix/ ./configure make && make install?
然后重新去#make test就會看到成功的字樣,如圖:
?
現在redis的漏洞比較多,大多數就是因為密碼太簡單導致的,所以把redis密碼改一下,在redis.conf里,改成如下的樣子:
bind 內網IP地址 127.0.0.1 ###僅允許內網和本機訪問 protected-mode yes ###保護模式開啟 port 6379 ###端口默認為6379,按需修改 daemonize yes ###守護模式開啟 pidfile /usr/local/redis/redis.pid ###指定pid文件路徑和文件名 logfile "/usr/local/redis/redis.log" ###指定日志文件路徑和文件名 dbfilename redis.rdb ###指定數據文件RDB文件名 dir /usr/local/redis/ ###指定數據文件RDB文件的存放路徑 requirepass 『YOURPASSWORD』 ###設置訪問密碼,提升密碼強度?
保存之后啟動redis即可。
?
如果redis是主從配置,若master配置了密碼則slave也要配置相應的密碼參數否則無法進行正常復制的。需要在slave的redis.conf里找到“#masterauth? mstpassword”,去掉注釋,也改成跟master一樣的密碼,重啟一下即可。?
?
nginx的安裝這里就不寫了,直接看http://www.runoob.com/linux/nginx-install-setup.html?這個就行了。
?
安裝x-pack
x-pack是elk官方提供的認證授權插件,安裝方法很簡單,分別找到下面三個文件,然后后面加上“install x-pack”即可:
./elasticsearch-plugin install x-pack --batch ./logstash-plugin install x-pack ./kibana-plugin install x-pack?
如果要查看已經安裝的插件,那就是:
[root@chen-elk-001 bin]# ./elasticsearch-plugin list x-pack [root@chen-elk-001 bin]# ./kibana-plugin list x-pack@5.6.4?
如果kibana-plugin要卸載x-pack,那就是:
./kibana-plugin remove x-pack?
重啟服務即可登錄,默認的登錄用戶名: elastic 密碼:changeme。
? ? ? ?
?
這里注意一下,#./logstash-plugin install x-pack?的時候可能是出現ruby源的錯誤,如圖:
?
這是因為中國特色社會主義的網絡限制訪問https://rubygems.org? ,一般來說,可以把它更改成阿里的ruby源https://ruby.taobao.org/? ,不過如果你的服務器無法跨越長城的話,那么更改也是不好使的,所以在這一步,我選擇離線安裝x-pack。也就是先把https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.6.4.zip?這個文件下載到本地上傳到服務器的root文件夾里,然后安裝:
[root@chen-logstash-001 bin]# ./logstash-plugin install file:///root/x-pack-5.6.4.zip Installing file: /root/x-pack-5.6.4.zip Install successful?
配置filebeat
由于這個nginx我們需要先讓filebeat把nginx.log和error.log先推到redis存儲,然后再由redis推到logstash。配置filebeat.yml的具體信息如下:?
[root@iZbp10hw6wezxmrvrcjyhlZ filebeat]# grep -iv '#' /etc/filebeat/filebeat.yml | grep -iv '^$' filebeat.prospectors: - input_type: logpaths:- /usr/local/nginx/logs/*.log #這里是nginx的日志文件夾output.redis: #以下這部分都是新加的enabled: truehosts: ["127.0.0.1:6379"]key: logindexer_list #與redis配置文件里的key遙相呼應password: 『YOURPASSWORD』 #跟上面的密碼遙相呼應?
配置完畢之后,啟動filebeat,命令語句:#/etc/init.d/filebeat start -c /etc/filebeat/filebeat.yml。
?
配置logstash
由于這臺logstash已經開啟了一個logstash進程,那么再收集nginx的日志需要新開一個logstash進程,也需要新寫一個conf文件,假設新的conf文件是nginx-logstash.conf,它的寫法如下:
input {redis {host => "10.168.173.181"type => "redis-input"data_type => "list"key => "logindexer_list"port => 6379password => "ChenRedi$"} }# filter configration here output {elasticsearch {hosts => [ "10.162.80.192:9200" ]user => elasticpassword => changemeindex => "nginxlogstash-%{+YYYY.MM.dd}" #這個是新的索引} stdout {codec => rubydebug} }?
現在logstash不支持多個實例共享一個path.data,所以要在在啟動不同實例的時候,命令行里增加"--path.data PATH " ,為不同實例指定不同的路徑。啟動logstash之后,看到顯示如下:
?
再到nginx的日志看一下,因為logstash里沒有做日志的切割,所以是整個一個類似字符串的形式發送了過來:
?
果然有這樣的日志,可見logstash與nginx的redis已經正確連接。在elasticsearch里,使用#curl -u 賬號密碼 'localhost:9200/_cat/indices?v' 查詢索引的時候,就會看到那個"nginxlogstash",如圖:
?
?
?
參考資料:https://doc.yonyoucloud.com/doc/logstash-best-practice-cn/input/redis.html
?
最后的最后,如果您覺得本文對您升職加薪有幫助,那么請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多的博文!
來源:http://blog.51cto.com/chenx1242/2054719
總結
以上是生活随笔為你收集整理的将redis加入到elk日志系统里的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从0开始搭建ELK及采集日志的简单应用
- 下一篇: 软银中国和日本软银有什么关系 方便在中国