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://localhost:9200/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/logstash.conf:/usr/share/logstash/pipeline/logstash.conf 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测试数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Docker部署ELK(Elasticsearch, Logstash, Kibana)堆栈。以下是一些步骤: 1. 安装DockerDocker Compose:请确保你的机器上已经安装了DockerDocker Compose。 2. 创建一个新的目录并在该目录下创建一个`docker-compose.yml`文件。 3. 在`docker-compose.yml`文件中添加以下内容: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: elasticsearch environment: - discovery.type=single-node ports: - 9200:9200 - 9300:9300 volumes: - ./data:/usr/share/elasticsearch/data logstash: image: docker.elastic.co/logstash/logstash:7.14.0 container_name: logstash volumes: - ./logstash/config:/usr/share/logstash/pipeline ports: - 5044:5044 kibana: image: docker.elastic.co/kibana/kibana:7.14.0 container_name: kibana ports: - 5601:5601 ``` 这个`docker-compose.yml`文件定义了三个服务:Elasticsearch、Logstash和Kibana。每个服务都使用了ELK堆栈的官方Docker镜像。 4. 创建一个`data`目录,用于保存Elasticsearch的数据。 5. 在一个终端窗口中,导航到包含`docker-compose.yml`文件的目录,并运行以下命令来启动ELK堆栈: ```bash docker-compose up ``` 这将启动Elasticsearch、Logstash和Kibana容器,并将它们连接在一起。 6. 访问Kibana:在浏览器中访问`http://localhost:5601`,你将看到Kibana的登录界面。 现在,你已经成功地使用Docker部署ELK堆栈。你可以通过Logstash将日志数据发送到Elasticsearch,并使用Kibana来可视化和分析这些日志数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值