本節索引:
一、Elastic Stack介紹
二、核心組件之ElasticSearch
三、核心組件之Logstash
四、核心組件之Kibana
五、核心組件之Filebeat
一、Elastic Stack介紹
官方網站:https://www.elastic.co/products
主要功能:
(1)日志存儲和分析
如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日志。這樣是不是感覺很繁
瑣和效率低下。當務之急我們使用集中化的日志管理,例如:開源的syslog,將所有服務器上的日志收集
匯總。
集中化管理日志后,日志的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux
命令能實現檢索和統計,但是對于要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的
方法難免有點力不從心。
開源實時日志分析elastic stack平臺能夠完美的解決我們上述的問題
(2)站內內容搜索
大型搜索引擎需用到實時計算
中小型企業站內搜索不需要實時計算,過去的解決方案一般為:Solr
ElasticSearch出現后,由于其支持彈性搜索引擎,分布式運行,可運行在多個節點上的優勢,逐漸占領
了站內搜索領域,Solr解決方案慢慢被淘汰
搜索引擎一般由兩部分組成:搜索組件與索引組件
搜索組件:提供用戶友好的搜索界面,接入用戶搜索信息
索引組件:分析、改造原始數據成為適合搜索引擎搜索的數據結構
早期ELK:核心組成由ElasticSearch、Logstash和Kibana三個開源工具組成
1、Logstash是一個完全開源的工具,他可以對你的日志進行收集、分析,并將其存儲供以后使用(如,搜
索)
2、ElasticSearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索
引副本機制,restful風格接口,多數據源,自動搜索負載等
3、Kibana也是一個開源和免費的工具,它可以為Logstash和ElasticSearch提供的日志分析友好的Web界
面,可以幫助你匯總、分析和搜索重要數據日志
后期在ELK的基礎上加入了filebeat,并且改名為Elastic Stack
Filebeat是一個日志文件托運工具,在你的服務器上安裝客戶端后,filebeat會監控日志目錄或者指定的日
志文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),并且轉發這些信息到elasticsearch或者
logstash中存放。
二、核心組件之ElasticSearch
ElasticSearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索
引副本機制,restful風格接口,多數據源,自動搜索負載等
監聽端口:
? ? 9200:對客戶端提供服務
? ? 9300:集群內部事務,選舉誰是主節點
官網下載:https://www.elastic.co/downloads/past-releases
版本說明:ElasticSearch早期生產環境中由于ELK各核心版本不統一,以2版本居多,5版本之后各組件版
本進行了統一
本文實驗均已ELK 5.6.8版本為準
實驗:安裝ElasticSearch集群
前期準備:
虛擬機3臺
node1:192.168.30.10
node2:192.168.30.18
node3:192.168.30.27
具體步驟:
node1,node2,node3端操作:
安裝jdk開發環境
yum install java-1.8.0-openjdk-devel -y
下載elasticsearch安裝包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.rpm
安裝elasticsearch
rpm -ivh elasticsearch-5.6.8.rpm
主要配置文件:
[root@node1 ~]#ls /etc/elasticsearch/
elasticsearch.yml ? jvm.options ? log4j2.properties ? scripts
vim jvm.options
-Xms1g? ???????????????? #修改初始內存大小
-Xmx1g
vim elasticsearch.yml
—————- Cluster ——————
cluster.name:wxlinux????????????? #集群名稱,橋接環境下注意修改
————— Network —————–
network.host:本機IP地址
—————– Node ——————–
node.name:node1 or 2 or 3
—————– Paths ——————-
path.data:/myels/data
path.logs:/mysles/logs
————— Discovery —————
discovery.zen.ping.unicast.hosts: [“192.168.30.10”, “192.168.30.18”,”192.168.30.27″]
discovery.zen.minimum_master_nodes: 2
創建數據與日志目錄:
mkdir -pv /myels/{data,logs}
chown elasticsearch.elasticsearch? /myels/*
啟動elasticsearch服務
systemctl start elasticsearch
查看對應端口是否處于監聽狀態
ss -ntl
判定集群是否正常啟動生效
curl -XGET http://192.168.30.18:9200/
三、核心組件之Logstash
Logstash是一個完全開源的工具,他可以對你的日志進行收集、分析,并將其存儲供以后使用(如,搜
索)
Logstash有三類插件:
1、輸入插件:input,從指定的數據源抽取數據
2、過濾器插件:ouput,在本地進行格式轉換
3、輸出插件:filter,將處理后的結果保留在指定數據庫
官方文檔:https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html
配置文件:
/etc/logstash.conf
/etc/logstash/conf.d/
注意:logstash配置conf.d目錄不要求后綴,任意格式均生效
示例1:安裝logstash
yum Install java-1.8.0-openjdk-devel
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.8.rpm
rpm -ivh logstash-5.6.8.rpm
添加到環境變量:
vim /etc/profile.d/logstash.sh
PATH=/usr/share/logstash/bin:$PATH
. /etc/profile.d/logstash.sh
配置測試:
vim test1.conf
語法檢查
logstash -f test1.conf -t
加載運行配置
logstash -f test1.conf
示例2:實現標準輸出美觀化
加載運行配置
logstash -f test2.conf
示例3:Logstash實現結構化日志輸出
客戶端模擬隨機IP進行訪問,在logstash端創建200個測試頁面:
[root@logstash ~]#for i in {1..200};do echo “Test Page $i” > /var/www/html/test$i.html;done
修改http配置文件中的日志格式
[root@client ~]#while true;do client=$[$RANDOM%254+1];curl –header “X-Forwarded-For: 192.30.0.$client” http://192.168.30.10/test$client.html;sleep 1;done
Logstash端:
修改配置文件:
當客戶端進行訪問時,logstash將日志進行結構化輸出
示例4:引入grok過濾器插件
功能:使非結構化日志轉化為結構化日志格式
加載運行配置
logstash -f test4.conf
示例5:引用grok內置變量
加載運行配置
logstash -f test5.conf
當日志來源有多個時,可加判斷語句:
示例6:date filter插件示例
功能:將@timestamp的時間替換為timestamp字段,原@timestamp時間移除
加載運行配置
logstash -f test5.conf
示例7:Geoip插件
功能:根據ip地址定位來自哪個地區或城市
下載IP地址信息庫
查看配置
vim test6.conf
加載運行配置
logstash -f test6.conf
四、核心組件之Kibana
Kibana是一個開源和免費的工具,它可以為Logstash和ElasticSearch提供的日志分析友好的Web界面,可
以幫助你匯總、分析和搜索重要數據日志
默認監聽5601端口,工作于http協議
示例:安裝kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.8-x86_64.rpm
rpm -ivh kibana-5.6.8-x86_64.rpm
修改kibana配置文件
vim kibana.conf
server.port:5601
server.host:”0.0.0.0″???????????????????????????????? #5601監聽的本地地址
server.name:”master.wxlinux.com”
elasticsearch.url:”http://node1:9200″
查看5601端口已處于監聽狀態
瀏覽器訪問http://localhost:5601
進行一些相關設置即可正常使用
輸入關鍵詞可進行搜索
可根據狀態碼進行范圍查詢
生成統計表圖結構
也可根據geoip信息生成位置訪問統計
五、核心組件之Filebeat
Filebeat是一個日志文件托運工具,在你的服務器上安裝客戶端后,filebeat會監控日志目錄或者指定的日
志文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),并且轉發這些信息到elasticsearch或者
logstash中存放。
早期部署ELK時,需要將Logstatsh安裝于每臺需要收集日志的服務器上,但由于Logstash屬于重量級應
用。為了減少服務器的性能消耗,在filebeat出現后,一般利用filebeat用來替代過去logstash的收集、讀取
日志功能,而將logstash分離出來做成集群專門來負責轉換格式使用。
官網介紹:輕量級的數據搬用工具
示例:實現由filebeat收集服務器日志,轉發給elasticsearch
前期準備:
虛擬機三臺
filebeat:192.168.30.10
elasticsearch 1:192.168.30.18
elasticsearch 2:192.168.30.27
其中elasticsearch 1與elasticsearch 2組成一個elasticsearch集群
具體步驟
安裝filebeat:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.8-x86_64.rpm
rpm -ivh filebeat-5.6.8-x86_64.rpm
修改配置文件:
vim /etc/filebeat/filebeat.yml
修改輸入類型為log,文件路徑為httpd訪問日志
輸出到elasticsearch,指定主機IP地址
啟動filebeat服務
systemctl start filebeat
查看filebeat文件已在elasticsearch端生成,且不斷增加中
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104311