Pinpoint完整集群实现,包括flink集群的加入

 

Pinpoint是韩国人开发的一套基于java的Apm(应用性能监控),具备低延迟、实时监控、拓扑发现、低性能损耗的特色(官方预估是3%),同事有一个完善的web后台,一目了然查看应用拓扑。java

安装使用前我搜索了网上一堆的文档,几乎都是半路货或是比较旧,一半靠官网,一半靠摸索理解,还好感谢官网的协助,最终所有搭建成功。为了方便之后其它人的使用,我用ansible搭建成大部分的初始化部分,但剩下几个小步骤仍是须要手动执行下,例如数据库的导入,修改job的架包等node

 

这里要搭建是一套能够实际用的pinpoint集群,我测试环境用3台机器来实现,分别是mysql

172.25.33.230  :  zookeeper,hadoop,hbase,collector,web,nginxnginx

172.25.33.231  :  zookeeper,hadoop,hbase,collectorgit

172.25.33.232  :  zookeeper,hadoop,hbase,collectorgithub

 

搭建的顺序首选是web

一、搭建一套zookeeper集群sql

二、搭建一套hdfs集群shell

三、搭建hbase集群数据库

四、搭建flink集群

五、启动多个collector应用,利用nginx负载均衡(实际使用建议用keepalive)

六、启动web管理后台

七、使用一个jar应用添加agent进行测试


 

看起来是否是具体搭建比较麻烦,包括各类配置。这里我用ansible几乎完成所有配置,只要稍微修改下参数的设置,就能够完成一整套搭建,因此搭建的顺序改为

一、三个测试机器部署ssh免密登陆

二、下载配置好的环境

三、批量ansible.vars.yml 中的IP,

四、安装ansible,执行ansible-playbook

五、启动以及导入数据库

六、搭建一个nginx用于负载均衡controller

七、启动全部东西

 

这样看起来就比较简单实现,下面开始来搭建

 


 

一、三个测试机器部署ssh免密登陆

1 #进入root目录
2 ssh-keygen  #一路回车
3 cd /root/.ssh
4 mv id_rsa.pub authorized_keys
5 scp -p authorized_keys   172.25.33.231:/root/.ssh/
6 scp -p authorized_keys   172.25.33.232:/root/.ssh/

而后做下测试:

 

ssh 免密是必须的,这个关系到hdfs的搭建,hbase集群的搭建

 


 

 

 二、下载配置好的环境

cd /opt
git clone https://github.com/rainard/apm-pinpoint.git
mv apm-pinpoint  apm
cd apm

 


 

 

三、批量ansible.vars.yml 中的IP

这个好像没啥好说的,直接用文本所有替换,把三个ip都替换成实际搭建要用到的IP,例以下图。文章最后我再解释这些参数的意义,

 

替换mysql的账号密码(ansible.vars.yml)

## pinpoint-web jdbc config
jdbc_driverClassName: com.mysql.jdbc.Driver
jdbc_url: jdbc:mysql://172.25.33.230:3306/pinpoint?characterEncoding=UTF-8
jdbc_user: root
jdbc_password: test

 

 


 

 

 四、安装ansible,执行ansible-playbook

 安装ansible

yum install -y ansible

 

执行ansible-playbook

cd /opt/apm
ansible-playbook ansible_rsync.play.yml

 

 

 这样执行完后,整个集群基本就配置好了,下面作一些收尾工做,而后启动集群

 


 

 

五、启动以及导入数据库

 在三台机器的/etc/profile中添加必须的路径配置,添加完最好重启下

JAVA_HOME=/usr/local/apm/java
HADOOP_HOME=/usr/local/apm/hadoop
HADOOP_INSTALL=$HADOOP_HOME
HADOOP_MAPRED_HOME=$HADOOP_HOME
HADOOP_COMMON_HOME=$HADOOP_HOME
HADOOP_HDFS_HOME=$HADOOP_HOME
YARN_HOME=$HADOOP_HOME
HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop/
HBASE_MANAGES_ZK=false
ZOOKEEPER_HOME=/usr/local/apm/zookeeper
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:
PATH=$PATH:/usr/local/mysql/bin:

 

在三台机器上启动zookeeper集群

/usr/local/apm/zookeeper/bin/zkServer.sh start ; 

测试zookeeper的启动状况

/usr/local/apm/zookeeper/bin/zkServer.sh  status

 

下面的启动操做在172.25.33.230上面执行

hdfs格式化namenode,仅第一次启动须要

/usr/local/apm/hadoop/bin/hdfs namenode -format 

启动hdfs集群

/usr/local/apm/hadoop/sbin/start-all.sh 

启动hbase集群

/usr/local/apm/hbase/bin/start-hbase.sh  

导入hbase数据库

/usr/local/apm/hbase/bin/hbase shell /usr/local/apm/hbase-create.hbase 

 

启动flink集群

 /usr/local/apm/flink/bin/start-cluster.sh

 

导入web数据库(非必须,只是用于报警)

*** 关于mysql ****

web的报警部分数据存在mysql,若是你想要报警相关,须要把额外提供一个mysql,并建立pinpoint数据库

#下面两个sql文件导入pinpoint数据库
/usr/local/apm/pinpoint-web-tomcat/ROOT/WEB-INF/classes/sql/CreateTableStatement-mysql.sql
/usr/local/apm/pinpoint-web-tomcat/ROOT/WEB-INF/classes/sql/SpringBatchJobRepositorySchema-mysql.sql

启动web

 /usr/local/apm/pinpoint-web-tomcat/bin/startup.sh

 

--------------collector

三个机器启动collector

/usr/local/apm/pinpoint-controller-tomcat/bin/startup.sh

 

 

 利用nginx为三个collector作负载均衡,实际运用中建议加上keepalive,这里提供nginx的一个虚机配置文件

[root@P1NODE tcp]# cat pinpoint.conf 
        upstream 9994_tcp_upstreams {
                #least_timefirst_byte;
                #fail_timeout=15s;
                server 172.25.33.230:9994;
                server 172.25.33.231:9994;
                server 172.25.33.232:9994;
        }

        upstream 9995_udp_upstreams {
                #least_timefirst_byte;
                server 172.25.33.230:9995;
                server 172.25.33.231:9995;
                server 172.25.33.232:9995;
        }

        upstream 9996_udp_upstreams {
                #least_timefirst_byte;
                server 172.25.33.230:9996;
                server 172.25.33.231:9996;
                server 172.25.33.232:9996;
        }

        server {
                listen 39994;
                proxy_pass 9994_tcp_upstreams;
                #proxy_timeout 1s;
                proxy_connect_timeout 1s;
        }

        server {
                listen 39995 udp;
                proxy_pass 9995_udp_upstreams;
                proxy_timeout 1s;
                #proxy_responses1;

        }

        server {
                listen 39996 udp;
                proxy_pass 9996_udp_upstreams;
                proxy_timeout 1s;
                #proxy_responses1;
        }

 


 

 

到这里,集群的全部操做以及搭建完毕,那么agent怎么操做呢?

在启动的jvm里面添加

-javaagent:/usr/local/apm/pinpoint-agent/pinpoint-bootstrap-1.8.0-RC1.jar \
-Dpinpoint.agentId=PP_172.25.33.230 
-Dpinpoint.applicationName=app-demo \

javaagent : 是agent架包的位置

Dpinpoint.agentId  : 是这个应用部署的节点id,节点惟一

Dpinpoint.applicationName :是应用的名称,每一个应用惟一

 


 

 

 

 

 

 

 

 

相关文章
相关标签/搜索