ELK日誌分析平臺——ELK海量日誌分析平臺搭建-1

目錄

1、整體架構

2、filebeat安裝配置

3、Redis安裝配置

4、配置filebeat-redis集成

5、elasticsearch和kibana安裝配置

6、logstash安裝配置

7、開始整個ELK項目流程打通


1、整體架構

系統日誌數據app.log-->filebeat(6.6)-->redis-->logstash(parse)-->es-->kibana 
filebeat   -----輕量級的日誌收集工具 ,192.168.198.136/137/138
redis       -----防止filebeat和logstash耦合性太高,隊列存儲數據,136主從
Logstash-----接收所有日誌,監控,過濾,收集日誌 ,讀取,解析,136
es          -----三臺服務器集羣,136/137/138,之前已配置 ,存儲日誌,提供搜索功能 
Kibana   -----提供web界面,支持查詢,統計,圖表展現,136

2、filebeat安裝配置

#filebeat安裝
[root@master app]# tar zxvf filebeat-6.6.1-linux-x86_64.tar.gz 
[root@master app]# ln -s filebeat-6.6.1-linux-x86_64/ filebeat

#創建日誌收集文件
[root@master data]# touch /data/filebeat/app.log

#配置log輸入console輸出
#配置輸入
可以配置filebeat從哪裏接收讀取日誌等數據,例如log,redis,tcp等
#配置輸出
可以配置filebeat輸出位置,例如elasticsearch Logstash Kafka redis等
可以通過設置配置文件output部分中的選項將Filebeat配置爲寫入特定輸出filebeat.yml。只能定義一個輸出。
#官方filebeat配置api
https://www.elastic.co/guide/en/beats/filebeat/current/configuring-howto-filebeat.html 
[root@master data]# cp filebeat.yml filebeat_console.yml
[root@master data]# vi filebeat_console.yml
# Change to true to enable this input configuration.
#設置輸入類型爲log,接收讀取目錄
 enabled: true
 paths:
   - /data/filebeat/app.log
#設置console格式化輸出結果,其他out註釋掉
output.console:
  pretty: true
#啓動filebeat,-c指定要加載的配置文件
[root@master filebeat]./filebeat -c filebeat_console.yml
#測試數據輸入到指定目錄,filebeat已收集並json顯示
[root@master data]# echo "123" >> /data/filebeat/app.log
[root@master filebeat]# ./filebeat -c filebeat_console.yml 
{
  "@timestamp": "2019-08-21T04:00:47.714Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "doc",
    "version": "6.6.1"
  "message": "123",
  "source": "/data/filebeat/app.log",
  "prospector": {
    "type": "log"
  }

#nohup後臺啓動
[root@master filebeat]nohup ./filebeat -c filebeat_console.yml >/dev/null 2>&1 &


3、Redis安裝配置

#源碼編譯安裝redis
[root@master app]# yum install -y open-ssl-devel gcc glibc gcc-c*
[root@master app]# wget http://download.redis.io/releases/redis-2.8.12.tar.gz
[root@master app]# ln -s redis-2.8.12/ redis
[root@master redis]# make MALLOC=libc 
[root@master src]# cd src/
[root@master src]# make install PREFIX=/usr/local/redis

#配置
爲了方便管理,將Redis文件中的conf配置文件和常用命令移動到統一文件夾中
[root@master redis]# mkdir -p /usr/local/redis/etc 
[root@master redis]# cp redis.conf /usr/local/redis/etc/ 
[root@master redis]# cp mkreleasehdr.sh redis-benchmark redischeck-aof  redis-cli redis-sentinel redis-server /usr/local/redis/bin/ 

#啓動redis
[root@master src]# cd /usr/local/redis/
[root@master bin]# ./redis-server 

#創建一個索引,查詢測試redis是否正常可用
[root@master redis]# bin/redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set man "haha"
OK
127.0.0.1:6379> keys *
1) "man"
127.0.0.1:6379> get man
"haha"

4、配置filebeat-redis集成

#之前已配置console輸出方式,改爲redis輸出,輸入目錄之前已配置好
[root@master filebeat]# cp filebeat_console.yml filebeat_redis.yml
[root@master filebeat]# vi filebeat_redis.yml

#================================ Outputs-redis ==============================
output.redis:
  hosts: ["192.168.198.136"]
  key: "filebeat"
  db: 0
  timeout: 5


