一般我們需要進行日誌分析場景:直接在日誌檔案中 grep、awk 就可以獲得自己想要的資訊。但在規模較大的場景中,此方法效率低下,面臨問題包括日誌量太大如何歸檔、文字搜尋太慢怎麼辦、如何多維度查詢。需要集中化的日誌管理,所有伺服器上的日誌收集彙總。常見解決思路是建立集中式日誌收集系統,將所有節點上的日誌統一收集,管理,訪問。
一般大型系統是乙個分布式部署的架構,不同的服務模組部署在不同的伺服器上,問題出現時,大部分情況需要根據問題暴露的關鍵資訊,定位到具體的伺服器和服務模組,構建一套集中式日誌系統,可以提高定位問題的效率。
1)收集-能夠採集多種**的日誌資料
2)傳輸-能夠穩定的把日誌資料傳輸到**系統
3)儲存-如何儲存日誌資料
4)分析-可以支援 ui 分析
5)警告-能夠提供錯誤報告,監控機制
elk提供了一整套解決方案,並且都是開源軟體,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。目前主流的一種日誌系統。
elk是三個開源軟體的縮寫,分別表示:elasticsearch , logstash, kibana , 它們都是開源軟體。新增了乙個filebeat,它是乙個輕量級的日誌收集處理工具(agent),filebeat占用資源少,適合於在各個伺服器上蒐集日誌後傳輸給logstash,官方也推薦此工具。
1)elasticsearch是個開源分布式搜尋引擎,提供蒐集、分析、儲存資料三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。
2)logstash 主要是用來日誌的蒐集、分析、過濾日誌的工具,支援大量的資料獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。
3)kibana 也是乙個開源和免費的工具,kibana可以為 logstash 和 elasticsearch 提供的日誌分析友好的 web 介面,可以幫助彙總、分析和搜尋重要資料日誌。
4)filebeat隸屬於beats。目前beats包含四種工具:
packetbeat(蒐集網路流量資料)
topbeat(蒐集系統、程序和檔案系統級別的 cpu 和記憶體使用情況等資料)
filebeat(蒐集檔案資料)
winlogbeat(蒐集 windows 事件日誌資料)
使用的是6.0.0的elasticsearch,logstash,kibana,filebeat
1.解壓四個tar包,目錄自己指定(我在/opt/elk-6.0.0/下搭建的,包含三個檔案)
2.首先安裝elasticsearch,解壓完成之後,需要修改配置檔案,其在解壓目錄之下的config目錄下vim elasticsearch.yml,修改如下:
cluster.name: master-node # 集群中的名稱
node.name: master-node # 該節點名稱
node.master: true # 意思是該節點為主節點
node.data: false # 表示這不是資料節點
path.data: /data/elk/data #存放資料地方,索引(自己指定,需要將目錄修改為啟動es的使用者)
path.logs: /data/elk/logs #存放elasticsearch產生日誌地方,同上
network.host: 0.0.0.0 # 監聽全部ip,在實際環境中應設定為乙個安全的ip
http.port: 9200 # es服務的埠號
discovery.zen.ping.unicast.hosts: ["192.168.1.47","192.168.1.48", "192.168.1.49", "192.168.1.50"] # 配置自動發現
3.修改完配置檔案之後,進入bin目錄啟動es,會報告使用者啟動異常,在es中,不允許使用root使用者啟動es,必須使用其他使用者來實現啟動,搭建es集群,使用scp 將es目錄傳送到其他節點,並修改節點名稱,是否為主節點,是否為資料節點
4.修改配置sysctl.conf
vi /etc/sysctl.conf
新增vm.max_map_count=655360 ==》最大虛擬記憶體區域 基本是262144 起步
執行sysctl -p
如下,說明啟動成功
6.es的簡單使用
1.create a index ===》此索引可以在後續的kibana中指定,即可檢視其下的資料
curl -xput
"content": }
3.index some docs''
''4.query with highlighting
}, "highlight" :
}}}'
2.檢視es集群情況
檢視集群健康狀況
curl 『192.168.1.47:9200/cluster/health?pretty』
詳細情況
curl 『192.168.1.47:9200/cluster/state?pretty』
1.解壓kibana之後,配置kibana目錄下config下的kibana.yml 配置檔案
server.port: 5601 #監聽埠
server.host: 「192.168.1.47」 #監聽ip
elasticsearch.url: 「" # elasticsearch位址,這是用本機
2.回到bin目錄下啟動kibana,可以在web檢視其展示的頁面:
1.解壓filebeat包,然後進入其目錄下修改filebeat.yml檔案
filebeat.prospectors:
2.將監控目錄的資料寫到es或者是kafka或者是logstash等
output.logstash:
hosts: [「192.168.1.47:5044」]
也可以寫到其他地方資料,但是只能寫乙個output,其他的需要註解
3.啟動filebeat,開始監控指定目錄
1.解壓logstash到指定目錄,進入解壓目錄中建立乙個檔案:vim test.conf
在建立好的test.conf檔案中加入input,fliter,output三部分,分別代表著輸入源,過濾器,輸出源,也可以使用其他的外掛程式
input
}filter
}}output
stdout
}
檢測loagstash的配置檔案
logstash -f test.conf –config.test_and_exit
–config.test_and_exit選項的意思是解析配置檔案並報告任何錯誤
啟動:logstash -f test.conf –config.reload.automatic
–config.reload.automatic選項的意思是啟用自動配置載入,以至於每次你修改完配置檔案以後無需停止然後重啟logstash
監控 「/tmp//.log」 此tmp目錄下的子目錄中的.log檔案,然後將輸入資訊落地到索引為log的主機ip為192.168.1.47 的elasticsearch節點上
filter進行了監控,只過濾出包含error的資料
在kibana上可以通過監控log這個索引,檢視落地到elasticsearch的log索引上的資料
5.更換監控目錄時,需要刪除.lock檔案,此檔案在目錄下的data目錄中
ELK集群搭建
一 複製虛擬機器 二 修改主機名和主機列表 1 網路位址 2 主機名 1 hostnamectl set hostname test01 2 vi etc hostname 內容修改為test01 3 主機列表 1 vi etc hosts 內容增加 主機的ip位址 主機名 三 配置免密登入 1 s...
ELK集群搭建
1 先關閉虛擬機器 右擊複製 修改名稱 mac位址選擇 為所有網絡卡重新生成mac位址 複製兩個 2 開啟複製到虛擬機器 輸入使用者名稱 密碼登入 複製到虛擬機器使用者名稱密碼和原虛擬機器一樣 輸入vi etc sysconfig network scripts ifcfg enp0s3修改ip位址...
ELK集群搭建
1 修改主機名 分別修改三颱主機的主機名,不能相同 hostnamectl set hostname 主機名修改完後可以用 hostname 檢視主機名 這裡修改的三颱主機名如下 2 主機列表 新增主機列表 vi etc hosts三颱機器都要新增這三颱機器的 ip位址 主機名 如下圖所示 3 新增...