《ElasticSearch6.x實戰教程》之實戰ELK日誌分析系統、多數據源同步

来源:https://www.cnblogs.com/yulinfeng/archive/2019/07/24/11234061.html
-Advertisement-
Play Games

第十章 實戰:ELK日誌分析系統 ElasticSearch、Logstash、Kibana簡稱ELK系統,主要用於日誌的收集與分析。 一個完整的大型分散式系統,會有很多與業務不相關的系統,其中日誌系統是不可或缺的一個,集中式日誌系統需要收集來自不同服務的日誌,對它進行集中管理存儲以及分析。ELK就 ...


第十章-實戰:ELK日誌分析系統

ElasticSearch、Logstash、Kibana簡稱ELK系統,主要用於日誌的收集與分析。

一個完整的大型分散式系統,會有很多與業務不相關的系統,其中日誌系統是不可或缺的一個,集中式日誌系統需要收集來自不同服務的日誌,對它進行集中管理存儲以及分析。ELK就是這樣一個系統。

ElasticSearch是一個開源分散式搜索引擎,在ELK系統中提供對數據的搜索、分析、存儲。

Logstash主要用於日誌的收集,在ELK系統中作為日誌數據源的傳輸。

Kibana則是一個可視化管理工具,在ELK系統中起可視化分析查看的作用。

安裝部署ELK

ElasticSearch

ElasticSearch的安裝在"準備工作"中已經說明,這裡不再贅述。

Kibana

Kibana6.3.2下載地址(Linux、mac OS、Windows對應不同的版本):https://www.elastic.co/cn/downloads/past-releases/kibana-6-3-2。Logstatsh歷史版本下載頁面:https://www.elastic.co/cn/downloads/past-releases#kibana

