Centos使用docker搭建Graylog日志平台

news2024/11/25 17:25:48

日志管理系统有很多,比如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.coloradmin.cn/o/2247417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32的中断(什么是外部中断和其他中断以及中断号是什么)

一、什么是EXTI 和NVIC EXTI&#xff08;External Interrupt/Event Controller&#xff09;EXTI 是外部中断/事件控制器&#xff0c;它负责处理外部信号变化&#xff0c;并将信号传递给中断控制器&#xff08;如 NVIC&#xff09;。主要负责以下功能&#xff1a; 外部事件检测…

【MyBatis】全局配置文件—mybatis.xml 创建xml模板

文章目录 模板文件配置元素typeAliasessettings 模板文件 创建模板 按照顺序打开【File】–>【settings】–>【Editor】–>【File and Code Templates】&#xff08;或直接搜索&#xff09; <?xml version"1.0" encoding"UTF-8" ?> <…

『VUE』34. 异步组件(详细图文注释)

目录 加载速度的优化示例代码总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 加载速度的优化 实际项目中你可能会有几十个组件,如果一开始就加载了全部组件(哪怕其中有些组件你暂时用不到)这无疑大大增加了响应时间,用户体验…

鸿蒙开发-音视频

Media Kit 特点 一般场合的音视频处理&#xff0c;可以直接使用系统集成的Video组件&#xff0c;不过外观和功能自定义程度低Media kit&#xff1a;轻量媒体引擎&#xff0c;系统资源占用低支持音视频播放/录制&#xff0c;pipeline灵活拼装&#xff0c;插件化扩展source/demu…

Spark——安装步骤详细教程

1、安装步骤 1、上传 cd /opt/modules 2、解压 tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs 3、重命名 cd /opt/installs mv spark-3.1.2-bin-hadoop3.2 spark-local 4、创建软链接 ln -s spark-local spark 5、配置环境变量&#xff1a; vi /etc/prof…

MFC工控项目实例三十一模拟量转化为工程量

实测工程量值&#xff08;变送器量程最大值-变送器量程最小值&#xff09;/&#xff08;数字量最大值-数字量最小值&#xff09;*&#xff08;当前采集工程量值-零点误差值&#xff09;。 相关程序代码 SEAL_PRESSURE.h class CSEAL_PRESSUREApp : public CWinApp { public:C…

svn 崩溃、 cleanup失败 怎么办

在使用svn的过程中&#xff0c;可能出现整个svn崩溃&#xff0c; 例如cleanup 失败的情况&#xff0c;类似于 这时可以下载本贴资源文件并解压。 或者直接访问网站 SQLite Download Page 进行下载 解压后得到 sqlite3.exe 放到发生问题的svn根目录的.svn路径下 右键呼出pow…

Win10系统开启了文件夹管控(文件夹限制访问)导致软件向系统公共文档目录写入失败的问题排查分享

