一、介紹
CAT 簡介
- CAT 是基于 Java 開發(fā)的實時應用監(jiān)控平臺,為美團點評提供了全面的實時監(jiān)控告警服務。
- CAT 作為服務端項目基礎組件,提供了 Java, C/C++, Node.js, Python, Go 等多語言客戶端鼠证,已經在美團點評的基礎架構中間件框架(MVC框架,RPC框架靠抑,數據庫框架量九,緩存框架等,消息隊列颂碧,配置系統(tǒng)等)深度集成荠列,為美團點評各業(yè)務線提供系統(tǒng)豐富的性能指標、健康狀況载城、實時告警等肌似。
- CAT 很大的優(yōu)勢是它是一個實時系統(tǒng),CAT 大部分系統(tǒng)是分鐘級統(tǒng)計诉瓦,但是從數據生成到服務端處理結束是秒級別川队,秒級定義是48分鐘40秒,基本上看到48分鐘38秒數據睬澡,整體報表的統(tǒng)計粒度是分鐘級固额;第二個優(yōu)勢,監(jiān)控數據是全量統(tǒng)計煞聪,客戶端預計算斗躏;鏈路數據是采樣計算。
Cat 產品價值
- 減少故障發(fā)現時間
- 降低故障定位成本
- 輔助應用程序優(yōu)化
Cat 優(yōu)勢
- 實時處理:信息的價值會隨時間銳減米绕,尤其是事故處理過程中
- 全量數據:全量采集指標數據瑟捣,便于深度分析故障案例
- 高可用:故障的還原與問題定位馋艺,需要高可用監(jiān)控來支撐
- 故障容忍:故障不影響業(yè)務正常運轉栅干、對業(yè)務透明
- 高吞吐:海量監(jiān)控數據的收集,需要高吞吐能力做保證
- 可擴展:支持分布式捐祠、跨 IDC 部署碱鳞,橫向擴展的監(jiān)控系統(tǒng)
二、安裝
docker安裝略
1踱蛀、下載cat
地址:https://github.com/dianping/cat
# mkdir -p /data/app/cat
# cd /data/app/cat
# git clone https://github.com/dianping/cat.git
2窿给、安裝docker-compose
# wget https://github.com/docker/compose/releases/download/1.22.0/docker-compose-Linux-x86_64
# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose -v
docker-compose version 1.22.0, build f46880fe
3贵白、編輯Dockerfile
# cd /data/app/cat/cat/docker
# vim Dockerfile
FROM centos:centos7
USER root
#UTILITIES
RUN yum install -y wget
RUN yum install -y tar
#JAVA (OPENJDK 8)
ENV JAVA_VERSION 1.8.0
RUN yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
ENV JAVA_HOME /usr/lib/jvm/java
#TOMCAT 7
ENV CATALINA_HOME /data/app/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.96
RUN wget https://mirrors.tuna.tsinghua.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.2
RUN wget https://mirrors.tuna.tsinghua.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} /data/app/apache-maven
ENV M2_HOME=/data/app/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
4、同步docker時區(qū)
# vim docker-compose.yml
在cat 和cat_mysql volumes 節(jié)點下添加
- "/etc/localtime:/etc/localtime"
# 如
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=cat-mysql # links will maintain /etc/hosts, just use 'container_name'
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
- MYSQL_PASSWD=
- MYSQL_SCHEMA=cat
working_dir: /app
volumes:
- "/etc/localtime:/etc/localtime"
# 默認127.0.0.1崩泡,可以修改為自己真實的服務器集群地址
- "./client.xml:/data/appdatas/cat/client.xml"
# 默認使用環(huán)境變量設置禁荒。可以啟用本注解角撞,并修改為自己的配置
# - "./datasources.xml:/data/appdatas/cat/datasources.xml"
command: /bin/sh -c 'chmod +x /datasources.sh && /datasources.sh && catalina.sh run'
links:
- mysql
depends_on:
- mysql
ports:
- "8080:8080"
- "2280:2280"
5呛伴、修改client.xml
# vim client.xml
# 修改為宿主機的ip地址
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="192.168.4.30" port="2280" http-port="8080"/>
</servers>
</config>
6、運行
1谒所、初始化
# docker-compose up -d
2热康、導入表結構
一次運行以后,數據庫中沒有表結構劣领,需要通過下面的命令創(chuàng)建表
# docker exec cat-mysql bash -c "mysql -uroot -Dcat < /init.sql"
3姐军、設置開機啟動、防火墻
# docker update --restart=always cat
# docker update --restart=always cat-mysql
# iptables -A INPUT -t tcp --dport 2280 -j ACCEPT
# iptables -A INPUT -t tcp --dport 8080 -j ACCEPT
7尖淘、訪問
url:http://ip:8080/cat
config:用戶:admin 密碼:admin
修改配置:紅圈修改為宿主機ip
注意:務必客戶端與服務端時區(qū)以及時間統(tǒng)一
另外還需要修改docker里面tomcat服務時區(qū)
# docker exec -it cat bash
# cd /data/app/tomcat/bin/
# vim catalina.sh
# 大概233行的樣子
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Duser.timezone=Asia/shanghai"
#加上時區(qū)運行
# docker restart cat
# docker ps