CAT 监控搭建

摘要:
CAT是基于Java开发的实时应用监控平台,为美团点评提供全面的实时监控和报警服务。它已深度集成在美团点评的基础架构中间件框架中,为美团点评各业务线提供了丰富的性能指标、健康状况、实时警报等。
简介

CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。

已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。

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

Docker 部署CAT

一、环境

已安装服务

  • 服务1:docker-compose Version 1.25.0-rc2
  • 服务2:Docker Version: 19.03.4
  • 服务3:Mysql 5.7
  • 服务4:git 1.8.3.1

二、通过Docker安装

1、创建CAT目录、进入到该目录下

mkdir -p /opt/cat/
cd /opt/cat

2、下载cat

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

3、进入到Docker目录

/cat/docker

4、创建Dockerfile文件

vim Dockerfile

CAT 监控搭建第1张CAT 监控搭建第2张
FROM centos:centos6

USER root

#UTILITIES
RUN    yum install -y wget
RUN    yum install -y tar

#JAVA (OPENJDK 7)
ENV JAVA_VERSION 1.7.0

RUN yum install -y java-1.7.0-openjdk java-1.7.0-openjdk-devel

ENV JAVA_HOME /usr/lib/jvm/java

#TOMCAT 7
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME


ENV TOMCAT_MAJOR_VERSION 7
ENV TOMCAT_MINOR_VERSION 7.0.79

RUN wget -q https://archive.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR_VERSION}/v${TOMCAT_MINOR_VERSION}/bin/apache-tomcat-${TOMCAT_MINOR_VERSION}.tar.gz && 
    wget -qO- https://archive.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR_VERSION}/v${TOMCAT_MINOR_VERSION}/bin/apache-tomcat-${TOMCAT_MINOR_VERSION}.tar.gz.md5 | md5sum -c - && 
    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 5.2

RUN wget http://archive.apache.org/dist/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

COPY . /root/workspace/cat
WORKDIR /root/workspace/cat