目录 1、问题说明 2、查看系统是否开启了文件夹管控 3、在未安装杀毒软件的Win10电脑上可能会自动打开文件夹管控 4、到微软官网上查看Windows 安全中心的病毒和威胁防护与文件夹管控的详细说明 5、解决办法探讨 6、最后 C++软件异常排查从入门到精通系列教程(专栏文章列…

移远通信推出全新5G RedCap模组RG255AA系列,以更高性价比加速5G轻量化大规模商用

11月20&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;正式推出其全新5G RedCap模组RG255AA系列。该系列模组支持5G NR独立组网&#xff08;SA&#xff09;和LTE Cat 4双模通信&#xff0c;具有高性能高集成度、低功耗、小尺寸、高性价比等优势&#…

传输控制协议(TCP)和用户数据报协议(UDP)

一、传输控制协议&#xff08;TCP&#xff09; 传输控制协议&#xff08;Transmission Control Protocol&#xff0c;TCP&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;由 IETF 的 RFC 793 定义。 它通过三次握手建立连接&#xff0c;确保数…

C++初阶(十五)--STL--list 的深度解析与全面应用

文章目录 一、头文件与基本概念 二、构造函数和析构函数 1.构造函数 2.析构函数 三、元素访问 front back 四、迭代器相关函数 begin end rebegin&#xff08;反向迭代器&#xff09; rend&#xff08;反向迭代器&#xff09; 五、容量相关函数 empty size max…

企业数智化新纪元,安全体系保驾护航

随着云计算、大数据、人工智能等技术的不断发展成熟&#xff0c;企业数智化建设进入到了深水区&#xff0c;网络安全已经成为企业发展最重要的基石。企业如何更好地拥抱先进生产力、构建强大的安全体系、重塑企业核心竞争力&#xff0c;是每一位技术决策者需要认真思考和解决的…

学Linux的第九天--磁盘管理

目录 一、磁盘简介 &#xff08;一&#xff09;、认知磁盘 &#xff08;1&#xff09;结构 &#xff08;2&#xff09;物理设备的命名规则 &#xff08;二&#xff09;、磁盘分区方式 MBR分区 MBR分区类型 扩展 GPT格式 lsblk命令 使用fdisk管理分区 使用gdisk管理分…

QT实现拷贝复制文件操作 QT5.12.3环境 C++实现

案例需求&#xff1a;利用QT线程操作&#xff0c;实现拷贝复制文件操作 代码&#xff1a; myfile.h #ifndef MYFILE_H #define MYFILE_H#include <QObject> #include <QDebug> #include <QThread> #include <QFile> #include <QtWidgets> class…

IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题 四)

汉化 setting 中选择插件 完成 安装出现问题 1.可能是因为之前下载过的idea&#xff0c;找到连接中 文件&#xff0c;卸载即可。

Jenkins-Git Parameter 插件实现指定版本的发布和回滚

在上一篇文章的基础设置上进行 1. 机器准备 开发10.0.0.204gitlab10.0.0.201jenkins10.0.0.200web10.0.0.202 2. 开发主机 在开发机器上修改不同版本的前端页面&#xff0c;并打上标签 第一次修改 [rootdev wheel]#vim index.html [rootdev wheel]#git commit -am "1…

Ubuntu ESP32开发环境搭建

文章目录 ESP32开发环境搭建安装ESP-IDF搭建一个最小工程现象 ESP32开发环境搭建 最近有个小项目需要用到能够联网的mcu驱动&#xff0c;准备玩玩esp的芯片&#xff0c;记录下ESP32开发环境搭建的过程。 ESP-IDF 是乐鑫科技为其 ESP32 系列芯片提供的官方开发框架。这个框架主…

《剖析 Spring 原理:深入源码的旅程(二)》

六、Spring 的 Bean 注入与装配 Spring 的 Bean 注入与装配的方式有很多种&#xff0c;可以通过 xml、get set 方式、构造函数或者注解等。简单易用的方式就是使用 Spring 的注解&#xff0c;Spring 提供了大量的注解方式&#xff0c;如 Autowired、Qualifier 等。Spring 还支持…

Git的使用_仓库管理_CI/CD介绍

文章目录 一、Git的基础知识一-1、什么是GitLinux命令行的git的简易安装Git项目的组成Git的基本工作流程Git文件的三种状态 一-2、存储库远程存储库与本地存储库创建存储库git init命令的使用方法1. 初始化一个新的 Git 仓库2. 在指定目录初始化一个新的 Git 仓库3. 初始化一个…

Android 实现悬浮球的功能

Android 实现悬浮球的功能 在 Android 中&#xff0c;实现悬浮球可以通过以下方式实现&#xff0c;常见的方法是使用 WindowManager 创建一个悬浮窗口。以下是具体的实现步骤&#xff1a; 1. 配置权限 在 AndroidManifest.xml 中添加悬浮窗权限&#xff1a; <uses-permis…