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冲突的网段,实验里创建了一个私有网络,来模拟企业环境

docker network create  elk
docker network ls

三、部署elasticsearch

1.先搜速后下载

docker search elasticserch
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拷贝并授权
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /opt/elk/elasticsearch/

chmod 777 elasticsearch/elasticsearch.yml

mkdir data

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测试

curl -XGET 'http://localhost:9200'
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.同理,先搜索后下载

docker search kibana
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拷贝并授权 
docker cp kibana:/usr/share/kibana/config/kibana.yml /opt/elk/kibana/

chmod -R 777 /opt/elk/kibana/kibana.yml

3.3修改kibana配置文件 
cat kibana.yml

server.name: kibana
server.host: "0"
#es的访问ip
elasticsearch.hosts: [ "http://192.168.159.128:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
#汉化
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.同理,先搜索后下载

docker search logstash
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拷贝文件
docker cp logstash:/usr/share/logstash/config /opt/elk/logstash/
docker cp logstash:/usr/share/logstash/data /opt/elk/logstash/
docker cp logstash:/usr/share/logstash/pipeline /opt/elk/logstash/	
3.3修改配置文件

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


修改 logstash/config 下的 logstash.yml 文件,主要修改 es 的地址:

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.159.128:9200" ]

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


input {
    # 从文件读取日志信息
    file {
        path => "/opt/test.json"
        start_position => "beginning"   # 设置从文件的开始位置开始读取日志
        sincedb_path => "/usr/share/logstash/pipelog.txt"   # 指定记录文件读取位置的 sincedb 文件路径
        codec => "json"
    }

    tcp {
        mode => "server"
        host => "0.0.0.0"  # 允许任意主机发送日志
        port => 5044
    }
}

output {
    stdout { codec => rubydebug }
    # 输出到 Elasticsearch
    elasticsearch {
        action => "index"
        hosts => ["http://192.168.159.128:9200"]
        index => "elk"     # 索引名称
    }
}

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

{
    "id": 1,
    "name": "Tom",
    "birthday": "1990-01-01",
    "address": {
        "province": "Beijing",
        "city": "Beijing",
        "district": "Chaoyang"
    },
    "scores": [80, 90, 85],
    "is_male": true
}

3.发送测试数据

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

4.查看数据

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/116999.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【java学习—十三】处理流之三:标准输入输出流(3)

文章目录 1. 相关概念2. 举例与练习2.1. 举例2.2. 练习 1. 相关概念 System.in 和 System.out 分别代表了系统标准的输入和输出设备,默认输入设备是键盘,输出设备是显示器。     System.in 的类型是 InputStream     System.out 的类型是 PrintS…

C++进阶篇4---set和map

一、关联式容器 在初阶篇中,我们已经接触过STL中的部分容器,比如:vector、list、deque等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。 那什么是关联式容器&#xff1…

【算法挨揍日记】day19——62. 不同路径、63. 不同路径 II

62. 不同路径 62. 不同路径 题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &#x…

14.1 Linux 并发与竞争

一、并发与竞争 并发:多个执行单元同时、并行执行。 竞争:并发的执行单元同时访问共享资源(硬件资源和软件上的全局变量等)易导致竞态。 二、原子操作 1. 原子操作简介 原子操作:不能再进一步分割的操作,一般用于变量或位操作。 …

AI:53-基于机器学习的字母识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

latex自定义缩写

Latex 写文章可能常用到一些缩写,如: .e.g.i.e.cf.etc.w.r.t.i.i.d.et al. 其中有些要斜体,如果每次都要用 \textit{...}、{\it ...} 弄斜,有点麻烦。CVPR 模板中有定义一些命令,可以更方便地输入这些缩写。这里记录…

linux中if条件判断,case...esac,function学习

第一、 if [ 判断式 ] ; then fi 注意:中括号和判断式之间的空格,否则会报错,上案例 第二个图的12行,中括号和条件判断如果没有空格,则会提示缺号‘】’,如第二个图最上面的提示。所以使用中括号的格式…

AI:59-基于深度学习的行人重识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

系列十二、过滤器 vs 拦截器

一、过滤器 vs 拦截器 1.1、区别 (1)触发时机不一样,过滤器是在请求进入容器后Servlet之前进行预处理的,请求结束返回也是,是在Servlet处理完后,返回给前端之前; (2)过滤…

TCP三次握手和四次挥手

文章目录 TCP三次握手TCP四次挥手 TCP三次握手 三次握手主要是保证连接是双工的,可靠主要是保证重传机制的 客户端发送建立连接的请求,SYN置1,携带一个序号seq服务端接收客户端建立连接的请求后发送一个响应,SYN置1,A…

[BUUCTF NewStar 2023] week5 Crypto/pwn

最后一周几个有难度的题 Crypto last_signin 也是个板子题,不过有些人存的板子没到,所以感觉有难度,毕竟这板子也不是咱自己能写出来的。 给了部分p, p是1024位给了922-101位差两头。 from Crypto.Util.number import * flag b?e 655…

闯关打卡小程序的效果如何

闯关打卡是一种以任务关卡为基础的打卡模式,管理员可配置活动任务关卡,成员加入任务后需依次解锁,打卡完成任务,像闯关游戏一样完成所有任务。 通过打卡活动聚集一群有共同目标、兴趣的人,通过打卡的方式促进共同目标…

python 命令行界面的用户交互

背景 说一千,道一万,程序是为用户服务的,所以在程序运行过程,与用户交互以获取用户的信息输入和决策确认,是无法避免的编程需要考虑和解决的需求。 一个简单的demo 如下的程序中,程序需要生成一个新的 i…

Linux学习第32天:Linux INPUT 子系统实验(一):接纳

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 题目中用了“接纳”俩字。其实学习就是一个接纳的过程。接纳新的知识,从而转化为自己知识宝库的一部分。那今天学习的input子系统和今天的主题接纳有…

基于单片机设计的自动门控制系统

一、项目介绍 随着科技的不断发展,自动门成为公共场所、商业建筑和住宅社区等地的常见设施。自动门的出现使得进出门的操作更加便捷,提高了人们的生活质量和工作效率。为了实现自动门的开关控制,本项目基于单片机设计了一套自动门控制系统。…

分布式服务框架设计

目录 服务框架的设计 服务框架的功能 服务框架的性能指标 服务治理需要哪些功能 服务框架的设计 尽管不同的分布式服务框架实现细节存在差异,但是核心功能差异不大,下面的架构图描绘了一个分布式服务框架的整体逻辑架构 总共分为 3 层:1…

GNU ld链接器 lang_process()(二)

一、ldemul_create_output_section_statements() 位于lang_process()中11行 。 该函数用于创建与目标有关的输出段的语句。这些语句将用于描述输出段的属性和分配。 void ldemul_create_output_section_statements (void) {if (ld_emulation->create_output_section_sta…

MySQL数据库之表的增删查改

目录 表的操作1.创建表创建表案例 2.查看表结构3.修改表4.删除表 表的操作 1.创建表 语法: CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明: field 表示列…

C# 基类中的虚函数调用基类的虚函数执行的是派生类实现的对应函数吗

答案 : 是的。 比如基类Base中有两个virtual 函数A和B,然后派生类为Derive,override了函数A记为A,override了函数B记为B,且B之中会执行base.B的逻辑; 在Base中,B调用了A的逻辑,那么外…

C++ 实现红黑树

红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍,因…