日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CentOS7.5搭建ELK6.2.4集群与简单测试

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CentOS7.5搭建ELK6.2.4集群与简单测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 簡介

Elasticsearch是一個高度可擴展的開源全文搜索和分析引擎。它允許您快速,近實時地存儲,搜索和分析大量數據。它通常用作支持具有復雜搜索功能和需求的應用程序的底層引擎/技術。

下載地址:https://www.elastic.co/cn/downloads? ? ? ?版本:elasticsearch-6.2.4.tar.gz??? ?logstash-6.2.4.tar.gz? ??kibana-6.2.4-x86_64.rpm? ?filebeat-6.2.4-x86_64.rpm

1 基本概念

接近實時(NRT)

  • Elasticsearch 是一個接近實時的搜索平臺。這意味著,從索引一個文檔直到這個文檔能夠被搜索到有一個很小的延遲(通常是 1 秒)。

集群(cluster)

  • 代表一個集群,集群中有多個節點(node),其中有一個為主節點,這個主節點是可以通過選舉產生的,主從節點是對于集群內部來說的。es的一個概念就是去中心化,字面上理解就是無中心節點,這是對于集群外部來說的,因為從外部來看es集群,在邏輯上是個整體,你與任何一個節點的通信和與整個es集群通信是等價的。

索引(index)

  • ElasticSearch將它的數據存儲在一個或多個索引(index)中。用SQL領域的術語來類比,索引就像數據庫,可以向索引寫入文檔或者從索引中讀取文檔,并通過ElasticSearch內部使用Lucene將數據寫入索引或從索引中檢索數據。

文檔(document)

  • 文檔(document)是ElasticSearch中的主要實體。對所有使用ElasticSearch的案例來說,他們最終都可以歸結為對文檔的搜索。文檔由字段構成。

映射(mapping)

  • 所有文檔寫進索引之前都會先進行分析,如何將輸入的文本分割為詞條、哪些詞條又會被過濾,這種行為叫做映射(mapping)。一般由用戶自己定義規則。

類型(type)

  • 每個文檔都有與之對應的類型(type)定義。這允許用戶在一個索引中存儲多種文檔類型,并為不同文檔提供類型提供不同的映射。

分片(shards)

  • 代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節點上。構成分布式搜索。分片的數量只能在索引創建前指定,并且索引創建后不能更改。5.X默認不能通過配置文件定義分片

副本(replicas)

  • 代表索引副本,es可以設置多個索引的副本,副本的作用一是提高系統的容錯性,當個某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。

數據恢復(recovery)

  • 代表數據恢復或叫數據重新分布,es在有節點加入或退出時會根據機器的負載對索引分片進行重新分配,掛掉的節點重新啟動時也會進行數據恢復。
  • GET /_cat/health?v?? #可以看到集群狀態

數據源(River)

  • 代表es的一個數據源,也是其它存儲方式(如:數據庫)同步數據到es的一個方法。它是以插件方式存在的一個es服務,通過讀取river中的數據并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的,river這個功能將會在后面的文件中重點說到。

網關(gateway)

  • 代表es索引的持久化存儲方式,es默認是先把索引存放到內存中,當內存滿了時再持久化到硬盤。當這個es集群關閉再重新啟動時就會從gateway中讀取索引數據。es支持多種類型的gateway,有本地文件系統(默認),分布式文件系統,Hadoop的HDFS和amazon的s3云存儲服務。

自動發現(discovery.zen)

  • 代表es的自動發現節點機制,es是一個基于p2p的系統,它先通過廣播尋找存在的節點,再通過多播協議來進行節點之間的通信,同時也支持點對點的交互。
  • 5.X關閉廣播,需要自定義

通信(Transport)

  • 代表es內部節點或集群與客戶端的交互方式,默認內部是使用tcp協議進行交互,同時它支持http協議(json格式)、thrift、servlet、memcached、zeroMQ等的傳輸協議(通過插件方式集成)。
  • 節點間通信端口默認:9300-9400

分片和復制(shards and replicas)

  一個索引可以存儲超出單個結點硬件限制的大量數據。比如,一個具有10億文檔的索引占據1TB的磁盤空間,而任一節點可能沒有這樣大的磁盤空間來存儲或者單個節點處理搜索請求,響應會太慢。

為了解決這個問題,Elasticsearch提供了將索引劃分成多片的能力,這些片叫做分片。當你創建一個索引的時候,你可以指定你想要的分片的數量。每個分片本身也是一個功能完善并且獨立的“索引”,這個“索引” 可以被放置到集群中的任何節點上。

