百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

你居然还去服务器上捞日志,搭个 Graylog 日志收集系统不香么

csdh11 2025-03-07 17:53 3 浏览

一、前言

Graylog 是一个强大的平台,基于 Scala 语言开发。使用它能很容易对结构化和非结构化日志进行管理以及调试应用程序。它依赖 Elasticsearch 和 MongoDB。Graylog 的主服务从客户端节点获取数据,同时还提供 Web 接口,方便用户可视化聚合来的日志。

二、部署图

最小化安装:

生产环境安装:

主要逻辑:

Graylog Collector -> Graylog Server(封装Elasticsearch) -> Graylog Web

  • Graylog Collector:用于收集日志,整合 Collector 把日志发给 Server;
  • Graylog Server:封装 Elasticsearch 用于存储收集到的日志信息;
  • Graylog Web:通过 Web 端来查看日志。

三、选型优势

  • Graylog 一开始定位为强大的日志解决方案,而 ELK 则是大数据解决方案;
  • Graylog 可以通过网络协议直接从应用程序接收结构化日志和标准 syslog。相反,ELK 是使用 Logstash 分析已收集的纯文本日志的解决方案,然后解析并将它们传递给 ElasticSearch;
  • 相比 ELK 更优秀的报警功能;
  • 更好地交互,通过跟踪 Graylog 收到的错误堆栈,支持多行日志,工程师可以快速源代码中的上下文;
  • 强大的搜索功能,搜索语法比 ELK 简单,搜索结果支持高亮显示,支持 TB 级别的查询;
  • 有归档功能,超过 30 天的所有内容都可以存储在廉价存储中,在出现查询需求时,可以重新导入到 Graylog;
  • Python 库支持。

四、使用 Docker Compose 搭建

1、需要下载的 Docker 镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.10
docker pull mongo:3
docker pull graylog/graylog:3.3

2、搭建前准备

Docker Compose是一个用于定义和运行多个docker容器应用的工具。使用Compose你可以用YAML文件来配置你的应用服务,然后使用一个命令,你就可以部署你配置的所有服务了。

2.1、下载 Docker Compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2.2、修改该文件的权限为可执行

chmod +x /usr/local/bin/docker-compose

2.3、查看是否已经安装成功

docker-compose --version

3、开始搭建

3.1、使用 docker-compose.yml 脚本启动服务

docker-compose.yml 内容:

version: '2'
services:
  # MongoDB: https://hub.docker.com/_/mongo/
  mongodb:
    image: mongo:3
  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.6/docker.html
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.10
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    mem_limit: 1g
  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    image: graylog/graylog:3.3
    environment:
      # 加密盐值,不设置,graylog会启动失败
      # 该字段最少需要16个字符
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      # 设置用户名
      - GRAYLOG_ROOT_USERNAME=admin
      # 设置密码,此为密码进过SHA256加密后的字符串
      # 加密方式,执行 echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.16.106.233:9000/
      # 设置时区
      - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
    links:
      - mongodb:mongo
      - elasticsearch
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      # Graylog web interface and REST API
      - 9000:9000
      # Syslog TCP
      - 1514:1514
      # Syslog UDP
      - 1514:1514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp

上传到 linux 服务器并使用 docker-compose 命令运行:

docker-compose up -d

注意:

Elasticsearch 启动可能需要好几分钟,要耐心等待。

[root@graylog]# docker-compose ps
         Name                        Command                  State                                                                 Ports                                                           
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
graylog_elasticsearch_1   /usr/local/bin/docker-entr ...   Up             9200/tcp, 9300/tcp                                                                                                        
graylog_graylog_1         tini -- /docker-entrypoint ...   Up (healthy)   0.0.0.0:12201->12201/tcp, 0.0.0.0:12201->12201/udp, 0.0.0.0:1514->1514/tcp, 0.0.0.0:1514->1514/udp, 0.0.0.0:9000->9000/tcp
graylog_mongodb_1         docker-entrypoint.sh mongod      Up             27017/tcp                                                                                                                 
[root@centos-7-template graylog]# 

3.2、关闭防火墙

systemctl stop firewalld

五、配置 graylog 控制台,接收日志来源

登录 graylog,打开浏览器访问:http://172.16.106.233:9000/ 输入 docker-compose.yml 里配置的 用户名/密码 信息

设置来源信息:

六、框架集成

1、添加 logback-gelf 依赖

pom.xml 中添加:

 
        
            de.siegmar
            logback-gelf
            2.0.0
        

2、添加配置文件 logback-spring.xml 让 logback 的日志输出到 graylog

注意:

appender 节点下的 graylogHost 需要改成你自己的 服务地址,比如我的是:172.16.106.233 。




  
  
  
  
  
  
  
  
  
  

  
  

  
  
    
      ${CONSOLE_LOG_PATTERN}
      utf8
    
  

  
  
    172.16.106.233
    12201
    508
    true
    
      true
      true
      true
      false
      false
      true
      
        ${GRAY_LOG_SHORT_PATTERN}
      
      
        ${GRAY_LOG_FULL_PATTERN}
      
      app_name:${APP_NAME}
      os_arch:${os.arch}
      os_name:${os.name}
      os_version:${os.version}
    
  

  
  
    
    
  

  
  


  
  
  
  
  
  

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

3、配置 application.yml

spring:
  application:
    name: graylog
