【Ubuntu】简洁高效企业级日志平台后起之秀Graylog

简介

Graylog 是一个用于集中式日志管理的开源平台。在现代数据驱动的环境中,我们需要处理来自各种设备、应用程序和操作系统的大量数据。Graylog提供了一种方法来聚合、组织和理解所有这些数据。它的核心功能包括流式标记、实时搜索、仪表板可视化、告警触发、内容包快速配置、索引设置、日志发射器管理和处理管道。

  1. 流(Streams):流作为对传入消息进行标记的方法。它可以实时将消息路由到不同的类别,并使用规则指示Graylog将消息路由到适当的流中。

  2. 搜索(Search):Graylog提供了一个搜索页面,可以直接搜索日志。使用类似于Lucene的简化语法,用户可以从下拉菜单中配置相对或绝对的时间范围。搜索结果可以保存,也可以作为仪表板小部件进行可视化,从搜索界面直接添加到仪表板中。

  3. 仪表板(Dashboards):仪表板是对日志事件中包含的信息进行可视化或摘要的方式。每个仪表板由一个或多个小部件组成,通过使用字段值生成数据来可视化或摘要事件日志数据,如计数、平均值或总数。用户可以创建指标、图表、图形和地图来更直观地呈现数据。

  4. 告警(Alerts):通过事件定义和条件创建告警。当特定条件满足时,将其存储为事件,并触发通知。

  5. 内容包(Content Packs):内容包可以加速特定数据源的设置过程。它可以包含输入/提取器、流、仪表板、告警和处理管道。例如,用户可以为支持安全用例创建自定义输入、流、仪表板和告警。然后,将内容包导出,并在新安装的Graylog实例上导入,以便节省配置时间和工作量。

  6. 索引(Indexes):索引是OpenSearch和Elasticsearch中存储数据的基本单位。索引集提供了保留、分片和复制等存储数据的配置选项。通过在每个索引上设置值,如保留和轮换策略,可以对不同的数据应用不同的处理规则。

  7. Graylog Sidecar:Graylog Sidecar是一种管理日志发射器(如Beats或NXLog)的代理工具。这些日志发射器用于收集Linux和Windows服务器的操作系统日志。日志发射器读取本地日志文件,然后将其发送到集中式日志管理解决方案。Graylog支持管理任何日志发射器作为后端。

  8. 处理管道(Processing Pipelines):Graylog的处理管道允许用户对特定类型的事件运行规则或一系列规则。通过与流关联,管道可实现消息的路由、拒绝列表、修改和丰富,提高数据处理的灵活性。

通过这些核心功能,Graylog提供了强大而灵活的工具来帮助用户收集、解析和分析日志数据,从而发现问题并做出相应决策。无论是小型企业还是大型组织,Graylog都为日志管理提供了全面可靠的解决方案。

Graylog最简架构

Graylog基于把日志存储在数据节点、使用Elasticsearch或OpenSearch作为搜索引擎来提供强大的日志管理和分析功能。

  • Graylog服务器
    Graylog服务器是Graylog架构中的核心组件,它通过与数据节点交互,为用户提供一个简化的数据访问和搜索接口。用户可以通过Graylog服务器提交搜索查询,而无需直接与数据节点进行交互,从而极大地简化了数据的访问和处理过程。
  • 数据节点
    日志数据存储在数据节点中,其中可以使用Elasticsearch或OpenSearch作为存储引擎。这两个开源搜索引擎具备强大的索引和搜索能力,使用户能够高效地查询和分析大量的日志数据。Graylog 5.1仅支持Elasticsearch的7.10.2版本!我们建议您使用OpenSearch 2.5作为数据节点以支持Graylog 5.1。
  • MongoDB
    MongoDB用于存储元数据,如用户信息和流配置。这些数据并不包含实际的日志数据,因此对系统性能影响较小。MongoDB运行在Graylog服务器进程旁边,占用的磁盘空间很小。
    在这里插入图片描述

