您好,登录后才能下订单哦!
这篇文章主要讲解了“如何实现Cat中的Server+client+预警”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现Cat中的Server+client+预警”吧!
一.服务端部署
1.从github上下载源码,导入idea,加载依赖,插件
2.加载完毕之后 maven打包 (打包比较容易失败 失败就多打包几次)
mvn clean install -DskipTests
3.打成war包之后可以放在linux下tomcat中启动,也可以直接在idea中配置tomcat本地启动(这里以window举例)
4.启动之后会自动生成项目读取配置的目录(此目录需要有读写权限)
/data/appdatas/cat/
5.此时项目会启动失败,因为只有目录没有配置文件
6.在/data/appdatas/cat/目录下创建client.xml,datasources.xml配置文件 内容如下
client.xml
<?xml version="1.0" encoding="utf-8"?> <config mode="client"> <servers> #这里配置的是Cat服务端的地址和端口 <server ip="127.0.0.1" port="2280" http-port="8080"/> </servers> </config>
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> #服务端的Cat数据库地址 <url>jdbc:mysql://127.0.0.1:3306/cat</url> <user>root</user> <password>123456</password> <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000&useSSL=false]]></connectionProperties> </properties> </data-source> </data-sources>
7.项目的script目录下会有初始化sql 加载进我们上面填的数据库
8.配置完成之后再启动,启动的项目访问路径需要是 /cat
9.启动成功,访问http://localhost:8080/cat/s/config?op=routerConfigUpdate,成功进入服务端页面
10.默认用户名:admin 默认密码:admin
11.此时服务端就已经接入成功
二.客户端接入(以springBoot项目为例)
1.导入依赖 (根据我们服务端的版本)
<dependency> <groupId>com.dianping.cat</groupId> <artifactId>cat-client</artifactId> <version>3.0.0</version> </dependency>
2.新增配置类
@Configuration public class CatFilterConfigure { @Bean public FilterRegistrationBean catFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); CatFilter filter = new CatFilter(); registration.setFilter(filter); registration.addUrlPatterns("/*"); // registration.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); registration.setName("cat-filter"); registration.setOrder(2); return registration; } }
3.在resources下建立如下结构,Cat才能找到对应的项目名称
app.name=phoenix
4.客户端启动的根目录也要有/data/appdatas/cat/ 目录,此目录中只需要有client.xml即可 里面需要把地址换成服务端的ip+端口,目的是让客户端能找到服务端的地址
5.至此,客户端启动就成功接入到Cat服务端,我们访问客户端接口URL,就能在服务端中看到
三.预警功能,以异常预警为例
1.告警服务端
触发预警之后,它会根据我们配的地址,发送http请求,因此,具体的预警业务需要我们自己去写
<?xml version="1.0" encoding="utf-8"?> <sender-config> #这里配置我们写的接口地址,预警触发之后会调此接口 #200是指,我们接口的返回需要是"200" <sender id="mail" url="http://127.0.0.1:8089/cat/test5" type="post" successCode="200" batchSend="true"> <par id="type=1500"/> <par id="key=title,body"/> <par id="re=test@test.com"/> <par id="to=${receiver}"/> <par id="value=${title},${content}"/> </sender> <sender id="weixin" url="http://127.0.0.1:8089/cat/test5" type="post" successCode="success" batchSend="true"> <par id="domain=${domain}"/> <par id="email=${receiver}"/> <par id="title=${title}"/> <par id="content=${content}"/> <par id="type=${type}"/> </sender> <sender id="sms" url="http://test/" type="post" successCode="200" batchSend="false"> <par id="jsonm={type:808,mobile:'${receiver}',pair:{body='${content}'}}"/> </sender> </sender-config>
2.服务端配置
<?xml version="1.0" encoding="utf-8"?> <server-config> <server id="default"> <properties> <property name="local-mode" value="false"/> <property name="job-machine" value="true"/> #别的配置不用动 <property name="send-machine" value="true"/> #定义当前服务告警是否发送 这两个要为true <property name="alarm-machine" value="true"/> #定义当前服务是否为报警机 <property name="hdfs-enabled" value="false"/> <property name="remote-servers" value="127.0.0.1:8080"/> </properties> <storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="2" local-logivew-storage-time="1" har-mode="true" upload-thread="5"> <hdfs id="dump" max-size="128M" server-uri="hdfs://127.0.0.1/" base-dir="/user/cat/dump"/> <harfs id="dump" max-size="128M" server-uri="har://127.0.0.1/" base-dir="/user/cat/dump"/> <properties> <property name="hadoop.security.authentication" value="false"/> <property name="dfs.namenode.kerberos.principal" value="hadoop/dev80.hadoop@testserver.com"/> <property name="dfs.cat.kerberos.principal" value="cat@testserver.com"/> <property name="dfs.cat.keytab.file" value="/data/appdatas/cat/cat.keytab"/> <property name="java.security.krb5.realm" value="value1"/> <property name="java.security.krb5.kdc" value="value2"/> </properties> </storage> <consumer> <long-config default-url-threshold="1000" default-sql-threshold="100" default-service-threshold="50"> <domain name="cat" url-threshold="500" sql-threshold="500"/> <domain name="OpenPlatformWeb" url-threshold="100" sql-threshold="500"/> </long-config> </consumer> </server> <server id="127.0.0.1"> <properties> <property name="job-machine" value="true"/> <property name="send-machine" value="true"/> <property name="alarm-machine" value="true"/> </properties> </server> </server-config>
3.异常一般都出现在Event中,因此我们只需要配置Event告警配置即可
4.别的配置默认即可,此时回到Event列表,如果1分钟之内出现一次Exception,就会触发报警
5.如果项目被try catch或者是异常被捕捉了 ,是监控不到异常的,需要在异常出现的地方埋点
Cat.logError(e);
5.至此一个简单的异常监控报警就完成了
四.Exception+Event埋点
Event一般用来记录异常多一点,Transaction可以根据业务来记录
# Transaction埋点 Transaction t = Cat.newTransaction("DDDDDType", "DDDDDTypeName"); # Event埋点 Cat.logEvent("dddEventType", "dddEventName", Event.SUCCESS, "keyValuePairs"); try { yourBusiness(); t.setStatus(Transaction.SUCCESS); } catch (Exception e) { t.setStatus(e); # Event异常埋点 Cat.logError(e); } finally { t.complete(); }
这段代码执行之后,我们在Translation和Event列表就能看到
五.注意
1.客户端中\data\appdatas\cat 中的 clent.xml 不可缺! 里面配置为指向服务器的ip+端口
2.服务端部署到服务器上后 , 全局系统配置 =>>客户端路由 中的几个ip需要替换为自己服务器的实际ip
3.建议服务端配置中的ip也都替换为服务器的实际ip
4.服务端配置中的server模型 如果有改动,需要重启服务器
感谢各位的阅读,以上就是“如何实现Cat中的Server+client+预警”的内容了,经过本文的学习后,相信大家对如何实现Cat中的Server+client+预警这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。