一、ELK概述
1. ELK簡介
ELK平臺是一套完整的日志集中處理解決方案,將 elasticsearch、logstash 和 kiabana 三個開源工具配合使用,完成更加強大的用戶對日志的查詢、排序、統(tǒng)計需求。
2.ElasticSearch
ElasticSearch:是基于Lucene(一個全文檢索引擎的架構)開發(fā)的分布式存儲檢索引擎,用來存儲各類日志。
Elasticsearch 是用 Java 開發(fā)的,可通過 RESTful Web 接口,讓用戶可以通過瀏覽器與 Elasticsearch 通信。
Elasticsearch是一個實時的、分布式的可擴展的搜索引擎,允許進行全文、結構化搜索,它通常用于索引和搜索大容量的日志數據,也可用于搜索許多不同類型的文檔。
3. Logstash
Logstash:作為數據收集引擎。它支持動態(tài)的從各種數據源搜集數據,并對數據進行過濾、分析、豐富、統(tǒng)一格式等操作,然后存儲到用戶指定的位置,一般會發(fā)送給 Elasticsearch。
Logstash 由 Ruby 語言編寫,運行在 Java 虛擬機(JVM)上,是一款強大的數據處理工具, 可以實現數據傳輸、格式處理、格式化輸出。Logstash 具有強大的插件功能,常用于日志處理。
4.Kiabana
Kiabana:Kibana 通常與 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一個功能強大的數據可視化 Dashboard,Kibana 提供圖形化的 web 界面來瀏覽 Elasticsearch 日志數據,可以用來匯總、分析和搜索重要數據。
5.Filebeat
Filebeat 是一款輕量級的開源日志文件數據搜索器。通常在需要采集數據的客戶端安裝 Filebeat,并指定目錄與日志格式,Filebeat 就能快速收集數據,并發(fā)送給 Logstash 進行解析,或是直接發(fā)給 ES 存儲,性能上相比運行于 JVM 上的 Logstash 優(yōu)勢明顯,是對它的替代。
filebeat 結合 logstash 帶來好處
通過 Logstash 具有基于磁盤的自適應緩沖系統(tǒng),該系統(tǒng)將吸收傳入的吞吐量,從而減輕 Elasticsearch 持續(xù)寫入數據的壓力
從其他數據源(例如數據庫,S3對象存儲或消息傳遞隊列)中提取
將數據發(fā)送到多個目的地,例如S3,HDFS(Hadoop分布式文件系統(tǒng))或寫入文件
使用條件數據流邏輯組成更復雜的處理管道
日志的集中化管理 beats 包括四種工具
Packetbeat(搜索網絡流量數據)
Topbeat(搜索系統(tǒng)、進程和文件系統(tǒng)級別的 CPU 和內存使用情況等數據)
Filebeat(搜集文件數據)
Winlogbeat(搜集 Windows 時間日志數據)
6.為什么要用ELK(思考一下)
日志主要包括系統(tǒng)日志、應用程序日志和安全日志。系統(tǒng)運維和開發(fā)人員可以通過日志了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發(fā)生的原因。經常分析日志可以了解服務器的負荷,性能安全性,從而及時采取措施糾正錯誤。
往往單臺機器的日志我們使用grep、awk等工具就能基本實現簡單分析,但是當日志被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統(tǒng)方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日志管理,例如:開源的syslog,將所有服務器上的日志收集匯總。集中化管理日志后,日志的統(tǒng)計和檢索又成為一件比較麻煩的事情,一般我們使用 grep、awk和wc等Linux命令能實現檢索和統(tǒng)計,但是對于要求更高的查詢、排序和統(tǒng)計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
一般大型系統(tǒng)是一個分布式部署的架構,不同的服務模塊部署在不同的服務器上,問題出現時,大部分情況需要根據問題暴露的關鍵信息,定位到具體的服務器和服務模塊,構建一套集中式日志系統(tǒng),可以提高定位問題的效率。
7.ELK的工作原理
1.AppServer是一個類似于Nginx、Apache的集群,其日志信息由Logstash來收集
2.往往為了減少網絡問題所帶來的瓶頸,會把Logstash服務放入前者的集群內,減少網絡的消耗
3.Logstash把收集到的日志數據格式化后輸出轉存至ES數據庫內(這是一個日志進行集中化管理的過程)
4.隨后,Kibana對ES數據庫內格式化日志數據信息進行索引和存儲
5.最后,Kibana把其展示給客戶端
總結:lohstash作為日志收集器,從數據源采集數據,并對數據進行過濾,格式化處理,然后交由Elasticsearch存儲,kibana對日志進行可視化處理。
二、ELK實驗(部署ELK日志分析系統(tǒng))
實驗環(huán)境準備
node1節(jié)點(2C/4G):node1/192.168.169.30 Elasticsearch
node2節(jié)點(2C/4G):node2/192.168.169.20 Elasticsearch
Apache節(jié)點:apache/192.168.169.10 Logstash Kibana Apache
1.關閉防火墻
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
ntpdate ntp.aliyun.com
先同步時間
ElasticSearch集群部署(在Node1、Node2節(jié)點上操作)
#更改主機名
Node1節(jié)點:hostnamectl set-hostname node1
Node2節(jié)點:hostnamectl set-hostname node2
#配置域名解析
vim /etc/hosts
192.168.169.20 node1
192.168.169.30 node2
#查看Java環(huán)境,如果沒有安裝,yum -y install java
java -version
部署 Elasticsearch 軟件
(1)#上傳elasticsearch-6.7.2.rpm到/opt目錄下
cd /opt
rpm -ivh elasticsearch-6.7.2.rpm
(2)#加載系統(tǒng)服務
systemctl daemon-reload
systemctl enable elasticsearch.service
(3)#修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注釋,指定集群名字
cluster.name: my-elk-cluster
--23--取消注釋,指定節(jié)點名字:Node1節(jié)點為node1,Node2節(jié)點為node2
node.name: node1
--33--取消注釋,指定數據存放路徑
path.data: /data/elk_data
--37--取消注釋,指定日志存放路徑
path.logs: /var/log/elasticsearch/
--43--取消注釋,改為在啟動的時候不鎖定內存
bootstrap.memory_lock: false
--55--取消注釋,設置監(jiān)聽地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注釋,ES 服務的默認監(jiān)聽端口為9200
http.port: 9200
--68--取消注釋,集群發(fā)現通過單播實現,指定要發(fā)現的節(jié)點 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
#查看主配置文件
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
#將node1的配置文件拷貝一份在node2上并去node2上修改
scp /etc/elasticsearch/elasticsearch.yml node2:/etc/elasticsearch/
vim /etc/elasticsearch/elasticsearch.yml
--23--取消注釋,指定節(jié)點名字:Node1節(jié)點為node1,Node2節(jié)點為node2
node.name: node2
(4)#創(chuàng)建數據存放路徑并授權
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
(5)#啟動elasticsearch是否成功開啟
systemctl start elasticsearch.service
netstat -antp | grep 9200
(6)#查看節(jié)點信息
瀏覽器訪問 ,查看節(jié)點 Node1、Node2 的信息
http://192.168.169.20:9200 http://192.168.169.30:9200
#原諒色:green
http://192.168.169.20:9200/_cluster/health?pretty
http://192.168.169.30:9200/_cluster/health?pretty
####### 使用以上方式查看狀態(tài)并不友好,可以通過 elasticsearch-head插件來直接管理 #####
node1
node2
2.安裝 Elasticsearch-head 插件
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作為獨立服務進行安裝,需要使用npm工具(NodeJS的包管理工具)安裝。
安裝 Elasticsearch-head 需要提前安裝好依賴軟件 node 和 phantomjs。
node:是一個基于 Chrome V8 引擎的 JavaScript 運行環(huán)境。
phantomjs:是一個基于 webkit 的JavaScriptAPI,可以理解為一個隱形的瀏覽器,任何 基于 webkit 瀏覽器做的事情,它都可以做到。文章來源:http://www.zghlxwxcb.cn/news/detail-473051.html
編譯安裝 node
#上傳軟件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y
cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make instal
安裝 phantomjs
#上傳軟件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd /opt/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
安裝 Elasticsearch-head 數據可視化工具
#上傳軟件包 elasticsearch-head-master.zip 到/opt
cd /opt
unzip elasticsearch-head-master.zip
cd /opt/elasticsearch-head/
npm install //安裝依賴包
文章來源地址http://www.zghlxwxcb.cn/news/detail-473051.html
總結
到了這里,關于ELK【elasticsearch+logstash+kibana】企業(yè)級日志分析系統(tǒng)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!