分片之所以重要,主要有兩方面的原因:

  • 允許你水平分割/擴展你的內容容量
  • 允許你在分片(位于多個節點上)之上進行分布式的、并行的操作,進而提高性能/吞吐量?
    至于一個分片怎樣分布,它的文檔怎樣聚合回搜索請求,是完全由Elasticsearch管理的,對于作為用戶的你來說,這些都是透明的。

在一個網絡/云的環境里,失敗隨時都可能發生。在某個分片/節點因為某些原因處于離線狀態或者消失的情況下,故障轉移機制是非常有用且強烈推薦的。為此, Elasticsearch允許你創建分片的一份或多份拷貝,這些拷貝叫做復制分片,或者直接叫復制。

復制之所以重要,有兩個主要原因:

  • 在分片/節點失敗的情況下,復制提供了高可用性。復制分片不與原/主要分片置于同一節點上是非常重要的。因為搜索可以在所有的復制上并行運行,復制可以擴展你的搜索量/吞吐量
  • 總之,每個索引可以被分成多個分片。一個索引也可以被復制0次(即沒有復制) 或多次。一旦復制了,每個索引就有了主分片(作為復制源的分片)和復制分片(主分片的拷貝)。
  • 分片和復制的數量可以在索引創建的時候指定。在索引創建之后,你可以在任何時候動態地改變復制的數量,但是你不能再改變分片的數量。
  • 5.X默認5:1?? 5個主分片,1個復制分片

默認情況下,Elasticsearch中的每個索引分配5個主分片和1個復制。這意味著,如果你的集群中至少有兩個節點,你的索引將會有5個主分片和另外5個復制分片(1個完全拷貝),這樣每個索引總共就有10個分片。

2elasticsearch . yml 明細

# ======================== Elasticsearch Configuration ========================= # NOTE: Elasticsearch comes with reasonable defaults for most settings. # Before you set out to tweak and tune the configuration, make sure you # understand what are you trying to accomplish and the consequences. # # The primary way of configuring a node is via this file. This template lists # the most important settings you may want to configure for a production cluster. # # Please consult the documentation for further information on configuration options: # https://www.elastic.co/guide/en/elasticsearch/reference/index.html # # ---------------------------------- Cluster ----------------------------------- # # Use a descriptive name for your cluster: #cluster.name: my-application # # ------------------------------------ Node ------------------------------------ # # Use a descriptive name for the node: # #node.name: node-1 # # Add custom attributes to the node: # #node.attr.rack: r1 # # ----------------------------------- Paths ------------------------------------ # # Path to directory where to store the data (separate multiple locations by comma): # #path.data: /path/to/data # # Path to log files: # #path.logs: /path/to/logs # # ----------------------------------- Memory ----------------------------------- # # Lock the memory on startup: # #bootstrap.memory_lock: true # # Make sure that the heap size is set to about half the memory available # on the system and that the owner of the process is allowed to use this # limit. # # Elasticsearch performs poorly when the system is swapping the memory. # # ---------------------------------- Network ----------------------------------- # # Set the bind address to a specific IP (IPv4 or IPv6): # #network.host: 192.168.0.1 # # Set a custom port for HTTP: # #http.port: 9200 # # For more information, consult the network module documentation. # # --------------------------------- Discovery ---------------------------------- # # Pass an initial list of hosts to perform discovery when new node is started: # The default list of hosts is ["127.0.0.1", "[::1]"] # #discovery.zen.ping.unicast.hosts: ["host1", "host2"] # # Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1): # #discovery.zen.minimum_master_nodes: # # For more information, consult the zen discovery module documentation. # # ---------------------------------- Gateway ----------------------------------- # # Block initial recovery after a full cluster restart until N nodes are started: # #gateway.recover_after_nodes: 3 # # For more information, consult the gateway module documentation. # # ---------------------------------- Various ----------------------------------- # # Require explicit names when deleting indices: # #action.destructive_requires_name: true

二 安裝

1 集群部署

系統節點名稱IP

ES

Logstash

Filebeat

kibana

CentOS7.5node21192.168.100.21?√?√?√
CentOS7.5node22192.168.100.22??√?
CentOS7.5node23192.168.100.23???

Elasticsearch的目錄結構

文件夾作用
bin運行ElasticSearch實例和管理插件的一些腳本
config放的是配置文件:elasticsearch.yml,jvm.options,log4j2.properties
libElasticSearch使用的庫
logs日志的文件夾
modules?
plugins?

config/elasticsearch.yml 主配置文件

config/jvm.options jvm參數配置文件

cofnig/log4j2.properties 日志配置文件

