码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • docker部署elk


    目录

    前言

    一、创建程序工作路径

    二、创建私有网络

    三、部署elasticsearch

    1.先搜速后下载

    2.创建一个基础的容器(此步骤是为了拷贝容器里的文件)

    3.拷贝文件到宿主机

    3.1进入容器

    3.2拷贝并授权

    3.3删除基础容器

    4.创建容器

    5.访问9200测试

    6.创建索引

    7.查询索引

     四、部署kibana

    1.同理,先搜索后下载

    2.创建一个基础的容器

    3.拷贝文件到宿主机

    3.1进入容器

    3.2拷贝并授权 

    3.3修改kibana配置文件 

    3.4删除基础容器

    4.创建kibana容器

    5.访问kibana测试

    五、部署logstash

    1.同理,先搜索后下载

    2.创建一个基础的容器

    3.拷贝文件到宿主机

    3.1进入容器

    3.2拷贝文件

    3.3修改配置文件

    3.4删除基础容器

    4. 创建logstash容器 

    六、测试

    1.访问kibana,设置索引模式

     2.造一条测试数据

    3.发送测试数据

    4.查看数据


    前言

    ELK 是一组开源软件套件,用于实现日志管理和分析。它由三个主要组件组成:

    1. Elasticsearch :一个基于 Lucene 的分布式搜索引擎,用于存储、搜索和分析大量数据。

    2. Logstash :一个数据收集引擎,用于从各种源(如文件、数据库、消息队列等)收集、处理和转换数据,然后将其发送到 Elasticsearch 中进行存储和分析。

    3. Kibana :一个数据可视化平台,用于实时监控和分析 Elasticsearch 中的数据,并将其以交互式图表、图形和地图等形式展示出来。

    ELK 被广泛应用于日志管理领域,可以帮助用户高效地收集、存储、索引、搜索和分析大量的日志数据。它不仅适用于 Web 应用程序的日志管理,还可以用于系统日志、网络设备日志、安全事件日志等各种类型的数据收集和分析。

    除了 ELK,还有一些类似的开源日志管理工具,例如 Graylog 和 Fluentd 等,它们也提供了类似的功能,但在实现方式和使用场景上略有不同。

    部署容器所需要的版本,可以上dockerhub上确认,这里统一使用7.12.1版本,dockerhub链接如下:

    Docker

    一、创建程序工作路径

    mkdir -p /opt/elk/{elasticsearch,kibana,logstash}

    二、创建私有网络

    创不创建都行,我的宿主机环境没有和默认bridge网络172.17冲突的网段,实验里创建了一个私有网络,来模拟企业环境

    1. docker network create elk
    2. docker network ls

    三、部署elasticsearch

    1.先搜速后下载

    1. docker search elasticserch
    2. docker pull elasticsearch:7.12.1

    2.创建一个基础的容器(此步骤是为了拷贝容器里的文件)

    docker run -d --name es --net elk -P -e "discovery.type=single-node" elasticsearch:7.12.1

    --name  设置容器名字

    --net      设置容器的网络

    -P          自动分配端口

    -e          设置环境变量

    3.拷贝文件到宿主机

    3.1进入容器
    docker exec -it es /bin/bash

    3.2拷贝并授权
    1. docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /opt/elk/elasticsearch/
    2. chmod 777 elasticsearch/elasticsearch.yml
    3. mkdir data
    4. chmod -R 777 /opt/elk/elasticsearch/data/

    3.3删除基础容器
    docker rm -f es

    4.创建容器

    docker run -d --name es --net elk -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --privileged=true -v /opt/elk/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/elk/elasticsearch/data/:/usr/share/elasticsearch/data elasticsearch:7.12.1

    5.访问9200测试

    1. curl -XGET 'http://localhost:9200'
    2. curl -XGET 'http://localhost:9200/_cluster/health?pretty'

    访问浏览器

    6.创建索引

     curl -XPUT http://192.168.159.128/elk

     7.查询索引

    这里面查不到数据,因为是刚创建的

     curl -XGET http://192.168.159.128:9200/elk/_search
    

     四、部署kibana

    1.同理,先搜索后下载

    1. docker search kibana
    2. docker pull kibana:7.12.1

    2.创建一个基础的容器

    docker run -d --name kibana --net elk -P -e "ELASTICSEARCH_HOSTS=http://192.168.159.128:9200" -e "I18N_LOCALE=zh-CN" kibana:7.12.1

    -e  环境变量指定es的访问ip

    3.拷贝文件到宿主机

    3.1进入容器
    docker exec -it kibana /bin/bash

    3.2拷贝并授权 
    1. docker cp kibana:/usr/share/kibana/config/kibana.yml /opt/elk/kibana/
    2. chmod -R 777 /opt/elk/kibana/kibana.yml

    ​

    3.3修改kibana配置文件 
    1. cat kibana.yml
    2. server.name: kibana
    3. server.host: "0"
    4. #es的访问ip
    5. elasticsearch.hosts: [ "http://192.168.159.128:9200" ]
    6. monitoring.ui.container.elasticsearch.enabled: true
    7. #汉化
    8. i18n.locale: zh-CN

    3.4删除基础容器
    docker rm -f kibana

    4.创建kibana容器

    docker run -d --name kibana --net elk -p 5601:5601 -v /opt/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.12.1

    5.访问kibana测试

    五、部署logstash

    1.同理,先搜索后下载

    1. docker search logstash
    2. docker pull logstash:7.12.1

    2.创建一个基础的容器

    docker run -d -P --name logstash --net elk logstash:7.12.1

    3.拷贝文件到宿主机

    3.1进入容器
    docker exec -it logstash /bin/bash

     查看下logstash的默认配置文件,端口默认是5044

    3.2拷贝文件
    1. docker cp logstash:/usr/share/logstash/config /opt/elk/logstash/
    2. docker cp logstash:/usr/share/logstash/data /opt/elk/logstash/
    3. docker cp logstash:/usr/share/logstash/pipeline /opt/elk/logstash/
    3.3修改配置文件

    vim /opt/elk/logstash/config/logstash.yml

    1. 修改 logstash/config 下的 logstash.yml 文件,主要修改 es 的地址:
    2. http.host: "0.0.0.0"
    3. xpack.monitoring.elasticsearch.hosts: [ "http://192.168.159.128:9200" ]

    vim /opt/elk/logstash/pipeline/logstash.conf 

    1. input {
    2. # 从文件读取日志信息
    3. file {
    4. path => "/opt/test.json"
    5. start_position => "beginning" # 设置从文件的开始位置开始读取日志
    6. sincedb_path => "/usr/share/logstash/pipelog.txt" # 指定记录文件读取位置的 sincedb 文件路径
    7. codec => "json"
    8. }
    9. tcp {
    10. mode => "server"
    11. host => "0.0.0.0" # 允许任意主机发送日志
    12. port => 5044
    13. }
    14. }
    15. output {
    16. stdout { codec => rubydebug }
    17. # 输出到 Elasticsearch
    18. elasticsearch {
    19. action => "index"
    20. hosts => ["http://192.168.159.128:9200"]
    21. index => "elk" # 索引名称
    22. }
    23. }

    3.4删除基础容器
    docker rm -f logstash

    4. 创建logstash容器 

    docker run -d --name logstash --net elk --privileged=true -p 5044:5044 -p 9600:9600 -v /opt/elk/logstash/data/:/usr/share/logstash/data -v /opt/elk/logstash/config/:/usr/share/logstash/config -v /opt/elk/logstash/pipeline/:/usr/share/logstash/pipeline logstash:7.12.1

    六、测试

    1.访问kibana,设置索引模式

    选择elk索引,创建索引模式

     2.造一条测试数据

    在当前目录下创建一个json文件,名字为test.json

    1. {
    2. "id": 1,
    3. "name": "Tom",
    4. "birthday": "1990-01-01",
    5. "address": {
    6. "province": "Beijing",
    7. "city": "Beijing",
    8. "district": "Chaoyang"
    9. },
    10. "scores": [80, 90, 85],
    11. "is_male": true
    12. }

    3.发送测试数据

    curl -XPOST -H "Content-Type: application/json" -d @test.json http://192.168.159.128:5044

    4.查看数据

    后台使用curl查看elk索引,显示已有内容

    kibana上的discover上选择elk索引,查到了之前发送的json测试数据

  • 相关阅读:
    Unity的unity_ObjectToWorld里的每一列分别代表什么意思?换个方向反向理解-更简单
    MATLAB算法实战应用案例精讲-【集成算法】集成学习模型Bagging(附Python和R语言代码)
    持续集成部署-k8s-资源调度:HPA - Pod 基于负载指标自动水平扩容缩容
    SAP 电商云 Spartacus UI 和 Accelerator UI 里的 ASM 模块
    Python3.7最简便的方式解决下载dlib和face_recognition的问题
    都2023年了,你必须知道的几款主流性能测试工具!
    MyBatis-Plus学习笔记(Spring版)——(六)MyBatis-Plus分页插件与乐观锁
    jQuery学习(一)
    Python深度学习13——Keras模型的可视化(神经网络结构图)
    Python深度学习进阶与应用丨注意力(Attention)机制、Transformer模型、生成式模型、目标检测算法、图神经网络、强化学习详解等
  • 原文地址:https://blog.csdn.net/eighters/article/details/134180915
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号