基于Docker搭建ELK 日志系统的方法

下面是关于“基于Docker搭建ELK日志系统的方法”的完整攻略和两条示例说明。

概述

Docker 是一款开源且易于配置的应用程序集装箱,可以帮助用户将应用程序的整个环境打包到一个独立单元中,并随时部署到任何容器平台上。ELK 则是一套非常流行的日志管理系统,其中包括了 Elasticsearch、Logstash 和 Kibana 三大组件,用户可以通过这三大组件来收集、处理和展示日志信息。

结合这两款工具,我们可以快速地搭建一个高效、稳定且灵活的日志管理系统,让我们来看看具体的步骤吧。

步骤

步骤一:准备工作

在开始创建 ELK 环境之前,我们需要确保已经安装了 Docker 和 Docker Compose 工具,并且安装好了所有必要的依赖项,例如 cURL 工具和 Git。

步骤二:拉取镜像

从 Docker Hub 上拉取 Elasticsearch、Logstash 和 Kibana 镜像。

docker pull elasticsearch
docker pull logstash
docker pull kibana

步骤三:编写配置文件

在该步骤中,我们需要编写一些配置文件来配置 Elasticsearch、Logstash 和 Kibana。那么,我们将创建一个名为 docker-elk 的目录,并在其中创建一个 docker-compose.yml 文件,用来管理这三个服务……(命令和示例文件请读者自行查找)

步骤四:启动服务

运行命令将服务启动起来。

docker-compose up -d

步骤五:访问 Kibana

打开浏览器,输入 http://localhost:5601,登录 Kibana 服务,同时在首页里添加 Elasticsearch 的索引,即可看到日志信息。

步骤六:开始收集日志数据

我们可以通过 Logstash 来收集、解析和转换我们的日志信息,并将其发送到 Elasticsearch 中进行存储。

如以下示例:

  1. 我们可以通过 input, filter, 和 output 配置文件,来定义 Logstash 的行为:

```yaml
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
}
}

filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}

output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
```

  1. 我们还可以通过 docker run 命令来启动 Logstash 容器,并指定该容器的配置文件:

bash
docker run -d --rm --log-driver=none \
-v "$PWD"/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
--name logstash \
--link elasticsearch:elasticsearch \
logstash

这些配置文件和命令示例,可以帮助我们开始收集和管理日志信息。

示例

下面是两条关于如何使用 ELK 配合 Docker 管理日志信息的示例说明。

示例一:收集 Nginx 访问日志

我们可以通过以下步骤,使用 ELK 和 Docker 来收集 Nginx 的访问日志:

  1. 首先,创建一个名为 nginx 的 Docker 容器,用来启动 Nginx 服务。

bash
docker run -d --name nginx nginx

  1. 然后,通过以下命令来创建一个名为 logstash.conf 的文件,并在其中定义 Logstash 的配置信息。

```bash
cat << EOF > logstash.conf
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
}
}

filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}

output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
EOF
```

  1. 然后,使用以下命令来启动一个名为 logstash 的容器,并挂载 logstash.conf 文件:

bash
docker run -d --rm --log-driver=none \
-v "$PWD"/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
--name logstash \
--link elasticsearch:elasticsearch \
logstash

  1. 最后,使用浏览器访问 http://localhost:5601/,登录 Kibana 服务,设置索引,即可查看日志信息。

示例二:收集 Docker 容器日志

我们可以通过下面的步骤,在 ELK 的帮助下收集 Docker 的容器日志信息:

  1. 首先,启动一个名为 docker-nginx 的 Nginx 容器,并将 Nginx 的访问日志输出到 /var/log/nginx/access.log 文件中。

bash
docker run -d --name docker-nginx nginx

  1. 然后,在 docker-compose.yml 文件中添加以下配置信息,来告诉 ELK 如何收集 Docker 的日志信息。

```yaml
input {
beats {
port => "5044"
codec => json
}
}

filter {
if [source] =~ /docker.+/ {
grok {
match => { "message" => "%{GREEDYDATA:log}" }
}
json {
source => "log"
}
date {
match => [ "timestamp", "ISO8601" ]
}
mutate {
remove_field => [ "host", "log" ]
}
}
}

output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
```

  1. 最后,命令行启动 ELK 和 Filebeat 服务:

