当前位置: 首页 > article >正文

Centos使用docker搭建Graylog日志平台

日志管理系统有很多,比如ELK,Graylog,Loki+Grafana+Promtail

适用场景:

1.如果需求复杂,服务器资源不受限制,推荐使用ELK(Logstash + Elasticsearch + Kibana)方案;

2.如果需求仅是将不同服务器上的日志采集上来集中展示和检索,且需要一个轻量级的框架,那使用PLG(Promtail + Loki + Grafana)最合适不过了。

3.Graylog专注于日志管理,内置报警功能,可配置当系统发生异常时下发邮件进行通知。

三者对比如下所示:

  从左到右分别是:    ELK                         Graylog                        Loki + Grafana + Promtail

资源消耗         高         中         低
部署复杂度          高        中          低
查询能力        强    中          弱
可视化能力强(Kibana 丰富)  一般      强(Grafana 丰富)
适合场景大规模日志,复杂查询和分析中小型项目,快速部署中等日志量,轻量化监控

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:

1. 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

2. sudo chmod +x /usr/local/bin/docker-compose
3. 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/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.ymlGRAYLOG_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 的索引压力。

拓展:关于Loki + Grafana + Promtail安装和使用可参考:

轻量级日志系统docker-compose搭建Loki+Grafana+Promtail,配置、部署,查询全流程_docker compose loki-CSDN博客

使用 Loki、Loki4j、Grafana 和 Spring Boot 搭建一个轻量级、简单、易用的 Java 日志系统_loki springboot-CSDN博客

Promtail+Loki+Grafana搭建轻量级日志管理平台 - C3Stones - 博客园


http://www.kler.cn/a/408945.html

相关文章:

  • Qt界面设计时使各控件依据窗口缩放进行栅格布局的方法
  • 采用python3.12 +django5.1 结合 RabbitMQ 和发送邮件功能,实现一个简单的告警系统 前后端分离 vue-element
  • MySQL 中的锁
  • mq 消费慢处理方式,rocketmq消费慢如何处理,mq如何处理消费端消费速率慢。rocketmq优化
  • VMware Workstation 17.6.1
  • 【工具变量】中国省级及地级市保障性住房数据集(2010-2023年)
  • python中的base64使用小笑话
  • vue从入门到精通(七):事件处理
  • 全新三网话费余额查询API系统源码 Thinkphp全开源 附教程
  • 力扣力扣力:860柠檬水找零
  • 【机器学习监督学习】:从原理到实践,探索算法奥秘,揭示数据标注、模型训练与预测的全过程,助力人工智能技术应用与发展
  • Unity 内置枚举(Option Stencil)
  • 【AI技术赋能有限元分析应用实践】Abaqus、 Ansys、FEniCSx 有限元结合深度学习
  • Java爬虫与淘宝API接口:深度解析销量和商品详情数据获取
  • FMCJ456-14bit 2通道3/2.6/2GS/s ADC +16bit 2通道12.6GS/s DAC FMC AD/DA子卡
  • 网站渗透测试工具zap2docker-stable
  • H.264/H.265播放器EasyPlayer.js网页全终端安防视频流媒体播放器关于iOS不能系统全屏
  • 第425场周赛题解:最小正和子数组
  • Fakelocation Server服务器/专业版 Centos7
  • 图形渲染性能优化
  • python中lxml 库之 etree 使用详解
  • Sparrow系列拓展篇:消息队列和互斥锁等IPC机制的设计
  • Go 语言中的海勒姆定律
  • Jenkins-Git Parameter 插件实现指定版本的发布和回滚
  • 解释 Python 中的可变与不可变数据类型?
  • 框架学习07 - SpringMVC 地址映射