当前位置: 首页 > Linux

APM钉钉报警二次开发pinpoint(附源码)

时间:2023-04-07 00:45:11 Linux

【关注公众号“SRE运维部落”,回复“pinpoint”与您分享钉钉二次开发代码】一、简介Pinpoint是一条全链条路径分析工具提供非侵入式调用链监控、方法执行详情查看、应用状态信息监控等功能。基于GoogleDapper论文的实现类似于另一个开源的全链路分析工具Zipkin,但与Zipkin相比,它提供了更多的非侵入式和代码维度监控等特性。2.主要功能服务拓扑图:为整个系统中的应用程序的调用关系进行可视化。点击一个服务节点,可以显示该节点的详细信息,比如当前节点状态、请求数等。实时活跃线程图:监控应用中活跃线程的执行情况,并且可以有一个更直观的了解应用程序的线程执行性能。请求响应散点图:在时间维度上展示请求计数和响应时间。拖拽图表选择对应的请求,查看执行详情。请求调用堆栈视图:是的分布式环境中的每个请求都提供代码维度的可见性。可以在页面查看请求到代码维度的执行详情,帮助找到请求失败的瓶颈和原因。应用状态、机器状态查看:通过该功能可以查看相关应用的其他详细信息,如CPU使用率、内存状态、垃圾回收状态、TPS和JVM信息等参数。三、架构组成Pinpoint主要由3个组件加上Hbase数据库组成。这三个组件是:Agent、Collector和WebUI。HBase(用于存储)Agent组件:用于采集应用端监控数据,非侵入式,只需要在启动命令中添加一些参数Collector组件:数据采集模块,接收Agent发送过来的监控数据,存储到HBaseWebUI中:监控显示模块,显示系统调用关系、调用详情、应用状态等,并支持告警等功能。四、部署安装(一)常用安装方法1、在网上百度下载别人制作的war包进行部署。调试监控,但不允许二次开发配置监控预警。二、拉取官方代码gitclonehttps://github.com/naver/pinpoint-docker.git安装步骤:1、HBase搭建HBase集群——ApacheHBase运行./hbase-start创建HBaseSchemas——在hbaseshell上执行/scripts/hbase-create.hbase初始化数据库2.构建Pinpoint(仅在从源代码构建时需要)ClonePinpoint-gitclone$PINPOINT_GIT_REPOSITORY将JAVA_6_HOME环境变量设置为JDK6主目录。将JAVA_7_HOME环境变量设置为JDK7+主目录。将JAVA_8_HOME环境变量设置为JDK8主目录。将JAVA_9_HOME环境变量设置为JDK9主目录。将JAVA_HOME环境变量设置为JDK主目录。注意:不是开玩笑,必须同时安装四个版本的jdk,其中五个必须设置javahome环境变量,而且必须是jdk,不能是openjdk!!!!!!!!!!!!!!!!!!!!!!(10.7.xxx.xx服务器已经安装了这个环境,如果需要打包pinpoint可以自己使用)在pinpoint根目录下运行mvninstall-Dmaven.test.skip=true3.PinpointCollector部署pinpoint-collector-$VERSION.war到web容器配置pinpoint-collector.properties,hbase.properties。启动容器4.PinpointWeb部署pinpoint-web-$VERSION.war到web容器配置pinpoint-web.properties,hbase.properties。启动容器5.PinpointAgent解压缩/移动pinpoint-agent/到方便的位置($AGENT_PATH)。设置-javaagent:$AGENT\_PATH/pinpoint-bootstrap-$VERSION.jarJVM参数,以便将agent附加到java应用程序,并设置-Dpinpoint.agentId和-Dpinpoint.applicationName命令行参数,以上述设置启动java应用程序(二)安装参考文档1.https://skyao.gitbooks.io/lea...2。https://naver.github.io/pinpo...四、使用规范(一)服务地址1.【http://10.7.xxx.xx:8085】没有相关账号密码,二次开发即可稍后进行(2)使用操作仪表板:对应用程序节点的服务、端点和实例进行细粒度监控。图标显示可以监控数据库数据源的sql、iqps等常用参数。拓扑图:各种图应用实例的全局展示,各种高层上行跟踪:接口层面的监控精细度告警:可进行20多种监控数据告警,可配置钉钉邮箱用于项目二次开发.文档,说明很详细,无代码入侵,支持log4j,log4j2,logbackhttps://github.com/naver/pinp..._feature_guide.mdtraceid可以在项目日志中添加,用于日志查询时跟踪链接,便于故障定位。例如:使用logback修改配置pinpoint-agent/pinpoint.configprofiler.logback.logging.transactioninfo=true修改项目配置logback.xml2。消息通知配置和配置相关的消息通知。目前钉钉和邮箱已经配置完成。相关配置:1.配置菜单页面配置菜单注册用户创建用户组添加用户到用户组设置告警规则2.熟悉相应的告警规则和参数:SLOWCOUNT/慢请求数3.钉钉告警的实现与配置:(1)代码二次开发实现请参考代码库gitclonehttps://gitee.com/xxx/xxxx.git(已进行二次开发,存放在私服)【关注公众号》《SRE运维》部落》,回复精准分享代码库地址给你]主要是修改邮件发送的实现类,为了方便快速实现钉钉告警,增加了钉钉消息的触发方法邮件告警修改文件/pinpoint-master/pinpoint-master_初始邮件可用版本/web/src/main/java/com/navercorp/pinpoint/web/alarm/SpringSmtpMailSender.java其他也针对邮件内容进行了开发和优化,请参考代码更改。生成的钉钉消息推送结果如下:邮件消息推送如下:(2)配置批处理属性,将batch.properties文件中的batch.enable标志设置为true:这里的batch.server.ip配置当有多个pinpointwebserver时防止并发批处理。只有当服务器IP地址与batch.server.ip设置一致时才会执行批处理。(设置为127.0.0.1会在所有web服务器上启动批处理)batch.server.ip=X.X.X.X注意:这种防止并发的方式有点粗糙和原始,有单点故障的风险。主要缺陷:如果配置允许批处理的web服务器宕机,报警功能将失效。(3)配置mysql搭建mysql服务器,在jdbc.properties文件中配置连接信息:jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:13306/pinpoint?characterEncoding=UTF-8jdbc.username=adminjdbc.password=admin运行pinpoint/web/src/main/resources/sql/CreateTableStatement-mysql.sql和pinpoint/web/src/main/resources/sql/SpringBatchJobReositorySchema-mysql.sql创建初始化表。3.pinpoint删除应用程序名称和/或代理ID一旦应用程序名称和代理ID被注册,它们将保留在HBase中,直到它们的TTL到期(默认为1年)。但是,一旦它们不再使用,您可以使用管理API主动删除它们。删除应用程序名称-http://10.7.132.xx:8080/admin/removeApplicationName.pinpoint?applicationName=$APPLICATION\_NAME&password=$PASSWORD删除代理ID-http://10.7.132.xx:8080/admin/removeAgentId.pinpoint?applicationName=$APPLICATION\_NAME&agentId=$AGENT_ID&password=$PASSWORD请注意,密码参数的值是您在pinpoint-web.properties中定义的admin.password属性。将此留空将允许您在没有密码参数的情况下调用管理API。默认密码admin关注【SRE运维部落】微信,下一期分享如何向不同开发团队分发告警邮件,划清责任界限。