2?elasticsearch安裝

2.1? 準備環境

1)jdk安裝:官方建議java -version 1.8_131以上,我這里安裝的jdk1.8_171

2)出于系統安全考慮,ElasticSearch不允許以root用戶模式運行,我這里已創建用戶admin

2.2? 解壓安裝

創建文件夾elk,解壓到elk文件

[admin@node21 software]$ tar zxvf elasticsearch-6.2.4.tar.gz -C /opt/module/elk

2.3?集群配置

cluster.name: myescluster #自定義修改一個集群名稱 node.name: node21 #節點名稱 network.host: 192.168.100.21 #節點IP(或者解析的主機名) bootstrap.memory_lock: true #設置elasticsearch的進程鎖住內存 discovery.zen.ping.unicast.hosts: ["192.168.100.21", "192.168.100.22","192.168.100.23"] #集群個節點IP地址 discovery.zen.minimum_master_nodes: 2 #為了避免腦裂,集群節點數最少為 半數+1

2.4? JVM配置

vi elasticsearch/config/jvm.options -Xms1g # JVM最大、最小使用內存-Xmx1g

2.5? 分發es安裝包

[admin@node21 elk]$ scp -r elasticsearch-6.2.4 admin@node22:/opt/module/elk [admin@node21 elk]$ scp -r elasticsearch-6.2.4 admin@node23:/opt/module/elk 修改node22,node23節點配置文件elasticsearch.yml中的主機名和ip

2.6? 啟動集群

前臺啟動:進入到elasticsearch-6.2.4安裝目錄的bin目錄下

[admin@node21 bin]$?./elasticsearch

此時會有一個初始化的過程,內容如下

?View Code

后臺啟動?

nohup./bin/elasticsearch& 或者 /bin/elasticsearch -d

?頁面查看,默認端口 9200

http://node21:9200/

3? 插件安裝

1?head插件

下載地址:https://github.com/mobz/elasticsearch-head?

介紹:head插件是ES的一個可視化插件,類似于navicat和mysql的關系。head插件是一個用來瀏覽、與ES數據進行交互的web前端展示插件,是一個用來監視ES狀態的客戶端插件。

由于head插件本質上還是一個nodejs的工程,因此需要安裝node,使用npm來安裝依賴的包。(npm其實是Node.js的包管理工具,可以理解為maven)

(1)下載NodeJS

1 下載地址:https://nodejs.org/en/download/

2 安裝nodejs

由于下載下來的是xz文件,node-v8.11.2-linux-x64.tar.xz,Linux上大部分情況下不能直接解壓tar.xz的文件。需要用xz -d xxx.tar.xz 將 xxx.tar.xz解壓成 xxx.tar 然后,再用 tar xvf xxx.tar來解包(報錯先安裝xz,執行yum -y install?xz)

[admin@node21 software]$ xz -d node-v8.11.2-linux-x64.tar.xz [admin@node21 software]$ tar xvf node-v8.11.2-linux-x64.tar -C /opt/module/elk

配置環境變量 vi? /etc/profile

export NODE_HOME=/opt/module/elk/node-v8.11.2-linux-x64 export PATH=$NODE_HOME/bin:$PATH

source /etc/profile 環境變量生效

3?下載head插件頭

[admin@node21 elk]$ wget https://github.com/mobz/elasticsearch-head/archive/master.zip

解壓,會出現一個elasticsearch-head-master文件

[admin@node21 elk]$ unzip master.zip

4?使用npm安裝grunt

設置npm的代理鏡像,由于國外的下載較慢,所以設置為國內的,進入到elasticsearch-head-master內執行以下命令

?[admin@node21 elasticsearch-head-master]$ npm config set registry https://registry.npm.taobao.org

執行npm install,grunt是基于Node.js的項目構建工具,可以進行打包壓縮,測試,執行等等的工作,head插件就是通過grunt啟動。?

[admin@node21 elasticsearch-head-master]$ npm install -g grunt [admin@node21 elasticsearch-head-master]$ npm install

版本確認:

[admin@node21 software]$ node -v v8.11.2 [admin@node21 software]$ npm -v 6.1.0 [admin@node21 software]$ grunt -version grunt-cli v1.2.0 grunt v1.0.1

5 修改Head源碼

由于head的代碼直接執行有很多限制,比如無法跨機器訪問。因此需要用戶修改兩個地方:

?1)修改 elasticsearch-head-master/Gruntfile.js 文件,紅色部分為添加的,原來沒有,設置hostname屬性,設置為0.0.0.0

