目錄
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:數據檢索