赵宇博的技术博客 赵宇博的技术博客
首页
前端
后端
数据库专栏
k8s专栏
分布式专栏
Linux网络专栏
手写系列专栏
随笔
关于
GitHub (opens new window)
首页
前端
后端
数据库专栏
k8s专栏
分布式专栏
Linux网络专栏
手写系列专栏
随笔
关于
GitHub (opens new window)
  • Mysql总结

  • Redis总结

  • ES总结

    • ES-概述
    • Docker安装ELK8.x(踩坑记录)
    • 数据库专栏
    • ES总结
    zhaoyb
    2024-11-06
    目录

    Docker安装ELK8.x(踩坑记录)

    # Docker安装ELK8.x(踩坑记录)

    参考网站:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-prod-prerequisites

    参考书籍:https://weread.qq.com/book-detail?type=1&senderVid=364791933&v=2a532390813ab8882g016839&wtheme=white&wfrom=app&wvid=364791933&scene=bottomSheetShare

    image-20241106105936476

    # 1、前置条件

    # 1.1、安装Docker

    不在本篇文章探讨范围内

    # 1.2、修改文件描述符数目

    为什么要修改该配置呢?

    首先,Elasticsearch在节点和HTTP客户端之间进行通信使用了大量的套接字,而套接字需要足够的文件描述符支持。

    其次,在许多Linux发行版本中,每个进程默认有1024个文件描述符,这对Elasticsearch节点来说实在是太低了,何况该节点要处理数以百计的索引,所以要调大这个默认值

    设置步骤如下:

    # 设定同时打开文件数的最大值为65535
    vim /etc/profile
    # 增加一行
    ulimit -n 65535
    # 使命令生效
    source /etc/profile
    
    vim /etc/security/limits.conf
    # 限制打开文件数为65535
    * soft nofile 65535
    * hard nofile 65535
    # 验证修改操作是否成功
    ulimit -a
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    # 1.3、修改最大映射数量

    Elasticsearch对各种文件混合使用了niofs(非阻塞文件系统)和mmapfs(内存映射文件系统),以实现对各种文件的优化处理。为了保证系统的顺畅运行,需要合理配置最大映射数量(MMP),以便有足够的虚拟内存可用于内存映射的文件

    设置步骤如下:

    vim /etc/sysctl.conf
    vm.max_map_count=262144
    # 重新生效
    sysctl -p
    
    1
    2
    3
    4

    # 2、安装es:8.15.3(单机部署)

    # 下载elasticsearch镜像
    docker pull docker.elastic.co/elasticsearch/elasticsearch:8.15.3
    # 创建网络,方便后续es和kibana两个容器通信,默认网络驱动为brige
    docker network create elastic
    # 运行容器 设置网络、端口映射、容器内存、esJVM内存
    docker run  --name es01 --net elastic -p 9200:9200 -p 9300:9300 -it -m 4GB -e ES_JAVA_OPTS="-Xms2g -Xmx2g" docker.elastic.co/elasticsearch/elasticsearch:8.15.3
    # 运行结束后会打印信息,需要进行记录。后续使用!!如下图
    
    # 容器启动成功后,浏览器进行访问,(注意:必须使用https)
    https://容器所在机器的IP:9200/
    # 输入之前打印信息中的用户名密码即可登录成功
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    image-20241106145635296

    image-20241106145911492

    image-20241106145924964

    # 3、安装Kibana:8.15.3(单机部署)

    # 下载Kibana镜像
    docker pull docker.elastic.co/kibana/kibana:8.15.3
    # 运行容器,使用之前创建的elastic网络
    docker run -d --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.15.3
    
    # 持续监控Kibana日志
    docker logs -f kib01
    # 直到出现i Kibana has not been configured.字样,说明安装成功,浏览器访问Kibana
    http://192.168.10.101:5601/
    # 出现配置页面,需要输入最开始ES安装结束输出的信息,Kibana的token
    #输入token之后,点击配置,会提示输入确认码,这个确认嘛会打印在刚才监控的Kibana日志中(如图)
    # 输入确认码,之后等待配置
    # 配置完成会进入登录页面,输入ES的登录名和密码即可登录成功
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    image-20241106150454461

    image-20241106150556129

    image-20241106150712060

    image-20241106150745604

    # 4、安装Logstash:8.15.3(单机部署)

    安装好的Es+Kibana是没有测试数据的,可以安装Logstash,使用generator插件来自动生成测试数据

    # 下载镜像
    docker pull logstash:8.15.3
    # 在宿主机设置配置文件,后续挂在到logstash镜像内
    vim /opt/elk/logstash.yml
    
    http.host: "0.0.0.0"
    xpack.monitoring:
      elasticsearch:
        hosts: [ "https://es01:9200" ]  # es01是宿主机安装es的镜像名称
        username: "elastic"
        password: "WQsNNkcJBm094DJCa*P8"
        ssl:
          verification_mode: none
    
    
    # 编辑配置文件,生成两千万条随机数据
    vim /opt/elk/logstash-config.conf
    
    input {
      generator {
        count => 20000000
      }
    }
    
    filter {
      ruby {
        code => '
          require "securerandom"
          event.set("name", SecureRandom.alphanumeric(10))
          start_date = Time.local(2020, 1, 1)
          end_date = Time.local(2023, 12, 31)
          random_date = Time.at((end_date.to_f - start_date.to_f) * rand + start_date.to_f)
          event.set("date", random_date.strftime("%Y-%m-%d"))
    	  event.set("school", SecureRandom.alphanumeric(10))
    	  event.set("age", rand(1..100))
    	  event.set("money", rand * 10000)
          event.set("float", rand * 100)
        '
      }
    }
    
    output {
      elasticsearch {
        hosts => ["https://es01:9200"] 
        index => "logstash-random-data-20241104" 
        user => "elastic"
        password => "WQsNNkcJBm094DJCa*P8"
        ssl => false
        ssl_certificate_verification => false
      }
    }
    
    # 启动logstash,自动跑数据(数据量大,需要等待...)
     docker run -d --net elastic --name log -v /opt/elk/logstash-config.conf:/usr/share/logstash/pipeline/logstash.conf -v /opt/elk/logstash.yml:/usr/share/logstash/config/logstash.yml  logstash:8.15.3 
    
    # 可以持续监控logstash容器日志
    docker logs -f log
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #es
    上次更新: 2024/11/07, 21:19:22
    ES-概述

    ← ES-概述

    最近更新
    01
    Activiti6-业务实现
    12-06
    02
    Activiti6-API详解
    11-28
    03
    SpringBoot集成Activiti和UI
    11-21
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 赵宇博 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式