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 :是應用的名稱,每一個應用惟一

 


 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索