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/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 的索引压力。
拓展:关于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 - 博客园
相关文章:
Centos使用docker搭建Graylog日志平台
日志管理系统有很多,比如ELK,Graylog,LokiGrafanaPromtail 适用场景: 1.如果需求复杂,服务器资源不受限制,推荐使用ELK(Logstash Elasticsearch Kibana)方案; 2.如果需求仅是将…...
自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例
Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析:…...
【SQL】【数据库】语句翻译例题
SQL自然语言到SQL翻译知识点 以下是将自然语言转化为SQL语句的所有相关知识点,分门别类详细列出,并结合技巧说明。 1. 数据库操作 创建数据库 自然语言:创建一个名为“TestDB”的数据库。 CREATE DATABASE TestDB;技巧:识别**“创…...
linux基本命令2
7. 文件查找和搜索 (继续) find — 查找文件 find /path/to/search -name "file_name" # 根据名称查找文件 find /path/to/search -type f # 查找所有普通文件 find /path/to/search -type d # 查找所有目录 find /path/to/search -name "*.txt" # 查找…...
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
Redisson 是一个高性能的 Java Redis 客户端,提供了丰富的分布式工具集,如分布式锁、Map、Queue 等,帮助开发者简化 Redis 的操作。在集成 Redisson 到项目时,开发者通常有两种选择: 使用 Redisson 原始依赖。使用 Re…...

Git命令使用与原理详解
1.仓库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url]2.配置 # 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git co…...

Linux:自定义Shell
本文旨在通过自己完成一个简单的Shell来帮助理解命令行Shell这个程序。 目录 一、输出“提示” 二、获取输入 三、切割字符串 四、执行指令 1.子进程替换 2.内建指令 一、输出“提示” 这个项目基于虚拟机Ubuntu22.04.5实现。 打开终端界面如图所示。 其中。 之前&#x…...
vue项目中中怎么获取环境变量
在 Vue 项目中,有几种获取环境变量的方法。最常用的是通过 import.meta.env 来访问。 1.首先在项目根目录创建环境变量文件: .env # 所有环境都会加载 .env.development # 开发环境 .env.production # 生产环境2.在环境变量文件…...
C#里怎么样使用正则表达式?
C#里怎么样使用正则表达式? 正则表达式是由普通字符(如英文字母)以及特殊字符(也称为元字符)组成的一种文字模式 这种文字模式可用于检查字符串的值是否满足一定的规则,例如: 验证输入的邮箱是否合法 输入的身份证号码是否合法 输入的用户名是否满足条件等 也可以…...

《生成式 AI》课程 第5講:訓練不了人工智慧?你可以訓練你自己 (下)
资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Springhttps://speech.ee.ntu.edu.tw/~hylee/genai/2024-spring.php 摘要 这一系列的作业是为 2024 年春季的《生成式 AI》课程设计的,共包含十个作业。…...
Vue 动态给 data 添加新属性深度解析:问题、原理与解决方案
在 Vue 中,动态地向 data 中添加新的属性是一个常见的需求,但它也可能引发一些问题,尤其是关于 响应式更新 和 数据绑定 的问题。Vue 的响应式系统通过 getter 和 setter 来追踪和更新数据,但 动态添加新属性 时,Vue 并不会自动为这些新属性创建响应式链接。 1. 直接向 V…...

【Pytest+Yaml+Allure】实现接口自动化测试框架
一、框架思想 requestsyamlpytestallure实现接口自动化框架。结合数据驱动和分层思想,将代码与数据分离,易维护,易上手。使用yaml编写编写测试用例,利用requests库发送请求,使用pytest管理用例,allure生成…...
el-input绑定点击回车事件意外触发页面刷新
小伙伴们在项目中应该还是比较常用键盘指定按键事件的,尤其是一些筛选条件的通过点击键盘回车按键去触发搜索 例如: <el-form><el-form-item label条件title><el-input v-modelformData.searchKey keydown.entersearch></el-input…...
Golang的语言特性与鸭子类型
Golang的语言特性与鸭子类型 前言 什么是鸭子类型? Suppose you see a bird walking around in a farm yard. This bird has no label that says ‘duck’. But the bird certainly looks like a duck. Also, he goes to the pond and you notice that he swims l…...
如何在Linux系统中排查GPU上运行的程序
如何在Linux系统中排查GPU上运行的程序 在Linux系统中,随着深度学习和高性能计算的普及,GPU资源的管理和监控变得越来越重要。当您遇到GPU资源不足或性能下降的问题时,需要能够快速定位并解决这些问题。本文将介绍几种常用的方法来帮助您排查…...
VSCode 新建 Python 包/模块 Pylance 无法解析
问题描述: 利用 VSCode 写代码,在项目里新建一个 Python 包或者模块,然后在其他文件里正常导入这个包或者模块时出现: Import “xxxx” could not be resolved Pylance (reportMissingImports) 也就是说 Pylance 此时无法解析我们…...

Unet++改进44:添加MogaBlock(2024最新改进模块)|在纯基于卷积神经网络的模型中进行判别视觉表示学习,具有良好的复杂性和性能权衡。
本文内容:添加MogaBlock 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 通过将内核尽可能全局化,现代卷积神经网络在计算机视觉任务中显示出巨大的潜力。然而,最近在深度神经网络(dnn)内的多阶博弈论相互作用方面的进展揭示了现代卷积神经网络的表示瓶…...

计算机网络(14)ip地址超详解
先看图: 注意看第三列蓝色标注的点不会改变,A类地址第一个比特只会是0,B类是10,C类是110,D类是1110,E类是1111. IPv4地址根据其用途和网络规模的不同,分为五个主要类别(A、B、C、D、…...

【C语言】野指针问题详解及防范方法
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯什么是野指针?💯未初始化的指针代码示例问题分析解决方法 💯指针越界访问代码示例问题分析解决方法 💯指向已释放内存的…...

【SVN和GIT】版本控制系统详细下载使用教程
文章目录 ** 参考文章一、什么是SVN和GIT二、软件使用介绍1 SVN安装1.1 服务端SVN下载地址1.2 客户端SVN下载地址2 SVN使用2.1 服务端SVN基础使用2.1.1 创建存储库和用户成员2.1.2 为存储库添加访问人员2.2 客户端SVN基础使用2.2.1 在本地下载库中的内容2.2.2 版本文件操作--更…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...