跳转到主要内容

OpenTelemetry hook sampler

项目描述

opentelemetry-hook-sampler

基于自定义功能的opentelemetry-python采样器。

如何安装

$ pip install opentelemetry-hook-sampler

如何使用

import opentelemetry.trace
from opentelemetry.sdk.resources import SERVICE_NAME
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry_hook_sampler import HookSampler


def sampler_hook():
    """
    Sample 1 in 10 traces.
    
    The example is static, but you can get info from any context available
    in your application. E.g. http request, celery task, thread locals, etc.
    """
    return 10


resource = Resource(attributes={SERVICE_NAME: "foo"})
sampler = HookSampler(sampler_hook)
provider = TracerProvider(resource=resource, sampler=sampler)
opentelemetry.trace.set_tracer_provider(provider)

Honeycomb特定

Honeycomb期望一个SampleRate属性来标准化数据。这不是OpenTelemetry规范,但通过opentelemetry_hook_sampler.HoneycombHookSampler得到了支持。

采样器示例

django-threadlocals

请注意,threadlocals模块与异步Django不兼容。

from threadlocals.threadlocals import get_current_request


def sampler_hook():
    request = get_current_request()
    # 10% /foo requests
    if request.path == '/foo':
        return 10
    return 1

django-g

from django_g import get_current_request


def sampler_hook():
    request = get_current_request()
    # 10% /foo requests
    if request.path == '/foo':
        return 10
    return 1

celery

import celery


def sampler_hook():
    task_name = celery.current_app.current_worker_task.request.task
    # 10% foo.bar.baz tasks
    if task_name == 'foo.bar.baz':
        return 10
    return 1

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

opentelemetry-hook-sampler-0.0.3.tar.gz (4.8 kB 查看哈希)

上传时间:

构建分布

opentelemetry_hook_sampler-0.0.3-py3-none-any.whl (5.9 kB 查看哈希)

上传于 Python 3

由以下支持