1. 环境准备

  1. jdk :jdk8,JDk11
  2. hbase: habse-1.7.2 需与hbase-client版本一致,pinpoint-2.5.0使用的hbase-client版本为1.7.2
  3. hbase初始化脚本:hbase-create.hbase
  4. pinpoint-collect(监控采集服务-jdk11):pinpoint-collector-boot-2.5.0.jar
  5. pinpoint-web(监控管理服务-jdk11): pinpoint-web-boot-2.5.0.jar
  6. pinpoint-agent(监控采集代理-jdk8):pinpoint-agent-2.5.0.tar.gz
  7. pinpoint-batch(监控Aram管理服务-jdk11):pinpoint-batch-2.5.0.jar
  8. slack-receiver(监控预警信息推送服务-jdk8):webhook推送服务
  9. mysql数据库:aram功能需要

2.部署步骤

1.先安装jdk

hbase使用jdk8即可,但pinpoint-collector-2.5.0及pinpoint-web-2.5.0需要jdk11才能运行

2.安装hbase-1.7.2

安装hbase步骤

#解压安装包
tar -zxvf hbase-1.7.2-bin.tar.gz
#进入配置目录
cd /data/hbase/hbase-1.7.2/conf
修改hbase-site.xml 相关配置
#进入命令目录
cd /hbase-1.7.2/bin
#启动hbase
./start-hbase.sh
#初始化hbase
./hbase shell /x/x/hbase-create.hbase

hbase配置文件

<configuration><property><name>hbase.rootdir</name><value>file:///data/hbase/data</value></property><property><name>hbase.cluster.distributed</name><value>false</value></property><property><name>hbase.tmp.dir</name><value>./tmp</value></property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property>
</configuration>

3.部署pinpoint-collector

  • 环境依赖:JDK11

部署文件目录

准备配置文件:/config/collector.properties

spring.profiles.active=release
pinpoint.zookeeper.address=172.16.XX.XX
collector.receiver.grpc.agent.port=9999
collector.receiver.stat.udp.receiveBufferSize=4194304

准备启动脚本:start_collector.sh

