1.下载cat

  cat 地址:https://github.com/dianping/cat

  进入opt 创建cat文件夹

  cd /opt/

  mkdir cat

  cd cat

  下载cat

  git clone https://github.com/dianping/cat.git

2.安装

2.1.安装docker-compose

wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64

rename docker-compose-Linux-x86_64 docker-compose docker-compose-Linux-x86_64

chmod +x /usr/local/bin/docker-compose

再通过docker-compose version命令进行查看

2.2 Docker快速部署

说明

  1. 支持本机模式快速部署。
  2. docker/Dockerfile包含CAT依赖的环境,可以作为源码部署的参考。
  3. 默认的运行方式是集成了一个mysql镜像,可以修改为自己的mysql的详细配置。默认运行的mysql服务,将mysql数据挂载到了docker/mysql/volume中。

容器构建

cd docker
修改Dockerfile,由于tomcat和maven下载地址变了,需要修改版本号和下载地址
vi Dockerfile 替换原来的内容为下面内容
 

ENV TOMCAT_MAJOR_VERSION 7
ENV TOMCAT_MINOR_VERSION 7.0.94

RUN wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-${TOMCAT_MAJOR_VERSION}/v${TOMCAT_MINOR_VERSION}/bin/apache-tomcat-${TOMCAT_MINOR_VERSION}.tar.gz && \
tar zxf apache-tomcat-*.tar.gz && \
mv apache-tomcat-${TOMCAT_MINOR_VERSION}/* . && \
rm -rf apache-tomcat-*

#MAVEN
ENV MAVEN_VERSION_MAJOR 3
ENV MAVEN_VERSION_MINOR 6.1

RUN wget http://mirror.bit.edu.cn/apache/maven/maven-${MAVEN_VERSION_MAJOR}/${MAVEN_VERSION_MAJOR}.${MAVEN_VERSION_MINOR}/binaries/apache-maven-${MAVEN_VERSION_MAJOR}.${MAVEN_VERSION_MINOR}-bin.tar.gz
RUN tar xvf apache-maven-${MAVEN_VERSION_MAJOR}.${MAVEN_VERSION_MINOR}-bin.tar.gz
RUN rm apache-maven-${MAVEN_VERSION_MAJOR}.${MAVEN_VERSION_MINOR}-bin.tar.gz
RUN mv apache-maven-${MAVEN_VERSION_MAJOR}.${MAVEN_VERSION_MINOR} /usr/local/apache-maven
ENV M2_HOME=/usr/local/apache-maven
ENV M2=$M2_HOME/bin
ENV PATH=$M2:$PATH
CMD java -version && mvn -version

同步docker时区
vi docker-compose.yml
cat 和cat_mysql volumes 节点下添加
      - "/etc/localtime:/etc/localtime"
修改client.xml
vi client.xml
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="192.168.1.206" port="2280" http-port="8080"/>
</servers>
</config>
ip为宿主机ip
执行 docker-compose up

第一次运行以后,数据库中没有表结构,需要通过下面的命令创建表:

docker exec cat-mysql bash -c "mysql -uroot -Dcat < /init.sql"

说明:<container_id>需要替换为容器的真实id。通过 docker ps 可以查看到mysql容器id

依赖配置说明

  1. datasources.xml

    • CAT数据库配置,默认配置是mysql镜像,可以按需替换
  2. docker-compose.yml
    • 通过docker-compose启动的编排文件,文件中包含cat和mysql。可以屏蔽掉mysql的部分,并且修改cat的环境变量,改为真实的mysql连接信息。
  3. client.xml
    • CAT 初始化默认的路由列表,配置此文件可以将客户端数据上报指向到不同环境。
  4. datasources.sh
    • 辅助脚本,脚本作用时修改datasources.xml,使用环境变量中制定的mysql连接信息。(通过sed命令替换)

3.设置开机启动

docker update --restart=always cat

docker update --restart=always cat-mysql

4.开启端口

firewall-cmd --zone=public  --permanent --add-port=2280/tcp

firewall-cmd --zone=public  --permanent --add-port=8080/tcp

5.访问

http://ip:8080/cat

6.配置cat

config 默认用户名:admin 密码:adin

配置服务器

配置路由

7.问题及解决

1、问题总揽

在部署cat的过程中遇到若干个坑,在此记录一下。参考github上的部署说明。在部署完成后,打开cat页面,有问题的cat服务器会显示“**有问题的cat服务器[ip:127.0.0.1]”**等若干式样。下图所示为正常的cat监控。

不正常的cat服务器会在上图划横线的地方显示“有问题的cat服务器ip[]”等关键滋字样。

2、问题原因

出现这个字样的原因是client.xml,server.xml以及开启服务后,客户端路由,服务端配置的ip地址有误所导致的。(注:在github上的配置说明中没有提到server.xml的配置。有若干坑。)

3、解决方法

配置单机版cat时,以上提到的ip地址全部换成服务端内网ip地址即可。

A、打开终端,找出内网IP地址。

使用ifconfig命令查看本机内网地址。如下所示。

找到en0下的inet部分的ip地址即为服务端的内网地址。

B、修改CLIENT.XML等文件中IP地址。

client.xml文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="192.168.43.238" port="2280" http-port="8080"/>
</servers>
</config>

其中中的ip地址为对应的内网地址。

server.xml文件。

<?xml version="1.0" encoding="utf-8"?>
<!-- Configuration for development environment-->
<config local-mode="false" hdfs-machine="false" job-machine="true" alert-machine="true">
<storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7">
</storage>
<console default-domain="Cat" show-cat-domain="true">
<!--将172.16.90.114修改为部署CAT的内网IP,请不要写127.0.0.1和外网IP -->
<remote-servers>192.168.43.238:8080</remote-servers>
</console>
</config>

修改完上述两个文件后,启动tomcat服务器。

这时还是会显示有问题的cat服务器。

C、修改客户端路由配置

如下图所示。

修改完成后,点击提交和重算路由

D、修改服务端配置


在图中3出,修改为内网ip。修改完后,点击提交。
最后就得到了正常的cat服务器。摘自:http://www.freesion.com/article/589046467/

最新文章

  1. JavaScript类属性
  2. 整合s2sh,实现页面操作数据库
  3. webView 显示一段 html 代码
  4. Display Voxel Gird and PCA
  5. javascript密码强度验证!
  6. POJ 1422 二分图(最小路径覆盖)
  7. [转]&quot;Windows Phone 7程序设计”完全版电子书可以免费下载了
  8. redis学习-day1
  9. 扯扯淡,写个更快的memcpy
  10. [BZOJ 1143] [CTSC2008] 祭祀river 【最长反链】
  11. Hackerrank 2020 February 2014 解题报告
  12. 从ASP.NET传递参数给水晶报表
  13. 《Android底层接口与驱动开发技术详解》digest
  14. HDU - 1394 Minimum Inversion Number (线段树求逆序数)
  15. asp:Property解释与例子
  16. 0. Java虚拟机系列备忘预览图
  17. ERROR 1044 (42000): Access denied for user &#39;root&#39;@&#39;%&#39; to database &#39;mysql&#39;
  18. vue 监听变量或对象
  19. STM32串口打印输出乱码的解决办法
  20. 笔记本(ThinkPad)怎样关闭触摸板

热门文章

  1. 实现多线程的三种方法:Thread、Runnable和Callable
  2. CSAW CTF Qualification Round 2018 - shell-&gt;code
  3. P与C
  4. 获取mysql数据库表字段的备注信息
  5. 英语单词substitution
  6. Stream学习笔记
  7. The Tree-planting Day and Simple Disjoint Sets
  8. 20175213 2018-2019-2 《Java程序设计》第11周学习总结
  9. (转)Java并发包:AtomicBoolean和AtomicReference
  10. 测开之路四十三:ajax请求