@@ -31,23 +31,24 @@ extern "C" {
3131namespace datadog {
3232namespace nginx {
3333
34- inline constexpr std::string_view integration_name_from_flavor (
35- flavor nginx_flavor) {
34+ inline constexpr std::string_view
35+ integration_name_from_flavor ( flavor nginx_flavor) {
3636 switch (nginx_flavor) {
37- case flavor::vanilla:
38- return " nginx" ;
39- case flavor::openresty:
40- return " nginx:openresty" ;
41- case flavor::ingress_nginx:
42- return " nginx:ingress-nginx" ;
37+ case flavor::vanilla:
38+ return " nginx" ;
39+ case flavor::openresty:
40+ return " nginx:openresty" ;
41+ case flavor::ingress_nginx:
42+ return " nginx:ingress-nginx" ;
4343 }
4444
4545 static_assert (true , " unknown NGINX flavor" );
4646 std::abort ();
4747}
4848
49- dd::Expected<dd::Tracer> TracingLibrary::make_tracer (
50- const datadog_main_conf_t &nginx_conf, std::shared_ptr<dd::Logger> logger) {
49+ dd::Expected<dd::Tracer>
50+ TracingLibrary::make_tracer (const datadog_main_conf_t &nginx_conf,
51+ std::shared_ptr<dd::Logger> logger) {
5152 dd::TracerConfig config;
5253 config.logger = std::move (logger);
5354 config.agent .event_scheduler = std::make_shared<NgxEventScheduler>();
@@ -97,8 +98,8 @@ dd::Expected<dd::Tracer> TracingLibrary::make_tracer(
9798 (nginx_conf.appsec_enabled != NGX_CONF_UNSET);
9899 security::register_with_remote_cfg (
99100 config.agent ,
100- !has_custom_ruleset, // no custom ruleset => ruleset via rem cfg
101- !appsec_enabling_explicit); // no explicit => control via rem cfg
101+ !has_custom_ruleset, // no custom ruleset => ruleset via rem cfg
102+ !appsec_enabling_explicit); // no explicit => control via rem cfg
102103 }
103104#endif
104105
@@ -119,6 +120,17 @@ dd::Expected<dd::Tracer> TracingLibrary::make_tracer(
119120 .resource = " GET /is-dynamic-lb-initialized" ,
120121 .tags = {}},
121122 .mechanism = datadog::tracing::SamplingMechanism::RULE});
123+
124+ // TODO(@dmehala): Disable tracing if `stub_status on;`.
125+ final_config->trace_sampler .rules .emplace_back (
126+ datadog::tracing::TraceSamplerRule{
127+ .rate = datadog::tracing::Rate::zero (),
128+ .matcher =
129+ datadog::tracing::SpanMatcher{.service = " *" ,
130+ .name = " *" ,
131+ .resource = " GET /nginx_status" ,
132+ .tags = {}},
133+ .mechanism = datadog::tracing::SamplingMechanism::RULE});
122134 }
123135
124136 if (!final_config) {
@@ -145,7 +157,7 @@ namespace {
145157class SpanContextJSONWriter : public dd ::DictWriter {
146158 rapidjson::Document output_object_;
147159
148- public:
160+ public:
149161 SpanContextJSONWriter () : output_object_() { output_object_.SetObject (); }
150162
151163 void set (std::string_view key, std::string_view value) override {
@@ -193,7 +205,7 @@ std::string span_property(std::string_view key, const dd::Span &span) {
193205 return not_found;
194206}
195207
196- } // namespace
208+ } // namespace
197209
198210NginxVariableFamily TracingLibrary::span_variables () {
199211 return {.prefix = " datadog_" , .resolve = span_property};
@@ -246,5 +258,5 @@ bool TracingLibrary::trace_locations_by_default() { return false; }
246258
247259bool TracingLibrary::bagage_span_tags_by_default () { return true ; }
248260
249- } // namespace nginx
250- } // namespace datadog
261+ } // namespace nginx
262+ } // namespace datadog
0 commit comments