mac OS

  1. 通過命令tar -zxvf kibana-6.3.2-darwin-x86_64.tar.gz解壓到當前用戶目錄(或者其它位置)。
  2. 解壓後進入kibana-6.3.2-darwin-x86_64目錄,執行vim config/kibana.yml命令,修改配置(註意yml格式的配置文件冒號必須有英文空格。
server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"
logging.dest: /Users/yulinfeng/log/kibana.log
  1. 執行./bin/kibana命令啟動Kibana。

啟動完成,打開瀏覽器輸入localhost:5061

kibana

Linux

安裝過程同mac OS。

Logstash

Logstash6.3.2下載地址(Linux、mac OS、Windows通用,下載zip包即可):https://www.elastic.co/cn/downloads/past-releases/logstash-6-3-2。Logstash歷史版本下載頁面:https://www.elastic.co/cn/downloads/past-releases#logstash

macOS

  1. 解壓logstash-6.3.2.zip 解壓到當前用戶目錄(或者其它位置)
  2. 解壓後進入logstash-6.3.2目錄,執行vim logstash.conf配置文件。
input {
  tcp {
    mode => "server"
    host => "127.0.0.1"
    port => 4568
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "log"
    document_type => "log4j2"
  }
}

這個配置的含義為,Logstash的日誌採集來源是4568埠(後面我們會通過程式代碼通過log4j向埠4568列印日誌)。Logstash的日誌向ElasticSearch輸出。

  1. 執行./bin/logstash -f logstash.conf命令啟動Logstash。

Linux

安裝過程同mac OS。

日誌源DEMO

在部署Logstash時,我們定義了日誌的來源是埠4568,接下來我們模擬一個程式利用log4j2通過socket連接將日誌發送到4568埠,DEMO完整代碼地址:https://github.com/yu-linfeng/elasticsearch6.x_tutorial/tree/master/code/logstash

DEMO的邏輯只有列印日誌,主要在log4j2.xml需要配置socket方式列印。

......
<Socket name="logstash-tcp" host="localhost" port="4568" protocol="TCP">
  <PatternLayout pattern="${LOG_PATTERN}" />
</Socket>
......

詳細代碼直接查看源碼https://github.com/yu-linfeng/elasticsearch6.x_tutorial/tree/master/code/logstash

啟動Spring Boot程式後,控制台開始輸出日誌,此時返回瀏覽器查看localhost:5061,點擊Management菜單,Index pattern中輸入"log"(即定義的索引Index),一直下一步即可。

kibana-man

配置完成後,點擊Discover菜單,就可看到程式DEMO列印的日誌,並可進行搜索。現在,就請盡情探索吧。

第十一章-實戰:多數據源同步

通常情況下,使用ES的地方一般都會使用MySQL,將MySQL作為數據源,ES作為前臺搜索。寫入一條數據到MySQL時,也需要同時寫入ES中。此時寫入ES就有兩種方式:一種同步的方式,另一種非同步的方式。寫入MySQL後同步寫入ES,好處是實時更新,插入成功即可搜索,缺點也很明顯,事務的問題(MySQL成功,ES失敗的情況應提供一種保障機制達到數據一致性),性能的問題(一條數據需要同時插入MySQL和ES成功後才能返回結果)。另一種情況是在寫入MySQL成功後,非同步寫入ES,優點是數據一致性問題比較容易保證,性能的問題也不必等待過久,缺點也很明顯,插入MySQL成功後,由於非同步的原因,並不能立刻從ES搜索出結果。

寫入MySQL成功,即資料庫中數據新增了一條數據,利用MySQL的binlog技術能監測到數據的變化,從而發送一條MQ寫入到ES中。有關binlog可自行搜索。Canal即是基於資料庫增量日誌解析,提供增量數據訂閱和消費的一款阿裡巴巴開源軟體。

在網路上已經有很多資料講解如何通過Canal進行多數據源同步,這裡不再給出詳細的部署過程,下麵是非同步寫入ES的架構圖。

canal
Canal下載地址:https://github.com/alibaba/canal/releases(下載deployer版本)。

關註公眾號:CoderBuff,回覆“es”獲取《ElasticSearch6.x實戰教程》完整版PDF。
這是一個能給程式員加buff的公眾號 (CoderBuff)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本書特色 本書特色 為了能讓更多的編程小白輕鬆地入門編程,我把高效學習法結合 Python 中的核心知識,寫成了這本書。隨意翻上幾頁,你就會發現這本書和其他編程書的不同,其中有大量的視覺化場景幫你理解概念,穿插了若幹有趣的小項目,最重要的是,這本書是為零基礎小白而設計的。 下載地址 為了能讓更多的編 ...
  • 五、PHP綜合應用 ftp、ssh、http、telnet、https ftp:File Transfer Protocol,文件傳輸協議,是應用層的協議,它基於傳輸層,為用戶服務,它們負責進行文件的傳輸,其預設埠是21。 ssh:Secure Shell,安全外殼協議,建立在應用層和傳輸層基礎上 ...
  • 基礎題 一、String,StringBuffer, StringBuilder 的區別是什麼?String為什麼是不可變的?1. String是字元串常量,StringBuffer和StringBuilder是字元串變數。StringBuffer是線程安全的,StringBuilder是非線程安全 ...
  • 一、高德軟體有限公司python試題及答案 1. 在python中, list, tuple, dict, set有什麼區別, 主要應用在什麼樣的場景? 定義: list: 鏈表, 有序的項目, 通過索引進行查找, 使用方括弧"[]"; tuple: 元組, 元組將多樣的對象集合到一起, 不能修改, ...
  • 本章內容主要分享多個module中的實體類集合生成到一個jar包中,並且發佈到遠程庫;這裡採用maven-assembly-plugin插件的功能來操作打包,內容不長卻貼近實戰切值得擁有,主要節點內容如: 多個module實體類集合打jar包 jar包打入本地庫 jar包上傳至遠程庫 多個modul ...
  • 位元組碼指令   Java虛擬機的位元組碼指令由一個位元組長度,代表著某種特定操作含義的操作碼以及跟隨其後的零至多個代表此操作所需參數的操作數所構成的。如果忽略異常,JVM的解釋器通過下麵的偽代碼可有效工作: 操作位元組碼   可以利用開源庫直接操作位元組碼,如CGLi ...
  • 手把手教你破解文件密碼、wifi密碼、網頁密碼 1、破解文件密碼: 有時候我們在網上下載一個壓縮包後,必須要關註或者支付一定費用才給你解壓密碼,實屬比較噁心。在這裡手把手叫你實現破解文件解壓密碼。 1、首先我們要導入模塊拿到能解壓的文件包 1 import zipfile 2、拿到你需要解壓的文件( ...
  • 一、 1.連續列印舉例 #打開文件,三個字元一組讀出來內容,然後顯示在屏幕上,每讀一次,停一秒 2.tell函數 (1)用法:用來顯示文件讀寫指針的當前位置 (2)格式:文件.tell() (3)舉例: (4)註意:上面的例子說明瞭:tell返回數字的單位是byte;read是以字元為單位的 3.文 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...