Elasticsearch+logstash安裝部署


ELK安裝部署

ELK安裝部署

ELK是elastic公司提供的一套完整的收集日志並分析展示的產品,分別表示Elasticsearch、Logstash和kibana。

Elasticsearch簡稱ES,是一個建立在全文搜索引擎Apache Lucene基礎上的實時的分布式搜索及分析引擎。
Logstash是一個具有實時傳輸能力的數據收集引擎,由三個組件構成,其中input組件負責收集數據,常用的數據源包括文件類型、數據庫類型;filter組件是用來用來過濾數據;output組件是Logstash的輸出組件,可以輸出到指定的文件,指導的網絡端口或者輸出到ES。
Kibana為Elasticsearch提供了一個分析和可視化的web平台,通過Kibana可以對Elasticsearch的索 據進行查詢,聚合,刪除等各種操作。

使用ELK的目的

受理項目為了提高統計功能的效率,采用Logstash將數據庫中的業務數據導入到ES中,通過ES提供的方法以及java Api來完成統計,借助ES搜索引擎的特性來提高統計的效率。

安裝包版本要求

ELK版本 7.8,JDK要求1.8以上(Linux系統為例):

目前所用版本:elasticsearch-7.8.0 、logstash-7.8.0.tar、jdk-8u151-linux-x64

Elasticsearch安裝配置啟動

安裝jdk

自行搜索安裝以及配置環境變量方法,本文不做闡述。

安裝ES
  1. 將ES安裝包解壓到user/local/elk/elastic-search(自定義);
  2. 修改ES配置文件:/config/elasticsearch.yml
cluster.name: web-application
node.name: node-1
# 啟動輸入密碼訪問
xpack.security.transport.ssl.enabled: true
xpack.security.enabled: true
# 設置外網可以訪問
network.host: 0.0.0.0
# 啟動輸入密碼訪問
xpack.security.transport.ssl.enabled: true
xpack.security.enabled: true
# 設置外網可以訪問
network.host: 0.0.0.0

  1. 啟動elasticsearch
    ES的啟動需要切換非root權限的用戶,請配置人員自己創建用戶來啟動ES若啟動失敗,自行根據錯誤信息搜索解決方案
    后台啟動執行命令:

nohup ./bin/elasticsearch & 或者 ./bin/elasticsearch -d

  1. 驗證啟動成功
    瀏覽器訪問http://localhost:9200 (localhost為服務器地址)

Logstash安裝配置啟動

將Logstash安裝包解壓到user/local/elk/logstash (自定義)
配置文件見第二大節詳解
啟動Logstash(若啟動失敗,自行根據異常信息搜索解決方案)

后台啟動執行命令:

nohup ./bin/logstash -f config/jdbc_oracle.conf &

Logstash配置文件詳解

本文章通過Logstash將數據庫中的業務數據導入到elasticsearch中,所以Logstash數據來源為數據庫,輸出為我們安裝好的ES。

SQL文件配置

將需要的SQL文件放在自定義路徑下(/home/A1/logstash-7.8.0/config),可配置多個SQL作為輸出。

Oracle依賴包配置

Oracle依賴包ojdbc6.jar放在lib文件夾中,絕對路徑要寫到下面的啟動文件中。

配置啟動文件

ogstash啟動時候需要指定配置文件,在config文件夾下面新建配置文件elasticsearch_sync.conf
配置文件內容如下:

# 輸入
input {
  jdbc {
    jdbc_driver_library => "/home/mysql-connector-java-5.1.10.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
    jdbc_user => "root"
    jdbc_password => "123456"
    # 設置監聽間隔 各字段含義(從左至右)分、時、天、月、年,全為*默認含義為每分鍾都更新
    schedule => "* * * * *"
    # 查詢sql,可以通過更新字段來區分那些是需要更新的
    statement_filepath => "/home/logstash-7.8.0/config/complete.sql"
    # 記錄最后的運行時間,注意目錄需要創建好
    last_run_metadata_path => "/home/logstash-7.8.0/config/ logstash_jdbc_last_run_person"
    use_column_value => false
    tracking_column => "update_time"
    # 分頁處理數據
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
    # 類型,對象后面輸出的類型
    type => "complete_corporate"
  }
}
# 過濾
filter {
  # 用ruby解決相差8小時的時區問題, update_time必須要通過statement_filepath配置的sql可以查詢出來
  ruby { 
      code => "event.set('update_time', event.get('update_time').time.localtime + 8*60*60)"
  }
}
# 輸出
output {
  if[type] == "complete_corporate"{
    elasticsearch {
      hosts => "localhost:9200"
      user => elastic                                                                                                                                                                                         
      password => elastic
      # 索引名
      index => "complete_corporate_index"
      # 文檔名
      document_type => "complete_corporate"
      # 文檔ID(主鍵)
      document_id => "%{body_card_no}" 
    }
  }
  # 將數據輸出到控制台
  stdout {
      codec => json_lines
  }
}

啟動Logstash

執行命令后台啟動:

nohup  ./bin/logstash -f config/elasticsearch_sync.conf &

驗證

在瀏覽器輸入http://localhost:9200/_cat/indices?v
,查看ES是否有剛才導入的索引。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM