Docker安装集中错误日志监控告警平台Sentry23.3教程

   日期:2024-12-26    作者:cxj8618 移动:http://oml01z.riyuangf.com/mobile/quote/49253.html

目录

Docker安装集中错误日志监控告警平台Sentry23.3教程

一、背景

二、Sentry介绍

2.1、基本介绍

2.2、基本概念

三、Docker安装

四、Sentry安装

五、Sentry基本设置

六、Sentry新创建Java类型的项目

 七、项目中引入Sentry


进入到微服务的开发时代后,Java项目的错误日志也极为重要,通常错误日志中,体现了一个业务逻辑的缺陷、BUG、潜在的隐患等各类问题,需要我们进行修复,同时对于错误日志,也需要开发人员第一时间进行发现,并触发告警,避免发生重大故障时才定位到问题的情况。

没有类似Sentry的软件,我们会怎样

无论测试如何完善的程序,bug总是免不了会存在的,有些bug不是每次都会出现,测试时运行好好的代码可能在某个用户使用时就歇菜了,可是当程序在用户面前崩溃时,你是看不到错误的,当然你会说:”Hey, 我有记日志呢”。 但是说实话,程序每天每时都在产生大量的日志,而且分布在各个服务器上,并且如果你有多个服务在维护的话,日志的数量之多你是看不过来的吧。等到某天某个用户实在受不了了,打电话来咆哮的时候,你再去找日志你又会发现日志其实没什么用:缺少上下文,不知道用户什么操作导致的异常,异常太多(从不看日志的缘故)不知如何下手 等等

针对以上类似的现象,常见的历史处理方案如下

1、后端用Shell脚本定时监控和扫描微服务的错误日志,同时根据日志中的关键信息进行告警,通常和一些企业工具的机器人进行搭配,比如飞书机器人、钉钉机器人等。

2、使用日志收集工具,将同台服务器上多个系统的日志集中存放到同个目录,使用rsync定时从多台服务器中拉取日志文件

3、通过某些软件,对日志文件进行关键字匹配, 并将过滤结果通过邮件发送给运维人员和开发人员。

基于以上几点,可以实现我们的业务需求,但是也暴露出来了如下问题

1、无法第一时间感知错误:脚本日志的拉取不是实时的,,web端用户的反馈也往往存在滞后。出现问题到解决问题的周期太长,容易导致工作陷入被动。

2、错误信息的获取相对低效:用户反馈和邮件告警包含的错误信息非常有限,,最终都不得不在大量的日志中上下翻看关联的信息.。可能还需要在测试环境下给代码埋点多获取一些中间变量数据,给定位问题带来很多麻烦。

3、日志的处理方式不够灵活:通常来说,除了程序运行出错,我们还关心其他异常情况,比如数据污染,非法请求,第三方API调用异常等。如果将此类等同错误记录下来,很容易造成告警滥发,而如果不处理此类异常,久而久之可能导致严重的问题。我们希望同样的日志内容可以根据场景不同灵活处理。

4、监控覆盖面有限:完整的监控应该涵盖脚本,后端以及前端三个部分。特别是我们新的运维系统实现了前后端分离之后,很多前端的问题无法被统一记录下来。

5、自己公司内部的项目或者给客户部署的项目中,偶尔会出现一些非必现的bug,调试起来很不方便。

基于这些现象,可以引入本文推荐的软件:Sentry。

Sentry是一款【跨平台】的软件,用于应用监控和错误追踪日志平台,它可以将应用程序产生的错误日志的聚合和监控,支持多种语言框架。分为客户端和服务端,客户端嵌入需要被监控的项目中,程序出现异常就会向服务端发送消息,服务端可以查看到日志详情。使用时可以直接使用线上服务,也可在本地部署。

Sentry官网: https://sentry.io/

Github项目地址: https://github.com/getsentry/onpremise

Sentry 官方提供免费版和收费版的服务,如果不想搭建本地服务的话直接用官方服务好了。Sentry是个开源的工具可以自行搭建(推荐使用Docker搭建);Sentry支持几乎所有主流开发语言和平台, 并提供了现代化UI。

官方文档链接:

重要的几个概念如下

  • Alert:告警,当满足某些警报规则条件时,Sentry会向用户发送告警通知,让您实时了解代码的问题。提供了多种种类型的警报可用于自定义阈值和集成,也可以在业务系统中提供webhook地址,供Sentry调用。
  • DSN:数据源名称。DSN告诉Sentry SDK将事件发送到何处,以便将事件与正确的项目关联。当您创建项目时,Sentry会自动为您分配DSN。同时也是密钥, 用来进行客户端和服务器的通信。DSN是一个url, 比如https://1703147af2094458bevb1bfadcfa1c2:7e00a1d4cbd745c0b780451c3586d7f4@sentry.io/1545. 这类DSN是私密的, 还有一类是非私密的, 在Sentry后台中显示为DSN(public), 给前端项目使用.
  • event:事件, 是可操作数据的基本单位. 每一次日志输出就产生一个event. event并不一定就是错误, 如果日志记录级别设置很低, 那么后台会产生很多的event, 所以正确的设置日志级别很重要。
  • issue:工单”或者”问题”, 是同一类event的聚合. 某一个错误可能因为重复执行而被记录多出, 在sentry会自动聚合到一起, 方便处理. 通常我们操作的对象就是issue。

这里我们使用Docker环境来安装Sentry,这里简述下载CentOS系统中安装Docker的过程。

1、输入如下命令,安装Docker的依赖

 

2、输入如下命令,添加Docker的yum仓库地址

 

3、输入如下命令安装Docker

 

4、输入如下命令,配置Docker的镜像加速地址

 

添加如下内容

 

5、输入如下命令启用Docker服务

 

6、输入如下命令,查看版本

 

7、输入如下命令,下载Docker-Compose

 

8、输入如下命令,赋予权限

 

9、输入如下命令,查看版本

 
 

1、官方下载地址如下

2、下载后,将自建安装包,上传到服务器目录下,并进行解压,如下所示

 

3、安装完成后,会创建一堆Docker容器,直接使用docker-compose直接启动即可。

 

4、然后浏览器访问默认的9000端口进行访问,第一访问会提示设置根域名等信息,然后进入到登录页面

 用户名信息在执行安装的过程中会进行设置。

1、默认进入后的系统主页面如下所示

 2、我们找到系统设置,更改默认语言、时区、和24小时时间控制如下图所示

 3、设置完成后,如下图所示

1、在系统主页的上方,选择【创建项目】按钮,如下所示

 2、然后选择Java类型的项目,如下图所示

 3、在第2选项和第3选项中输入项目名称和保持默认即可,如下所示

1、获得项目的DSN信息,针对刚才新创建的Java项目,在项目设置中复制DNS信息,如下图所示

2、在当前自己的业务代码中,引入如下的Maven的Starter依赖

 

3、然后再项目的application.yml文件中配置参数:q

 

其中在DSN配置处,配置我们复制的当前项目的DSN即可。

配置好starter的信息后,默认会捕捉我们的系统异常信息,也可以在项目中手动的上报一些异常信息,使用方式如下所示

 

通过调用Sentry类的captureException方法即可。

获取到异常以后,在系统的主页面中,选择问题菜单,就可以看到我们项目中的错误日志异常,进行了统一的监控和设置。

 看到这里是不是非常方便呢,通过引入这个操作,可以在出现系统错误异常的时候,提前发现问题,并统一的进行错误日志分析。

,在下一篇的文章,我们尝试一下Sentry进行业务告警的操作。

如果正在阅读文章的你,喜欢这篇文章,请收藏、分享、关注、点赞吧。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号