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), ]
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, ), ]
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
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), ]
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, ), ]
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")