pinpoint支持的模块

源码:https://github.com/naver/pinpoint
技术概述:https://skyao.gitbooks.io/learning-pinpoint/content/design/technical_overview.html

官网上介绍的信息

当前最新版本是1.8.4

1、popint的安装

安装的时候,我们准备了两台虚拟机用于安装

两台虚拟机在安装的时候一定要将虚拟机的防火墙和selinux权限给关闭

安装之前先给两台虚拟机安装jdk,这里jdk要求是1.8版本不能是jdk1.7,一台安装pinpoint-collect和pinpint-web,,一台安装point-agent和被监控的tomcat应用

安装之前首先要查看当前是否已经安装了jdk

rpm -qa | grep java

当前已经安装了jdk 1.6.0和jdk1.7.0版本,我们使用下面的两个命令将jdk卸载掉

 rpm -e --nodeps  java-1.7.-openjdk-1.7.0.45-2.4.3.3.el6.i686
rpm -e --nodeps  java-1.6.-openjdk-1.6.0.0-1.66.1.13..el6.i686

接下来我们开始安装jdk1.8

首先使用下面的命令查看当前yum源中存在哪些jdk

[root@localhost 桌面]# yum list java*

我们在安装之前要更新yum源,,否则会出现下载包无法下载的问题

这里我们推荐使用网易163和中科大的yum源

网易
CentOS7
sudo wget -O CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
复制代码
CentOS6
sudo wget -O CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
复制代码
CentOS5
sudo wget -O CentOS-Base.repo http://mirrors.163.com/.help/CentOS5-Base-163.repo
复制代码

当前我机器是centos 6.5版本的,我们使用http://mirrors.163.com/.help/CentOS6-Base-163.repo这个yum源,我们在浏览器输入

这个时候会把

这个时候会下载CentOS6-Base-163.repo这个yum文件

文件的内容如下:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
# [base]
name=CentOS-$releasever - Base - .com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #released updates
[updates]
name=CentOS-$releasever - Updates - .com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - .com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - .com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=
enabled=
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - .com
baseurl=http://mirrors.163.com/centos/$releasever/contrib/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
gpgcheck=
enabled=
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

我们进入到虚拟机yum文件所在的目录

 cd /etc/yum.repos.d/

执行

[root@localhost yum.repos.d]# vi CentOS-Base.repo 

我们将下载CentOS6-Base-163.repo文件的内容全部替换CentOS-Base.repo 的内容

然后执行

[] 运行yum makecache生成缓存

[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache [] 更新系统(可选)
[root@localhost yum.repos.d]# yum -y update

这样我们的yum源就设置成功了

设置成功之后,接下来要安装jdk 1.8

直接执行下面的命令查看当前网易yum源中存在哪些jdk

yum list java*

我们看到当前有jdk 1.8

我们直接使用下面的命令安装,就会自动帮助我们安装对于的jdk

yum install jdk-1.8.

记得虚拟机一定要关闭防火墙个selinux的安全

centOS .5关闭防火墙步骤

关闭命令:  service iptables stop
永久关闭防火墙:chkconfig iptables off 两个命令同时运行,运行完成后查看防火墙关闭状态
service iptables status

Centos6.5
关闭selinux:
永久有效:修改/etc/sysconfig/selinux


将文本中的SELINUX=enforcing,改为SELINUX=disabled。然后重启

 

全链路监控系统Pinpoint的hbase安装和初始化

pinpoint收集来的测试数据,主要是存在Hbase数据库的。所以它可以收集大量的数据,可以进行更加详细的分析

进入到apache的官网,进入到最下面找到hbase,点击进入

这里选择1.2.7版本下载二进制的bin的安装包

这里我们得到二进制的url,可以使用wget来下载

wget  http://117.128.6.17/cache/archive.apache.org/dist/hbase/1.2.7/hbase-1.2.7-bin.tar.gz?ich_args2=468-06114512036078_ea9442618a5488bca925de6ba7864bb7_10001002_9c896229d7c5f2d0923a518939a83798_b8cae780849f9b43ef308a37cc5176d8

我们把habase安装到我们的192.168.0.113这台机器上,hbase的安装还需要mysql数据库,我们就不再虚拟机中安装了,我们在本地的电脑上安装

我们在根目录下创建一个data文件夹,我们把hbase解压到改目录下

[root@localhost 桌面]# mkdir /data
[root@localhost 桌面]# mv hbase-1.2.-bin.tar.gz /data/hbase.tar.gz
[root@localhost 桌面]# cd /data
[root@localhost data]# ls

接下来执行解压的操作

[root@localhost data]# tar -zxvf hbase.tar.gz 

然后将解压之后的文件夹进行重新命名为hbase-app

[root@localhost data]# mv hbase-1.2./ hbase-app/

接下来我们要在hbase中配置jdk的安装路径

[root@localhost data]# which java
/usr/bin/java
[root@localhost data]# ls -l /usr/bin/java
lrwxrwxrwx root root 8月 : /usr/bin/java -> /etc/alternatives/java
[root@localhost data]# ls -l /etc/alternatives/java
lrwxrwxrwx root root 8月 : /etc/alternatives/java -> /usr/lib/jvm/jre-1.8.-openjdk.i386/bin/java
[root@localhost data]# cd /usr/lib/jvm/jre-1.8.-openjdk.i386/bin/java
bash: cd: /usr/lib/jvm/jre-1.8.-openjdk.i386/bin/java: 不是目录
[root@localhost data]# cd /usr/lib/jvm/jre-1.8.-openjdk.i386/
[root@localhost jre-1.8.-openjdk.i386]# ls
bin lib
[root@localhost jre-1.8.-openjdk.i386]# cd ..
[root@localhost jvm]# ls
java-1.8.-openjdk-1.8.0.222.b10-.el6_10.i386 jre-1.8. jre-1.8.-openjdk.i386
jre jre-1.8.-openjdk-1.8.0.222.b10-.el6_10.i386 jre-openjdk
[root@localhost jvm]#

通过上面的命令不断进行ls -l 软连接的引用查找到当前java的真实目录为/usr/lib/jvm/jre-1.8.0-openjdk.i386/

进入到base-app/conf目录,执行vi hbase-site.xml

在改文件夹中增加下面的内容

export JAVA_HOME=/usr/lib/jvm/jre-1.8.-openjdk.i386/

接下来还需要修改hbase的配置信息,进入到/data/hbase-app/conf目录下我们把hbase的配置信息放在/data/hbase-data目录下

vi hbase-site.xml

<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///data/hbase-data</value>
</property>
</configuration>

hbase-site.xml还可以hbase的zookeeper的集群,这里我们使用单机版本没有使用,接下来我们创建

/data/hbase-data这个目录
[root@localhost data]# mkdir hbase-data
[root@localhost data]# ls
hbase-app hbase-data
[root@localhost data]#

接下来,完成上面的配置之后就可以启动hbase了,进入到目录

/data/hbase-app/bin

执行

[root@localhost bin]# ./start-hbase.sh 

这样就表示hbase启动成功了

接下来要进行hbase的初始化操作

我们进入到popint的git官网的地址:https://github.com/naver/pinpoint/tree/master/hbase/scripts

hbase-create.hbase中脚本值如下:

create 'AgentInfo', { NAME => 'Info', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }
create 'AgentStatV2', { NAME => 'S', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}
create 'ApplicationStatAggre', { NAME => 'S', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]} create 'ApplicationIndex', { NAME => 'Agents', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }
create 'AgentLifeCycle', { NAME => 'S', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }
create 'AgentEvent', { NAME => 'E', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' } create 'StringMetaData', { NAME => 'Str', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}
create 'ApiMetaData', { NAME => 'Api', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]} create 'SqlMetaData_Ver2', { NAME => 'Sql', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]} create 'TraceV2', { NAME => 'S', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }, {NUMREGIONS => , SPLITALGO => 'UniformSplit'} create 'ApplicationTraceIndex', { NAME => 'I', TTL => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]} create 'ApplicationMapStatisticsCaller_Ver2', { NAME => 'C', TTL => , VERSIONS => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}
create 'ApplicationMapStatisticsCallee_Ver2', { NAME => 'C', TTL => , VERSIONS => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}
create 'ApplicationMapStatisticsSelf_Ver2', { NAME => 'C', TTL => , VERSIONS => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]} create 'HostApplicationMap_Ver2', { NAME => 'M', TTL => , VERSIONS => , DATA_BLOCK_ENCODING => 'PREFIX' }, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]} list exit

