|
|
@@ -26,6 +26,7 @@ const (
|
|
|
NOSQL_SERVICE_TYPE = "NOSQL"
|
|
|
HTTP_SERVICE_TYPE = "HTTP"
|
|
|
NET_SERVICE_TYPE = "L7_NET"
|
|
|
+ MQ_SERVICE_TYPE = "MQ"
|
|
|
)
|
|
|
|
|
|
const (
|
|
|
@@ -35,6 +36,7 @@ const (
|
|
|
REDIS_SERVICE_NAME = "REDIS"
|
|
|
HTTP_SERVICE_NAME = "HTTPCLIENT"
|
|
|
POSTGRESQL_SERVICE_NAME = "POSTGRESQL"
|
|
|
+ KAFKA_SERVICE_NAME = "KAFKA"
|
|
|
)
|
|
|
|
|
|
type apmTraceSpan tracesdk.ReadOnlySpan
|
|
|
@@ -120,6 +122,7 @@ type MapInfoT struct {
|
|
|
SpanId string `json:"span_id,omitempty"`
|
|
|
SrcAddr string `json:"src_addr,omitempty"`
|
|
|
DestinationAddr string `json:"destination_addr,omitempty"`
|
|
|
+ Flow int64 `json:"flow,omitempty"`
|
|
|
}
|
|
|
|
|
|
type TraceMapT struct {
|
|
|
@@ -190,6 +193,8 @@ func tracetransformData(sdl []tracesdk.ReadOnlySpan) map[int][]RootDataT {
|
|
|
buildSQLMapEvent(&mNode, event)
|
|
|
case l7.ProtocolPostgres:
|
|
|
buildSQLMapEvent(&mNode, event)
|
|
|
+ case l7.ProtocolKafka:
|
|
|
+ buildMQMapEvent(&mNode, event)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -899,6 +904,31 @@ func buildSQLMapEvent(mNode *MapInfoT, event tracesdk.Event) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func buildMQMapEvent(mNode *MapInfoT, event tracesdk.Event){
|
|
|
+ mNode.ServiceName = l7.Protocol(event.ProtocolType).ServiceNameString()
|
|
|
+ mNode.ServiceType = SQL_SERVICE_TYPE
|
|
|
+ //mNode.MethodName = "database/sql.Query()"
|
|
|
+ for _, attr := range event.Attributes {
|
|
|
+ //fmt.Println(attr.Key, ":", attr.Value.AsInterface())
|
|
|
+ switch attr.Key {
|
|
|
+ case "net.peer.name":
|
|
|
+ mNode.Ip = attr.Value.AsString()
|
|
|
+ case "net.peer.port":
|
|
|
+ mNode.Port = attr.Value.AsInt64()
|
|
|
+ case "mq.operatype":
|
|
|
+ mNode.OperType = "produce"
|
|
|
+ case "mq.uri":
|
|
|
+ mNode.Uri = attr.Value.AsString()
|
|
|
+ case "mq.src_addr":
|
|
|
+ mNode.SrcAddr = attr.Value.AsString()
|
|
|
+ case "mq.destination_addr":
|
|
|
+ mNode.DestinationAddr = attr.Value.AsString()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mNode.Flow = 0
|
|
|
+ mNode.Scheme = ""
|
|
|
+}
|
|
|
+
|
|
|
func buildDNSMapEvent(mNode *MapInfoT, event tracesdk.Event) {
|
|
|
mNode.ServiceName = l7.Protocol(event.ProtocolType).ServiceNameString()
|
|
|
mNode.ServiceType = NET_SERVICE_TYPE
|