bash
docker-compose up -d

现在,我们已经成功实现 ELK 和 Docker 的集成,并可以方便地管理和分析 Docker 容器日志信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Docker搭建ELK 日志系统的方法 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 快速搭建Docker环境

    本教程介绍如何快速搭建Docker环境,并使用Docker部署一个Nginx服务。 本场景将提供一台配置了CentOS 7.7的ECS实例(云服务器)。通过本教程的操作,您可以基于ECS实例快速搭建一个Docker环境,并在Docker环境中部署一个Nginx服务。 背景知识 容器技术 容器是一个允许我们在资源隔离的过程中,运行应用程序和其依赖项的 、轻量的…

    Docker 2023年4月12日
    00
  • 快速掌握使用Docker搭建开发环境

    请看下面的详细讲解: 快速掌握使用Docker搭建开发环境 什么是Docker? Docker是一个通用的,高度可扩展的开源容器化平台,它可以帮助开发者将应用程序和所有依赖的资源打包在容器中,并且能够使开发、测试、部署、运维等环节更加快速、方便和高效。 Docker的优势 相比于传统的虚拟化技术,Docker引入了容器技术,具有以下优势: 快速启动:容器启动…

    Docker 2023年5月16日
    00
  • win10安装docker

    1.登录阿里云,控制台–>产品与服务–>容器镜像服务–>镜像中心–>镜像加速器–>操作文档–>windows. (注意:似乎电脑系统不能是家庭版,我的是教育版,并且要是64位的) 2.根据文档进行操作,快一点5分钟不到就能搞定。 具体操作:   1.http://mirrors.aliyun.com/docke…

    Docker 2023年4月11日
    00
  • Docker 网络命令详解

    下面我来为你详细讲解“Docker 网络命令详解”的完整攻略。 Docker 网络概述 Docker 网络是 Docker 容器之间通信的基础,Docker 提供了多种网络驱动。默认情况下,Docker 会创建两个网络:bridge 和 none。 bridge 网络驱动:默认的网络驱动,用于向外部网络公开端口并与其他容器进行通信。 none 网络驱动:与宿…

    Docker 2023年5月16日
    00
  • 100 行 shell 写个 Docker

    本文主要介绍使用shell实现一个简易的docker。 作者:vivo 互联网运维团队- Hou Dengfeng 本文主要介绍使用shell实现一个简易的Docker。 一、目的 在初接触Docker的时候,我们必须要了解的几个概念就是Cgroup、Namespace、RootFs,如果本身对虚拟化的发展没有深入的了解,那么很难对这几个概念有深入的理解,本…

    2023年4月10日
    00
  • Grafana 系列文章(三):Tempo-使用 HTTP 推送 Spans

    ?️URL: https://grafana.com/docs/tempo/latest/api_docs/pushing-spans-with-http/ ?Description: 有时,使用追踪系统是令人生畏的,因为它似乎需要复杂的应用程序仪器或 span 摄取管道,以便 … 有时,使用追踪系统是令人生畏的,因为你似乎需要复杂的应用程序仪器或 sp…

    2023年4月10日
    00
  • 通过Docker创建CentOS容器的实现步骤

    通过Docker创建CentOS容器的实现步骤: 步骤一:安装Docker 要创建CentOS容器,首先需要在本机或服务器上安装Docker。可以通过以下步骤在CentOS系统上安装Docker。 在终端运行以下命令: $ sudo yum install -y yum-utils $ sudo yum-config-manager –add-repo h…

    Docker 2023年5月15日
    00
  • Docker安装Tomcat

    1、拉取Tomcat镜像 docker pull tomcat 2、创建tomcat容器 docker run -itd –name myTomcat -p 8086:8080 tomcat:latest /bin/bash    3、查看已创建的tomcat容器 docker ps    4、进入容器(红色的就是上面查出来的CONTAINER ID) d…

    Docker 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部