之前的文章中【Graylog之最小化部署安装(Ubuntu 22.04)】有介绍如何在Ubuntu 22.04上最小化安装Graylog,这次我们换成在Docker中最小化来部署Garylog,同时我们也将原来的Elasticsearch换成了OpenSearch。

部署

主机设置

在启动 OpenSearch 之前,您应该查看一些重要的系统设置,这些设置可以影响服务的性能。

  • 关闭主机上的内存分页和交换以提高性能。
 sudo swapoff -a
  • 增加 OpenSearch 可用的内存映射数量。
# 检查 sysctl.conf 文件中是否已经存在 vm.max_map_count 设置
if grep -q "vm.max_map_count" /etc/sysctl.conf; then
    # 如果已存在设置,则使用 sed 命令将其修改为 262144
    sudo sed -i 's/vm.max_map_count.*/vm.max_map_count=262144/' /etc/sysctl.conf
else
    # 如果不存在设置,则在文件末尾添加新的设置
    echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
fi

# 重新加载内核参数
sudo sysctl -p

# 通过检查值来验证更改是否已应用
cat /proc/sys/vm/max_map_count

拉取如下三个镜像

docker pull mongo
docker pull opensearchproject/opensearch:latest
docker pull graylog/graylog:5.1

编辑Docker Compose文件并启动

version: '3'
services:
  mongo:
    image: mongo
    restart: always
    volumes:
      - mongo_data:/data/db
    networks:
      - graylog-net
  opensearch:
    image: opensearchproject/opensearch:latest
    restart: always
    environment:
      - cluster.name=graylog
      - node.name=opensearch
      - discovery.type=single-node
      - network.host=0.0.0.0
      - action.auto_create_index=false
      - plugins.security.disabled=true
      - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - opensearch_data:/usr/share/opensearch/data
    networks:
      - graylog-net
  graylog:
      image: graylog/graylog:5.1
      restart: always
      environment:
       - GRAYLOG_PASSWORD_SECRET=GrayLog@12345678
       - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
       - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
       - GRAYLOG_TRANSPORT_EMAIL_ENABLED=true
       - GRAYLOG_TRANSPORT_EMAIL_HOSTNAME=smtp.tech.com
       - GRAYLOG_TRANSPORT_EMAIL_PORT=25
       - GRAYLOG_TRANSPORT_EMAIL_USE_AUTH=false
       - GRAYLOG_TRANSPORT_EMAIL_USE_TLS=false
       - GRAYLOG_TRANSPORT_EMAIL_USE_SSL=false
       - GRAYLOG_ELASTICSEARCH_HOSTS=http://opensearch:9200
       - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
      entrypoint: /usr/bin/tini -- wait-for-it opensearch:9200 --  /docker-entrypoint.sh
      networks:
        - graylog-net
      depends_on:
        - mongo
        - opensearch
      ports:
       - 9000:9000
       - 1514:1514
       - 1514:1514/udp
       - 2055:2055
      volumes:
       - graylog_data:/usr/share/graylog/data
       - /etc/timezone:/etc/timezone
       - /etc/localtime:/etc/localtime
volumes:
  mongo_data:
    driver: local
  opensearch_data:
    driver: local
  graylog_data:
    driver: local
networks:
  graylog-net:

以上主要定义了三个服务:MongoDB、OpenSearch和Graylog,并设置了它们的相关配置。
MongoDB服务使用mongo镜像,设置了持续重启(restart: always)。它将/data/db目录挂载为mongo_data卷,并与graylog-net网络关联。
OpenSearch服务使用opensearchproject/opensearch:latest镜像,同样设置了持续重启。它定义了一系列环境变量用于配置OpenSearch,包括集群名称、节点名称、发现类型、网络主机、禁用安全插件等等。此外,还设置了内存锁定和文件打开限制等系统限制。/usr/share/opensearch/data目录被挂载为opensearch_data卷,并与graylog-net网络关联。
Graylog服务使用graylog/graylog:5.1镜像,同样设置了持续重启。它定义了一系列环境变量来配置Graylog,包括密码密钥、根密码哈希、HTTP外部URI、电子邮件传输配置、OpenSearch主机等等。入口点是/usr/bin/tini -- wait-for-it opensearch:9200 -- /docker-entrypoint.sh,它在启动Graylog之前将等待OpenSearch服务就绪。Graylog服务与graylog-net网络关联,并依赖于MongoDB和OpenSearch服务。端口映射包括9000用于Web界面、1514和2055用于接收日志数据。关于Graylog的一系列环境变量都可以通过环境变量进行设置。只需将参数名称以GRAYLOG_为前缀,并全部使用大写字母。具体配置参考【service.conf】。