#啓動filebeat和redis
[root@master filebeat]# nohup ./filebeat -c filebeat_redis.yml >/dev/null 2>&1 & 
[root@master redis]# bin/redis-server 

#測試兩條數據寫入app.log,該日誌文件被filebeat採集後輸出到redis,所有我們要看redis
#是否會同步這兩條測試數據,如果同步,說明日誌->filebear->redis是通的
[root@master redis]# echo "456" >> /data/filebeat/app.log 
[root@master redis]# echo "789" >> /data/filebeat/app.log    
[root@master redis]# bin/redis-cli                                           
127.0.0.1:6379> keys *
1) "filebeat"
127.0.0.1:6379> llen filebeat
(integer) 2
127.0.0.1:6379> rpop filebeat
"{\"@timestamp\":\"2019-08-21T06:38:13.015Z\",\"@metadata\":{\"beat\":\"filebeat\",\"type\":\"doc\",\"version\":\"6.6.1\"},\"source\":\"/data/filebeat/app.log\",\"offset\":8,\"log\":{\"file\":{\"path\":\"/data/filebeat/app.log\"}},\"message\":\"789\",\"input\":{\"type\":\"log\"},\"prospector\":{\"type\":\"log\"},\"beat\":{\"hostname\":\"master\",\"version\":\"6.6.1\",\"name\":\"master\"},\"host\":{\"name\":\"master\",\"containerized\":true,\"architecture\":\"x86_64\",\"os\":{\"platform\":\"centos\",\"version\":\"6.8 (Final)\",\"family\":\"redhat\",\"name\":\"CentOS\",\"codename\":\"Final\"}}}"
#數據流通正常,ok!

5、elasticsearch和kibana安裝配置

見之前文章《ES集羣安裝配置》

6、logstash安裝配置

#logstash安裝
[root@master app]# ll | grep logstash
lrwxrwxrwx  1 root root   15 8月  21 11:33 logstash -> logstash-6.6.1/

#測試輸入輸出是否正常
[root@master logstash]# bin/logstash -e 'input { stdin { } } output { stdout {} }'
123
#稍等啓動中。。。
[2019-08-22T06:29:08,003][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
"@timestamp" => 2019-08-21T22:29:07.103Z,
          "host" => "master",
       "message" => "123",
      "@version" => "1"

#配置logstash,輸入源配置redis,輸出到es
https://www.elastic.co/guide/en/logstash/6.6/pluginsoutputs-elasticsearch.html 
[root@master config]# vi redis_logstash_es.conf
input{
  redis{
    host => "192.168.198.136"
    port => 6379
    data_type => "list"
    key => "filebeat"
}
}
output{
  elasticsearch {
    hosts => "192.168.198.136:9200"
    user => "elastic"
    password => "123456"
}
}

#啓動運行加載redis-logstash配置文件
[root@master logstash]# bin/logstash -f config/redis_logstash_es.conf
此時,redis隊列的數據會自動消費到logstash中去。

7、開始整個ELK項目流程打通

*******************************************************
把所有服務都搞起來!
*******************************************************

#同步時間

ntpdate ntp1.aliyun.com
#啓動filebeat

[root@master filebeat]# nohup ./filebeat -c filebeat_redis.yml 2&>1 &
#啓動redis
[root@master src]# sh /usr/local/redis/bin/redis-server
#啓動logstash
[root@master logstash]# bin/logstash -f config/redis_logstash_es.conf
#啓動es
常遇問題:es用戶啓動,配置文件lock,es日誌等數據存放目錄所有者權限
[es@smaster bin]$ ./elasticsearch -d
#啓動kinaba
[root@master kinaba]$ sh /app/kibana/bin/kibana

*******************************************************
怎麼判斷app.log-->filebeat-->redis是通的
*******************************************************
#插入日誌,發現redis已生成索引
[root@master filebeat]# echo '110.52.250.126 - - [24/Apr/2019:17:38:20 +0800] "GET /data/cache/style_1_widthauto.css?y7a HTTP/1.1" 200 1292' >app.log

[root@master bin]# ./redis-cli 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> keys *
1) "filebeat"

*******************************************************
最終怎麼判斷呢?搞兩條日誌,看看最後能不能kibana顯示出來就好了
*******************************************************
http://192.168.198.136:9200/_cluster/health?pretty
http://192.168.198.138:9200/
http://192.168.198.136:5601
Monitoring:監控ElasticSearch集羣 
Discovery:數據檢索 
 

 

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