Exemple #1
0
 def __init__(self, cfg: Config) -> None:
     super().__init__(cfg)
     self.add('tm', TaskManager(reg, cfg.tm))
     if cfg.log_requests.enabled:
         self.logger.add(RequestsAdapter(cfg.log_requests))
     if cfg.log_zipkin.enabled:
         self.logger.add(ZipkinAdapter(cfg.log_zipkin))
Exemple #2
0
 def __init__(self, cfg: Config) -> None:
     super().__init__(cfg)
     self.add("srv",
              Server(cfg.rpc, RestRpcHttpHandler(api, cfg.rpc_handler)))
     if cfg.log_prometheus.enabled:
         self.logger.add(PrometheusAdapter(cfg.log_prometheus))
     if cfg.log_zipkin.enabled:
         self.logger.add(ZipkinAdapter(cfg.log_zipkin))
     if cfg.log_sentry.enabled:
         self.logger.add(SentryAdapter(cfg.log_sentry))
     if cfg.log_requests.enabled:
         self.logger.add(RequestsAdapter(cfg.log_requests))
Exemple #3
0
    def __init__(self, cfg: Config) -> None:
        super().__init__(cfg)

        if cfg.log_prometheus.enabled:
            self.logger.add(PrometheusAdapter(cfg.log_prometheus))
        if cfg.log_zipkin.enabled:
            self.logger.add(ZipkinAdapter(cfg.log_zipkin))
        if cfg.log_sentry.enabled:
            self.logger.add(SentryAdapter(cfg.log_sentry))
        if cfg.log_requests.enabled:
            self.logger.add(RequestsAdapter(cfg.log_requests))

        self.add('srv', Uvicorn(cfg.asgi, fapp))
Exemple #4
0
    def __init__(self, cfg: Config) -> None:
        super().__init__(cfg)

        if cfg.log_prometheus.enabled:
            self.logger.add(PrometheusAdapter(cfg.log_prometheus))
        if cfg.log_zipkin.enabled:
            self.logger.add(ZipkinAdapter(cfg.log_zipkin))
        if cfg.log_sentry.enabled:
            self.logger.add(SentryAdapter(cfg.log_sentry))
        if cfg.log_requests.enabled:
            self.logger.add(RequestsAdapter(cfg.log_requests))

        self.add('db', Oracle(cfg.db))
Exemple #5
0
 def __init__(self, cfg: Config) -> None:
     super().__init__(cfg)
     self.add(
         'amqp', Pika(cfg.amqp, [lambda: ConsumerChannel(cfg.consumer)])
     )
     if cfg.log_prometheus.enabled:
         self.logger.add(PrometheusAdapter(cfg.log_prometheus))
     if cfg.log_zipkin.enabled:
         self.logger.add(ZipkinAdapter(cfg.log_zipkin))
     if cfg.log_sentry.enabled:
         self.logger.add(SentryAdapter(cfg.log_sentry))
     if cfg.log_requests.enabled:
         self.logger.add(RequestsAdapter(cfg.log_requests))
Exemple #6
0
 def __init__(self, cfg: Config) -> None:
     super().__init__(cfg)
     self.add(
         'clt',
         RestRpcHttpClient(cfg.rpc),
     )
     if cfg.log_prometheus.enabled:
         self.logger.add(PrometheusAdapter(cfg.log_prometheus))
     if cfg.log_zipkin.enabled:
         self.logger.add(ZipkinAdapter(cfg.log_zipkin))
     if cfg.log_sentry.enabled:
         self.logger.add(SentryAdapter(cfg.log_sentry))
     if cfg.log_requests.enabled:
         self.logger.add(RequestsAdapter(cfg.log_requests))
async def test_success(loop, postgres_url: str):
    table_name = '_requests_log_table'
    max_hdrs_length = 5
    max_body_length = 4

    cfg = RequestsConfig(
        dsn=postgres_url,
        db_table_name=table_name,
        max_hdrs_length=max_hdrs_length,
        max_body_length=max_body_length,
        send_max_count=2,
    )
    adapter = RequestsAdapter(cfg)
    app = BaseApplication(BaseConfig())
    app.logger.add(adapter)
    await app.start()

    req_url = 'http://host:port/'
    method = 'POST'
    req_hdrs = '123456'
    req_body = '123456789'
    resp_hdrs = 'h2'
    resp_body = 'b2'
    status_code = 200
    error = 'e1'
    tags = {'t1': '1', 't2': '2'}

    with app.logger.span_new(name='request1',
                             kind=HttpSpan.KIND_SERVER,
                             cls=HttpSpan) as span:
        span.annotate(HttpSpan.ANN_REQUEST_HDRS, req_hdrs)
        span.annotate(HttpSpan.ANN_REQUEST_BODY, req_body)
        span.annotate(HttpSpan.ANN_RESPONSE_HDRS, resp_hdrs)
        span.annotate(HttpSpan.ANN_RESPONSE_BODY, resp_body)
        span.error(Exception(error))
        span.tag(HttpSpan.TAG_HTTP_STATUS_CODE, status_code)
        span.tag(HttpSpan.TAG_HTTP_URL, req_url)
        span.tag(HttpSpan.TAG_HTTP_METHOD, method)
        for k, v in tags.items():
            span.tag(k, v)

        with span.new_child(name='request2',
                            kind=HttpSpan.KIND_CLIENT,
                            cls=HttpSpan) as span2:
            with span2.new_child(name='nonrequest'):
                pass

    await app.stop()

    rows = await get_requests(postgres_url, table_name, span.trace_id)
    assert len(rows) == 2
    row = rows[1]
    assert row['stamp_begin'].timestamp() == round(span.start_stamp, 6)
    assert row['stamp_end'].timestamp() == round(span.finish_stamp, 6)
    assert not row['is_out']
    assert row['url'] == req_url
    assert row['method'] == method
    assert row['req_hdrs'] == req_hdrs[:max_hdrs_length]
    assert row['req_body'] == req_body[:max_body_length]
    assert row['resp_hdrs'] == resp_hdrs[:max_hdrs_length]
    assert row['resp_body'] == resp_body[:max_body_length]
    assert row['status_code'] == status_code
    assert row['error'] == error
    assert json.loads(row['tags']) == tags

    row = rows[0]
    assert row['stamp_begin'].timestamp() == round(span2.start_stamp, 6)
    assert row['stamp_end'].timestamp() == round(span2.finish_stamp, 6)
    assert row['is_out']
    assert row['url'] is None
    assert row['method'] is None
    assert row['req_hdrs'] is None
    assert row['req_body'] is None
    assert row['resp_hdrs'] is None
    assert row['resp_body'] is None
    assert row['status_code'] is None
    assert row['error'] is None
    assert row['tags'] is None