ELK+Filebeat的安裝和聯調
ELK Stack 簡介
ELK 不是一款軟體,而是 Elasticsearch、Logstash 和 Kibana 三種軟體產品的首字母縮寫。這三者都是開源軟體,通常配合使用,而且又先後歸於 Elastic.co 公司名下,所以被簡稱為 ELK Stack。根據 Google Trend 的資訊顯示,ELK Stack 已經成為目前最流行的集中式日誌解決方案。
● Elasticsearch:分散式搜尋和分析引擎,具有高可伸縮、高可靠和易管理等特點。基於 Apache Lucene 構建,能對大容量的資料進行接近實時的儲存、搜尋和分析操作。通常被用作某些應用的基礎搜尋引擎,使其具有複雜的搜尋功能;
● Logstash:資料收集引擎。它支援動態的從各種資料來源蒐集資料,並對資料進行過濾、分析、豐富、統一格式等操作,然後儲存到使用者指定的位置;
● Kibana:資料分析和視覺化平臺。通常與 Elasticsearch 配合使用,對其中資料進行搜尋、分析和以統計圖表的方式展示;
● Filebeat:ELK 協議棧的新成員,一個輕量級開源日誌檔案資料蒐集器,基於 Logstash-Forwarder 原始碼開發,是對它的替代。在需要採集日誌資料的 server 上安裝 Filebeat,並指定日誌目錄或日誌檔案後,Filebeat 就能讀取資料,迅速傳送到 Logstash 進行解析,亦或直接傳送到 Elasticsearch 進行集中式儲存和分析。
ELK 常用架構及使用場景介紹
在這個章節中,我們將介紹幾種常用架構及使用場景。
最簡單架構
在這種架構中,只有一個 Logstash、Elasticsearch 和 Kibana 例項。Logstash 通過輸入外掛從多種資料來源(比如日誌檔案、標準輸入 Stdin 等)獲取資料,再經過濾外掛加工資料,然後經 Elasticsearch 輸出外掛輸出到 Elasticsearch,通過 Kibana 展示。詳見圖 1。
圖 1. 最簡單架構
這種架構非常簡單,使用場景也有限。初學者可以搭建這個架構,瞭解 ELK 如何工作。
Logstash 作為日誌蒐集器
這種架構是對上面架構的擴充套件,把一個 Logstash 資料蒐集節點擴充套件到多個,分佈於多臺機器,將解析好的資料傳送到 Elasticsearch server 進行儲存,最後在 Kibana 查詢、生成日誌報表等。詳見圖 2。
圖 2. Logstash 作為日誌搜尋器
這種結構因為需要在各個伺服器上部署 Logstash,而它比較消耗 CPU 和記憶體資源,所以比較適合計算資源豐富的伺服器,否則容易造成伺服器效能下降,甚至可能導致無法正常工作。
Beats 作為日誌蒐集器
這種架構引入 Beats 作為日誌蒐集器。目前 Beats 包括四種:
● Packetbeat(蒐集網路流量資料);
● Topbeat(蒐集系統、程式和檔案系統級別的 CPU 和記憶體使用情況等資料);
● Filebeat(蒐集檔案資料);
● Winlogbeat(蒐集 Windows 事件日誌資料)。
Beats 將蒐集到的資料傳送到 Logstash,經 Logstash 解析、過濾後,將其傳送到 Elasticsearch 儲存,並由 Kibana 呈現給使用者。詳見圖 3。
圖 3. Beats 作為日誌蒐集器
這種架構解決了 Logstash 在各伺服器節點上佔用系統資源高的問題。相比 Logstash,Beats 所佔系統的 CPU 和記憶體幾乎可以忽略不計。另外,Beats 和 Logstash 之間支援 SSL/TLS 加密傳輸,客戶端和伺服器雙向認證,保證了通訊安全。
因此這種架構適合對資料安全性要求較高,同時各伺服器效能比較敏感的場景。
引入訊息佇列機制的架構
到筆者整理本文時,Beats 還不支援輸出到訊息佇列,所以在訊息佇列前後兩端只能是 Logstash 例項。這種架構使用 Logstash 從各個資料來源蒐集資料,然後經訊息佇列輸出外掛輸出到訊息佇列中。目前 Logstash 支援 Kafka、Redis、RabbitMQ 等常見訊息佇列。然後 Logstash 通過訊息佇列輸入外掛從佇列中獲取資料,分析過濾後經輸出外掛傳送到 Elasticsearch,最後通過 Kibana 展示。詳見圖 4。
圖 4. 引入訊息佇列機制的架構
這種架構適合於日誌規模比較龐大的情況。但由於 Logstash 日誌解析節點和 Elasticsearch 的負荷比較重,可將他們配置為叢集模式,以分擔負荷。引入訊息佇列,均衡了網路傳輸,從而降低了網路閉塞,尤其是丟失資料的可能性,但依然存在 Logstash 佔用系統資源過多的問題。
基於 Filebeat 架構的配置部署詳解
前面提到 Filebeat 已經完全替代了 Logstash-Forwarder 成為新一代的日誌採集器,同時鑑於它輕量、安全等特點,越來越多人開始使用它。這個章節將詳細講解如何部署基於 Filebeat 的 ELK 集中式日誌解決方案,具體架構見圖 5。
圖 5. 基於 Filebeat 的 ELK 叢集架構
因為免費的 ELK 沒有任何安全機制,所以這裡使用了 Nginx 作反向代理,避免使用者直接訪問 Kibana 伺服器。加上配置 Nginx 實現簡單的使用者認證,一定程度上提高安全性。另外,Nginx 本身具有負載均衡的作用,能夠提高系統訪問效能。
下面我們基於圖5的模式搭建一套ELK fileBeat的系統
環境資訊
centos 6.5 64位作業系統
jdk 1.8
192.168.18.160 (filebeat收集日誌,nginx做為web伺服器)
192.168.18.161 (filebeat收集日誌,nginx做為web伺服器)
192.168.18.162 (logstash)
192.168.18.163(elasticsearch,kibana,nginx做方向代理)
filebeat-5.2.2
logstash-5.2.2
elasticsearch-5.2.2
kibana-5.2.2
nginx-1.6.3
elk的安裝不能使用root使用者安裝
elasticsearch安裝
解壓
[elk@cdh4 opt]# unzip elasticsearch-5.2.2.zip
啟動過程會出現下面這些錯誤,這個是需要修改Linux的環境資訊
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
max number of threads [1024] for user [elk] is too low, increase to at least [2048]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
問題一:ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
max number of threads [1024] for user [elk] is too low, increase to at least [2048]
解決:切換到root使用者,編輯limits.conf 新增類似如下內容
vi /etc/security/limits.conf
新增如下內容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
問題二:max number of threads [1024] for user [elk] is too low, increase to at least [2048]
解決:切換到root使用者,進入limits.d目錄下修改配置檔案。
vi /etc/security/limits.d/90-nproc.conf
修改如下內容:
* soft nproc 1024
#修改為
* soft nproc 2048
問題三:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解決:切換到root使用者修改配置sysctl.conf
vi /etc/sysctl.conf
新增下面配置:
vm.max_map_count=655360
並執行命令:
sysctl -p
問題四:system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解決:修改elasticsearch.yml配置檔案
新增下面配置:
bootstrap.system_call_filter: false
重啟elasticsearch服務
[elk@cdh4 bin]$ ./elasticsearch
在通過web介面訪問可以
安裝 kibana
1、解壓kibana
[elk@cdh4 opt]$ tar -zxvf kibana-5.2.2-linux-x86_64.tar.gz
修改 kibana.yml檔案
server.host: “192.168.18.163”
啟動服務
[elk@cdh4 bin]$ ./kibana
通過瀏覽器驗證安裝成功
安裝 filebeat
1、解壓
[elk@cdh1 opt]$ tar -zxvf filebeat-5.2.2-linux-x86_64.tar.gz
修改filebeat.yml 檔案
- input_type: log
paths:
- /opt/log/*.log
output.logstash:
hosts: ["192.168.18.162:5043"]
啟動
[elk@cdh1 filebeat-5.2.2-linux-x86_64]$ ./filebeat
安裝logstash
1、解壓
[elk@cdh3 opt]$ unzip logstash-5.2.2.zip
建立路徑,建立pipeline檔案
[elk@cdh3 conf.d]$ pwd
/opt/logstash-5.2.2/conf.d
[elk@cdh3 conf.d]$ cat first-pipeline.conf
input {
beats {
port => "5043"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => [ "192.168.18.163:9200" ]
index => "testlog-%{+YYYY.MM.dd}"
}
}
啟動logstash 需要制定pipeline檔案
[elk@cdh3 logstash-5.2.2]$ bin/logstash -f conf.d/first-pipeline.conf
驗證
在filebeat對應的目錄下面不停的追加內容
[elk@cdh1 log]$ echo '1.1.1.3 - - [04/Jan/2015:05:13:42 +0000] "GET /test.png HTTP/1.1" 200 203023 "http://test.com/" "Mozilla/5.0"' >>a.log
可以通過http://192.168.18.163:9200/_cat/indices?v
來檢視elasticsearch索引檔案的個數
也可以通過 http://192.168.18.163:9200/testlog-2017.12.18/_search?
來檢視索引檔案內容的資訊
通過 kibana來檢視資訊的數量
相關文章
- Docker ELK+Filebeat安裝與配置Docker
- apache安裝和調整效能安裝實踐(轉)Apache
- ElasticSearch的安裝和使用,Postman的安裝,Kibana的安裝,EShead外掛的安裝ElasticsearchPostman
- MAC下的homebrew安裝及映象調整Mac
- Ubuntu解除安裝和安裝Ubuntu
- Oracle 19C的下載和安裝部署(圖形安裝和靜默安裝)Oracle
- ELK+FileBeat日誌分析系統
- Go的安裝和使用Go
- yarn的安裝和使用Yarn
- CMake的安裝和使用
- Flutter的安裝和配置Flutter
- azkaban的安裝和使用
- JDK的安裝和配置JDK
- kettle的安裝和部署
- rsync的安裝 和 配置
- Barrier 的安裝和配置
- FTP的安裝和使用FTP
- zabbix安裝—–nginx安裝和配置Nginx
- hbase和zookeeper的安裝和部署
- Windows裝置和驅動的安裝Windows
- linux 解除安裝jdk和安裝LinuxJDK
- node安裝和淘寶映象cnpm安裝NPM
- 整理了cacti安裝和plugin安裝Plugin
- PostgreSQL安裝完成後,引數調整SQL
- SAP下的ORACLE安裝後的幾個調優項Oracle
- GitLab 的安裝和使用Gitlab
- Python的安裝和使用Python
- beego的安裝和升級Go
- webpack的安裝和基本使用Web
- Charles的下載和安裝
- NoSQL概述和Redis的安裝SQLRedis
- geoserver PostGIS的安裝和使用Server
- VMware Workstation 的安裝和使用
- MySQL的下載和安裝MySql
- 模組的釋出和安裝
- Jetty的安裝、配置和使用Jetty
- SecureCRT 工具的破解和安裝Securecrt
- qt的安裝和debugQT