server:
  port: 8888

4、进行测试

添加一个测试类:

SpringBootTest
@Slf4j
public class TestCase extends AbstractTestNGSpringContextTests {

    @Test
    public void testDemo() {
        log.info("输出info");
        log.debug("输出debug");
        log.error("输出error");
    }

}
}

运行测试:

七、Graylog 页面查看日志信息

八、总结

ELK 和 Graylog 两种解决方案在功能上非常相似,但仍有一些差异需要考虑。在 ELK 中,Kibana 扮演仪表盘的角色并显示从Logstash 收到的数据。Graylog 在这点上更方便,因为它提供了单一应用程序的解决方案(不包括 ElasticSearch 作为灵活的数据存储),具有几乎相同的功能。因此,部署所需的时间更短。 此外,与 ELK 相比,Graylog 开箱即用,且具有出色的权限系统,而且 Kibana 则不具备此功能。作为 Elasticsearch 的粉丝,我更喜欢 Graylog 而不是ELK,因为它完全符合我在测试框架日志管理方面的需求。


示例代码:

  • https://github.com/zuozewei/blog-example/tree/master/Java-api-test/03-log-framework/springboot-logback-graylog-demo


参考资料:

[1]:https://docs.graylog.org/en/3.3/pages/architecture.html

相关推荐

音视频命令转换工具 - FFmpeg

随着自媒体兴起,许多人会自拍视频或者找视频素材裁剪,配上背景音乐或解说,加上各种特效边框,处理后再生成新的视频文件,发布到各大平台。生成的原始视频文件都很大,我们需要转换格式或者压缩大小,便于上传或者...

视频剪辑软件,如何批量将h264转换为h265格式的视频

最近有很多朋友在问,因为剪辑、或者上传的原因,需要将视频编码转换成H265格式编码,该怎么操作呢?不知道怎么办的宝贝们,下面请随小编一起来试试吧。需要哪些工具?安装一个媒体梦工厂视频素材若干怎么快速剪...

1080秒变4K,让PotPlayer开启“超分辨率”播放视频文件

大家好,我是大卫呆。1080P的视频能秒变4K视频吗?通过上期节目的实机测试,答案是:...

视频编码H.265与H.264的区别-------深入浅出说监控

我们在购买监控摄像头或者录像机产品的时候,一般情况下,经销商会问你是要H.265编码格式与H.264编码格式的,很多人都会好奇,什么是H.265和H.264?他们的实际效果有什么区别?今天就从定义和作...

H.265已落后!下一代视频技术实现重大突破

来源:快科技下一代视频技术实现重大突破。从阿里云官微获悉,阿里达摩院XG实验室参与制定的新一代国际视频编码标准H.266(VVC)出炉,同等画质下将节省近50%传输流量,清晰度越高,码率节省越多。前不...

VP9 或 H.265 的 6 个比较点

直播很复杂。广播流和通过Internet传输流的整个过程涉及一系列可以采用多种格式的方法。一个重要的组件是用于媒体文件编码和解码的编解码器。编解码器还定义了可用于进行流式传输的工具类型。大大简化流...

融合通信系统播放不了H.265视频怎么解决

在融合通信项目中,视频的融合是很多项目的落地要求,随着技术的进步,需要融合的视频也是多种多样,很多项目中需要接入视频监控,布控球,无人机,视频会议等视频资源。这些视频资源使用不同的技术,不同的传输协议...

别被忽悠了!视频编码H.265与H.264的区别有多大?看完你就懂了

相信大家都听过H.265和H.264这两种编码,也看过专业术语的解释。包括电视机都会标注支持H.265格式4K视频编码,视频监控系统也会标注支持H.265。但是还是有很多人不知道什么是视频编码H.26...

视频行业迎来巨变!H.265将被淘汰,电视及流媒体全受影响

这两天,姐夫自己遇到一个问题,从一些流媒体网站上下载来的视频,比如油管上的视频,居然无法正常在Windows10上播放,必须要重新下载一个视频编码插件才行。甚至于这些视频都无法通过现有的编辑软件去做...

对于Mybaits缓存的理解

...

你居然还去服务器上捞日志,搭个 Graylog 日志收集系统不香么

一、前言...

Java 代理从 0 到彻底搞懂

一、为什么出现代理?咱们先抛开编程,想象一下生活中的场景。假如你是一位大明星,每天都有无数的活动邀约、采访请求,还有各种商务合作的洽谈。要是你亲自去处理这些事情,那你哪还有时间去拍戏、唱歌、提升自己的...

SpringBoot系列——cache缓存

  前言  日常开发中,缓存是解决数据库压力的一种方案,通常用于频繁查询的数据,例如新闻中的热点新闻,本文记录springboot中使用cache缓存。...

Spring的缓存帝国,得益于这 5个注解!

在微服务,分布式的大环境下,缓存绝对是提升系统性能的关键手段,Spring作为Java生态中最流行的企业级应用框架,它是如何实现缓存的呢?这篇文章,我们将深入探讨Spring中5个核心的缓存注解...

JVM缓存EhCache在实际业务系统中的应用及复杂场景探讨

本文将介绍JVM缓存EhCache的基本概念、原理以及在实际业务系统中的使用。文章将重点讨论EhCache在复杂场景下的应用,并提供Java语言实现的示例。1.JVM缓存EhCache简介EhCa...