添加yum數據源查看我另一篇博客:yum源安裝html
(1)兩臺服務器 (2)CentOS6.5 (3)Filebeat5.6 (4)Redis4.0.9 (5)Logstash5.6.8 (6)elasticsearch5.6.8 (7)Kibana5.6.8 (windows系統下啓動) (8)grafana6.2.5(windows系統下啓動)java
設計流程圖: node
注意⚠️:全部的版本必定要保持一致,高版本跟低版本之間會出現兼容性問題,好比我遇到的是elasticsearch7部署在服務器上,能夠運行,可是在Kibana上顯示時會要求密鑰信息。linux
(1) Filebeatnginx
工做原理: 1)filebeat用於本地日誌數據採集,因爲只申請到兩臺服務器,因此只用一臺啓動filebeat。 2)每一個filebeat主要由兩個部分組成,prospector和harvester,經過這兩個部分來實現指定文件的查找與輸出。 3)當啓動filebeat後,prospector會查找配置的本地文件,對於查找到的文件,prospector會啓動harvester,harvester會打開這個日誌文件,併發送到libbeat,而後經過libbeat聚合數據後發送到redis數據庫(本文output是redis) redis
-圖片來自網絡- 4)若是在log文件中持續輸入數據,那麼harvester只會讀取沒有讀過的數據,由於每次讀完會在註冊表中添加偏移量信息,這樣每次讀的時候就能知道跑,數據已讀到哪一個位置了。 數據庫
data下面有一個registry,裏面存放的已讀數據的信息bootstrap
參考文檔:filebeat原理windows
配置: 1)安全
修改filebeat.yml中的input和output配置,input爲本地日誌文件的地址,output爲redis的地址。 2)
input地址:/opt/logs 3)
redis output須要本身手動添加 hosts:ip爲第二臺服務器的ip地址,端口6379爲redis的端口 key:因爲redis是(k,v)格式,因此這邊規定一下key,與後面配置的logstash中配置的key要一致。
(2)Redis 工做原理:(K,V)類型基於內存的數據庫,處理數據量大,IO大的狀況,支持每秒十幾萬的讀寫,有效的解決了數據庫不能快速IO的問題。並且支持持久化到硬盤。
配置: 參考文檔:Redis配置
除了以上博客中的內容,修改如下配置: 修改redis.conf
目的:redis監聽全部的鏈接,redis其實只要監聽來自filebeat服務器的數據便可,因此也能夠改爲filebeat服務器的ip地址
(3)logstash 工做原理:實時數據採集引擎,
處理流程:input(redis)—— Filter —— Output(elasticsearch) Input:從數據源獲取數據 Filter:處理數據,如格式轉換 Output:數據輸出到相應插件,如elasticsearch 在對logstash進行調優的時候主要是pipeline的線程數,因爲沒有接觸調優,暫時掛一張圖。
配置: 1)在安裝目錄的bin目錄下添加一個新的文件,名字任意,個人叫redis.log,由於數據來自於redis 在裏面添加 input {
redis {
host => "127.0.0.1"
port => "6379"
data_type => "list"
db => 2
batch_count => 1
#type => "log"
key => "nginx-log"
}
}
filter {
grok {
match => { "message" => "%{IPORHOST:remote_addr} - - [%{HTTPDATE:time_local}] "%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent}"
}
}
}
output {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "nginx-log"
}
}
Input:表示數據輸入來源的信息,127.0.0.1是由於在同一個服務器中,key與filebeat中的key保持一致 filter:處理數據,轉換格式 Output:表示數據輸出的信息,index是以後在Kibana中須要用到的索引名,從logstash過去的數據索引名爲nginx-log
遇到的問題:Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the "path.data" setting. 緣由:以前運行的instance有緩衝,保存在path.data裏面有.lock文件,刪除掉就能夠。 解決方法:data目錄下經過ls -alh找到.lock文件並刪除
(4)elasticsearch 工做原理:看個人另一篇博客elastisearch分佈式原理
配置: 這是出於系統安全考慮設置的條件。因爲ElasticSearch能夠接收用戶輸入的腳本而且執行,爲了系統安全考慮,建議建立一個單獨的用戶用來運行ElasticSearch。
1)修改elasticsearch.yml文件 添加數據地址、日誌地址,去掉註釋,這兩個地址須要本身新建
修改綁定ip,容許任何ip訪問
其餘問題能夠在如下兩個博客找到解答: 常見問題解決 報bootstrap checks failed錯誤
2)若是遇到lock的狀況,須要殺死進程從新運行,由於elasticsearch基於java 因此能夠用jps查看進程 kill -9 殺死進程
(5)kibana可視化界面 由於Kibana基於node,因此須要先配置nodejs環境,其餘過程很簡單,也不會遇到什麼問題,我就直接貼圖了
(6)grafana圖像化界面 過程一樣簡單,直接經過如下連接配置 1)在windows下安裝運行grafana 2)grafana與elasticsearch結合
(1) filebeat 1)cd /usr/local/install/filebeat-5.6.8-linux-x86_64 2)./filebeat -e
(2) redis 配置中的一個問題 vi /etc/redis/redis.conf
bind 0.0.0.0表示能夠監聽來自任何地址的內容 由於個人數據是從filebeat發送到redis,全部bind能夠改爲filebeat的地址,只監聽來自filebeat的數據
1)cd /etc/redis/ 2)redis-server redis.conf //運行redis.conf的配置文件 3)ps -ef | grep redis //查看redis進程,檢查是否啓動 4)redis-cli //客戶端鏈接
(3) logstash 1)cd /usr/local/install/logstash-5.6.8/bin
2)./logstash -f redis.conf
(4)elasticsearch 注意:爲了安全,只能使用普通用戶啓動 1)cd /usr/local/install/elasticsearch 2) ./elasticsearch 3)測試:ip:9200
(5) kibana 在windows系統中安裝