另外,该docker-compose.yml文件定义了三个卷:mongo_dataopensearch_datagraylog_data,它们分别用于持久化存储MongoDB、OpenSearch和Graylog的数据。
最后,定义了一个名为graylog-net的网络,用于连接MongoDB、OpenSearch和Graylog服务。
请注意,您需要根据您自己的配置和需求进行适当的更改,例如更改密码、主机名、网络配置等。保存并命名为docker-compose.yml文件,然后在包含该文件的目录中运行以下命令启动这三个服务:

docker-compose up -d

这将启动MongoDB、OpenSearch和Graylog服务,并您可以通过访问http://hostip:9000/来访问Graylog的Web界面。以上YML文件中定义的默认用户名密码为 admin/admin
在这里插入图片描述

Reference:
[1] https://opensearch.org/docs/latest/install-and-configure/install-opensearch/docker/
[2] https://go2docs.graylog.org/5-0/setting_up_graylog/server.conf.html
[3] https://www.joda.org/joda-time/timezones.html
[4] https://go2docs.graylog.org/5-1/downloading_and_installing_graylog/docker_installation.htm
[5] https://hub.docker.com/r/graylog/graylog
[6] https://hub.docker.com/r/opensearchproject/opensearch
[7] https://hub.docker.com/_/mongo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/82091.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows安装 Elasticsearch 教程

下载地址 Past Releases of Elastic Stack Software | Elastic 解压 解压完的样子 进入BIN目录 D:\Develop\elasticsearch\elasticsearch-7.12.0\bin 按住shift 鼠标右键 打开 powershell 窗口 查看ES版本 .\elasticsearch.bat --version 出现问题了 警告:不赞成…

jenkins pipeline方式一键部署github项目

上篇:jenkins一键部署github项目 该篇使用jenkins pipeline-script一键部署,且介绍pipeline-scm jenkins环境配置 前言:按照上篇创建pipeline任务,结果报mvn,jdk环境不存在,就很疑惑,然后配置全…

【Apollo】Apollo 8.0系统下载指南

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

stm32_ADC电源、通道、工作模式

0、ADC功能框图 1、ADC的电源 1.1、工作电源 VSSAVSS,VDDAVDD,简单来说,通常stm32是3.3V,ADC的工作电源也是3.3V; 1.2、参考电压 VREF和VREF-并不一定引出,取决于封装,如果没有引出则VREF连接到…

小程序前台Boot后台校园卡资金管理系统java web学校进销存食堂挂失jsp源代码

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 小程序前台Boot后台校园卡资金管理系统 系统有2权限&…

回归预测 | MATLAB实现GWO-SVM灰狼优化算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GWO-SVM灰狼优化算法优化支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GWO-SVM灰狼优化算法优化支持向量机多输入单输出回归预测(多指标,多图)效果一览基…

Linux 进程间通信——消息队列

一、消息队列的原理 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型,接收进程可以独立接收含有不同类型值得数据库。 消息实际上是一个数据块,这个数据块是一个结构体,结构体由自己命名。消…

奇舞周刊第503期:图解串一串 webpack 的历史和核心功能

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 图解串一串 webpack 的历史和核心功能 提到打包工具,可能你会首先想到 webpack。那没有 webpack 之前,都是怎么打包的呢?webpack 都有哪些功能&…

