參考博客:https://www.cnblogs.com/arnoLixi/p/10402684.html
https://blog.csdn.net/zy517863543/article/details/102591180
一、簡介
1)ElasticSearch是一個基於Lucene的開源分佈式搜索服務器。它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作爲Apache許可條款下的開放源碼發佈,是第二流行的企業搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。 在elasticsearch中,所有節點的數據是均等的。
2)Logstash是一個完全開源的工具,它可以對你的日誌進行收集、過濾、分析,支持大量的數據獲取方法,並將其存儲供以後使用(如搜索)。說到搜索,logstash帶有一個web界面,搜索和展示所有日誌。一般工作方式爲c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。
3)Kibana 是一個基於瀏覽器頁面的Elasticsearch前端展示工具,也是一個開源和免費的工具,Kibana可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。
Elasticsearch、Logstash、Kibana、Filebeat安裝的版本號必須全部一致,不然會出現kibana無法顯示web頁面。
ELK工作演示圖:
- Filebeat在APP Server端收集日誌
- Logstash處理過濾Filebeat收集過來的日誌
- Elasticsearch存儲Logstash提供的處理之後的日誌,用以檢索、統計
- Kibana提供web頁面,將Elasticsearch的數據可視化的展示出來
二、yum安裝步驟
1、前置工作準備:
java環境配置: jdk8
關閉防火牆:systemctl stop firewalld
關閉selinux:setenforce 0
系統優化:
vim /etc/security/limits.conf
末尾添加:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
vim /etc/sysctl.conf
末尾添加:vm.max_map_count=655360
使其生效:sysctl -p
導入Elasticsearch GPG KEY 祕鑰:rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
配置ELK yum源,使用清華的yum源鏡像
vim /etc/yum.repos.d/elk.repo
添加以下內容
[ELK]
name=ELK-Elasticstack
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
2、安裝elasticsearch
2.1 yum install -y elasticsearch
2.2 配置elasticsearch:
vim /etc/elasticsearch/elasticsearch.yml
節點名稱:
node.name: node-1
#綁定IP地址
network.host: 127.0.0.1
#端口號
http.port: 9200
按需修改jvm內存設置
vim /etc/elasticsearch/jvm.options
-Xms128m
-Xmx128m
2.3 啓動,測試
which java
/usr/java/jdk1.8.0_211/bin/java
建立軟連接:
ln -s /usr/java/jdk1.8.0_211/bin/java /usr/bin/java
systemctl start elasticsearch #啓動
systemctl status elasticsearch #查看
systemctl enable elasticsearch #開機啓動
systemctl stop elasticsearch #停止
curl http://127.0.0.1:9200,訪問成功
3、安裝Kibana
3.1 yum install -y kibana
安裝目錄:/usr/share/kibana
配置文件路徑:/etc/kibana/
3.2 修改kibana配置
vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
修改爲中文:
3.3 啓動,測試
# 查看版本號
rpm -qa elasticsearch kibana
systemctl start kibana #啓動
systemctl enable kibana #開機啓動
systemctl status kibana #查看
systemctl stop kibana #停止
訪問:http://ip:5601 ,
4、安裝Logstash
4.1 yum install -y logstash
安裝目錄:/usr/share/logstash
配置文件路徑:/etc/logstash/
日誌文件路徑:/var/log/logstash/
systemctl start logstash #啓動
systemctl enable logstash #開機啓動
systemctl status logstash #查看
systemctl stop logstash #停止
解決:sudo /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd
監聽端口: netstat -lptnu|grep java
4.2 配置logstash
https://www.cnblogs.com/xishuai/p/elk-logstash-filebeat.html
https://blog.csdn.net/mazhiwb/article/details/105775199
https://www.cnblogs.com/cheyunhua/p/11238489.html
採集日誌數據,需要有個數據源,這裏我們使用 /var/log/message進行測試。
chmod 777 /var/log/messages
vim /etc/logstash/conf.d/system.conf
添加以下內容:
#input日誌輸入模塊:日誌的獲取方式和路徑
input {
file {
path => "/var/log/messages"
type => "system-log"
start_position => "beginning"
}
}
#output日誌的輸出模塊:導出你的數據
output {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "system_log-%{+YYYY.MM.dd}"
}
}
如果conf.d 下有多個配置文件需要修改pipelines.yml(管道)文件
vim pipelines.yml
- pipeline.id: main
path.config: "/etc/logstash/conf.d/system.conf"
- pipeline.id: sec
path.config: "/etc/logstash/conf.d/sec.conf"
驗證配置文件,是否有效:
cd /usr/share/logstash/bin
./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/system.conf --config.test_and_exit
查詢索引:curl http://127.0.0.1:9200/_cat/indices?v
5、安裝filebeat
logstash佔用的資源比較大,沒有beats輕量,所以官方也推薦使用beats來作爲日誌採集工具。而且beats可擴展,支持自定義構建。
5.1 yum install filebeat -y
5.2 vim /etc/filebeat/filebeat.yml
- type: log
paths: - /var/log/messages # 指定需要收集的日誌文件的路徑
output.elasticsearch:
hosts: ["127.0.0.1:9200"] # 配置 Elasticsearch 服務器的 IP 地址
systemctl start filebeat #啓動
systemctl enable filebeat #開機啓動
systemctl status filebeat #查看
systemctl stop filebeat #停止