1. 程式人生 > >Windows上搭建Elasticsearch+Logstash+jdbc+Kibana

Windows上搭建Elasticsearch+Logstash+jdbc+Kibana

ELK介紹

ElasticSearch:是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。


Logstash: 是開源的伺服器端資料處理管道,能夠同時 從多個來源採集資料、轉換資料,然後將資料傳送到您最喜歡的 “儲存庫” 中。(我們的儲存庫當然是 Elasticsearch。)


Kibana:是一個針對Elasticsearch的開源分析及視覺化平臺,用來搜尋、檢視互動儲存在Elasticsearch索引中的資料。使用Kibana,可以通過各種圖表進行高階資料分析及展示。可以讓海量資料更容易理解。它操作簡單,基於瀏覽器的使用者介面可以快速建立儀表板(dashboard)實時顯示Elasticsearch查詢動態。


jdbc:JDBC(Java DataBase Connectivity,java資料庫連線)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。
在這裡我們主要為了使用jdbc將mysql資料庫的資料同步到ElasticSearch裡面。

ELK搭建

官網:https://www.elastic.co
Linux上搭建就不多說了,自我感覺比起Windows容易太多太多了。WIndows真的是讓人。。。當然Mac也是舒服的一批,開發儘量上個Mac比較好。
本次搭建介紹:

系統:Windows7-64位
Elasticsearch:6.3.1
Logstash:6.3.1
Kibana:6.3.1
其實,官方已經表明,安裝的版本要配套,所以安裝的時候各個安裝項版本要對應。
  1. Elasticsearch安裝
    進入官網點選導航欄產品按鈕 選擇Elasticsearch
    這裡寫圖片描述
    然後點選Download下載選擇不同的包下載。當然,windows推薦使用MSI(BEAT)包下載安裝圖形介面安裝。
    這裡寫圖片描述
    這裡寫圖片描述
    官方版本也在不斷更新,所以你看到的可能是6.3.2.無傷大雅,如果你依然想安裝我這個6.3.1的話,可以選擇這個版本進行安裝。點選檢視過去版本,然後找尋你想要安裝的版本包:
    這裡寫圖片描述
    這裡寫圖片描述
    如果你在官網下載的慢的話,我在這裡提供一下6.3.1的MSI安裝包:
    elasticsearch-6.3.1.msi密碼:n8az
    OK,現在可以安裝了,但是有一點,安裝ES的前提是你必須安裝了JAVA,並且就我的安裝過程和百度後的結果,JAVA版本不要超過1.8,可以下載個1.8的。我在這也提供一下JAVA包:

    jdk-8u171-windows-x64.exe密碼:p3at
    java安裝後可以在cmd中檢視下:
    這裡寫圖片描述
    安裝:
    點選執行下載elasticsearch-6.3.1.msi,然後一直往下走就行了,因為我已經安裝過了,就不在這裡演示了,如果你出現什麼問題可以留言。比如我安裝完成後:D:\Elasticsearch,同級還有配置config資料夾,data資料夾,日誌logs資料夾,這些都是安裝過程中配置的。
    這裡寫圖片描述
    現在已經安裝完成,進入到:D:\Elasticsearch\elasticsearch6.3.1\6.3.1\bin目錄,請注意你的安裝目錄可能與我的不同在該目錄下啟動cmd,執行elasticsearch.exe,不過採用MSI安裝的完成後該服務已經啟動,並且如果你勾選了開機啟動項,每次開機自啟動,如下:
    已經在執行中,這時候,在瀏覽器輸入:localhost:9200
    這裡寫圖片描述
    出現以上介面,說明Elasticsearch安裝並且啟動執行成功。

    2. Logstash安裝
    Logstash的安裝就比較簡單了,和Elasticsearch安裝類似,先找到對應版本 ,以6.3.1為例:
    這裡寫圖片描述
    這裡寫圖片描述
    目前是6.3.2,點選檢視其它版本
    這裡寫圖片描述
    這裡寫圖片描述
    安裝:
    下載後將Logstash.zip包放在Elasticsearch資料夾下(個人建議,你也可以放在其他地方)
    然後解壓即可,如下:
    這裡寫圖片描述
    到這裡,這一步暫時完成,Logstash看名字就知道是一個日誌管理分析的工具,我門安裝這個是為了接下來的將mysql資料匯入Elasticsearch中。所以這個地方關於Logstash的知識可以自行百度,不做過多介紹。

    3. Kibana安裝
    Kibana是個搭配Elasticsearch使用的視覺化平臺,非常有必要安裝學習。步驟同上,直接上圖了(還是以6.3.1為例):
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    下載後,以我的為例,我將包放在:D:\Kibana,然後解壓:
    這裡寫圖片描述
    然後進入到:D:\Kibana\kibana-6.3.1-windows-x86_64\bin
    在該目錄下進入cmd,執行:kibana.bat,如下:
    這裡寫圖片描述
    很好,現在開啟瀏覽器,輸入:localhost:5601
    這裡寫圖片描述
    這個Kibana視覺化平臺真的是個很舒服的工具,功能很多這裡只介紹了一個聯絡命令,執行命令的工具,你可以在這個地方聯絡ES語法,更多的可以到官方查閱手冊或者百度一些相關帖子看看。

    4. jdbc匯入Mysql資料
    下面就要使用Logstash-jdbc將Mysql資料庫的資料匯入進ES中,然後進行資料分析,統計,查詢等等需求。
    以我的安裝目錄為例,你在使用的時候注意:
    4.1.在Logstash安裝目錄的bin目錄下新建資料夾:mysql-lib(名字隨意,自己理解就好),我的Logstash包放在ES裡面,你的一定要注意位置。
    這裡寫圖片描述
    4.2.在該目錄下放置mysql-connector-java-5.1.46.jar包,目的:幫助mysql與其他平臺連線,這個包也是換了幾個版本,高版本不能使用,切記,很多地方要積分,我在這裡免費共享一下。
    mysql-connector-java-5.1.46.jar 密碼:zph6
    4.3.編寫匯入配置檔案,在D:\Elasticsearch\logstash-6.3.1\bin目錄下建立mysql.conf檔案,這個我剛做了個小測試,把示例貼出來:mysql.conf(名字自定義,注意配置的時候不要搞錯)

    
    #注意,注意:路徑資訊一定看清楚
    
    input {
    stdin {
    }
    jdbc {
      # mysql jdbc connection string to our backup databse
      jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/funcore"
      # the user we wish to excute our statement as
      jdbc_user => "root"
      jdbc_password => "root"
      # the path to our downloaded jdbc driver
      jdbc_driver_library => "D:\Elasticsearch\logstash-6.3.1\bin\mysql-lib\mysql-connector-java-5.1.46.jar"
      # the name of the driver class for mysql
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      statement_filepath => "D:\Elasticsearch\logstash-6.3.1\bin\jdbc.sql"
      schedule => "* * * * *"  #這是進行更新的定時任務計劃,有增量更新和全量更新
      type => "jdbc"
    }
    }
    filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
    }
    output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"] #ES的IP和埠
        index => "mysql6" #匯入後ES中的節點名稱,類似資料庫名稱
        document_id => "%{id}" 
    }
    stdout {
        codec => json_lines
    }
    }

    4.4.編寫sql匯入檔案,就是你的sql語句,要往ES中匯入哪些資料,在D:\Elasticsearch\logstash-6.3.1\bin目錄下建立jdbc.sql檔案,來個簡單的例子:jdbc.sql

    SELECT * FROM cms_news_es

    4.5.然後在bin目錄下進入cmd中,執行:logstash -f mysql.conf 等待匯入:
    先附上我的資料表吧,簡單的測試資料
    這裡寫圖片描述
    然後cmd中執行成功後,會看到如下介面:
    OK,到此已經完成了資料匯入。如果你不信的話,可以在Kibana中用命令查詢一下:
    這裡寫圖片描述

