1.ELK簡介
這里簡單介紹一下elk架構中的各個組件,關於elk的詳細介紹的請自行百度
-
Elasticsearch是個開源分布式搜索引擎,是整個ELK架構的核心
-
Logstash可以對數據進行收集、過濾,存儲到ELasticsearch中
-
Kibana 可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志
下面是各個組件在架構中起到的作用
2.組件下載
elasticsearch對版本極其敏感,所以一定要注意elk所有組件務必保持版本一致!
elk組件下載地址》》:https://www.elastic.co/cn/downloads/
3.elasticsearch配置
如果是本機使用elasticsearch基本上解壓即用,只需要注意將elasticsearch配置成外網可訪問,方法如下:
修改elasticsearch/config目錄下的elasticsearch.yml文件
network.host: 0.0.0.0
將network.host設置為0.0.0.0即可開啟外網訪問,elasticsearch默認端口9200如果需要修改還是在elasticsearch.yml文件中
http.port: 9200
elasticsearch設置數據存儲路徑以及目錄存儲路徑
path.data: /path/to/data
path.logs: /path/to/logs
啟動方式:
windows下雙擊elasticsearch.bat啟動
linux下執行elasticsearch啟動 -d為后台啟動
4.logstash配置
整個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文件
5.Kibana配置
Kibana需要修改的配置不多,需要注意如果要開啟遠程訪問Kibana需要修改
KIBANA/config/kibaba.yml下的
server.host:"localhost"更改為
server.host: "0.0.0.0" 就可以遠程訪問Kibana
關於elk搜索引擎的環境搭建以及配置就到這里,要配置的地方也不多,基本上是開包即用,后面會介紹如何使用關於elasticsearch的使用以及講解如何使用elk做一個電商平台的搜索引擎。