ELK-ElasticSearch

作者: UncleZ_strive | 来源:发表于2020-01-14 19:52 被阅读0次

    1. ELK介绍

    1. ELK组成

    E: elastcisearch 数据搜索 数据存储 java
    L: Logstash 数据收集 ( 数据解析
    数据转换 ) 数据输出 java
    F: Filebeat 数据采集 (简单的数据处理 ) <--go K:
    Kibana 数据分析 数据展示

    2.ELK集群架构

    image.png

    3.EFK架构

    imge.png

    4.ELFK架构

    image.png

    5.ELK收集那些日志

    容器:docker
    代理:nginx、Haproxy
    web:nginx、Tomcat、Httpd、PHP
    db:mysql、redis、mongo、elasticsearch
    存储:nfs、glusternfs、fastdfs
    系统:message、security
    业务:app

    2.ElasticSearch基本使用

    1.ES与MySQL作比较

    表       数据       字段(数据类型)
    索引    document    字段(doc类型)
    

    2. ES单机安装

    1.准备java环境
    [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 #实验环境 生产环境最少内存一半以上   官方建议 最高
    32Gb
    -Xmx512m
    
    3.启动
    [root@es-node1 ~]# systemctl start elasticsearch.service
    
    4.测试es是否启动
    [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.启动kibana
    [root@es-node1 ~]# systemctl enable kibana
    [root@es-node1 ~]# systemctl start kibana
    

    3. ES索引基本操作

    创建一个索引
    PUT /oldxu_es
    查看所有的索引
    GET _cat/indices
    删除索引
    DELETE /oldxu_es
    
    
    给oldxu_es索引录入一个文档
    POST /tt/_doc/1
    {
    "name": "oldxu",
    "age": 18,
    "salary": 1000000000
    }
    
    POST /oldxu_es/_doc/2
    {
    "name": "oldguo",
    "age": 35,
    "salary": 100
    }
    
    获取指定的id数据
    GET /oldxu_es/_doc/1
    
    获取所有的文档 默认前10个
    GET /oldxu_es/_search
    
    模糊查询
    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"}}
    
    一次查询多个文档
    GET _mget
    {
    "docs": [
      {
        "_index": "tt",
        "_id": "1"
      },
      {
    {
    

    4.集群环境搭建

    1.修改每个节点的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.启动多节点
    systemctl start elasticsearch
    
    3.测试集群是否正常
    通过curl测试
    curl http://172.16.1.163:9200/_cluster/health?pretty
    或者在kibana中检查
    GET /_cluster/health 
    

    5.cerebro状态检查

    cerebro插件来检查整个集群的环境。默认监听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角色:负责控制整个集群的操作,通过cluster_status状态维护集群
    选举:cluster.initial_master_nodes master-eligible
    可以不参与选举:node.master: false
    cluster_state:节点信息 索引信息
    data角色:存储数据(默认都是data节点)关闭data:node.data: false
    coordinating角色:负责路由 不能取消

    7.ES集群健康检查

    Cluster Health三种状态:
    1.green 健康状态,指所有的分片和副本都正常分配
    2.yellow 指左右的主分片都正常分配,但是副本没正常分配

    1. red 指有主分片没正常分配,表示索引不完备,写也有问题(不代表不能存储数据和读取数据)
      4.可以通过GET _cluster/health?pretty-true
    算法

    shard = hash(routing) % numbei=r_of_primary_shards
    hash 算法保证将数据均匀的分散在集群中
    routing 十一个关键参数,默认是文档id
    numbei=r_of_primary_shards 主分片数

    该算法与主分片数有关,一旦确定不能更改主分片
    因为一旦修改主分片,share的计算就不一样了

    相关文章

      网友评论

        本文标题:ELK-ElasticSearch

        本文链接:https://www.haomeiwen.com/subject/mdinactx.html