Centos使用docker搭建Graylog日志平台

Graylog是一款开源的日志管理系统,具备强大的过滤和搜索能力。

特点和适用场景:

  • 适合中小型企业、日志量不大或希望快速部署日志管理平台的团队。
  • 强调日志的聚合、报警、和简单分析。
  • 可按需轻量配置,仅分析核心日志。

下面介绍下它的安装:

1. 准备环境

安装 Docker 和 Docker Compose

  • 安装 Docker:

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install -y docker-ce docker-ce-cli containerd.io

sudo systemctl start docker

sudo systemctl enable docker

安装 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version

2. 创建数据目录

为持久化存储 MongoDB 和 Elasticsearch 数据,创建本地目录:

mkdir -p /opt/graylog/mongo/data

mkdir -p /opt/graylog/elasticsearch/data

mkdir -p /opt/graylog/graylog

设置权限(确保 Docker 有权限写入):

sudo chown -R 1000:1000 /opt/graylog/elasticsearch/data

sudo chown -R 1000:1000 /opt/graylog/mongo/data

sudo chown -R 1000:1000 /opt/graylog/graylog

  1. 创建 Docker Compose 配置文件

version: '3'

services:

mongo:

image: mongo:5.0

container_name: mongo

restart: always

volumes:

  • /opt/graylog/mongo/data:/data/db

elasticsearch:

image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2

container_name: elasticsearch

environment:

  • discovery.type=single-node

  • bootstrap.memory_lock=true

ulimits:

memlock:

soft: -1

hard: -1

mem_limit: 2g

volumes:

  • /opt/graylog/elasticsearch/data:/usr/share/elasticsearch/data

restart: always

graylog:

image: graylog/graylog:5.0

container_name: graylog

environment:

  • GRAYLOG_PASSWORD_SECRET=<生成的密码密钥>

  • GRAYLOG_ROOT_PASSWORD_SHA2=<你的密码的 SHA-256 值>

  • GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000

depends_on:

  • mongo

  • elasticsearch

volumes:

  • /opt/graylog/graylog:/usr/share/graylog/data

ports:

  • "9000:9000"

  • "12201:12201/udp"

restart: always

替换占位符

  • 生成密码密钥 (GRAYLOG_PASSWORD_SECRET):

pwgen -N 1 -s 96

如果没有pwgen,则先执行下面的命令安装:

sudo yum install -y epel-release
sudo yum install -y pwgen

再生成密码密钥:

pwgen -N 1 -s 96

生成管理员密码哈希 (GRAYLOG_ROOT_PASSWORD_SHA2),下面的yourpassword需替换为具体密码:

echo -n "yourpassword" | sha256sum

将生成的值填入 docker-compose.yml 的 GRAYLOG_PASSWORD_SECRET 和GRAYLOG_ROOT_PASSWORD_SHA2。

4. 启动服务

启动 Docker Compose

运行以下命令启动容器:

docker-compose up -d

查看容器状态

确保所有容器都在运行:

docker ps

5. 访问 Graylog

  • 打开浏览器访问 http://<服务器IP>:9000。
  • 使用以下登录:
    • 用户名:admin
    • 密码:在 GRAYLOG_ROOT_PASSWORD_SHA2 中生成的原始密码。

6. 防火墙配置

如果使用防火墙,确保开放必要的端口:

sudo firewall-cmd --add-port=9000/tcp --permanent

sudo firewall-cmd --add-port=12201/udp --permanent

sudo firewall-cmd --reload

7. 日志和数据持久化检查

检查 Graylog 日志:

docker logs graylog

数据持久化验证:

  • MongoDB 数据 存储在 /opt/graylog/mongo/data。
  • Elasticsearch 数据 存储在 /opt/graylog/elasticsearch/data。
  • Graylog 配置和数据 存储在 /opt/graylog/graylog。

8. 停止和重启服务

  • 停止服务:

docker-compose down

重启服务:

docker-compose up -d

Graylog总内存需求

  • 测试环境 (低日志量、少并发):

    总消耗约 4 GB(1 GB Graylog + 512 MB MongoDB + 2 GB Elasticsearch)。

  • 小型生产环境 (中等日志量、适度并发):

    总消耗约 6 GB(1.5 GB Graylog + 1 GB MongoDB + 4 GB Elasticsearch)。

  • 大型生产环境 (高日志量、高并发):

    总消耗可能在 8 GB - 16 GB 或更高。

内存优化建议

  1. Elasticsearch 调优:

    • 配置堆内存大小: 编辑 /etc/elasticsearch/jvm.options 或 Docker Compose 的 ES_JAVA_OPTS 环境变量:

      -Xms2g -Xmx2g

      -Xmx2g

建议分配总系统内存的 50%,但不要超过 32 GB。

2.Graylog Server 调优:

  • 配置 Graylog 的 JVM 堆内存大小: 编辑 /etc/graylog/server/server.conf 或 Docker Compose 的 GRAYLOG_SERVER_JAVA_OPTS:

GRAYLOG_SERVER_JAVA_OPTS="-Xms512m -Xmx1g"

3.MongoDB 调优:

使用 wiredTiger 存储引擎(默认),优化内存利用率。

4.日志清理:

配置日志保留时间,减少 Elasticsearch 的索引压力。

相关推荐
vipxieliang9 小时前
Docker vs Podman vs containerd:容器运行时全景
docker·容器
vipxieliang9 小时前
数据持久化方案:卷、挂载、权限与备份恢复
docker·容器
vipxieliang9 小时前
Compose 生产级配置:从 demo 到可上线
docker
vipxieliang9 小时前
容器原理揭秘:namespace、cgroup 与镜像分层
docker·容器
java_logo13 小时前
Docker 部署 dockurr/windows:轻松搭建浏览器可控 Windows 虚拟机
运维·windows·docker·容器·虚拟机·kvm·轩辕镜像
谢亮_vipxieliang13 小时前
私有镜像仓库:Registry、Harbor 与镜像同步实战
网络·docker·容器
努力努力再努力wz15 小时前
【边缘计算入门系列】从“在哪里算”到“怎么算”:一文建立边缘计算、算子、计算图与 Tensor 的底层心智模型
人工智能·docker·边缘计算
江湖有缘15 小时前
3款开源IT工具箱整理合集,可Docker一键部署!
docker·容器·开源
旋生万物16 小时前
用螺旋数重写 Transformer Attention:让大模型自带“相位记忆“的 PyTorch 实现
docker·云原生·kubernetes·螺旋生成论·螺旋相位
余槐i16 小时前
-m 2g 反而更早 OOM:Docker 内存计数与宿主机空闲口径差异
java·linux·docker·性能优化·cgroup