- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越来越复杂,我们急切需要一个APM工具帮我们监控各个服务的性能及对服务间的调用进行跟踪,而通过调研多个开源APM工具后,最终我们选择了pintpoint。
1.1、github地址是:https://github.com/naver/pinpoint
1.2、选择它有4个方面原因:
1、 PinPoint是基于java开发的,利于项目后期对源代码的修改;
2、 集成PinPoint不需要修改一行代码;
3、 PinPoint有非常直观的UI,符合项目的当前需求;
4、 PinPoint的社区还是挺活跃,一般提问题第二天就有项目的committer回复;
PinPoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统。在使用上力图简单高效,通过在启动时安装agent,不需要修改哪怕一行代码,最小化性能损失(3%).
2.1、架构图
2.2、三个主要组件
2.3、依赖环境
部署在独立的Tomcat容器中,如 tomcat-pinpoint-collector
3.1、安装 pinpoint-collector
上传pinpoint-collector-1.7.3.war到 tomcat/webapps目录
解压:
unzip pinpoint-collector-1.7.3.war -d pinpoint-collector
3.2、配置 pinpoint-collector
Pinpoint Collector 有 2 个配置文件: pinpoint-collector.properties 和 hbase.properties
这些配置文件在war文件下的 WEB-INF/classes 目录
3.2.1、pinpoint-collector.properties: 包含colletor的配置,在配置pinpoint agent时需要与之对应:
注意:pinpoint collector 1.5.x版本 和 较新的 1.7.x版本的 pinpoint-collector.properties配置文
件有差异
具体参考:
https://github.com/naver/pinpoint/blob/1.7.3/collector/src/main/resources/pinpoint-collecto
r.properties
https://github.com/naver/pinpoint/blob/1.5.2/collector/src/main/resources/pinpoint-collecto
r.properties
3.3.2、hbase.properties : 包含连接到HBase的配置
查看pinpoint-collector.properties的其它配置,请看https://github.com/naver/pinpoint/blob/1.7.3/web/src/main/resources/pinpoint-web.properties
查看hbase.properties的其它配置,请看https://github.com/naver/pinpoint/blob/1.7.3/web/src/main/resources/hbase.properties
部署在独立的Tomcat容器中,如 tomcat-pinpoint-web
4.1、安装 pinpoint-web
上传pinpoint-web-1.7.3.war到 tomcat/webapps目录
pinpoint-web应用需要部署为tomcat的ROOT应用
cd tomcat/webapps
rm -fr ROOT
unzip pinpoint-web-1.7.3.war -d ROOT
4.2、配置 pinpoint-web
和collector类似,Pinpoint web有和安装相关的配置文件:pinpoint-web.properties 和 hbase.properties
这些文件在 WEB-INF/classes 目录下
cluster.zookeeper.address(默认: localhost,修改为hbase相关的zookeeper的IP地址)
hbase.client.host (默认: localhost,修改为hbase相关的zookeeper的IP地址)
hbase.client.port (默认: 2181)
查看pinpoint-web.properties的其它配置
请看https://github.com/naver/pinpoint/blob/1.7.3/web/src/main/resources/pinpoint-web.properties
查看hbase.properties的其它配置
请看https://github.com/naver/pinpoint/blob/1.7.3/web/src/main/resources/hbase.properties
5.1、安装 pinpoint-agent
上传pinpoint-agent-1.7.3.tar.gz到安装目录,如 /home/jyapp
解压:
mkdir pinpoint-agent
tar zxvf pinpoint-agent-1.7.3.tar.gz -C pinpoint-agent
pinpoint-agent 目录层次如下:
|-- boot
| |-- pinpoint-bootstrap-core-$VERSION.jar
|-- lib
| |-- pinpoint-profiler-$VERSION.jar
| |-- pinpoint-profiler-optional-$VERSION.jar
| |-- pinpoint-rpc-$VERSION.jar
| |-- pinpoint-thrift-$VERSION.jar
| |-- ...
|-- pinpoint-bootstrap-$VERSION.jar
|-- pinpoint.config(Agent配置文件)
Pinpoint Agent 作为一个java agent需要附加到采样的应用(如 Tomcat)
为了让agent生效,在运行应用时需要设置 -javaagent JVM 参数为 $AGENT_PATH/pinpointbootstrap-$
VERSION.jar
-javaagent:$AGENT_PATH/pinpoint-bootstrap-$1 VERSION.jar
另外,Pinpoint Agent 需要两个命令行参数来在分布式系统中标记自身:
注意:pinpoint.agentId 必须全局唯一来标识应用实例, 而所有共用相同 pinpoint.applicationName 的应用被当
成单个服务的多个实例
5.2、配置 pinpoint-agent
在pinpoint.config 中有很多Pinpoint Agent的配置选项 ,而最重要的必须检查的配置选项是collector ip
address 和 TCP/UDP 端口,Agent需要这些值来创建到collector的连接并正确工作
在pinpoint.config 中相应的设置这些值:
查看pinponit.config的其它配置,
请看https://github.com/naver/pinpoint/blob/1.7.3/agent/src/main/resources-release/pinpoint.config
5.3、Tomcat集成示例
在tomcat 启动脚本(catalina.sh)中添加 -javaagent, -Dpinpoint.agentId, -Dpinpoint.applicationName
JAVA_OPTS="$JAVA_OPTS -javaagent:/home/jyapp/pinpoint-agent/pinpoint-bootstrap-1.7.3.jar"
JAVA_OPTS="$JAVA_OPTS -Dpinpoint.agentId=$AGENT_ID"
JAVA_OPTS="$JAVA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"
注意:
$AGENT_ID - 需改为应用的唯一标记,如 loan-33,代表loan 33服务器
$APPLICATION_NAME - 需改为应用名,如 loan,代表贷款应用
启动tomcat来开始web应用的采样
SpringBoot微服务同理,在启动命令上添加 -javaagent, -Dpinpoint.agentId, -Dpinpoint.applicationName 即可
将web请求路由到agent
从1.5.0 版本开始, Pinpoint 可以通过collector从web直接发送请求到agent(反之亦然)。 为此需要使用
Zookeeper 来协调agent和collector之间和collectors 和 web 之间的通讯通道.。在此之上,实时通讯(例如活动
线程数量监控)才变的可能
通常使用HBase后端提供的Zookeeper实例,这样就不需要额外的Zookeeper配置。相关的配置选项在这里:
7.1、pinpoint-web.properties
cluster.enable=true
cluster.web.tcp.port=9997
cluster.zookeeper.address=localhost
cluster.zookeeper.sessiontimeout=30000
cluster.zookeeper.retry.interval=60000
cluster.connect.address=
7.2、pinpoint-collector.properties
cluster.enable=true
cluster.zookeeper.address=localhost
cluster.zookeeper.sessiontimeout=30000
cluster.listen.ip=
cluster.listen.port=
我正在使用 Pinpoint JS SDK 向我的应用程序发送 APNS 推送通知。我正在尝试启用发送深层链接以在用户点击通知时打开应用程序的特定页面。 根据docs我应该路过Action: "DEE
1、背景 随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越来越复杂,我们急切需要一个APM工具帮我们监控各个服务的性能及对服务间的调用进行跟踪,而通过调研多个开源APM工具后,最终我们选择
1、PinPoint出现与其他相似概念比较 1.1、PinPoint概念 PinPoint是由java/PHP编写而成的,用来对大规模的分布式系统提供应用性能管理。pinpoint可以解决复杂架构
有两种安装方式,一种是通过docker-compose安装,另一种就是手动自己安装 1、Docker方式安装 安装docker docker-compose yum update -y yum
1、PinPoint介绍 PinPoint是开源在github上的一款APM监控工具,它是由java编写的,用于大规模分布式系统的监控;它对性能的影响最小(只增加约3%资源利用率),安装agent是
PinPoint是一种用于监视分布式系统性能的开源工具。它可以帮助开发人员更快地诊断问题并改进系统性能。Linux是PinPoint常用的操作系统之一,下面将简要介绍如何在Linux上搭建PinPoi
在 APM pinpoint 中,我可以在“实时 Activity 线程图表”上看到 Java 示例应用程序的所有 http 调用线程。但我找不到任何后台运行线程的内部线程。有没有办法在图表中显示这些
在我工作的公司,我被要求使用 AWS 的新推送通知服务 Amazon Pinpoint 进行一些测试。 我决定跟随 Amazon 的 a tutorial,教授如何构建一个能够记录笔记的简单应用程序。
1、全链路监控概述 1.1 什么是全链路监控 在分布式微服务架构中,系统为了接收并处理一个前端用户请求,需要让多个微服务应用协同工作,其中 的每一个微服务应用都可以用不同的编程语言构建,由不同的团
我是 Pinpoint 的新手,并试图了解端点/端点Id 如何在 Pinpoint 语义中工作。来自 aws doc : When a user starts a session (for examp
我目前有一个 Node.js 服务来通过 AWS Pinpoint 发送语音调用。但是,我收到了 Resource not found调用电话后回复。我用 PinpointSMSVoice.sendV
我正在使用react-native和amplify通过AWS Pinpoint向设备发送推送通知。我可以获得设备生成的 token 。但我只需要使用用户 ID 发送推送通知。我尝试更新端点,但它不起作
尝试让本教程发挥作用 https://docs.aws.amazon.com/pinpoint/latest/developerguide/send-messages-voice.html . 当前阻
我正在尝试使用 boto3 向我发送带有精确定位的消息,但是 update_endpoint 和 send_messages 的函数一直返回找不到资源 client = boto3.client('p
我正在尝试通过 Amazon pinpoint 使用 GCM/FCM 向 android 设备发送推送通知。当我在模拟器中调试 Android 应用程序但消息数据为空时,我能够发送消息并可以看到它。不
亲爱的 friend 们,大家好, 我正在尝试将推送通知的阅读收据发送回 Amazon Pinpoint,以便我可以知道用户何时阅读了之前发送到我的应用程序的推送通知。在 iOS 上,在 Swift
我需要查找和操作 从一张 table 。目前我有一个非常简朴的功能: function testAjaxCheckBoxes() { var table = document.getEleme
我正在尝试使用 AWS Pinpoint 发送推送通知。除了 AWS 前端必须提供的任何功能之外,我还希望能够从我的 Java Web 应用程序以编程方式发送推送通知。这些是针对特定设备的单一通知,我
我正在阅读关于javaagent的pinpoint代码,我发现了一个连线问题。 通常,java 代理应该由 App 类加载器加载,因为它在类路径中。但是我发现pinpoint是由bootstrap类加
我被要求开发一个与 Amazon Pinpoint 集成的示例应用程序。由于我不是开发应用程序的专业人士,因此我决定遵循此 simple tutorial并按照其中描述的步骤开发应用程序。唯一的区别是
我是一名优秀的程序员,十分优秀!