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
- 將ES安裝包解壓到user/local/elk/elastic-search(自定義);
- 修改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
- 啟動elasticsearch
ES的啟動需要切換非root權限的用戶,請配置人員自己創建用戶來啟動ES若啟動失敗,自行根據錯誤信息搜索解決方案
后台啟動執行命令:
nohup ./bin/elasticsearch & 或者 ./bin/elasticsearch -d
- 驗證啟動成功
瀏覽器訪問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是否有剛才導入的索引。