這裏簡單介紹一下elk架構中的各個組件,關於elk的詳細介紹的請自行百度java
Elasticsearch是個開源分佈式搜索引擎,是整個ELK架構的核心mysql
Logstash能夠對數據進行收集、過濾,存儲到ELasticsearch中linux
Kibana 能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌sql
下面是各個組件在架構中起到的做用數據庫
elasticsearch對版本極其敏感,因此必定要注意elk全部組件務必保持版本一致!json
elk組件下載地址》》:https://www.elastic.co/cn/downloads/windows
若是是本機使用elasticsearch基本上解壓即用,只須要注意將elasticsearch配置成外網可訪問,方法以下:服務器
修改elasticsearch/config目錄下的elasticsearch.yml文件架構
network.host: 0.0.0.0
將network.host設置爲0.0.0.0便可開啓外網訪問,elasticsearch默認端口9200若是須要修改仍是在elasticsearch.yml文件中jvm
http.port: 9200
elasticsearch設置數據存儲路徑以及目錄存儲路徑
path.data: /path/to/data
path.logs: /path/to/logs
啓動方式:
windows下雙擊elasticsearch.bat啓動
linux下執行elasticsearch啓動 -d爲後臺啓動
整個elk架構中logstash須要配置的地方最多,首先logstash起到的做用是收集數據導入至elasticsearch中,收集的方法有不少中,關係型數據庫,非關係型數據庫亦或者文件這裏主要講一下關係型數據庫的導入
先貼出筆者的配置文件
input {
jdbc {
#設置數據庫url
jdbc_connection_string => "jdbc:mysql://localhost:3306/elk"
#帳號與密碼
jdbc_user => "root"
jdbc_password => "root"
#對應數據庫的jar包位置以及jdbc類型
jdbc_driver_library => "/root/mysql-connector-java-5.1.46.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
#每次啓動logstash是否從新加載數據
clean_run => false
#編碼格式
codec => plain { charset => "UTF-8"}
#是否使用user_column_value 記錄每次查詢的值,這個必須爲遞增的值,在sql中可使用:sql_last_value取出該值,若是不設置即默認該值爲上次執行sql的時間
use_column_value => false
#sql語句位置
statement_filepath => "/root/product_list.sql"
#記錄上一次執行時間的文件位置
last_run_metadata_path => "/root/product_last_run_time.txt"
#使用corn表達式定義執行週期
schedule => "*/30 * * * * *"
#多個配置文件時定義該次查詢集的名字,方便output、filter進行邏輯處理
type => "test"
#時區
jdbc_default_timezone => "Asia/Shanghai"
}
}
output {
#使用if判斷type
if [type] == "test"{
#輸出時的數據類型
stdout { codec => json_lines }
#輸出到elasticsearch
elasticsearch {
#elasticsearch地址
hosts => ["localhost:9200"]
#存儲到elasticsearch中的索引名
index => "test"
#存到elasticsearch中的類型名
document_type => "test"
#存到elasticsearch中的id
document_id => "%{id}"
#使用模板存儲到elasticsearch中
template_name => "test"
#模板位置
template => "/root/logstash-ik.json"
}
}
}
在數據量大的期初導入數據可能會由於數據量太大致使jvm內存溢出,修改logstash/config下jvm.options文件
-Xms1g
-Xmx1g
根據機器配置去修改jvm的最大內存至8g或者更多
若是這樣都不能解決內存溢出的問題,筆者這裏建議將logstash數據存儲從內存放到本地磁盤,這樣會犧牲速率但解決了期初數據量太大的問題
修改logstash/config下logstash.yml文件
配置以下:
queue.type: persisted
queue.max_bytes: 10240mb
將queue.type設置爲persisted,queue.max_bytes設置隊列的最大存儲數量
還有一些關於logstash性能上的優化
#logstash同時工做的線程數量,默認爲服務器cpu核數,通常在cpu核數的四倍及如下合理
pipeline.workers: 2
#logstash一次操做的數據量,能夠根據服務器內存來調整
pipeline.batch.size: 125
還有一些其餘的優化能夠自行參考logstash.yml文件
Kibana須要修改的配置很少,須要注意若是要開啓遠程訪問Kibana須要修改
KIBANA/config/kibaba.yml下的
server.host:"localhost"更改成
server.host: "0.0.0.0" 就能夠遠程訪問Kibana
關於elk搜索引擎的環境搭建以及配置就到這裏,要配置的地方也很少,基本上是開包即用,後面會介紹如何使用關於elasticsearch的使用以及講解如何使用elk作一個電商平臺的搜索引擎。