网络编程套接字(1)

文章目录 网络编程套接字(1)1. 预备知识1.1 源IP与目的IP1.2 认识端口号1.3 理解 "端口号" 和 "进程ID"1.4 源端口号和目的端口号1.5 认识TCP协议和UDP协议(1) TCP(2) UDP 1.6 网络字节序 2. socket编程接口2.1 socket 常见API2.2 sockaddr结构 网络编程套…

matplotlib绘制位置-时序甘特图

文章目录 1 前言2 知识点2.1 matplotlib.pyplot.barh2.2 matplotlib.legend的handles参数 3 代码实现4 绘制效果5 总结参考 1 前言 这篇文章的目的是,总结记录一次使用matplotlib绘制时序甘特图的经历。之所以要绘制这个时序甘特图,是因为22年数模研赛C…

【⑫MySQL | 约束(二)】外键 | 默认值 | 检查约束 — 综合案例

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL外键 | 默认值 | 检查约束 以及综合案例的分享✨ 目录 前言6. 外键约束(FOREIGN KEY,FK)7. 默认值约束和检查约束8. 综合实战总结 6. 外键约束(FOREIGN KEY,FK) 前面介绍的完整性约束都是在单表中进行设置&…

JavaScript 快速入门手册

本篇文章学习: 菜鸟教程、尚硅谷。 JavaScript 快速入门手册 💯 前言: 本人目前算是一个Java程序员,但是目前环境… ε(ο`*))) 一言难尽啊,blog也好久好久没有更新了,一部分工作原因吧(外包真…

重新认识小米

被镁光灯聚焦的企业,总是会被贴上各种标签。 8月14日,小米科技创始人雷军以“成长”为主题的年度演讲,刷遍社交网络。提到小米,你首先想到什么?手机发烧友、极致性价比,还是最年轻的500强? 这…

八大排序算法 - Java实现

冒泡排序 排序原理: 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值 代码实现: import java.uti…

uniapp从入门到精通(全网保姆式教程)~ 别再说你不会开发小程序了

目录 一、介绍 二、环境搭建(hello world) 2.1 下载HBuilderX 2.2 下载微信开发者工具 2.3 创建uniapp项目 2.4 在浏览器运行 2.5 在微信开发者工具运行 2.6 在手机上运行 三、项目基本目录结构 四、开发规范概述 五、全局配置文件&#xff0…

大数据面试题:Spark的任务执行流程

面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)Spark的工作流程?2)Spark的调度流程;3)Spark的任务调度原理&#xf…

【BASH】回顾与知识点梳理(三十二)

【BASH】回顾与知识点梳理 三十二 三十二. SELinux 初探32.1 什么是 SELinux当初设计的目标:避免资源的误用传统的文件权限与账号关系:自主式访问控制, DAC以政策规则订定特定进程读取特定文件:委任式访问控制, MAC 32.2 SELinux 的运作模式安…

VMware 虚拟机三种网络模式详解

文章目录 前言桥接模式(Bridged)桥接模式特点: 仅主机模式 (Host-only)仅主机模式 (Host-only)特点: NAT网络地址转换模式(NAT)网络地址转换模式(NAT 模式)特点: 前言 很多同学在初次接触虚拟机的时候对 VMware 产品的三种网络模式不是很理解,本文就 VMware 的三种网络模式进行…

Vue 项目搭建

环境配置 1. 安装node.js 官网:nodejs(推荐 v10 以上) 官网:npm 是什么? 由于vue的安装与创建依赖node.js(JavaScript的运行环境)里的npm(包管理和分发工具)&#xff…

创建密码库/创建用户帐户/更新 Ansible 库的密钥/ 配置cron作业

目录 创建密码库 创建用户帐户 更新 Ansible 库的密钥 配置cron作业 创建密码库 按照下方所述,创建一个 Ansible 库来存储用户密码: 库名称为 /home/curtis/ansible/locker.yml 库中含有两个变量,名称如下: pw_developer&#…