9
9
10
10
import instana .singletons
11
11
12
- from .json_span import (CouchbaseData , CustomData , Data , HttpData , JsonSpan , LogData , MySQLData , PostgresData ,
13
- RabbitmqData , RedisData , RenderData , RPCData , SDKData , SoapData ,
14
- SQLAlchemyData )
12
+ from .json_span import (CassandraData , CouchbaseData , CustomData , Data , HttpData , JsonSpan , LogData ,
13
+ MySQLData , PostgresData , RabbitmqData , RedisData , RenderData ,
14
+ RPCData , SDKData , SoapData , SQLAlchemyData )
15
+
15
16
from .log import logger
16
17
from .util import every
17
18
23
24
24
25
class InstanaRecorder (SpanRecorder ):
25
26
THREAD_NAME = "Instana Span Reporting"
26
- registered_spans = ("aiohttp-client" , "aiohttp-server" , "couchbase" , "django" , "log" , "memcache" , "mysql" ,
27
- "postgres" , "rabbitmq" , "redis" , "render" , "rpc-client" , "rpc-server" , "sqlalchemy" , "soap" ,
28
- "tornado-client" , "tornado-server" , "urllib3" , "wsgi" )
27
+ registered_spans = ("aiohttp-client" , "aiohttp-server" , "cassandra" , "couchbase" , "django" , "log" ,
28
+ "memcache" , "mysql" , "postgres" , "rabbitmq" , "redis" , "render" , "rpc-client" ,
29
+ "rpc-server" , "sqlalchemy" , "soap" , "tornado-client" , "tornado-server" ,
30
+ "urllib3" , "wsgi" )
29
31
30
32
http_spans = ("aiohttp-client" , "aiohttp-server" , "django" , "http" , "soap" , "tornado-client" ,
31
33
"tornado-server" , "urllib3" , "wsgi" )
32
34
33
- exit_spans = ("aiohttp-client" , "couchbase" , "log" , "memcache" , "mysql" , "postgres" , "rabbitmq" , "redis" , "rpc-client " ,
34
- "sqlalchemy" , "soap" , "tornado-client" , "urllib3" )
35
+ exit_spans = ("aiohttp-client" , "cassandra" , " couchbase" , "log" , "memcache" , "mysql" , "postgres" ,
36
+ "rabbitmq" , "redis" , "rpc-client" , " sqlalchemy" , "soap" , "tornado-client" , "urllib3" )
35
37
36
38
entry_spans = ("aiohttp-server" , "django" , "wsgi" , "rabbitmq" , "rpc-server" , "tornado-server" )
37
39
@@ -164,22 +166,32 @@ def build_registered_span(self, span):
164
166
if data .rabbitmq .sort == 'consume' :
165
167
kind = 1 # entry
166
168
167
- if span .operation_name == "couchbase" :
169
+ elif span .operation_name == "cassandra" :
170
+ data .cassandra = CassandraData (cluster = span .tags .pop ('cassandra.cluster' , None ),
171
+ query = span .tags .pop ('cassandra.query' , None ),
172
+ keyspace = span .tags .pop ('cassandra.keyspace' , None ),
173
+ fetchSize = span .tags .pop ('cassandra.fetchSize' , None ),
174
+ achievedConsistency = span .tags .pop ('cassandra.achievedConsistency' , None ),
175
+ triedHosts = span .tags .pop ('cassandra.triedHosts' , None ),
176
+ fullyFetched = span .tags .pop ('cassandra.fullyFetched' , None ),
177
+ error = span .tags .pop ('cassandra.error' , None ))
178
+
179
+ elif span .operation_name == "couchbase" :
168
180
data .couchbase = CouchbaseData (hostname = span .tags .pop ('couchbase.hostname' , None ),
169
181
bucket = span .tags .pop ('couchbase.bucket' , None ),
170
182
type = span .tags .pop ('couchbase.type' , None ),
171
183
error = span .tags .pop ('couchbase.error' , None ),
172
184
error_type = span .tags .pop ('couchbase.error_type' , None ),
173
185
sql = span .tags .pop ('couchbase.sql' , None ))
174
186
175
- if span .operation_name == "redis" :
187
+ elif span .operation_name == "redis" :
176
188
data .redis = RedisData (connection = span .tags .pop ('connection' , None ),
177
189
driver = span .tags .pop ('driver' , None ),
178
190
command = span .tags .pop ('command' , None ),
179
191
error = span .tags .pop ('redis.error' , None ),
180
192
subCommands = span .tags .pop ('subCommands' , None ))
181
193
182
- if span .operation_name == "rpc-client" or span .operation_name == "rpc-server" :
194
+ elif span .operation_name == "rpc-client" or span .operation_name == "rpc-server" :
183
195
data .rpc = RPCData (flavor = span .tags .pop ('rpc.flavor' , None ),
184
196
host = span .tags .pop ('rpc.host' , None ),
185
197
port = span .tags .pop ('rpc.port' , None ),
@@ -189,22 +201,22 @@ def build_registered_span(self, span):
189
201
baggage = span .tags .pop ('rpc.baggage' , None ),
190
202
error = span .tags .pop ('rpc.error' , None ))
191
203
192
- if span .operation_name == "render" :
204
+ elif span .operation_name == "render" :
193
205
data .render = RenderData (name = span .tags .pop ('name' , None ),
194
206
type = span .tags .pop ('type' , None ))
195
207
data .log = LogData (message = span .tags .pop ('message' , None ),
196
208
parameters = span .tags .pop ('parameters' , None ))
197
209
198
- if span .operation_name == "sqlalchemy" :
210
+ elif span .operation_name == "sqlalchemy" :
199
211
data .sqlalchemy = SQLAlchemyData (sql = span .tags .pop ('sqlalchemy.sql' , None ),
200
212
eng = span .tags .pop ('sqlalchemy.eng' , None ),
201
213
url = span .tags .pop ('sqlalchemy.url' , None ),
202
214
err = span .tags .pop ('sqlalchemy.err' , None ))
203
215
204
- if span .operation_name == "soap" :
216
+ elif span .operation_name == "soap" :
205
217
data .soap = SoapData (action = span .tags .pop ('soap.action' , None ))
206
218
207
- if span .operation_name == "mysql" :
219
+ elif span .operation_name == "mysql" :
208
220
data .mysql = MySQLData (host = span .tags .pop ('host' , None ),
209
221
db = span .tags .pop (ext .DATABASE_INSTANCE , None ),
210
222
user = span .tags .pop (ext .DATABASE_USER , None ),
@@ -213,7 +225,7 @@ def build_registered_span(self, span):
213
225
tskey = list (data .custom .logs .keys ())[0 ]
214
226
data .mysql .error = data .custom .logs [tskey ]['message' ]
215
227
216
- if span .operation_name == "postgres" :
228
+ elif span .operation_name == "postgres" :
217
229
data .pg = PostgresData (host = span .tags .pop ('host' , None ),
218
230
db = span .tags .pop (ext .DATABASE_INSTANCE , None ),
219
231
user = span .tags .pop (ext .DATABASE_USER , None ),
@@ -223,7 +235,7 @@ def build_registered_span(self, span):
223
235
tskey = list (data .custom .logs .keys ())[0 ]
224
236
data .pg .error = data .custom .logs [tskey ]['message' ]
225
237
226
- if span .operation_name == "log" :
238
+ elif span .operation_name == "log" :
227
239
data .log = {}
228
240
# use last special key values
229
241
# TODO - logic might need a tweak here
0 commit comments