ELK-ElasticSearch

1. ELK介紹

1. ELK組成

E: elastcisearch 數(shù)據(jù)搜索 數(shù)據(jù)存儲(chǔ) java
L: Logstash 數(shù)據(jù)收集 ( 數(shù)據(jù)解析
數(shù)據(jù)轉(zhuǎn)換 ) 數(shù)據(jù)輸出 java
F: Filebeat 數(shù)據(jù)采集 (簡(jiǎn)單的數(shù)據(jù)處理 ) <--go K:
Kibana 數(shù)據(jù)分析 數(shù)據(jù)展示

2.ELK集群架構(gòu)

image.png

3.EFK架構(gòu)

imge.png

4.ELFK架構(gòu)

image.png

5.ELK收集那些日志

容器:docker
代理:nginx、Haproxy
web:nginx、Tomcat、Httpd、PHP
db:mysql、redis、mongo、elasticsearch
存儲(chǔ):nfs、glusternfs、fastdfs
系統(tǒng):message、security
業(yè)務(wù):app

2.ElasticSearch基本使用

1.ES與MySQL作比較

表       數(shù)據(jù)       字段(數(shù)據(jù)類(lèi)型)
索引    document    字段(doc類(lèi)型)

2. ES單機(jī)安裝

1.準(zhǔn)備java環(huán)境
[root@es-node1 ~]# yum install java -y

2.安裝
[root@es-node1 ~]# rpm -ivh elasticsearch-7.4.0-x86_64.rpm kibana-7.4.0-x86_64.rpm
[root@es-node1 ~]# vim /etc/elasticsearch/jvm.options
-Xms512m #實(shí)驗(yàn)環(huán)境 生產(chǎn)環(huán)境最少內(nèi)存一半以上   官方建議 最高
32Gb
-Xmx512m

3.啟動(dòng)
[root@es-node1 ~]# systemctl start elasticsearch.service

4.測(cè)試es是否啟動(dòng)
[root@es-node1 ~]# curl 127.0.0.1:9200

5.修改kibana的配置
[root@es-node1 ~]# vim /etc/kibana/kibana.yml
server.host: "0.0.0.0"
i18n.locale: "zh-CN"

6.啟動(dòng)kibana
[root@es-node1 ~]# systemctl enable kibana
[root@es-node1 ~]# systemctl start kibana

3. ES索引基本操作

創(chuàng)建一個(gè)索引
PUT /oldxu_es
查看所有的索引
GET _cat/indices
刪除索引
DELETE /oldxu_es


給oldxu_es索引錄入一個(gè)文檔
POST /tt/_doc/1
{
"name": "oldxu",
"age": 18,
"salary": 1000000000
}

POST /oldxu_es/_doc/2
{
"name": "oldguo",
"age": 35,
"salary": 100
}

獲取指定的id數(shù)據(jù)
GET /oldxu_es/_doc/1

獲取所有的文檔 默認(rèn)前10個(gè)
GET /oldxu_es/_search

模糊查詢(xún)
GET /oldxu_es/_search
{
"query": {
  "term": {
    "name": "oldxu"
  }
}
}

刪除指定id的文檔
DELETE /oldxu_es/_doc/1
#
POST _bulk
{"index":{"_index":"tt","_id":"1"}}
{"name":"oldxu","age":"18"}
{"create":{"_index":"tt","_id":"2"}}
{"name":"oldqiang","age":"30"}
{"delete":{"_index":"tt","_id":"2"}}
{"update":{"_id":"1","_index":"tt"}}
{"doc":{"age":"20"}}

一次查詢(xún)多個(gè)文檔
GET _mget
{
"docs": [
  {
    "_index": "tt",
    "_id": "1"
  },
  {
{

4.集群環(huán)境搭建

1.修改每個(gè)節(jié)點(diǎn)的elasticsearch.yml 配置文件
[root@es-node1 ~]# grep '^[a-Z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: my-zhl
node.name: node1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.0.0.161", "10.0.0.162", "10.0.0.163"]
cluster.initial_master_nodes: ["10.0.0.161", "10.0.0.162", "10.0.0.163"]

2.啟動(dòng)多節(jié)點(diǎn)
systemctl start elasticsearch

3.測(cè)試集群是否正常
通過(guò)curl測(cè)試
curl http://172.16.1.163:9200/_cluster/health?pretty
或者在kibana中檢查
GET /_cluster/health 

5.cerebro狀態(tài)檢查

cerebro插件來(lái)檢查整個(gè)集群的環(huán)境。默認(rèn)監(jiān)聽(tīng)9000端口

rpm -ivh cerebro-0.8.5-1.norach.rpm

[root@es-node1 ~]# vim /etc/cerebro/application.conf
data.path = "/tmp/cerebro.db"
systemctl start cerebro
image.png

6.集群角色

master角色:負(fù)責(zé)控制整個(gè)集群的操作,通過(guò)cluster_status狀態(tài)維護(hù)集群
選舉:cluster.initial_master_nodes master-eligible
可以不參與選舉:node.master: false
cluster_state:節(jié)點(diǎn)信息 索引信息
data角色:存儲(chǔ)數(shù)據(jù)(默認(rèn)都是data節(jié)點(diǎn))關(guān)閉data:node.data: false
coordinating角色:負(fù)責(zé)路由 不能取消

7.ES集群健康檢查

Cluster Health三種狀態(tài):
1.green 健康狀態(tài),指所有的分片和副本都正常分配
2.yellow 指左右的主分片都正常分配,但是副本沒(méi)正常分配

  1. red 指有主分片沒(méi)正常分配,表示索引不完備,寫(xiě)也有問(wèn)題(不代表不能存儲(chǔ)數(shù)據(jù)和讀取數(shù)據(jù))
    4.可以通過(guò)GET _cluster/health?pretty-true
算法

shard = hash(routing) % numbei=r_of_primary_shards
hash 算法保證將數(shù)據(jù)均勻的分散在集群中
routing 十一個(gè)關(guān)鍵參數(shù),默認(rèn)是文檔id
numbei=r_of_primary_shards 主分片數(shù)

該算法與主分片數(shù)有關(guān),一旦確定不能更改主分片
因?yàn)橐坏┬薷闹鞣制?,share的計(jì)算就不一樣了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容