1.环境分析
Pinpoint是基于java开发的一款开源框架,所以应该有java基础环境(jdk),而目前pinpoint-collector需要基于tomcat下才可以运行,所以也需要基础web容器(tomcat)。
2.项目分析
由于pinpoint-collector在项目组做了适应性改造,故不采取开源的项目,目前解决方案是暂时先将项目组内部的pinpoint打包使用,由于内部pinpoint-collector中已添加了相应的配置信息,后续构建启动脚本时,也可以进行动态替换。
注意:需要将collector的ROOT全部拷贝并且将原项目中tomcat的启动脚本一同拷贝。
3.编写Dockerfile
FROM tomcat:8-jre8
ADD start-collector.sh /usr/local/bin/
ADD pinpoint-collector.war /usr/local/bin/
RUN cd /usr/local/bin/
RUN chmod a+x /usr/local/bin/start-collector.sh \
&& sed -i -e 's/8005/9005/' /usr/local/tomcat/conf/server.xml \
&& sed -i -e 's/8080/9080/' /usr/local/tomcat/conf/server.xml \
&& sed -i -e 's/8009/9009/' /usr/local/tomcat/conf/server.xml \
&& sed -i -e 's/8443/9443/' /usr/local/tomcat/conf/server.xml \
&& unzip pinpoint-collector.war -d /usr/local/tomcat/webapps/ROOT \
&& rm -rf pinpoint-collector.war
EXPOSE 9994 9995 9996
ENTRYPOINT ["sh","/usr/local/bin/start-collector.sh"]
启动脚本start-collector.sh:
#!/bin/sh
set -e
set -x
CLUSTER_ENABLE=${CLAUSTER_ENABLE:-false}
CLUSTER_TCP_PORT=${CLUSTER_TCP_PORT:-9994}
CLUSTER_UDP_STAT_LISTEN_PORT=${UDP_STAT_LISTEN_PORT:-9995}
CLUSTER_UDP_SPAN_LISTEN_PORT=${UDP_SPAN_LISTEN_PORT:-9996}
HBASE_HOST=${HBASE_HOST:-localhost}
HBASE_PORT=${HBASE_PORT:-2181}
DISABLE_DEBUG=${DISABLE_DEBUG:-true}
###下面均为设置参数,目前暂未替换,到内网后更换
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed-i-e 's/collector.agentEventWorker.queueSize=4096/collector.agentEventWorker.queueSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
sed -i -e 's/collector.agentEventWorker.threadSize=16/collector.agentEventWorker.threadSize=${AGENTEVENTWORKER_THREADSIZE}/g' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties \
exec /usr/local/tomcat/bin/catalina.sh run
##因为容器内不会讲日志信息更新到rancher控制台,加下面一行来实时刷新
tail -f /usr/local/tomcat/logs/catalina.out