注意,注意:在這兒步驟執行完成以後,你會發現。cmd中還在一直執行,不斷的去匯入資料,這就是因為上面我們的定時計劃任務是每時每刻的。你可以修改定時任務,並且,這個是全量更新,總的來說,全量更新在第一次進行資料匯入的時候比較適用,後面就需要增量更新,只需要更新匯入新增加的或者改動的資料。這個地方又有一個問題出現了,如果資料庫中進行了資料刪除怎麼辦,額。。。。。。這個需要些額外的程式來實現增量更新,可以私下百度下。

4.6.這一步是在Kibana中配置節點,然後可以利用Kibana進行資料統計分析等。
這裡寫圖片描述
建立新的節點模式
這裡寫圖片描述
這裡顯示ES中已存在的節點列表
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
以上步驟完成後,可以來到這個地方檢視:
這裡寫圖片描述
你也可以利用視覺化檢視進行資料分析:
這裡寫圖片描述
因為資料比較少,所以生成的圖比較尷尬。。。。
這裡寫圖片描述

好了,到此,這個ELK基礎的搭建和使用完成了,當然還有很多沒有介紹到的地方,我在下面推薦幾個學習的社群或者部落格。有興趣的可以深入學習。


Elasticsearch官網:https://www.elastic.co

Elasticsearch中文社群:https://elasticsearch.cn

Elasticsearch專家-銘毅天下部落格:https://blog.csdn.net/laoyang360

Elasticsearch權威指南(中文版):https://es.xiaoleilu.com