|
9 | 9 |
|
10 | 10 | import instana.singletons |
11 | 11 |
|
12 | | -from .json_span import (CustomData, Data, HttpData, JsonSpan, LogData, MySQLData, |
| 12 | +from .json_span import (CustomData, Data, HttpData, JsonSpan, LogData, MySQLData, PostgresData, |
13 | 13 | RabbitmqData, RedisData, RenderData, RPCData, SDKData, SoapData, |
14 | 14 | SQLAlchemyData) |
15 | 15 | from .log import logger |
|
24 | 24 | class InstanaRecorder(SpanRecorder): |
25 | 25 | THREAD_NAME = "Instana Span Reporting" |
26 | 26 | registered_spans = ("aiohttp-client", "aiohttp-server", "django", "log", "memcache", "mysql", |
27 | | - "rabbitmq", "redis", "render", "rpc-client", "rpc-server", "sqlalchemy", "soap", |
| 27 | + "postgres", "rabbitmq", "redis", "render", "rpc-client", "rpc-server", "sqlalchemy", "soap", |
28 | 28 | "tornado-client", "tornado-server", "urllib3", "wsgi") |
29 | 29 | http_spans = ("aiohttp-client", "aiohttp-server", "django", "http", "soap", "tornado-client", |
30 | 30 | "tornado-server", "urllib3", "wsgi") |
31 | 31 |
|
32 | | - exit_spans = ("aiohttp-client", "log", "memcache", "mysql", "rabbitmq", "redis", "rpc-client", |
| 32 | + exit_spans = ("aiohttp-client", "log", "memcache", "mysql", "postgres", "rabbitmq", "redis", "rpc-client", |
33 | 33 | "sqlalchemy", "soap", "tornado-client", "urllib3") |
34 | 34 | entry_spans = ("aiohttp-server", "django", "wsgi", "rabbitmq", "rpc-server", "tornado-server") |
35 | 35 | local_spans = ("log", "render") |
@@ -202,6 +202,16 @@ def build_registered_span(self, span): |
202 | 202 | tskey = list(data.custom.logs.keys())[0] |
203 | 203 | data.mysql.error = data.custom.logs[tskey]['message'] |
204 | 204 |
|
| 205 | + if span.operation_name == "postgres": |
| 206 | + data.pg = PostgresData(host=span.tags.pop('host', None), |
| 207 | + db=span.tags.pop(ext.DATABASE_INSTANCE, None), |
| 208 | + user=span.tags.pop(ext.DATABASE_USER, None), |
| 209 | + stmt=span.tags.pop(ext.DATABASE_STATEMENT, None), |
| 210 | + error=span.tags.pop('pg.error', None)) |
| 211 | + if (data.custom is not None) and (data.custom.logs is not None) and len(data.custom.logs): |
| 212 | + tskey = list(data.custom.logs.keys())[0] |
| 213 | + data.pg.error = data.custom.logs[tskey]['message'] |
| 214 | + |
205 | 215 | if span.operation_name == "log": |
206 | 216 | data.log = {} |
207 | 217 | # use last special key values |
|
0 commit comments