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
3. 创建 Docker Compose 配置文件
version: '3'
services:
mongo:
image: mongo:5.0
container_name: mongo
restart: always
volumes:
- /opt/graylog/mongo/data:/data/dbelasticsearch:
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: alwaysgraylog:
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 或更高。
内存优化建议
-
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 的索引压力。