Cat监控本地部署
说明
目标
1.192.168.10.133上安装mysql,新建数据库cat(cat的数据保存地方)
2.192.168.10.132上安装tomcat,运行cat.war
3.win10本地的idea运行springboot项目,cat日志可以在 http://192.168.10.132/cat上看到
前提
- jdk1.8
- mysql5.7.22,安装参考:https://blog.csdn.net/sndayYU/article/details/96450591;虚拟机参考https://blog.csdn.net/sndayYU/article/details/96745748
- win10已安装maven,idea等
cat.war和sql脚本
源码下载
https://github.com/dianping/cat/releases
https://codeload.github.com/dianping/cat/zip/refs/tags/v3.0.0
编译
mvn clean install -Dmaven.test.skip=true
编译后将…\cat-3.0.0\cat-home\target\cat-alpha-3.0.0.war 改名为 cat.war
sql脚本----mysql这里就配置完了
mysql新建数据库cat,运行…\cat-3.0.0\script\CatApplication.sql
部署cat
1.新建目录/data/appdatas/cat、/data/applogs/cat
2.新建文件/data/appdatas/cat/client.xml
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="192.168.10.132" port="2280" http-port="8080"/>
</servers>
</config>
3.vim /data/appdatas/cat/datasources.xml
<?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.10.133:3306/cat]]></url> <!-- 请替换为真实数据库URL及Port -->
<user>root</user> <!-- 请替换为真实数据库用户名 -->
<password>123456</password> <!-- 请替换为真实数据库密码 -->
<connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
</properties>
</data-source>
</data-sources>
4.赋予/data权限777
5.上传tomcat到/root, cat.war上传到/root/apache-tomcat-8.0.28/webapps
6.运行
nohup /root/apache-tomcat-8.0.28/bin/catalina.sh run &
7.访问192.168.10.132:8080/cat, 得到下面结果,会有报错“出问题CAT的服务端:[127.0.0.1]"
cat浏览器界面上报错“出问题CAT的服务端:[127.0.0.1]"
下面进行配置cat:
1.点击configs进行配置;
2.登录界面:admin/admin
3.点击左边 全局系统配置 -> 服务端配置 -> 修改remote-servers和server节点的id为192.168.10.132,提交
4.客户端配置 -> 把所有的127.0.0.1改为192.168.10.132即可
最终,cat成功部署了
springboot程序接入cat
win10本地配置
D:\data\appdatas\cat\client.xml
<config mode="client">
<servers>
<server ip="192.168.10.132" port="2280" http-port="8080"/>
</servers>
</config>
my-cat-demo项目
pom.xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- 继承spring boot的starter -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencies>
<!-- 添加web starter的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.dianping.cat</groupId>
<artifactId>cat-client</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
resources/META-INF/app.properties
app.name=my-cat-demo
CatFilterConfigure.java
import com.dianping.cat.servlet.CatFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
@Component
public class CatFilterConfigure {
@Bean
public FilterRegistrationBean catFilter() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
CatFilter filter = new CatFilter();
registrationBean.setFilter(filter);
registrationBean.addUrlPatterns("/*");
registrationBean.setName("my-cat-filter");
registrationBean.setOrder(1);
return registrationBean;
}
}
MainApp.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class MainApp {
@Autowired
private CatServiceImpl catServiceImpl;
public static void main(String[] args) {
SpringApplication.run(MainApp.class, args);
}
@GetMapping("/hello")
public String hello() {
return catServiceImpl.getHello();
}
}
CatServiceImpl.java
import com.dianping.cat.Cat;
import org.springframework.stereotype.Service;
@Service
public class CatServiceImpl {
public String getHello() {
Cat.logEvent("catType1", "catName1");
Cat.logError(new Exception("this is a cat error log"));
return "hello world!";
}
}
运行
说明本地iwin10 idea上的springboot项目能成功把日志写到服务器上的cat上了!
可能导致报错的原因
- 服务端的时间和程序的不一致,也可能导致cat监控没有日志