我们进入到/data/hbase-app目录下,在这个目录下执行

[root@localhost hbase-app]# vi hbase-create.hbase

把上面脚本的内容存储到hbase-create.hbase中,接下来执行初始化脚本的操作

我们进入到

/data/hbase-app/bin目录下,执行

[root@localhost bin]# ./hbase shell /data/hbase-app/hbase-create.hbase 

安装之后,我们可以通过web页面来查看hbase是否安装成功

能看到agentInfo这些表

接下来,我们开始安装pinpoint,进入到pinpoint发布的网站地址:https://github.com/naver/pinpoint/releases

这里我们安装最新的1.8.4版本

我们可以看到collect和web都是war包,因此我们运行起来之前要先安装tomcat。我们在/data目录下创建一个tomcat的目录

[root@localhost bin]# cd /data
[root@localhost data]# mkdir tomcat
[root@localhost data]# cd tomcat/

我们进入到apache的官网点击tomcat进入

我们选择要下载的tar.gz版本,点击右键复制下载地址

在虚拟机中http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz 使用wget进行下载

[root@localhost tomcat]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz

下载之后,我们进行解压和重新命名的操作

[root@localhost tomcat]# tar -zxvf apache-tomcat-8.5..tar.gz 
[root@localhost tomcat]# mv apache-tomcat-8.5. tomcat8

接下来我们要安装pinpoint-collect的war包,以及pinpoint-web的war包,这里者两个war包最好分别部署在不同的tomcat上,这里我们重新复制另外一个tomcat

[root@localhost tomcat]# mv tomcat8/ tomcat8-collect
[root@localhost tomcat]# cp tomcat8-collect/ tomcat8-web/

接下来要让两个tomcat的端口不一样,我们进入到

/data/tomcat/tomcat8-web/conf,修改下端口vi server.xml

 <Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
<!-- A "Connector" using the shared thread pool-->
<!-- Define an AJP 1.3 Connector on port -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="" />
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
<!-- A "Connector" using the shared thread pool-->

接下来就可以开始进行安装了,我们在

tomcat8-collect下安装pinpoint-collect.war
在tomcat8-web/下安装pinpoint-web.war
https://github.com/naver/pinpoint/releases/tag/1.8.0
 
 得到collect的下载地址为https://github.com/naver/pinpoint/releases/download/1.8.4/pinpoint-collector-1.8.4.war
我们进行到tomcat8-collect的webapps目录下,将war包下载下来
https://github.com/naver/pinpoint/releases/tag/1.8.0
这里下载很慢要采用翻墙的方式才能从github上进行下载
我们首先进入到
tomcat8-collect下安装pinpoint-collect.war,我们进入到
tomcat8-collect的webapps目录下,将改目录下的默认的其他文件夹删除掉,将pinpoint-collector-1.8.0.war上传到改目录下

接下来对war包进行解压操作

[root@localhost webapps]# unzip pinpoint-collector-1.8..war -d ROOT

进入到ROOT目录下,我们可以看pinpoint的几个常见的配置,进入到

/data/tomcat/tomcat8-collect/webapps/ROOT/WEB-INF/classes目录下

首先来看

集群文件的修改都是在

hbase.properties中进行修改,这里我们是单机默认不进行修改

pinpoint-collector.properties中配置和agent进行通信的协议端口

将war解压之后放在ROOT文件夹下面

这样就可以启动tomcat了,执行tomcatbin目录下的startup..sh

按照同样的方法开始安装web

[root@localhost tomcat]# cd tomcat8-web/
[root@localhost tomcat8-web]# ls
bin conf lib logs README.md RUNNING.txt webapps
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
[root@localhost tomcat8-web]# cd webapps/
[root@localhost webapps]# ls
docs examples host-manager manager pinpoint-web-1.8. .war ROOT
[root@localhost webapps]# rm -rf docs/
[root@localhost webapps]# ls
examples host-manager manager pinpoint-web-1.8. .war ROOT
[root@localhost webapps]# rm -rf examples/ host-manager/ manager/ ROOT/
[root@localhost webapps]# ls
pinpoint-web-1.8. .war
[root@localhost webapps]# unzip pinpoint-web-1.8.\ .war -d ROOT

接下来我们对里面的几个配置文件进行讲解,

/data/tomcat/tomcat8-web/webapps/ROOT/WEB-INF/classes

重点是jdbc.properties 和hbase.properites,这里要修改成我们mysql的地址,要创建pinpoint的数据库,字符集设置为utf8

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:13306/pinpoint?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=KEY@wy11104719

这里要保证mysql数据库是正常运行的

注意这样我们就可以启动web了,启动web之前要保证habse、collect、mysql数据库已经正常启动了

web页面默认的端口是8081:在google浏览器上输入http://192.168.0.111:8081/#/main,有的浏览器这个页面打开有问题

这样collect和web都已经安装成功了

接下来我们要安装agent,按道理agent最好不要和collect和web安装在同一台服务器上面,我们另外一个台虚拟机192.168.43.112即使上安装,我们在data目录下创建一个pinpoint-agent目录

[root@localhost data]# mkdir pinpoint-agent

我们把pinpoint-agent-1.8.0.tar.gz上传到改目录下,然后我们执行解压的操作

[root@localhost pinpoint-agent]# tar -zxvf pinpoint-agent-1.8..tar.gz 

我们要对pinpoint.config进行配置

profiler.collector.ip=192.168.43.111

配置pinpoint.config:地址为collector收集器对应的IP地址

# 这是指pinpoint-collector的地址,默认为127.0.0.1,这里修改为以下192.168.43.111
这里需要特别注意的是collector的端口一共有3个。
9994是tcp端口9995,9996是udp端口,要保证这些是通的。初始化创建Docker的时候我们已经做了映射。

作者:小柒2012
链接:https://www.imooc.com/article/29232
来源:慕课网

这里要配置collect服务器的地址

我们要让pinpoint监控tomcat应用,我们重新安装一个tomcat

重新安装一个tomcat

tomcat8-agent,我们让pinpoint来监听tomcat8-agent这个应用

我们在另外另外一台虚拟机器192.168.43.111这台机器上重新安装一个被监听的tomcat

这里我们要让pinpint来监控tomcat-agent,需要对tomcat进行配置

修改测试项目下的tomcat启动文件"catalina.sh",修改这个只要是为了监控测试环境的Tomcat,增加探针

进入到/data/tomcat/tomcat8-agent/bin目录下,修改改目录下的catalina.sh ,需要在改文件下面添加对于的监控信息

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data/pinpoint-agent/pinpoint-bootstrap-1.8.0.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp20161122"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=MyTestPP”

:/data/pp-agent/pinpoint-bootstrap-1.5.2.jar"表示监听的探针所在的位置,这里在