#!/bin/bash
appName=$2param="-Dspring.config.additional-location=./config/collector.properties"
jdkPath=/usr/lib/java-11/jdk-11/bin
# JVM="-XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx1G"
JVM=""
logPath="./logs/app.log"if [ -z $appName ];thenappName=`ls -t |grep .jar$ |head -n1`
fifunction start()
{count=`ps -ef |grep java|grep $appName|wc -l`if [ $count != 0 ];thenecho "Maybe $appName is running, please check it..."elseecho "The $appName is starting..."nohup $jdkPath/java -jar $param $JVM ./$appName > $logPath 2>&1 &fi
}function stop()
{appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`if [ -z $appId ];thenecho "Maybe $appName not running, please check it..."elseecho "The $appName is stopping..."kill $appIdfi
}function restart()
{# get release versionreleaseApp=`ls -t |grep .jar$ |head -n1`# get last versionlastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`appName=$lastVersionAppstopfor i in {5..1}doecho -n "$i "sleep 1doneecho 0# backupappName=$releaseAppstart
}function status()
{appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`if [ -z $appId ]thenecho -e "\033[31m Not running \033[0m"elseecho -e "\033[32m Running [$appId] \033[0m"fi
}function usage()
{echo "Usage: $0 {start|stop|restart|status|stop -f}"echo "Example: $0 start"exit 1
}
case $1 instart)start;;stop)stop;;restart)restart;;status)status;;*)usage;;
esac

启动服务

./start_collector.sh start
#停止服务
./start_collector.sh stop

4.部署pinpoint-web

  • 环境依赖:JDK11
  • 服务说明:监控管理服务,监控信息展示,监控预警规则管理等
  • mysql数据库执行脚本:CreateTableStatement-mysql.sql,SpringBatchJobRepositorySchema-mysql.sql

部署文件目录

准备配置文件:config/web.properties

spring.profiles.active=release
pinpoint.zookeeper.address=172.16.xx.xx
cluster.zookeeper.sessiontimeout=10000

准备配置文件:config/jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/pinpoint?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

准备服务启动脚本:start_web.sh

#!/bin/bash
appName=$2param="-Dspring.config.additional-location=./config/web.properties,./config/jdbc.properties"
jdkPath=/usr/lib/java-11/jdk-11/bin
# JVM="-XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx1G"
JVM=""
logPath="./logs/app.log"if [ -z $appName ];thenappName=`ls -t |grep .jar$ |head -n1`
fifunction start()
{count=`ps -ef |grep java|grep $appName|wc -l`if [ $count != 0 ];thenecho "Maybe $appName is running, please check it..."elseecho "The $appName is starting..."nohup $jdkPath/java -jar $param $JVM ./$appName > $logPath 2>&1 &fi
}function stop()
{appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`if [ -z $appId ];thenecho "Maybe $appName not running, please check it..."elseecho "The $appName is stopping..."kill $appIdfi
}function restart()
{# get release versionreleaseApp=`ls -t |grep .jar$ |head -n1`# get last versionlastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`appName=$lastVersionAppstopfor i in {5..1}doecho -n "$i "sleep 1doneecho 0# backupappName=$releaseAppstart
}function status()
{appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`if [ -z $appId ]thenecho -e "\033[31m Not running \033[0m"elseecho -e "\033[32m Running [$appId] \033[0m"fi
}function usage()
{echo "Usage: $0 {start|stop|restart|status|stop -f}"echo "Example: $0 start"exit 1
}
case $1 instart)start;;stop)stop;;restart)restart;;status)status;;*)usage;;
esac

启动服务

./start_web.sh start
#停止服务
./start_web.sh stop

5.部署pinpoint-agent

  • 环境依赖:jdk8即可
  1. 将pinpoint-agent-2.5.0.tar.gz 解压至目标服务器
  2. 修改配置:pinpoint-agent-2.5.0/pinpoint-root.config
profiler.transport.module=GRPC
###########################################################
# gRPC Configuration                                      #
###########################################################
profiler.transport.grpc.collector.ip=172.16.xx.xx

3.tomcat配置agent
编辑tomcat/bin/catalina.sh文件(linux)

#配置agent路径
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/temp/app/pinpoint-new/pinpoint-agent-2.5.0/pinpoint-bootstrap-2.5.0.jar"
#配置服务节点名称(注意同一服务底下不要重复)
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=demo-1"
#配置服务名称
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=demo-web"
#配置采样频率方式,PERCENT-百分比,COUNTING-计数
CATALINA_OPTS="$CATALINA_OPTS -Dprofiler.sampling.type=PERCENT"
#配置采样频率-百分比方式,1-1%,100-100%,区间0.01-100
CATALINA_OPTS="$CATALINA_OPTS -Dprofiler.sampling.percent.sampling-rate=100"
#配置采样频率-计数方式,1-100%,100-1%
#CATALINA_OPTS="$CATALINA_OPTS -Dprofiler.sampling.counting.sampling-rate=1"

编辑tomcat/bin/catalina.bat文件(windows)

set CATALINA_OPTS=%CATALINA_OPTS% -javaagent:E:/ewell/pinpoint-agent-2.5.0/pinpoint-bootstrap-2.5.0.jar
set CATALINA_OPTS=%CATALINA_OPTS% -Dpinpoint.agentId=demoo-2
set CATALINA_OPTS=%CATALINA_OPTS% -Dpinpoint.applicationName=demo-web
set CATALINA_OPTS=%CATALINA_OPTS% -Dprofiler.sampling.type=PERCENT
set CATALINA_OPTS=%CATALINA_OPTS% -Dprofiler.sampling.percent.sampling-rate=100

正常启动tomcat即可

  1. springboot项目配置agent
#!/bin/bash
appName=$2param="-Dspring.config.additional-location=./config/application.properties -javaagent:/app/pinpoint-agent-2.5.0/pinpoint-bootstrap-2.5.0.jar -Dpinpoint.agentId=demo-1 -Dpinpoint.applicationName=demo-web"
# JVM="-XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx1G"
JVM="-XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError -Xms2048m -Xmx2048m"
logPath="./logs/app.log"if [ -z $appName ];thenappName=`ls -t |grep .jar$ |head -n1`
fifunction start()
{count=`ps -ef |grep java|grep $appName|wc -l`if [ $count != 0 ];thenecho "Maybe $appName is running, please check it..."elseecho "The $appName is starting..."nohup java -jar $param $JVM ./$appName > $logPath 2>&1 &fi
}function stop()
{appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`if [ -z $appId ];thenecho "Maybe $appName not running, please check it..."elseecho "The $appName is stopping..."kill $appIdfi
}function restart()
{# get release versionreleaseApp=`ls -t |grep .jar$ |head -n1`# get last versionlastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`appName=$lastVersionAppstopfor i in {5..1}doecho -n "$i "sleep 1doneecho 0# backupappName=$releaseAppstart
}function status()
{appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`if [ -z $appId ]thenecho -e "\033[31m Not running \033[0m"elseecho -e "\033[32m Running [$appId] \033[0m"fi
}function usage()
{echo "Usage: $0 {start|stop|restart|status|stop -f}"echo "Example: $0 start"exit 1
}
case $1 instart)start;;stop)stop;;restart)restart;;status)status;;*)usage;;
esac

6. 部署pinpoint-batch

  • 环境依赖:JDK11
  • 服务说明:监控Aram管理服务,若需要自动推送监控预警信息则需要部署该服务
  • 功能说明:该服务已内置邮件推送服务,以及标准webhook推送服务(具体webhook服务对接需自己拓展)

部署文件目录

准备配置文件:config/batch.properties

batch.server.env=release
pinpoint.zookeeper.address=172.16.xx.xx
#smtp config\
#pinpoint-web服务地址(推送消息时需要)
pinpoint.url=http://172.16.xx.xx:8080
#邮箱服务地址
alarm.mail.server.url=smtp.xx.xx.com
#邮箱端口
alarm.mail.server.port=465
#邮箱账户名
alarm.mail.server.username=xxx@xxx.xx
#邮箱账户密码
alarm.mail.server.password=xxxx
#邮箱地址
alarm.mail.sender.address=xxx@xxx.xxalarm.mail.transport.protocol=smtp
alarm.mail.smtp.port=25
alarm.mail.smtp.auth=true
alarm.mail.smtp.starttls.enable=false
alarm.mail.smtp.starttls.required=false
#邮箱SSl认证开关
alarm.mail.smtp.ssl.enable=true
alarm.mail.debug=true# webhook开关,需要开启
webhook.enable=true#flink server list
batch.flink.server=
batch.flink.rest.port=8081#cleanup inactive agents job
job.cleanup.inactive.agents=false# "0 0 3 * * WED" = 3:00 AM on every Wednesday.
# "0 0 0 10 * *" = 0:00 AM on the 10th of every month.
# "0 0 16 * * MON-FRI" = 4:00 PM on every weekdays.
#  There is no default value.
job.cleanup.inactive.agents.cron=# Default value is 30 (minimum value is 30)
#job.cleanup.inactive.agents.duration.days=###########################################################
# BANNER                                                  #
###########################################################
# Pinpoint Banner Settings
# Pinpoint banner mode : OFF, CONSOLE, LOG
pinpoint.banner.mode=console
pinpoint.banner.configs=batch.server.env,\pinpoint.url,\alarm.mail.server.url,\jdbc.url,\meta.jdbc.url,\batch.flink.server,\job.cleanup.inactive.agents,\job.cleanup.inactive.agents.cron,\pinpoint.zookeeper.address,\hbase.client.host,\hbase.client.port,\hbase.zookeeper.znode.parent,\hbase.namespace

准备配置文件:config/jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/pinpoint?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

准备启动脚本:start_batch.sh

#!/bin/bash
appName=$2param="-Dspring.config.additional-location=./config/batch.properties,./config/jdbc.properties"
jdkPath=/usr/lib/java-11/jdk-11/bin
# JVM="-XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx1G"
JVM=""
logPath="./logs/app.log"if [ -z $appName ];thenappName=`ls -t |grep .jar$ |head -n1`
fifunction start()
{count=`ps -ef |grep java|grep $appName|wc -l`if [ $count != 0 ];thenecho "Maybe $appName is running, please check it..."elseecho "The $appName is starting..."nohup $jdkPath/java -jar $param $JVM ./$appName > $logPath 2>&1 &fi
}function stop()
{appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`if [ -z $appId ];thenecho "Maybe $appName not running, please check it..."elseecho "The $appName is stopping..."kill $appIdfi
}function restart()
{# get release versionreleaseApp=`ls -t |grep .jar$ |head -n1`# get last versionlastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`appName=$lastVersionAppstopfor i in {5..1}doecho -n "$i "sleep 1doneecho 0# backupappName=$releaseAppstart
}function status()
{appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`if [ -z $appId ]thenecho -e "\033[31m Not running \033[0m"elseecho -e "\033[32m Running [$appId] \033[0m"fi
}function usage()
{echo "Usage: $0 {start|stop|restart|status|stop -f}"echo "Example: $0 start"exit 1
}
case $1 instart)start;;stop)stop;;restart)restart;;status)status;;*)usage;;
esac

启动服务

./start_batch.sh start
./start_batch.sh stop

7.监控预警自动推送钉钉消息

pinpoint 官方提供了标准的webhook推送demo项目(slack-receiver),可基于该项目拓展对接钉钉机器人、短信、企业微信等其他需要推送消息的渠道,下面以钉钉为例展开介绍。

7.1 接入钉钉机器人

详见钉钉自定义机器人接入文档
引入钉钉SDK:maven配置

        <!--钉钉SDK--><dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>2.0.0</version></dependency>

slack-receiver 项目拓展实现钉钉推送

package com.webhook.receiver.slack.sender;import com.webhook.receiver.slack.vo.WebhookPayload;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.taobao.api.ApiException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class DingTalkNotifier implements Notifier {private final Logger logger = LoggerFactory.getLogger(DingTalkNotifier.class.getName());private final String dingTalkWebhookUrl;private final String noticePicUrl;private static final String SCATTER_CHART_LINK_FORMAT = "%s/main/%s@%s/5m/%s";@Autowiredpublic DingTalkNotifier(@Value("${webhook.ding.notify.url}") final String dingTalkWebhookUrl, @Value("${webhook.ding.pic.url}") final String noticePicUrl) {this.dingTalkWebhookUrl = dingTalkWebhookUrl;this.noticePicUrl = noticePicUrl;}@Overridepublic boolean send(WebhookPayload webhookPayload) {DingTalkClient client = new DefaultDingTalkClient(this.dingTalkWebhookUrl);OapiRobotSendRequest request = new OapiRobotSendRequest();request.setMsgtype("link");OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link();link.setMessageUrl(String.format(SCATTER_CHART_LINK_FORMAT, webhookPayload.getPinpointUrl(), webhookPayload.getApplicationId(), webhookPayload.getServiceType(), getCurrentTime()));link.setPicUrl(this.noticePicUrl);link.setTitle(webhookPayload.getNotes());StringBuilder builder = new StringBuilder();builder.append("【钉钉关键字】").append(webhookPayload.getChecker().getName()).append(" value is ").append(webhookPayload.getChecker().getDetectedValueString()).append(webhookPayload.getUnit()).append(" during the past 5 mins.");link.setText(builder.toString());request.setLink(link);try {OapiRobotSendResponse response = client.execute(request);logger.info("Sent dingTalk message to {}", dingTalkWebhookUrl);return true;} catch (ApiException e) {logger.error(e.getMessage());}return false;}
}

7.2 pinpoint-web 配置webhook

在Configuration->Webhook中配置自己的webhook服务

选择应用,配置对应的webhook地址

7.3 pinpoint-web 配置预警推送规则

在Configuration->Alaram中配置自己的预警推送规则

预警类型Type选择webhook,再勾选目标webhook

7.4 钉钉推送效果

pinpoint2.5.0环境搭建监控预警钉钉推送相关推荐

  1. 基于SENPARC盛派微信sdk的.net WebService微信公众号的相关开发(包含从零开始本机测试环境搭建//token验证//获取微信推送消息//向微信推送消息)

    前言: 由于微信公众号正式号,一直在被使用,所以在研发的时候,本机测试环境,就显得非常重要. 而且在自己闲暇之余,可以自己尝试更深程度的微信公众号的研发工作. 1.首先,必要的网站 http://sd ...

  2. (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功

    (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 Visual Studio 2015下载地址:https://msdn.itellyo ...

  3. vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺

    vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺 首先我们要简单了解一下vSphere整体设计结构. 接下来开始做服务器吧. 一.先做ESXi5.0服务器 找到一台干净服务器 ...

  4. 鸿蒙os2.0环境搭建gradle-5.4.1-all.zip下载失败问题解决方案

    鸿蒙os2.0环境搭建gradle-5.4.1-all.zip下载失败问题解决方案 解决 gradle-5.4.1-zip因拉取超时而失败的这个问题 鸿蒙官网的解决方案 1.按照上面链接找到 环境安装 ...

  5. yolov5-4.0环境搭建,零基础小白都能看得懂的教程。YOLOv5搭建的最快搭建方式,踩坑经历详谈)yolov5/yolov4/yolov3/yolov3通>>>>>>>>>>>>>>>>>第一章

    第一章:python最新YOLOv5-4.0环境搭建,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 环境准备: yolov5-4.0环境搭建整体说明 2,anaconda的 ...

  6. python 钉钉消息推送_python3实现钉钉消息推送的方法示例

    背景 偶然发现一个python实现的按照农历/阴历推送消息提醒的程序,钉钉群消息推送.此处总结并对其可推送的消息做. DingtalkNotice 环境:python3.7 安装: pip insta ...

  7. Python之钉钉机器人推送天气预报

    通过Python脚本结合钉钉机器人,定时向钉钉群推送天气预报 #!/usr/bin/python # -*- coding: utf-8 -*- # Author: aiker@gdedu.ml # ...

  8. 钉钉 php 推送,微信模板推送,钉钉信息推送

    上午的时候看到有朋友需要微信推送,正好我也需要,之前一直用 Server 酱的,但是最近用不了,想找一个替代品,一开始准备选择钉钉,除了打卡,我很少使用钉钉,邮件提醒是备用方案,其实和 Server ...

  9. 钉钉机器人推送表格图片

    需求:要做一个钉钉机器人推送表格信息,10分钟一次 难点:1钉钉机器人不支持推送excel,2钉钉推送的图片不是动态的,需要自己写一个方法,变成获取新生成的图片 技术方案: 第一种:可以用图片服务器l ...

最新文章

  1. Plugin Error
  2. LVS(DR模式)的realserver配置(windows)
  3. python下载mp4
  4. url 百分号 解码
  5. 计算机视觉开源库OpenCV梯度之Sobel算子
  6. 【译文】东京的外国工程师
  7. 剑指Offer——Java答案
  8. [SSCore] 开源dotnet core 版本 SuperSocket
  9. Jn建站系统2.0源码 附视频安装教程
  10. vue弹层时禁止页面滚动
  11. java.io.serializable_java.io.NotSerializableException即使我实现“Serializable”
  12. 柠檬文案:水果柠檬宣传文案
  13. 整合google,51ditu和mapbar的地图API
  14. 大数据可视化大屏展示
  15. Python爬虫实例--新浪热搜榜[正则表达式]
  16. 山东省下载准考证必须用电脑吗
  17. 用批处理删除指定字符之前或之后的所有内容(FOR /F 中的Delims和Tokens总结)
  18. 无人机与地面站如何通信
  19. 行业专网对比公网,优势在哪儿?能满足什么特定要求?
  20. 侠客风云传服务器维护,侠客风云传开服表

热门文章

  1. python 大智慧股池_大智慧专业版股票池
  2. Warning: <twoCpt /> is using incorrect casing. Use PascalCase for React components, or lowercase for
  3. 痤疮php,简单有效的除痤疮方法
  4. C13、网页布局方式
  5. 以let开头的祈使句用法归纳
  6. 大数据量转存(抽取、同步)
  7. 区分概率中的事件关系
  8. LeetCode---搜索二维矩阵(c语言)
  9. Yapi接口自动化测试学习记录(ISSUES)
  10. java获取凌晨的时间戳