Beispiel #1
0
    def _build_default_exporters(service, env, version):
        _OUTPUT_PPROF = os.environ.get("DD_PROFILING_OUTPUT_PPROF")
        if _OUTPUT_PPROF:
            return [
                file.PprofFileExporter(_OUTPUT_PPROF),
            ]

        api_key = _get_api_key()
        if api_key:
            # Agentless mode
            endpoint = _get_endpoint()
        else:
            hostname = os.environ.get(
                "DD_AGENT_HOST",
                os.environ.get("DATADOG_TRACE_AGENT_HOSTNAME", "localhost"))
            port = int(os.environ.get("DD_TRACE_AGENT_PORT", 8126))
            endpoint = os.environ.get("DD_TRACE_AGENT_URL", "http://%s:%d" %
                                      (hostname, port)) + "/profiling/v1/input"

        return [
            http.PprofHTTPExporter(service=service,
                                   env=env,
                                   version=version,
                                   api_key=api_key,
                                   endpoint=endpoint),
        ]
Beispiel #2
0
    def _build_default_exporters(
            tracer,  # type: Optional[ddtrace.Tracer]
            url,  # type: Optional[str]
            service,  # type: Optional[str]
            env,  # type: Optional[str]
            version,  # type: Optional[str]
    ):
        # type: (...) -> List[exporter.Exporter]
        _OUTPUT_PPROF = os.environ.get("DD_PROFILING_OUTPUT_PPROF")
        if _OUTPUT_PPROF:
            return [
                file.PprofFileExporter(_OUTPUT_PPROF),
            ]

        api_key = _get_api_key()

        if api_key is None:
            # Agent mode
            endpoint_path = "/profiling/v1/input"
        else:
            endpoint_path = "/v1/input"

        endpoint = _get_default_url(tracer, api_key) if url is None else url

        return [
            http.PprofHTTPExporter(
                service=service,
                env=env,
                version=version,
                api_key=api_key,
                endpoint=endpoint,
                endpoint_path=endpoint_path,
            ),
        ]
Beispiel #3
0
def _build_default_exporters():
    exporters = []
    if "DD_PROFILING_API_KEY" in os.environ or "DD_API_KEY" in os.environ:
        exporters.append(http.PprofHTTPExporter())

    _OUTPUT_PPROF = os.environ.get("DD_PROFILING_OUTPUT_PPROF")
    if _OUTPUT_PPROF:
        exporters.append(file.PprofFileExporter(_OUTPUT_PPROF))

    if not exporters:
        LOG.warning("No exporters are configured, no profile will be output")

    return exporters
Beispiel #4
0
    def _build_default_exporters(url, service, env, version):
        _OUTPUT_PPROF = os.environ.get("DD_PROFILING_OUTPUT_PPROF")
        if _OUTPUT_PPROF:
            return [
                file.PprofFileExporter(_OUTPUT_PPROF),
            ]

        api_key = _get_api_key()
        endpoint = _get_default_url(api_key) if url is None else url

        return [
            http.PprofHTTPExporter(service=service,
                                   env=env,
                                   version=version,
                                   api_key=api_key,
                                   endpoint=endpoint),
        ]
Beispiel #5
0
    def _build_default_exporters(self):
        # type: (...) -> List[exporter.Exporter]
        _OUTPUT_PPROF = os.environ.get("DD_PROFILING_OUTPUT_PPROF")
        if _OUTPUT_PPROF:
            return [
                file.PprofFileExporter(_OUTPUT_PPROF),
            ]

        if self.url is not None:
            endpoint = self.url
        elif self.agentless:
            LOG.warning(
                "Agentless uploading is currently for internal usage only and not officially supported. "
                "You should not enable it unless somebody at Datadog instructed you to do so."
            )
            endpoint = self.ENDPOINT_TEMPLATE.format(
                os.environ.get("DD_SITE", "datadoghq.com"))
        else:
            if isinstance(self.tracer.writer, writer.AgentWriter):
                endpoint = self.tracer.writer.agent_url
            else:
                endpoint = agent.get_trace_url()

        if self.agentless:
            endpoint_path = "/v1/input"
        else:
            # Agent mode
            # path is relative because it is appended
            # to the agent base path.
            endpoint_path = "profiling/v1/input"

        return [
            http.PprofHTTPExporter(
                service=self.service,
                env=self.env,
                tags=self.tags,
                version=self.version,
                api_key=self.api_key,
                endpoint=endpoint,
                endpoint_path=endpoint_path,
            ),
        ]
Beispiel #6
0
def test_export(tmp_path):
    filename = str(tmp_path / "pprof")
    exp = file.PprofFileExporter(filename)
    exp.export(test_pprof.TEST_EVENTS, 0, 1)
    test_main.check_pprof_file(filename + "." + str(os.getpid()) + ".1")