/data/pinpoint-agent/pinpoint-bootstrap-1.8.0.jar

 -Dpinpoint.applicationName=MyTestPP表示你监控应用的名称,这里一个应用部署在10个tomcat上面,在这10个tomcat上应用的名称都一样,但是要保证-Dpinpoint.agentId都是唯一的,不能相同
测试流程:
1、第一保证mysql启动

2、保证hbase正常启动

3、启动pinpoint-colletc收集器

4、接下来启动pinpoint-web

5、服务端正常之后,要保证客户端正常,客户端首先要保证能够和服务器正常通信,第二讲客户端需要被监听的tomcat正常启动起来

这样我们就可以看到被监听的应用了

在被监听的应用进程中,可以看到配置的agent ,应用名等信息

接下来我们重点讲下pinpoint页面的信息

1

这里表示的是拓扑图的层级

这里表示的是时间,点击左边的圆圈,时间可以切换为下面的形式

上面是拓扑图。表示用户请求tomcat199次,tomcat请求unkown27次,请求应用28次,其中26363整个端口应用15次,请求23856应用13次

点击右边的view Servers,可以看到当前监听的应用部署在哪些服务器上面

上图中,红色的框图表示当前选择的服务器的一个统计情况,右边表示的当前应用部署的集群总的一个信息统计情况

上面这个页面也是显示当前应用一个总的信息的统计

点击inspectior进行可以看到一些详细的请求信息

我们左边选中要监听的那台服务器,在右边可以显示当前应用在改台服务器上的jvm参数、启动时间、。当前应用依赖哪些jar包。当前应用状态,以及当前服务器内存、cpu 线程等信息



上面Total表示的是我们监听的应用一共部署了在多少台服务器中

27表示当前的应用在1d,1天之内总共成功了多少请求数,失败了多少

我们要看具体对某个方法的请求信息,我们用鼠标拖动选择下面绿色的点,就表示对于的请求,我们选择之后进去可以看到

看到请求某个url具体的请求信息时间等,clientIP浏览器访问的IP地址等信息

我们选中某条URL,可以看到下面请执行的具体信息,可以对某条url详细进行具体分析

server map表示当前我们访问的url对于的一个拓扑结构

timeLine表示我们当前请求耗时的一个具体分析

Mixed View可以看到当前的请求占用cpu 内存的一个情况

点击右上角的圆圈,可以进行当前的一个pinpoint的一个设置

usergroup表示人员分组,可以把某些人分配到某些组里面,pinpoint报警的时候只向指定的group的人进行报警

在apllication中可以选择报警触发的条件,发生给指定分组的人才能收到报警信息

报警的方式,可以是email,短信等

