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:
上述配置文件定义了三个服务:mongodb
、elasticsearch
和graylog
。我们将使用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输入源:
- 在Graylog的Web界面中,点击左侧导航栏中的"System",然后选择"Inputs"。
- 在"Inputs"页面中,点击"Launch new input"按钮。
- 在"Select input"对话框中,选择"GELF UDP"作为输入类型。
- 在"Input Title"字段中输入输入源的名称,例如"UDP Input"。
- 点击"Save"按钮保存输入源的配置。
创建流
流是Graylog中用于过滤和分类日志数据的对象。我们可以通过以下步骤创建一个流:
- 在Graylog的Web界面中,点击左侧导航栏中的"Streams"。
- 在"Streams"页面中,点击"Create stream"按钮。
- 在"Stream Title"字段中输入流的名称,例如"Test Stream"。
- 在"Stream Description"字段中输入流的描述。
- 在"Stream rules"字段中,选择一个规则来过滤日志事件。
- 点击"Create stream"按钮创建流。
创建提取器
提取器用于从日志消息中提取特定的字段。我们可以通过以下步骤创建一个提取器:
- 在Graylog的Web界面中,点击左侧导航栏中的"System",然后选择"Inputs"。
- 在"Inputs"页面中,找到之前创建的输入源,点击其对应的"Manage extractors"按钮。