Docker和Graylog简介及使用示例

简介

Docker是一个开源的应用容器引擎,可以将应用及其依赖打包成一个可移植的容器,然后发布到任何运行相同操作系统的机器上。Graylog是一个开源的日志管理工具,用于收集、存储和分析日志数据。在本文中,我们将介绍如何使用Docker来部署和运行Graylog。

准备工作

在开始之前,我们需要确保已经安装了Docker和Docker Compose。如果还没有安装,请按照官方文档进行安装。

创建Docker Compose文件

首先,我们需要创建一个名为docker-compose.yml的文件,并添加以下内容:

version: '3'
services:
  mongodb:
    image: mongo:4.2
    volumes:
      - mongodb_data:/data/db
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.2
    volumes:
      - elasticsearch_data:/usr/share/elasticsearch/data
    environment:
      - discovery.type=single-node
  graylog:
    image: graylog/graylog:4.1
    volumes:
      - graylog_data:/usr/share/graylog/data
    environment:
      - GRAYLOG_WEB_ENDPOINT_URI=
      - GRAYLOG_HTTP_EXTERNAL_URI=http://localhost:9000/
    depends_on:
      - mongodb
      - elasticsearch
volumes:
  mongodb_data:
  elasticsearch_data:
  graylog_data:

上述配置文件定义了三个服务:mongodbelasticsearchgraylog。我们将使用MongoDB作为Graylog的数据存储后端,使用Elasticsearch作为Graylog的搜索和分析引擎。

启动Graylog

使用以下命令启动Graylog服务:

$ docker-compose up -d

上述命令将启动所有定义的服务,并将其放在后台运行。Graylog将会监听9000端口。

配置Graylog

现在,我们可以通过访问http://localhost:9000来访问Graylog的Web界面。第一次登录时,将会提示我们进行一些基本配置。

![](

erDiagram
    LOGS ||..|{ SOURCES : has
    SOURCES ||..|{ STREAMS : has
    STREAMS ||..|{ RULES : has
    USERS ||--o{ ROLES : has
    ROLES }o--|| PERMISSIONS : has
    PERMISSIONS ||--o{ ROLES : has
    PERMISSIONS ||..|{ ENTITY : has
    ROLES ||..|{ ENTITY : has
    ENTITY ||--|{ ROLES : has
    ENTITY ||--|{ PERMISSIONS : has

创建输入源

在Graylog中,我们需要先创建一个输入源来接收日志数据。我们可以通过以下步骤创建一个GELF UDP输入源:

  1. 在Graylog的Web界面中,点击左侧导航栏中的"System",然后选择"Inputs"。
  2. 在"Inputs"页面中,点击"Launch new input"按钮。
  3. 在"Select input"对话框中,选择"GELF UDP"作为输入类型。
  4. 在"Input Title"字段中输入输入源的名称,例如"UDP Input"。
  5. 点击"Save"按钮保存输入源的配置。

创建流

流是Graylog中用于过滤和分类日志数据的对象。我们可以通过以下步骤创建一个流:

  1. 在Graylog的Web界面中,点击左侧导航栏中的"Streams"。
  2. 在"Streams"页面中,点击"Create stream"按钮。
  3. 在"Stream Title"字段中输入流的名称,例如"Test Stream"。
  4. 在"Stream Description"字段中输入流的描述。
  5. 在"Stream rules"字段中,选择一个规则来过滤日志事件。
  6. 点击"Create stream"按钮创建流。

创建提取器

提取器用于从日志消息中提取特定的字段。我们可以通过以下步骤创建一个提取器:

  1. 在Graylog的Web界面中,点击左侧导航栏中的"System",然后选择"Inputs"。
  2. 在"Inputs"页面中,找到之前创建的输入源,点击其对应的"Manage extractors"按钮。