全链路监控系统开源Pinpoint入门视频教程(最新版本1.8)的更多相关文章

  1. 每天学点SpringCloud(十二):Zipkin全链路监控

    Zipkin是SpringCloud官方推荐的一款分布式链路监控的组件,使用它我们可以得知每一个请求所经过的节点以及耗时等信息,并且它对代码无任何侵入,我们先来看一下Zipkin给我们提供的UI界面都 ...

  2. SpringBoot集成Zipkin实现分布式全链路监控

    目录 Zipkin 简介 Springboot 集成 Zipkin 安装启动 zipkin 版本说明 项目结构 工程端口分配 引入 Maven 依赖 配置文件.收集器的设置 编写 Controller ...

  3. 基于docker部署skywalking实现全链路监控

    一.概述 简介 skywalking是一个开放源码的,用于收集.分析,聚合,可视化来自于不同服务和本地基础服务的数据的可观察的平台,skywalking提供了一个简单的方法来让你对你的分布式系统甚至是 ...

  4. APM全链路监控--日志收集篇

    一.监控的意义: 随着互联网普及的广度和深度,对于项目的监控显得格外重要:无论是web服务器进程.内存.cpu等资源监控,还是爬虫程序请求频率,状态码以及储存结果的监控,都需要一个及时的反馈机制. 二 ...

  5. 大众点评实时监控系统CAT的那些坑

    首先,感谢大众点评开源监控系统CAT.CAT是一款非常使用的功能建全的监控系统.作为一个知名的开源软件,真的是太差了. 想把CAT用起来,没有多年的Java经验是不行的.先吐槽一下,再写一篇如何用的文 ...

  6. 让全链路压测变得更简单!Takin2.0重磅来袭!

    自Takin社区版1.0发布两个多月以来,有很多测试同学陆续在各自的工作中运用了起来,其中包括金融.电商.物流.出行服务等行业.这个过程中我们收到了很多同学的反馈建议,同时也了解到很多同学在落地全链路 ...

  7. 高德全链路压测平台TestPG的架构与实践

    导读 2018年十一当天,高德DAU突破一个亿,不断增长的日活带来喜悦的同时,也给支撑高德业务的技术人带来了挑战.如何保障系统的稳定性,如何保证系统能持续的为用户提供可靠的服务?是所有高德技术人面临的 ...

  8. Go微服务全链路跟踪详解

    在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪. 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链. 该ID称为Correlati ...

  9. Node.js 应用全链路追踪技术——[全链路信息获取]

    全链路追踪技术的两个核心要素分别是 全链路信息获取 和 全链路信息存储展示. Node.js 应用也不例外,这里将分成两篇文章进行介绍:第一篇介绍 Node.js 应用全链路信息获取, 第二篇介绍 N ...

随机推荐

  1. 读Pyqt4教程,带你入门Pyqt4 _006

    窗口组件是应用程序的基本构建块.PyQt4编程工具包拥有范围广泛的各种窗口组件.按钮.选择框.滑块.列表框等等,程序员工作所需要的一切.在教程的这部分中,我们将介绍一些有用的窗口组件. QCheckB ...

  2. 不可不知的辅助测试的Fiddler小技巧

    在以前的博文中,时常有分享Fiddler的一些使用技巧,今天再贴下. Fiddler抓包工具使用详解 利用Fiddler拦截接口请求并篡改数据 Fiddler使用过程中容易忽略的小技巧 Mock测试, ...

  3. parrot os的一些坑

    burpsuite 破解版的运行环境需要jdk8,jdk11无法运行 选择jdk环境 update-alternatives --config java 截图工具 sudo apt install f ...

  4. 泛微 e-cology OA 前台SQL注入

    poc https://github.com/AdministratorGithub/e-cology-OA-SQL 用法:python elog_sql.py http://target 不存在返回 ...

  5. go语言的主要特征

    go语言主要特征 1.自动立即回收. 2.更丰富的内置类型. 3.函数多返回值. 4.错误处理. 5.匿名函数和闭包. 6.类型和接口. 7.并发编程. 8.反射. 9.语言交互性. golang文件 ...

  6. jchdl - GSL实例 - Mux4

    https://mp.weixin.qq.com/s/hh0eExVFC6cxzpvNI1cA9A 使用门实现四选一选择器. 原理图 ​​ 参考链接 https://github.com/wjcdx/ ...

  7. Redis 入门到分布式 (八)Redis Sentinel

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) sentinel-目录 主从复制高可用 安装配置 实现原理 架构说明 客户端连接 常见开发运维问题 一. ...

  8. Java实现 LeetCode 802 找到最终的安全状态 (DFS)

    802. 找到最终的安全状态 在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走. 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止. 现在, 如果我们最后能走到终点,那么 ...

  9. Java实现 LeetCode 581 最短无序连续子数组(从两遍搜索找两个指针)

    581. 最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: ...

  10. Java实现 蓝桥杯VIP 算法训练 黑白无常

    算法训练 黑白无常 时间限制:1.0s 内存限制:256.0MB 问题描述 某寝室的同学们在学术完之后准备玩一个游戏:游戏是这样的,每个人头上都被贴了一张白色或者黑色的纸,现在每个人都会说一句话&qu ...