RUN set -ex && mvn clean install -DskipTests
RUN cp cat-home/target/*.war $CATALINA_HOME/webapps/cat.war
ADD docker/datasources.xml /data/appdatas/cat/datasources.xml
ADD docker/datasources.sh /datasources.sh
RUN sed -i "s/port="8080"/port="8080" URIEncoding="utf-8"/g" $CATALINA_HOME/conf/server.xml

EXPOSE 8080
Dockerfile

5、创建docker-compose文件

vim docker-compose.yaml

CAT 监控搭建第1张CAT 监控搭建第4张
version: '2.2'

services:
  cat:
    container_name: cat

    ######## build from Dockerfile ###########
    build:
      context: ../
      dockerfile: ./docker/Dockerfile
    ######## End -> build from Dockerfile ###########

    environment:
      # if you have your own mysql, config it here, and disable the 'mysql' config blow
      - MYSQL_URL=192.168.0.197  # links will maintain /etc/hosts, just use 'container_name'
      - MYSQL_PORT=3306
      - MYSQL_USERNAME=cat
      - MYSQL_PASSWD=cat123
      - MYSQL_SCHEMA=cat

    working_dir: /app
    volumes:
      # 默认127.0.0.1,可以修改为自己真实的服务器集群地址
      - "./client.xml:/data/appdatas/cat/client.xml"
      # 默认使用环境变量设置。可以启用本注解,并修改为自己的配置
      - "./datasources.xml:/data/appdatas/cat/datasources.xml"
      - "/etc/localtime:/etc/localtime"
        #command: /bin/sh -c 'chmod +x /datasources.sh && /datasources.sh && catalina.sh run'
    command: /bin/sh -c 'catalina.sh run'
    ports:
      - "8080:8080"
      - "2280:2280"
    network_mode: "host"
docker-compose.yaml

6、修改datasources.xml配置文件链接数据库使用

vim datasources.xml

CAT 监控搭建第1张CAT 监控搭建第6张
<?xml version="1.0" encoding="utf-8"?>

<data-sources>
    <data-source id="cat">
        <maximum-pool-size>3</maximum-pool-size>
        <connection-timeout>1s</connection-timeout>
        <idle-timeout>10m</idle-timeout>
        <statement-cache-size>1000</statement-cache-size>
        <properties>
            <driver>com.mysql.jdbc.Driver</driver>
            <url><![CDATA[jdbc:mysql://192.168.0.9:3306/cat]]></url>
            <user>cat</user>
            <password>xxxxxxx</password>
            <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
        </properties>
    </data-source>
</data-sources>
datasources.xml

7、修改client.xml配置文件用于指定监控端

vim client.xml

CAT 监控搭建第1张CAT 监控搭建第8张
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
    <servers>
        <server ip="192.168.0.9" port="2280" http-port="8080"/>
    </servers>
</config>
client.xml

8、将cat数据库导入sql文件

数据库位置:/cat/script/CatApplication.sql 

9、执行命令构建启动服务

docker-compose up

10、设置开机自启动

docker update --restart=always cat

11、开启防火墙端口

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

12、测试访问

http://ip:8080/cat

CAT 监控搭建第9张

13、配置cat

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

CAT 监控搭建第10张

CAT 监控搭建第1张CAT 监控搭建第12张
<?xml version="1.0" encoding="utf-8"?>
<router-config backup-server="192.168.0.9" backup-server-port="2280">
   <default-server id="192.168.0.9" weight="1.0" port="2280" enable="true"/>
   <network-policy id="default" title="默认" block="false" server-group="default_group">
   </network-policy>
   <server-group id="default_group" title="default-group">
      <group-server id="192.168.0.9"/>
   </server-group>
   <domain id="cat">
      <group id="default">
         <server id="192.168.0.9" port="2280" weight="1.0"/>
      </group>
   </domain>
</router-config>
路由配置

参考文章:https://www.cnblogs.com/provence666/p/11029329.html

参考文章:https://article.itxueyuan.com/BJ2KdG

参考文章:https://zhuanlan.zhihu.com/p/46399761

参考文章:https://www.cnblogs.com/softidea/p/5719331.html

免责声明:文章转载自《CAT 监控搭建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇javaEE基础table固定首行(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

rabbitmq队列

使用MQ 以常见的订单系统为例,用户点击【下单】按钮之后的业务逻辑可能包括:扣减库存、生成相应单据、发红包、发短信通知。在业务发展初期这些逻辑可能放在一起同步执行,随着业务的发展订单量增长,需要提升系统服务的性能,这时可以将一些不需要立即生效的操作拆分出来异步执行,比如发放红包、发短信通知等。这种场景下就可以用 MQ ,在下单的主流程(比如扣减库存、生成相...

debian 安装 plymouth 美化开机动画

Plymouth 目录 Plymouth 参考 简介 简单步骤,无脑按照wiki走 下载,请注意wiki里kde桌面的提醒 修改grub配置,建议修改前保存一下旧有配置 应用修改 查看一下默认主题 设置主题 看看效果 不试验了,花里胡哨,没啥用…… 如何显示原始的内核消息 参考 debian wiki B站视频 简介 debian默认的开机...

elementui使用MessageBox 弹框自定义内容$msgbox:实现一个textarea文本输入框

1、首先我们可以看下官网的例子: <template> <el-button type="text" @click="open">点击打开 Message Box</el-button> </template> <script> export default { methods:...

将excel表数据导入sqlserver2008R2 报错

错误信息: 正在复制到 [dbo].[Sheet1sss$] (错误)消息错误 0xc020901c: 数据流任务 1: 输出“Excel 源输出”(9) 上的 输出列“FDESC”(93) 出错。返回的列状态是:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。(SQL Server 导入和导出向导)错误 0xc020902a: 数据流任务...

微信小程序 发送模板消息的功能实现

背景 - 小程序开发的过程中,绝大多数会满足微信支付 - 那么,作为友好交互的体现,自然就会考虑到支付后的消息通知咯 - 所以,我的小程序项目也要求完成这个效果,so.分享一下自己的实现步骤,以方便道友们少踩点坑... 微信消息通知的区别: 1. 微信网页版、公众号的消息提醒 要求用户必须 "关注商家公众号",才支持消息的接收 并且还有个奇怪...

RocketMQ (三)RocketMQ 怎么保证的消息不丢失?

一、消息发送过程 我们将消息流程分为如下三大部分,每一部分都有可能会丢失数据。 生产阶段:Producer通过网络将消息发送给Broker,这个发送可能会发生丢失,比如网络延迟不可达等。 存储阶段:Broker肯定是先把消息放到内存的,然后根据刷盘策略持久化到硬盘中,刚收到Producer的消息,再内存中了,但是异常宕机了,导致消息丢失。 消费阶段:消...