[admin@node21 elasticsearch-head-master]$ vi Gruntfile.js connect: {server: {options: {hostname: '0.0.0.0',port: 9100,base: '.',keepalive: true}}}

2)修改跨域請求配置

不修改連接的狀態如下,修改之后才能連上,這樣head插件才可以訪問elasticsearch。

修改文件為elasticsearch-6.2.4/config/elasticsearch.yml,添加如下兩行

http.cors.enabled: true http.cors.allow-origin: "*"

?上述連接需要手動更改http://localhost:9200/中的localhost為自己的ip才能連接得上。這里修改配置文件,改為自己的ip。修改head的連接地址,進入到elasticsearch-head-master/_site里,修改app.js(提示:指定內容查找? 如果是用vi打開文件后,在命令行下輸入“/關鍵字”;?如果是在沒有打開文件的前提就用"cat 文件名 | grep "關鍵字""。)

[admin@node21 _site]$ vi app.js this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200"; 把localhost修改成你es的服務器地址,如: this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.100.21:9200";

6 啟動elasticsearch

1、啟動ES(因為上述配置修改了elasticsearch-yml,重啟才能生效。)

如果已經啟動,先停止(/elasticsearch-6.2.4/bin)

[admin@node21 bin]$?./elasticsearch

2、啟動head

[admin@node21 elasticsearch-head-master]$ grunt server &

?頁面訪問,默認端口9100,綠色為健康,黃色為警告

?http://192.168.100.21:9100/

3、如果出現端口被占用,可以用如下命令查找被占用端口,然后在kill掉。?netstat -nap | grep 9100

2?bigdesk插件

1. 下載解壓,出現一個bigdesk-master的文件

[admin@node21 elk]$ wget https://github.com/hlstudio/bigdesk/archive/master.zip [admin@node21 elk]$ unzip master.zip?

2. 配置elasticsearch.yml
因為es5.x后不支持內嵌plugin,所以把下面參數打開,安裝head插件也類似

添加:
http.cors.enabled: true
http.cors.allow-origin: "*"

3. 安裝httpd服務
我這里直接通過httpd服務跑bigdesk插件

yum install -y httpd
systemctl start httpd
systemctl status httpd

4. 把bigdesk放到httpd服務目錄里
httpd服務目錄默認為:/var/www/html

我們把下載好的bigdesk-master.zip 解壓,然后放到/var/www/html即可

[admin@node21 elk]$ sudo mv bigdesk-master/ /var/www/html/

5. 訪問bigdesk
瀏覽器打開?http://192.168.100.21/bigdesk-master/_site/#nodes?,點擊右側連接即可訪問!

3? IK分詞器插件

安裝文檔參考:https://github.com/medcl/elasticsearch-analysis-ik/blob/master/README.md

1.下載ik分詞器

[admin@node21 elasticsearch-6.2.4]$ ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip

2. 重啟elasticsearch

3. 測試IK分詞器

創建索引

[admin@node21 bin]$ curl -XPUT http://192.168.100.21:9200/index

創建映射

curl -XPOST http://192.168.100.21:9200/index/fulltext/_mapping -H 'Content-Type:application/json' -d' {"properties": {"content": {"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_max_word"}}}'

索引文檔

curl -XPOST http://192.168.100.21:9200/index/fulltext/1 -H 'Content-Type:application/json' -d' {"content":"美國留給伊拉克的是個爛攤子嗎"}' curl -XPOST http://192.168.100.21:9200/index/fulltext/2 -H 'Content-Type:application/json' -d' {"content":"公安部:各地校車將享最高路權"}'curl -XPOST http://192.168.100.21:9200/index/fulltext/3 -H 'Content-Type:application/json' -d' {"content":"中韓漁警沖突調查:韓警平均每天扣1艘中國漁船"}'curl -XPOST http://192.168.100.21:9200/index/fulltext/4 -H 'Content-Type:application/json' -d' {"content":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}'

?高亮查詢

curl -XPOST http://192.168.100.21:9200/index/fulltext/_search -H 'Content-Type:application/json' -d' {"query" : { "match" : { "content" : "中國" }},"highlight" : {"pre_tags" : ["<tag1>", "<tag2>"],"post_tags" : ["</tag1>", "</tag2>"],"fields" : {"content" : {}}} }'

此時會顯示兩條數據,或者頁面查詢context帶有中國

Dictionary Configuration

