ELK(elasticsearch+kibana+logstash)搜索引擎(一): 環境搭建


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做一個電商平台的搜索引擎。

3

 


免責聲明!

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



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