Pinpoint完整集群實現,包括flink集群的加入


 

Pinpoint是韓國人開發的一套基於java的Apm(應用性能監控),具有低延遲、實時監控、拓撲發現、低性能損耗的特點(官方預估是3%),同事有一個完善的web后台,一目了然查看應用拓撲。

安裝使用前我搜索了網上一堆的文檔,幾乎都是半路貨或是比較舊,一半靠官網,一半靠摸索理解,還好感謝官網的協助,最終全部搭建成功。為了方便以后其它人的使用,我用ansible搭建成大部分的初始化部分,但剩下幾個小步驟還是需要手動執行下,例如數據庫的導入,修改job的架包等

 

這里要搭建是一套可以實際用的pinpoint集群,我測試環境用3台機器來實現,分別是

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

172.25.33.231  :  zookeeper,hadoop,hbase,collector

172.25.33.232  :  zookeeper,hadoop,hbase,collector

 

搭建的順序首選是

1、搭建一套zookeeper集群

2、搭建一套hdfs集群

3、搭建hbase集群

4、搭建flink集群

5、啟動多個collector應用,利用nginx負載均衡(實際使用建議用keepalive)

6、啟動web管理后台

7、使用一個jar應用添加agent進行測試


 

看起來是不是具體搭建比較麻煩,包括各種配置。這里我用ansible幾乎完成全部配置,只要稍微修改下參數的設置,就可以完成一整套搭建,所以搭建的順序改成

1、三個測試機器部署ssh免密登錄

2、下載配置好的環境

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

4、安裝ansible,執行ansible-playbook

5、啟動以及導入數據庫

6、搭建一個nginx用於負載均衡controller

7、啟動所有東西

 

這樣看起來就比較簡單實現,下面開始來搭建

 


 

1、三個測試機器部署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集群的搭建

 


 

 

 2、下載配置好的環境

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

 


 

 

3、批量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

 

 


 

 

 4、安裝ansible,執行ansible-playbook

 安裝ansible

yum install -y ansible

 

執行ansible-playbook

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

 

 

 這樣執行完后,整個集群基本就配置好了,下面做一些收尾工作,然后啟動集群

 


 

 

5、啟動以及導入數據庫

 在三台機器的/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 :是應用的名稱,每個應用唯一

 


 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM