CAT的消息结构 Message
整体类的结构图
client 与 server 的数据交互,支撑的数据结构就是 消息体 Message
7.01 Message
消息的结构定义
消息类型
Event
用来记录一件事发生的次数,比如记录系统异常Heartbeat
表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等Metric
用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟Trace
用于记录基本的trace信息,类似于log4j的info信息Transaction
适合记录跨越系统边界的程序访问行为
7.02 MessageTree
CAT监控系统将每次URL、Service的请求内部执行情况都封装为一个完整的消息树、消息树可能包括Transaction、Event、Heartbeat、Metric等信息。
完整的消息树
可视化消息树
MessageTree的数据结构
public interface MessageTree extends Cloneable { public MessageTree copy(); public String getDomain(); public String getHostName(); public String getIpAddress(); public Message getMessage(); public String getMessageId(); public String getParentMessageId(); public String getRootMessageId(); public String getSessionToken(); public String getThreadGroupName(); public String getThreadId(); public String getThreadName(); public boolean isSample(); public void setDomain(String domain); public void setHostName(String hostName); public void setIpAddress(String ipAddress); public void setMessage(Message message); public void setMessageId(String messageId); public void setParentMessageId(String parentMessageId); public void setRootMessageId(String rootMessageId); public void setSessionToken(String sessionToken); public void setThreadGroupName(String name); public void setThreadId(String threadId); public void setThreadName(String id); public void setSample(boolean sample);}
DefaultMessageTree
public class DefaultMessageTree implements MessageTree { private ByteBuf m_buf; private String m_domain; private String m_hostName; private String m_ipAddress; private Message m_message; private String m_messageId; private String m_parentMessageId; private String m_rootMessageId; private String m_sessionToken; private String m_threadGroupName; private String m_threadId; private String m_threadName; private boolean m_sample = true; @Override public MessageTree copy() { MessageTree tree = new DefaultMessageTree(); tree.setDomain(m_domain); tree.setHostName(m_hostName); tree.setIpAddress(m_ipAddress); tree.setMessageId(m_messageId); tree.setParentMessageId(m_parentMessageId); tree.setRootMessageId(m_rootMessageId); tree.setSessionToken(m_sessionToken); tree.setThreadGroupName(m_threadGroupName); tree.setThreadId(m_threadId); tree.setThreadName(m_threadName); tree.setMessage(m_message); tree.setSample(m_sample); return tree; } public ByteBuf getBuffer() { return m_buf; } @Override public String getDomain() { return m_domain; } @Override public String getHostName() { return m_hostName; } @Override public String getIpAddress() { return m_ipAddress; } @Override public Message getMessage() { return m_message; } @Override public String getMessageId() { return m_messageId; } @Override public String getParentMessageId() { return m_parentMessageId; } @Override public String getRootMessageId() { return m_rootMessageId; } @Override public String getSessionToken() { return m_sessionToken; } @Override public String getThreadGroupName() { return m_threadGroupName; } @Override public String getThreadId() { return m_threadId; } @Override public String getThreadName() { return m_threadName; } @Override public boolean isSample() { return m_sample; } public void setBuffer(ByteBuf buf) { m_buf = buf; } @Override public void setDomain(String domain) { m_domain = domain; } @Override public void setHostName(String hostName) { m_hostName = hostName; } @Override public void setIpAddress(String ipAddress) { m_ipAddress = ipAddress; } @Override public void setMessage(Message message) { m_message = message; } @Override public void setMessageId(String messageId) { if (messageId != null && messageId.length() > 0) { m_messageId = messageId; } } @Override public void setParentMessageId(String parentMessageId) { if (parentMessageId != null && parentMessageId.length() > 0) { m_parentMessageId = parentMessageId; } } @Override public void setRootMessageId(String rootMessageId) { if (rootMessageId != null && rootMessageId.length() > 0) { m_rootMessageId = rootMessageId; } } @Override public void setSample(boolean sample) { m_sample = sample; } @Override public void setSessionToken(String sessionToken) { m_sessionToken = sessionToken; } @Override public void setThreadGroupName(String threadGroupName) { m_threadGroupName = threadGroupName; } @Override public void setThreadId(String threadId) { m_threadId = threadId; } @Override public void setThreadName(String threadName) { m_threadName = threadName; } @Override public String toString() { PlainTextMessageCodec codec = new PlainTextMessageCodec(); ByteBuf buf = ByteBufAllocator.DEFAULT.buffer(); codec.encode(this, buf); buf.readInt(); // get rid of length codec.reset(); return buf.toString(Charset.forName("utf-8")); }
小结
- 消息的结构主要取决于报表展示的。
- 关注消息树
原文转载:http://www.shaoqun.com/a/544574.html
zen-cart:https://www.ikjzd.com/w/1282
patpat:https://www.ikjzd.com/w/1079
CAT的消息结构Message整体类的结构图client与server的数据交互,支撑的数据结构就是消息体Message7.01Message消息的结构定义消息类型Event用来记录一件事发生的次数,比如记录系统异常Heartbeat表示程序内定期产生的统计信息,如CPU%,MEM%,连接池状态,系统负载等Metric用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标
折扣网:折扣网
汇通天下物流:汇通天下物流
如何利用Facebook免费工具,选择目标市场? :如何利用Facebook免费工具,选择目标市场?
口述:老公出轨后 每次房事都得我求他婚姻出轨爱爱:口述:老公出轨后 每次房事都得我求他婚姻出轨爱爱
PPC广告的三重境界,你在哪一重?:PPC广告的三重境界,你在哪一重?
No comments:
Post a Comment