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

1.ELK簡介

 

  這裏簡單介紹一下elk架構中的各個組件,關於elk的詳細介紹的請自行百度java

  • Elasticsearch是個開源分佈式搜索引擎,是整個ELK架構的核心mysql

  • Logstash能夠對數據進行收集、過濾,存儲到ELasticsearch中linux

  • Kibana 能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌sql

  

  下面是各個組件在架構中起到的做用數據庫

 

 2.組件下載

elasticsearch對版本極其敏感,因此必定要注意elk全部組件務必保持版本一致!json

elk組件下載地址》》https://www.elastic.co/cn/downloads/windows

 

3.elasticsearch配置

若是是本機使用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爲後臺啓動

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

相關文章
相關標籤/搜索