您好,登錄后才能下訂單哦!
這篇文章主要講解了“ELK日志系統的介紹和部署方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ELK日志系統的介紹和部署方法”吧!
一、ELK應用場景
在復雜的企業應用服務群中,記錄日志方式多種多樣,并且不易歸檔以及提供日志監控的機制。無論是開發人員還是運維人員都無法準確的定位服務、服務器上面出現的種種問題,也沒有高效搜索日志內容從而快速定位問題的方式。因此需要一個集中式、獨立的、搜集管理各個服務和服務器上的日志信息,集中管理,并提供良好的UI界面進行數據展示,處理分析。
得此:ELK提供一套開源的解決方案,能高效、簡便的滿足以上場景。
二、ELK日志系統介紹
1、ELK分別是Elasticsearch、Logstash、Kibana三個開源框架縮寫。
框架 簡介 作用
Elasticsearch 開源分布式搜索引擎,提供存儲、分析、搜索功能。特點:分布式、基于reasful風格、支持海量高并發的準實時搜索場景、穩定、可靠、快速、使用方便等。 接收搜集的海量結構化日志數據,并提供給kibana查詢分析
Logstash 開源日志搜集、分析、過濾框架,支持多種數據輸入輸出方式。 用于收集日志,對日志進行過濾形成結構化數據,并轉發到elasticsearch中
Kibana 開源日志報表系統,對elasticsearch以及logstash有良好的web頁面支持。 對elasticsearch提供的數據進行分析展示
2、ELK經典應用如下
ELK經典架構
如圖
Logstash部署至服務主機,對各個服務的日志進行采集、過濾、推送。
Elasticsearch存儲Logstash傳送的結構化數據,提供給Kibana。
Kibana提供用戶UIweb頁面進行,數據展示和分析形成圖表等。
備注:logs 泛指,各種日志文件以及日志信息:windows,negix,tomcat,webserver等等。
3、ELK改進
由于Logstash消耗資源大,而服務器資源相當寶貴,所以引進另一個輕量級日志采集框架Beats,其中包含以下6種
Packetbeat 用于搜集網絡流量數據
Heartbeat
用于運行時間監控
Filebeat 用于搜集文件數據
Winlogbeat 用于搜集winodws事件數據
Metricbeat 用于指標
Auditbeat 用于審計數據
改良ELK
4、進一步思考
傳統web項目中,經常使用log4j以及logback(性能更高)等成熟日志插件進行日志的記錄,是否提供更好的解決方案。
ELK升級1.0
如圖
日志采集新增Logback直接發送日志到Logstash的形式。如果采用此方式,web服務可減少部分生成log文件配置,提高實時性和日志推送效率
5、高并發場景
由于logstash消耗性能,所以高并發場景容易遇到流量上的瓶頸,及時使用logstash集群也是如此,所以可以添加中間件進行日志緩存處理。由于logstash數據源具有多種方式,所有中間件也可以很多選擇,常見的有kafka,redis。
ELK升級2.0
如圖
host1、中間件、host2 均為高可用服務集群 為簡單顯示未畫出
logback出現的業務數據可以通過寫入redis或者kafka等中間件進行緩存,再通過合理限制流量閥值輸送至logstash進行過濾
beats 如果是filebeat其日志若無實時性要求,可以通過控制log文件更新速度限制Beats傳輸日志流量
三 ELK搭建(非集群)
1、下載ELK(保持版本一致)!
Elasticsearch 官網elasticsearch-6.3.0.tar elasticsearch官方文檔
Kibana 官網kibana-6.3.0下載 linux64位 kibana官方文檔
Logstash 官網logstash-6.3.0.tar logstash官方文檔
Filebeat 官網filebeat-6.3.0 linux64位 beats官方文檔
備注:演示為centos7 即linux版本,請按實際需求更改
通過rz命令上傳至centos7虛擬機
2、解壓
tar -zxvf elasticsearch-6.3.0.tar.gz
tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz
tar -zxvf filebeat-6.3.0-linux-x86_64.tar.gz
tar -zxvf logstash-6.3.0.tar.gz
備注:tar不支持指定解壓目標目錄 可以通過mv 命令進行遷移。本教程遷移至/home目錄下
3、java環境搭建
推薦使用jdk1.8jdk環境配置
4、安裝elasticsearch
修改配置文件
vi /home/elasticsearch-6.3.0/config/elasticsearch.yml
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0 ##服務器ip 本機
#
# Set a custom port for HTTP:
#
http.port: 9200 ##服務端口
#
# For more information, consult the network module documentation.
#
啟動elasticsearch
/home/elasticsearch-6.3.0/bin/elasticsearch #命令窗運行
/home/elasticsearch-6.3.0/bin/elasticsearch -d #后臺線程運行
關閉elasticsearch
ctrl+c #命令窗關閉
ps -ef | grep elastic #后臺線程關閉
kill -9 4442 ##pid 4442為查處線程的pid
常見問題解決elasticsearch啟動常見問題
驗證elasticsearch啟動
5、安裝kibana
修改配置文件
vi /home/kibana-6.3.0-linux-x86_64/config/kibana.yml
server.port: 5601 ##服務端口
server.host: "0.0.0.0" ##服務器ip 本機
elasticsearch.url: "http://localhost:9200" ##elasticsearch服務地址 與elasticsearch對應
啟動kibana
/home/kibana-6.3.0-linux-x86_64/bin/kibana #命令窗啟動
nohup ./kibana-6.3.0-linux-x86_64/bin/kibana & #后臺線程啟動
關閉kibana
ctrl+c #命令窗關閉
ps -ef | grep kibana #后臺線程關閉
kill -9 4525 ##pid 4525 為查處線程的pid
備注:常見問題多為 端口占用,以及目錄未授權,需要同elasticsearch 使用目錄運行執行的用戶去執行 未配置則為root用戶
驗證kibana啟動
6、安裝logstash
新建配置文件
vi /home/logstash-6.3.0/config/logback-es.conf
input {
tcp {
port => 9601
codec => json_lines
}
}
output {
elasticsearch {
hosts => "localhost:9200"
}
stdout { codec => rubydebug}
}
備注:上述文件復制時必須去除多余空格,保持yml文件規范。
備注:上圖與配置部分一一對應
input { ##input 輸入源配置
tcp { ##使用tcp輸入源 官網有詳細文檔
port => 9601 ##服務器監聽端口9061 接受日志 默認ip localhost
codec => json_lines ##使用json解析日志 需要安裝json解析插件
}
}
filter { ##數據處理
}
output { ##output 數據輸出配置
elasticsearch { ##使用elasticsearch接收
hosts => "localhost:9200" ##集群地址 多個用,隔開
}
stdout { codec => rubydebug} ##輸出到命令窗口
}
logstash官方輸入源支持以及下載
安裝logstash json插件
/home/logstash-6.3.0/bin/logstash-plugin install logstash-codec-json_lines
啟動logstash
/home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logback-es.conf ##命令窗形式
nohup /home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logback-es.conf & ##后臺線程形式
關閉logstash
ctrl+c #命令窗關閉
ps -ef | grep logstash #后臺線程關閉
kill -9 4617 ##pid 4617 為查處線程的pid
7 使用logback 傳輸日志到logstash
建立springboot項目(為了快速使用)
pom文件依賴
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.253.6:9601</destination> <!--指定logstash ip:監聽端口 tcpAppender 可自己實現如kafka傳輸等-->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<include resource="org/springframework/boot/logging/logback/base.xml"/> <!--引用springboot默認配置-->
<root level="INFO">
<appender-ref ref="LOGSTASH" /> <!--使用上述訂閱logstash數據tcp傳輸 -->
<appender-ref ref="CONSOLE" /> <!--使用springboot默認配置 調試窗口輸出-->
</root>
</configuration>
SpringbootLogbackApplication.java 測試
package com.zyj;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootLogbackApplication {
private final static Logger logger = LoggerFactory.getLogger(SpringbootLogbackApplication.class);
public static void main(String[] args) {
new Thread(()->{
for (int i=0;i<100;i++){
logger.info("---test---"+i);
}
}).start();
SpringApplication.run(SpringbootLogbackApplication.class, args);
}
}
9 驗證ELK
為演示方便,我們簡單展示一下,單位時間線程打印某日志的速度。主要通過kibana過濾出結構化數據,通過以數據的時間戳為x軸,以count統計函數為y軸進行圖表展示。
(1)后臺啟動elasticsearch kibana logstash 并驗證啟動成功
(2)啟動springboot項目
(3)logstash輸出控制臺記錄 此為默認無過濾器打印logback包裝的全部信息
(4)kibana日志顯示
添加elasticsearch日志數據
使用時間戳顯示 單位時間線程記錄日志數量
四 、思考拓展
1、本文未詳細介紹logback詳細配置,以及自定義日志傳輸,將后續寫入kafka以及redis方案,log4j亦可以使用elk因性能問題不做深究。
2、本文未詳細介紹elasticsearch,logstash,kibana,beats的詳細使用,僅羅列架構以及初步elk使用。beats常用為filebeat,對已經生成文檔的日志進行傳輸。
3、沒有完美的架構,只有合適的用法,針對不同的業務環境需要對架構進行微調,整體思路不變。elk為單獨高可用服務群,服務器群與beats或者logback亦是獨立高可用。
4、根據業務需要,在logback打印的日志中可以進行結構化處理,亦或者在logstash的filter中對數據進行結構化處理。業務場景有待考究,初步考慮異常分析以及sql回滾等。
感謝各位的閱讀,以上就是“ELK日志系統的介紹和部署方法”的內容了,經過本文的學習后,相信大家對ELK日志系統的介紹和部署方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。