IKAnalyzer.cfg.xml?can be located at?{conf}/analysis-ik/config/IKAnalyzer.cfg.xml?or?{plugins}/elasticsearch-analysis-ik-*/config/IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties><comment>IK Analyzer 擴展配置</comment><!--用戶可以在這里配置自己的擴展字典 --><entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry><!--用戶可以在這里配置自己的擴展停止詞字典--><entry key="ext_stopwords">custom/ext_stopword.dic</entry><!--用戶可以在這里配置遠程擴展字典 --><entry key="remote_ext_dict">location</entry><!--用戶可以在這里配置遠程擴展停止詞字典--><entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry> </properties>

熱更新 IK 分詞使用方法

目前該插件支持熱更新 IK 分詞,通過上文在 IK 配置文件中提到的如下配置

<!--用戶可以在這里配置遠程擴展字典 --><entry key="remote_ext_dict">location</entry><!--用戶可以在這里配置遠程擴展停止詞字典--><entry key="remote_ext_stopwords">location</entry>

其中?location?是指一個 url,比如?http://yoursite.com/getCustomDict,該請求只需滿足以下兩點即可完成分詞熱更新。

  • 該 http 請求需要返回兩個頭部(header),一個是?Last-Modified,一個是?ETag,這兩者都是字符串類型,只要有一個發生變化,該插件就會去抓取新的分詞進而更新詞庫。

  • 該 http 請求返回的內容格式是一行一個分詞,換行符用?\n?即可。

  • 滿足上面兩點要求就可以實現熱更新分詞了,不需要重啟 ES 實例。

    可以將需自動更新的熱詞放在一個 UTF-8 編碼的 .txt 文件里,放在 nginx 或其他簡易 http server 下,當 .txt 文件修改時,http server 會在客戶端請求該文件時自動返回相應的 Last-Modified 和 ETag。可以另外做一個工具來從業務系統提取相關詞匯,并更新這個 .txt 文件。

    4? marvel插件

    Marvel能夠讓你通過Kibana非常容易的監視ES。你能實時的觀察集群(your cluster)的健康和表現也能分析過去的集群、索引和節點指標。

    Marvel由兩部分組成:Marvel代理:在你的集群中安裝在每一個節點上;Marvel應用:安裝在Kibana。

    ?

    三? filebeat安裝

    官方文檔:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-getting-started.html

    Filebeat入門

    • 第1步:安裝Filebeat
    • 第2步:配置Filebeat
    • 步驟3:配置Filebeat以使用Logstash
    • 第4步:在Elasticsearch中加載索引模板
    • 第5步:設置Kibana儀表板
    • 第6步:啟動Filebeat
    • 第7步:查看示例Kibana儀表板

    3.1 下載安裝

    [admin@node21 elk]$ curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-x86_64.rpm [admin@node21 elk]$ sudo rpm -vi filebeat-6.2.4-x86_64.rpm

    3.2?編輯filebeat.yml

    rpm安裝的filebeat,配置文件在/etc/filebeat/filebeat.yml,這里做默認日志的測試,簡單的修改如下

    filebeat.prospectors: - type: logenabled: truepaths:- /var/log/*.log

    3.3?運行啟動守護進程?

    sudo ./filebeat -e -c filebeat.yml

    四? logstash安裝

    Logstash參考

    • Logstash參考:??主?6.x的?6.3?6.2(??當前)?6.1?6?5.6?5.5?5.4?5.3?5.2?5.1?5?2.4?2.3?2.2?2.1?2.0?1.5?
    • Logstash介紹
    • Logstash入門
    • Logstash如何工作
    • 設置并運行Logstash
    • 設置X-Pack
    • 打破變化
    • X-Pack突破性改變
    • 升級Logstash
    • 配置Logstash
    • 管理Logstash
    • 使用Logstash模塊
    • 使用Filebeat模塊
    • 數據彈性
    • 轉換數據
    • 部署和擴展Logstash
    • 性能調整
    • 監視Logstash
    • 監視API
    • 使用插件
    • 輸入插件
    • 輸出插件
    • 過濾插件
    • 編解碼器插件
    • 為Logstash做出貢獻
    • 專業術語
    • 發行說明
    • X-Pack發行說明

    4.1 下載解壓縮

    [admin@node21 elk]$ wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz [admin@node21 elk]$ tar zxvf logstash-6.2.4.tar.gz

    4.2 創建配置文件

    一個Logstash的pipeline由3部分組成:input, filter, output。

    [admin@node21 datas]$ pwd /opt/datas [admin@node21 datas]$ vi logstash-simple.conf

    logstash-simple.conf內容如下

    input { stdin { } } output {elasticsearch { hosts => ["192.168.100.21:9200"] }stdout { codec => rubydebug } }

    4.3 運行logstash

    [admin@node21 bin]$ pwd /opt/module/elk/logstash-6.2.4/bin [admin@node21 bin]$ ./logstash -f /opt/datas/logstash-simple.conf

    這個pipeline例子從標準輸入獲取數據?stdin,并把結構化數據輸出到標準輸出stdout。在啟動后,看到日志Pipeline main started后,在終端中輸入hello world,可以在終端中看到對應輸出:

    View Code

    在企業架構中,一般Logstash的input是beat,output是ES,需要對應的插件。

    安裝beat input插件:

    構建離線插件包:?bin/logstash-plugin prepare-offline-pack logstash-input-beats

    安裝離線插件包:?bin/logstash-plugin install file:///path/to/logstash-offline-plugins-6.2.4.zip

    [admin@node21 bin]$ ./logstash-plugin prepare-offline-pack logstash-input-beats Offline package created at: /opt/module/elk/logstash-6.2.4/logstash-offline-plugins-6.2.4.zip You can install it with this command `bin/logstash-plugin install file:///opt/module/elk/logstash-6.2.4/logstash-offline-plugins-6.2.4.zip` [admin@node21 bin]$ ./logstash-plugin install file:///opt/module/elk/logstash-6.2.4/logstash-offline-plugins-6.2.4.zip

    配置 5044 端口作為 Filebeat 的連接和創建 ES 索引。新建?logstash.conf?配置文件,

    input {beats {port => 5044} }output {elasticsearch {hosts => "192.168.100.21:9200"manage_template => falseindex => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"document_type => "%{[@metadata][type]}"} }

    Logstash 使用該配置使用 ES 的索引,和 Filebeat 做的事情是一樣的,不過擁有了額外的緩存以及強大豐富的插件庫。

    啟動 logstash :

    ./bin/logstash -f config/logstash.conf &

    五? kibana安裝

    Kibana用戶指南

    • Kibana參考:??主?6.x的?6.3?6.2(??當前)?6.1?6?5.6?5.5?5.4?5.3?5.2?5.1?5?4.6?4.5?4.4?4.3?4.2?4.1?4?3.0?
    • 介紹
    • 設置Kibana
    • 設置X-Pack
    • 打破變化
    • X-Pack突破性改變
    • 入門
    • 發現
    • 想象
    • 儀表板
    • 天聯
    • 機器學習
    • APM
    • 圖形
    • 開發工具
    • 監控
    • 管理
    • 來自Kibana的報道
    • Kibana插件
    • 貢獻Kibana
    • 限制
    • Kibana發行說明
    • X-Pack發行說明

    Kibana是一個開源的分析和可視化平臺,旨在與 Elasticsearch 合作。Kibana 提供搜索、查看和與存儲在 Elasticsearch 索引中的數據進行交互的功能。開發者或運維人員可以輕松地執行高級數據分析,并在各種圖表、表格和地圖中可視化數據

    5.1 下載解壓縮

    [admin@node21 elk]$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz [admin@node21 elk]$ tar -xzf kibana-6.2.4-linux-x86_64.tar.gz

    5.2 修改config/kibana.yml

    [admin@node21 elk]$ vi kibana-6.2.4-linux-x86_64/config/kibana.yml #server.host: "localhost" server.host: "192.168.100.21" #設置自己機器的IP #elasticsearch.url: "http://localhost:9200" elasticsearch.url: "http://192.168.100.21:9200"

    5.3 啟動Kibana

    進入kibana/bin/目錄

    [admin@node21 bin]$ ./kibana &

    頁面訪問:192.168.100.21:5601

    六? 安裝故障問題

    1?bootstrap? checks? failed

    ERROR: bootstrap checks failed max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] max number of threads [3812] for user [admin] is too low, increase to at least [4096]

    解決辦法:

    1)針對?max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

    切換root用戶,修改/etc/security/limits.conf文件,配置系統搜索最大文件數,添加如下兩行,此文件修改后需要重新登錄用戶,才會生效,驗證是否設置成功???ulimit -Hn

    * hard nofile 65536 * soft nofile 65536

    2)針對??max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    切換root用戶,修改/etc/sysctl.conf 文件,添加如下信息,設置后保存退出,執行右邊命令??sysctl -p

    vm.max_map_count=262144

    3)針對?max number of threads [3812] for user [admin] is too low, increase to at least [4096]

    修改 vi /etc/security/limits.d/20-nproc.conf,修改用戶最大線程數,

    * soft nproc 4096 root soft nproc unlimited

    同時修改/etc/security/limits.conf,添加如下兩行,修改完了驗證?ulimit -u

    * soft nproc 4096 * hard nproc 4096

    2? head頭安裝警告問題

    npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expression npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! phantomjs-prebuilt@2.1.16 install: `node install.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the phantomjs-prebuilt@2.1.16 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/admin/.npm/_logs/2018-06-06T11_41_22_784Z-debug.log

    第一個警告:解決方式:打開elasticsearch-head目錄下的package.json文件,找到license位置,修改為上面這個網站上存在Identifier,我的修改如下,將Apache內容修改為Apache-2.0。

    {"name": "elasticsearch-head","version": "0.0.0","description": "Front end for an elasticsearch cluster","main": "_site/index.html","directories": {"test": "test"},"scripts": {"start": "grunt server","test": "grunt jasmine","proxy": "node proxy/index.js"},"repository": {"type": "git","url": "https://github.com/mobz/elasticsearch-head.git"},"author": "","license": "Apache-2.0","gitHead": "0c2ac0b5723b493e4454baa7398f386ecb829412","readmeFilename": "README.textile","devDependencies": {"grunt": "1.0.1","grunt-contrib-concat": "1.0.1","grunt-contrib-watch": "1.0.0","grunt-contrib-connect": "1.0.2","grunt-contrib-copy": "1.0.0","grunt-contrib-clean": "1.0.0","grunt-contrib-jasmine": "1.0.3","karma": "1.3.0","grunt-karma": "2.0.0","http-proxy": "1.16.x"}

    然后重新執行npm install ,該提示已消除。

    3?head安裝后啟動問題

    [2018-06-06T08:24:28,869][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node21] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: property [elasticsearch.version] is missing for plugin [head]at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.4.jar:6.2.4]at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.4.jar:6.2.4]at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.4.jar:6.2.4] Caused by: java.lang.IllegalArgumentException: property [elasticsearch.version] is missing for plugin [head]at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:226) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:184) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.bootstrap.Spawner.spawnNativePluginControllers(Spawner.java:75) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:167) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.4.jar:6.2.4]at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.4.jar:6.2.4]... 6 more

    解決分析:elasticsearch-head自5.1之后不支持直接放在elasticsearch的 plugins、modules 目錄下,也不能使用 elasticsearch-plugin install。

    安裝 elasticsearch-head

  • 修改?elasticsearch/config/elasticsearch.yml,添加如下內容

  • http.cors.enabled: true http.cors.allow-origin: "*"
    • 下載 elasticsearch-head 或者 git clone 到隨便一個文件夾

    • 安裝nodejs

    • cd /path/to/elasticsearch-head

    • npm install -g grunt-cli

    • npm install

    • grunt server

    • http://localhost:9100/

    4? 設置鎖內存故障

    1)elasticsearch官網建議生產環境需要設置bootstrap.memory_lock: true,導致Elasticsearch啟動失敗問題

    [admin@node21 bin]$ ./elasticsearch [2018-06-07T23:50:12,370][WARN ][o.e.b.JNANatives ] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory [2018-06-07T23:50:12,374][WARN ][o.e.b.JNANatives ] This can result in part of the JVM being swapped out. [2018-06-07T23:50:12,374][WARN ][o.e.b.JNANatives ] Increase RLIMIT_MEMLOCK, soft limit: 65536, hard limit: 65536 [2018-06-07T23:50:12,374][WARN ][o.e.b.JNANatives ] These can be adjusted by modifying /etc/security/limits.conf, for example: # allow user 'admin' mlockalladmin soft memlock unlimitedadmin hard memlock unlimited [2018-06-07T23:50:12,375][WARN ][o.e.b.JNANatives ] If you are logged in interactively, you will have to re-login for the new limits to take effect. [2018-06-07T23:50:12,875][INFO ][o.e.n.Node ] [node21] initializing ... [2018-06-07T23:50:13,033][INFO ][o.e.e.NodeEnvironment ] [node21] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [90.7gb], net total_space [97.6gb], types [rootfs][2018-06-07T23:50:13,034][INFO ][o.e.e.NodeEnvironment ] [node21] heap size [1015.6mb], compressed ordinary object pointers [true] [2018-06-07T23:50:13,036][INFO ][o.e.n.Node ] [node21] node name [node21], node ID [sM6bNfHmT7CknreP2b9RHw] [2018-06-07T23:50:13,037][INFO ][o.e.n.Node ] [node21] version[6.2.4], pid[2164], build[ccec39f/2018-04-12T20:37:28.497551Z], OS[Linux/3.10.0-862.el7.x86 _64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_171/25.171-b11][2018-06-07T23:50:13,037][INFO ][o.e.n.Node ] [node21] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX :+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch.OUkgncgb, -XX:+HeapDumpOnOutOfMemoryError, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Des.path.home=/opt/module/elk/elasticsearch-6.2.4, -Des.path.conf=/opt/module/elk/elasticsearch-6.2.4/config][2018-06-07T23:50:15,004][INFO ][o.e.p.PluginsService ] [node21] loaded module [aggs-matrix-stats] [2018-06-07T23:50:15,004][INFO ][o.e.p.PluginsService ] [node21] loaded module [analysis-common] [2018-06-07T23:50:15,004][INFO ][o.e.p.PluginsService ] [node21] loaded module [ingest-common] [2018-06-07T23:50:15,005][INFO ][o.e.p.PluginsService ] [node21] loaded module [lang-expression] [2018-06-07T23:50:15,005][INFO ][o.e.p.PluginsService ] [node21] loaded module [lang-mustache] [2018-06-07T23:50:15,005][INFO ][o.e.p.PluginsService ] [node21] loaded module [lang-painless] [2018-06-07T23:50:15,005][INFO ][o.e.p.PluginsService ] [node21] loaded module [mapper-extras] [2018-06-07T23:50:15,005][INFO ][o.e.p.PluginsService ] [node21] loaded module [parent-join] [2018-06-07T23:50:15,005][INFO ][o.e.p.PluginsService ] [node21] loaded module [percolator] [2018-06-07T23:50:15,005][INFO ][o.e.p.PluginsService ] [node21] loaded module [rank-eval] [2018-06-07T23:50:15,006][INFO ][o.e.p.PluginsService ] [node21] loaded module [reindex] [2018-06-07T23:50:15,006][INFO ][o.e.p.PluginsService ] [node21] loaded module [repository-url] [2018-06-07T23:50:15,006][INFO ][o.e.p.PluginsService ] [node21] loaded module [transport-netty4] [2018-06-07T23:50:15,006][INFO ][o.e.p.PluginsService ] [node21] loaded module [tribe] [2018-06-07T23:50:15,007][INFO ][o.e.p.PluginsService ] [node21] no plugins loaded [2018-06-07T23:50:22,618][INFO ][o.e.d.DiscoveryModule ] [node21] using discovery type [zen] [2018-06-07T23:50:24,023][INFO ][o.e.n.Node ] [node21] initialized [2018-06-07T23:50:24,024][INFO ][o.e.n.Node ] [node21] starting ... [2018-06-07T23:50:24,561][INFO ][o.e.t.TransportService ] [node21] publish_address {192.168.100.21:9300}, bound_addresses {192.168.100.21:9300} [2018-06-07T23:50:24,609][INFO ][o.e.b.BootstrapChecks ] [node21] bound or publishing to a non-loopback address, enforcing bootstrap checks ERROR: [1] bootstrap checks failed [1]: memory locking requested for elasticsearch process but memory is not locked [2018-06-07T23:50:24,684][INFO ][o.e.n.Node ] [node21] stopping ... [2018-06-07T23:50:24,811][INFO ][o.e.n.Node ] [node21] stopped [2018-06-07T23:50:24,812][INFO ][o.e.n.Node ] [node21] closing ... [2018-06-07T23:50:24,851][INFO ][o.e.n.Node ] [node21] closed

    修改/etc/sysctl.conf和/etc/security/limits.conf?

    vi /etc/sysctl.conf vm.swappiness=0 vi /etc/security/limits.conf admin soft memlock unlimited admin hard memlock unlimited 修改完重新登錄生效

    2)改完之后有可能啟動失敗

    [admin@node22 bin]$ ./elasticsearch Killed

    這里一般是由于內存不足導致的,需要設置es的虛擬機參數。修改es_home/bin/elasticsearch。如下所示:ES_JAVA_OPTS="-Xms1g -Xmx1g"

    5? IK分詞器問題

    {"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"analyzer [ik_max_word] not found for field [content]"}],"type":"mapper_parsing_exception","reason" :"analyzer [ik_max_word] not found for field [content]"},"status":400}

    解決:如果出現上述報錯,可能是單節點安裝了ik分詞器造成的,如果集群是多節點的,需要集群中每個節點上都要安裝Ik。

    6? Kibana問題

    log [16:11:15.912] [error][timelion] Error: in cell #1: Elasticsearch index not found: _all: Error: in cell #1: Elasticsearch index not found: _all

    總結

    以上是生活随笔為你收集整理的CentOS7.5搭建ELK6.2.4集群与简单测试的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。