走进Java接口测试之整合 Graylog 实现日志收集

网友投稿 1086 2022-05-29

前言

部署图

选型优势

使用 Docker Compose 搭建

需要下载的 Docker 镜像

搭建前准备

下载 Docker Compose

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

查看是否已经安装成功

前言

部署图

选型优势

使用 Docker Compose 搭建

需要下载的 Docker 镜像

搭建前准备

下载 Docker Compose

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

查看是否已经安装成功

开始搭建

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

关闭防火墙

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

框架集成

添加 logback-gelf 依赖

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

配置 application.yml

进行测试

Graylog 页面查看日志信息

总结

前言

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 搭建

需要下载的 Docker 镜像

走进Java接口测试之整合 Graylog 实现日志收集

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

搭建前准备

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

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

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

docker-compose --version

开始搭建

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

上传到 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]#

systemctl stop firewalld

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

登录 graylog,打开浏览器访问:http://172.16.106.233:9000/

输入 docker-compose.yml 里配置的 用户名/密码 信息

设置来源信息:

框架集成

添加 logback-gelf 依赖

pom.xml 中添加:

de.siegmar logback-gelf 2.0.0

添加配置文件 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}

配置 application.yml

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

进行测试

添加一个测试类:

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

Java 云日志服务 LTS 自动化测试

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:8 个帮助你编写可维护、精简化前端代码的 CSS 策略
下一篇:【译】 我从高薪科技工作中学到的惨痛教训#IT人的升职加薪tips#
相关文章