ELK日志分析平台(elasticsearch)
elasticsearch簡介
Elasticsearch 是一個開源的分布式搜索分析引擎,建立在一個全文搜索引擎庫 Apache Lucene基礎之上。
Elasticsearch 不僅僅是 Lucene,并且也不僅僅只是一個全文搜索引擎:
- 一個分布式的實時文檔存儲,每個字段 可以被索引與搜索
- 一個分布式實時分析搜索引擎
- 能勝任上百個服務節點的擴展,并支持 PB 級別的結構化或者非結構化數據
基礎模塊
cluster:管理集群狀態,維護集群層面的配置信息。
alloction:封裝了分片分配相關的功能和策略。
discovery:發現集群中的節點,以及選舉主節點。
gateway:對收到master廣播下來的集群狀態數據的持久化存儲。
indices:管理全局級的索引設置。
http:允許通過JSON over HTTP的方式訪問ES的API。
transport:用于集群內節點之間的內部通信。
engine:封裝了對Lucene的操作及translog的調用。
elasticsearch應用場景
信息檢索
日志分析
業務數據分析
數據庫加速
運維指標監控
官網地址:官網:
elasticsearch安裝與配置
軟件下載:https://elasticsearch.cn/download/
安裝軟件
[root@server1 ~]# rpm -ivh elasticsearch-7.6.1-x86_64.rpm配置
修改配置文件:
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml
修改系統限制
修改systemd啟動文件
禁用交換分區:
[root@server1 ~]# swapoff -a [root@server1 ~]# vim /etc/fstab開啟服務:
[root@server1 ~]# systemctl daemon-reload [root@server1 ~]# systemctl start elasticsearch.service需要配置三臺主機,server1 ,server2,server3,server1作為master,可以直接將配置文件傳給其他兩個節點,僅修改主機名即可
elasticsearch插件安裝
下載elasticsearch-head插件
wget https://github.com/mobz/elasticsearch-head/archive/master.zip get elasticsearch-head-master.zip [root@server1 ~]# yum install unzip.x86_64 -y [root@server1 ~]# unzip elasticsearch-head-master.zip [root@server1 ~]# cd elasticsearch-head-master/ [root@server1 elasticsearch-head-master]# yum install fontconfig [root@server1 elasticsearch-head-master]# cnpm install [root@server1 elasticsearch-head-master]# cnpm run start & tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 cd phantomjs-2.1.1-linux-x86_64/ cd bin/ mv phantomjs /usr/local/bin/ yum install fontconfighead插件本質上是一個nodejs的工程,因此需要安裝node
get nodejs-9.11.2-1nodesource.x86_64.rpm [root@server1 ~]# rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm [root@server1 ~]# node -v [root@server1 ~]# npm -v更換npm源安裝
[root@server1 ~]# cd elasticsearch-head-master/ [root@server1 ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org啟動head插件
[root@server1 elasticsearch-head-master]# cnpm run start &修改ES跨域主持
三個節點都需要加上
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml http.cors.enabled: true # 是否支持跨域 http.cors.allow-origin: "*" # *表示支持所有域名 [root@server1 ~]# systemctl restart elasticsearch.service
訪問head插件服務
創建索引
查看ES狀態
灰色標識沒有副本
黃色代表沒有主分片丟失
elasticsearch節點角色
Master:
? 主要負責集群中索引的創建、刪除以及數據的Rebalance等操作。
Master不負責數據的索引和檢索,所以負載較輕。當Master節點失聯或
者掛掉的時候,ES集群會自動從其他Master節點選舉出一個Leader。
Data Node:
? 主要負責集群中數據的索引和檢索,一般壓力比較大。
Coordinating Node:
? 原來的Client node的,主要功能是來分發請求和合并結果的。所有節點
默認就是Coordinating node,且不能關閉該屬性。
Ingest Node:
? 專門對索引的文檔做預處理
elasticsearch節點優化
在生產環境下,如果不修改elasticsearch節點的角色信息,在高數
據量,高并發的場景下集群容易出現腦裂等問題。
? 默認情況下,elasticsearch集群中每個節點都有成為主節點的資格,
也都存儲數據,還可以提供查詢服務。
? 節點角色是由以下屬性控制:
? node.master: false|true
? node.data: true|false
? node.ingest: true|false
? search.remote.connect: true|false
默認情況下這些屬性的值都是true。
node.master:這個屬性表示節點是否具有成為主節點的資格
注意:此屬性的值為true,并不意味著這個節點就是主節點。
因為真正的主節點,是由多個具有主節點資格的節點進行選
舉產生的。
? node.data:這個屬性表示節點是否存儲數據。
? node.ingest: 是否對文檔進行預處理。
? search.remote.connect:是否禁用跨集群查詢
第一種組合:(默認)
? node.master: true
? node.data: true
? node.ingest: true
? search.remote.connect: true
這種組合表示這個節點即有成為主節點的資格,又存儲數據。
如果某個節點被選舉成為了真正的主節點,那么他還要存儲數據,這樣對于
這個節點的壓力就比較大了。
測試環境下這樣做沒問題,但實際工作中不建議這樣設置。
第二種組合:(Data node)
? node.master: false
? node.data: true
? node.ingest: false
? search.remote.connect: false
這種組合表示這個節點沒有成為主節點的資格,也就不參與選舉,只會存儲
數據。
這個節點稱為data(數據)節點。在集群中需要單獨設置幾個這樣的節點負責
存儲數據。后期提供存儲和查詢服務
第三種組合:(master node)
? node.master: true
? node.data: false
? node.ingest: false
? search.remote.connect: false
這種組合表示這個節點不會存儲數據,有成為主節點的資格,可以參與選舉,
有可能成為真正的主節點。
這個節點我們稱為master節點。
第四種組合:(Coordinating Node)
? node.master: false
? node.data: false
? node.ingest: false
? search.remote.connect: false
這種組合表示這個節點即不會成為主節點,也不會存儲數據,
這個節點的意義是作為一個協調節點,主要是針對海量請求的時候可以進行
負載均衡。
第五種組合:(Ingest Node)
? node.master: false
? node.data: false
? node.ingest: true
? search.remote.connect: false
這種組合表示這個節點即不會成為主節點,也不會存儲數據,
這個節點的意義是ingest節點,對索引的文檔做預處理。
總結
以上是生活随笔為你收集整理的ELK日志分析平台(elasticsearch)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k8s的网络优化(metallb)
- 下一篇: logstash数据采集