solarwinds_apm 6.0.0.preV5 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/oboe_metal/extconf.rb +5 -4
- data/ext/oboe_metal/lib/liboboe-1.0-aarch64.so.sha256 +1 -1
- data/ext/oboe_metal/lib/liboboe-1.0-alpine-aarch64.so.sha256 +1 -1
- data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.sha256 +1 -1
- data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.sha256 +1 -1
- data/ext/oboe_metal/src/VERSION +1 -1
- data/ext/oboe_metal/src/oboe.h +56 -13
- data/ext/oboe_metal/src/oboe_api.cpp +105 -6
- data/ext/oboe_metal/src/oboe_api.h +121 -2
- data/ext/oboe_metal/src/oboe_debug.h +4 -315
- data/ext/oboe_metal/src/oboe_swig_wrap.cc +2987 -549
- data/lib/oboe_metal.rb +23 -64
- data/lib/rails/generators/solarwinds_apm/templates/solarwinds_apm_initializer.rb +1 -1
- data/lib/solarwinds_apm/api/current_trace_info.rb +2 -3
- data/lib/solarwinds_apm/api/opentelemetry.rb +2 -2
- data/lib/solarwinds_apm/api/tracing.rb +1 -1
- data/lib/solarwinds_apm/api.rb +1 -1
- data/lib/solarwinds_apm/config.rb +56 -17
- data/lib/solarwinds_apm/constants.rb +5 -7
- data/lib/solarwinds_apm/noop/README.md +1 -1
- data/lib/solarwinds_apm/noop/api.rb +83 -0
- data/lib/solarwinds_apm/noop/context.rb +13 -2
- data/lib/solarwinds_apm/noop/metadata.rb +5 -2
- data/lib/solarwinds_apm/{thread_local.rb → noop/span.rb} +14 -20
- data/lib/solarwinds_apm/{base.rb → noop.rb} +22 -27
- data/lib/solarwinds_apm/oboe_init_options.rb +23 -82
- data/lib/solarwinds_apm/opentelemetry/solarwinds_exporter.rb +1 -1
- data/lib/solarwinds_apm/opentelemetry/solarwinds_processor.rb +2 -2
- data/lib/solarwinds_apm/opentelemetry/solarwinds_sampler.rb +4 -3
- data/lib/solarwinds_apm/opentelemetry.rb +1 -1
- data/lib/solarwinds_apm/otel_config.rb +14 -43
- data/lib/solarwinds_apm/patch/dummy_patch.rb +12 -0
- data/lib/solarwinds_apm/patch.rb +11 -0
- data/lib/solarwinds_apm/support/logger_formatter.rb +1 -1
- data/lib/solarwinds_apm/support/oboe_tracing_mode.rb +20 -22
- data/lib/solarwinds_apm/support/service_key_checker.rb +94 -0
- data/lib/solarwinds_apm/{support_report.rb → support/support_report.rb} +11 -8
- data/lib/solarwinds_apm/support/swomarginalia/comment.rb +2 -2
- data/lib/solarwinds_apm/support/swomarginalia/swomarginalia.rb +1 -1
- data/lib/solarwinds_apm/support/transaction_settings.rb +1 -5
- data/lib/solarwinds_apm/support.rb +1 -0
- data/lib/solarwinds_apm/version.rb +1 -1
- data/lib/solarwinds_apm.rb +70 -55
- metadata +12 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dfd38bd4d4e3d70c56b86ffd34d9fe830e0944eb3fd02a82bff26da07900056
|
4
|
+
data.tar.gz: 1ec9662543689c97af6509f2db2bde6e62bd9274fd2b792925d4ebf9fd46c4fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c90b9be36843bf092833fafc3fc16e6f97cf293787fd9551375b39a67c8f057b737c11145764eb47590b060bc22a60c367911bf8e31b3b5718452ad8b0e50234
|
7
|
+
data.tar.gz: 29e352eb73da5c09fc0caf35e73e65facb842d7becab500e0183071ec4aaa563daf0ae2bd483972f0ef2e5b51a780821b0075b432d2a86892e82eedc8c4f71ad
|
data/ext/oboe_metal/extconf.rb
CHANGED
@@ -26,10 +26,10 @@ swo_include = File.join(ext_dir, 'src')
|
|
26
26
|
|
27
27
|
# Download the appropriate liboboe from Staging or Production
|
28
28
|
version = File.read(File.join(swo_include, 'VERSION')).strip
|
29
|
-
if ENV['OBOE_DEV'].to_s.
|
29
|
+
if ENV['OBOE_DEV'].to_s.casecmp('true').zero?
|
30
30
|
swo_path = "https://solarwinds-apm-staging.s3.us-west-2.amazonaws.com/apm/c-lib/nightly"
|
31
31
|
puts 'Fetching c-lib from DEVELOPMENT Build'
|
32
|
-
elsif ENV['OBOE_STAGING'].to_s.
|
32
|
+
elsif ENV['OBOE_STAGING'].to_s.casecmp('true').zero?
|
33
33
|
swo_path = File.join('https://agent-binaries.global.st-ssp.solarwinds.com/apm/c-lib/', version)
|
34
34
|
puts 'Fetching c-lib from STAGING'
|
35
35
|
else
|
@@ -38,10 +38,11 @@ end
|
|
38
38
|
|
39
39
|
swo_arch = 'x86_64'
|
40
40
|
system_arch = `uname -m` # for mac, the command is `uname` # "Darwin\n"; try `uname -a`
|
41
|
-
|
41
|
+
system_arch.delete!("\n")
|
42
|
+
case system_arch
|
42
43
|
when 'x86_64'
|
43
44
|
swo_arch = 'x86_64'
|
44
|
-
when 'aarch64'
|
45
|
+
when 'aarch64' || 'arm64'
|
45
46
|
swo_arch = 'aarch64'
|
46
47
|
end
|
47
48
|
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
b3a0b342e5d59ea95b457bcc647b9a2e202d623d5c17a109df2719a5d61815d2
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
5f98ddec2afd1992080d4e751b583a075e1a91b95ca3a5e5d7db49978225c8bd
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
5227b6cc86a1d60c479f9e2021200b09e3ba70f47a563788c857f51747dbebe8
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
22d5c810eaf9b663b46ae67586059edf18e7e1e3beab89f079d2b86353ef55d9
|
data/ext/oboe_metal/src/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
14.0.1
|
data/ext/oboe_metal/src/oboe.h
CHANGED
@@ -27,7 +27,6 @@ extern "C" {
|
|
27
27
|
#include <unistd.h> // On Windows ssize_t definition was put in this header.
|
28
28
|
#endif
|
29
29
|
#include "bson/bson.h"
|
30
|
-
#include "oboe_debug.h"
|
31
30
|
|
32
31
|
/**
|
33
32
|
* Default configuration settings update interval in seconds.
|
@@ -101,7 +100,6 @@ extern "C" {
|
|
101
100
|
#define OBOE_REPORTER_PROTOCOL_UDP "udp"
|
102
101
|
#define OBOE_REPORTER_PROTOCOL_SSL "ssl"
|
103
102
|
#define OBOE_REPORTER_PROTOCOL_NULL "null"
|
104
|
-
#define OBOE_REPORTER_PROTOCOL_LAMBDA "lambda"
|
105
103
|
|
106
104
|
/** Maximum reasonable length of an arguments string for configuring a reporter. */
|
107
105
|
#define OBOE_REPORTER_ARGS_SIZE 4000
|
@@ -163,10 +161,10 @@ typedef struct oboe_metric_tag {
|
|
163
161
|
} oboe_metric_tag_t;
|
164
162
|
|
165
163
|
typedef struct oboe_init_options {
|
166
|
-
int version; // the version of this structure (currently on version
|
164
|
+
int version; // the version of this structure (currently on version 16)
|
167
165
|
const char *hostname_alias; // optional hostname alias
|
168
166
|
int log_level; // level at which log messages will be written to log file (0-6)
|
169
|
-
// use
|
167
|
+
// use OBOE_INIT_LOG_LEVEL_INFO(3) for default log level
|
170
168
|
const char *log_file_path; // file name including path for log file
|
171
169
|
int max_transactions; // maximum number of transaction names to track
|
172
170
|
int max_flush_wait_time; // maximum wait time for flushing data before terminating in milli seconds
|
@@ -189,6 +187,7 @@ typedef struct oboe_init_options {
|
|
189
187
|
int stdout_clear_nonblocking; // flag indicating if the O_NONBLOCK flag on stdout should be cleared,
|
190
188
|
// only used in lambda reporter (off=0, on=1, default off)
|
191
189
|
int metric_format; // flag indicating the format of metric (0 = Both; 1 = TransactionResponseTime only; 2 = ResponseTime only; default = 0)
|
190
|
+
int log_type; // log type (0 = stderr; 1 = stdout; 2 = file; 3 = null; 4 = disabled; default = 0)
|
192
191
|
} oboe_init_options_t;
|
193
192
|
|
194
193
|
typedef struct oboe_span_params {
|
@@ -486,6 +485,13 @@ int oboe_raw_send(int channel, const char *data, size_t len);
|
|
486
485
|
*/
|
487
486
|
void oboe_shutdown();
|
488
487
|
|
488
|
+
/**
|
489
|
+
* Don't call *coming_impl function directly, they are temporary
|
490
|
+
*/
|
491
|
+
bool oboe_validate_tracing_decisions_in_t(oboe_tracing_decisions_in_t *in);
|
492
|
+
int oboe_init_coming_impl(const char* json);
|
493
|
+
int oboe_tracing_decisions_coming_impl(oboe_tracing_decisions_in_t *in, oboe_tracing_decisions_out_t *out);
|
494
|
+
void oboe_shutdown_coming_impl();
|
489
495
|
|
490
496
|
// Settings interface
|
491
497
|
|
@@ -577,6 +583,7 @@ const char* oboe_get_tracing_decisions_message(int code);
|
|
577
583
|
#define OBOE_TRACING_DECISIONS_AUTH_NO_SIG_KEY 1
|
578
584
|
#define OBOE_TRACING_DECISIONS_AUTH_INVALID_SIG 2
|
579
585
|
#define OBOE_TRACING_DECISIONS_AUTH_BAD_TIMESTAMP 3
|
586
|
+
#define OBOE_TRACING_DECISIONS_AUTH_INTERNAL_ERROR 4
|
580
587
|
|
581
588
|
// convert above codes into const char* messages.
|
582
589
|
const char* oboe_get_tracing_decisions_auth_message (int code);
|
@@ -624,6 +631,20 @@ const char* oboe_get_tracing_decisions_auth_message (int code);
|
|
624
631
|
#define OBOE_REPORTER_FLUSH_NO_REPORTER 3
|
625
632
|
#define OBOE_REPORTER_FLUSH_REPORTER_NOT_READY 4
|
626
633
|
|
634
|
+
#define OBOE_INIT_LOG_LEVEL_FATAL 0
|
635
|
+
#define OBOE_INIT_LOG_LEVEL_ERROR 1
|
636
|
+
#define OBOE_INIT_LOG_LEVEL_WARNING 2
|
637
|
+
#define OBOE_INIT_LOG_LEVEL_INFO 3
|
638
|
+
#define OBOE_INIT_LOG_LEVEL_DEBUG 4
|
639
|
+
#define OBOE_INIT_LOG_LEVEL_PREVIOUS_MEDIUM 5
|
640
|
+
#define OBOE_INIT_LOG_LEVEL_TRACE 6
|
641
|
+
|
642
|
+
#define OBOE_INIT_LOG_TYPE_STDERR 0
|
643
|
+
#define OBOE_INIT_LOG_TYPE_STDOUT 1
|
644
|
+
#define OBOE_INIT_LOG_TYPE_FILE 2
|
645
|
+
#define OBOE_INIT_LOG_TYPE_NULL 3 // NULL means no output
|
646
|
+
#define OBOE_INIT_LOG_TYPE_DISABLE 4 // Explicit disable logging
|
647
|
+
|
627
648
|
// token buckets
|
628
649
|
enum TOKEN_BUCKETS {
|
629
650
|
TOKEN_BUCKET_SAMPLING, // for normal requests
|
@@ -864,18 +885,40 @@ oboe_internal_stats_t* oboe_get_internal_stats();
|
|
864
885
|
// Random
|
865
886
|
void oboe_random_bytes(uint8_t bytes[], size_t sz);
|
866
887
|
|
867
|
-
// oboe logging macro
|
868
|
-
#define OBOE_DEBUG_LOG_CONFIG(module, app_name, trace_mode, sample_rate, reporter_type, reporter_args, extra)
|
869
|
-
#define OBOE_DEBUG_LOG_FATAL(module, ...)
|
870
|
-
#define OBOE_DEBUG_LOG_ERROR(module, ...)
|
871
|
-
#define OBOE_DEBUG_LOG_WARNING(module, ...)
|
872
|
-
#define OBOE_DEBUG_LOG_INFO(module, ...)
|
873
|
-
#define OBOE_DEBUG_LOG_LOW(module, ...)
|
874
|
-
#define OBOE_DEBUG_LOG_MEDIUM(module, ...)
|
875
|
-
#define OBOE_DEBUG_LOG_HIGH(module, ...)
|
888
|
+
// oboe logging macro (Phasing out marco)
|
889
|
+
#define OBOE_DEBUG_LOG_CONFIG(module, app_name, trace_mode, sample_rate, reporter_type, reporter_args, extra) do {} while(0)
|
890
|
+
#define OBOE_DEBUG_LOG_FATAL(module, ...) do {} while(0)
|
891
|
+
#define OBOE_DEBUG_LOG_ERROR(module, ...) do {} while(0)
|
892
|
+
#define OBOE_DEBUG_LOG_WARNING(module, ...) do {} while(0)
|
893
|
+
#define OBOE_DEBUG_LOG_INFO(module, ...) do {} while(0)
|
894
|
+
#define OBOE_DEBUG_LOG_LOW(module, ...) do {} while(0)
|
895
|
+
#define OBOE_DEBUG_LOG_MEDIUM(module, ...) do {} while(0)
|
896
|
+
#define OBOE_DEBUG_LOG_HIGH(module, ...) do {} while(0)
|
876
897
|
|
877
898
|
void oboe_init_once();
|
878
899
|
|
900
|
+
/**
|
901
|
+
* Request Counts function
|
902
|
+
* If succeed, it can get the value and reset the value to 0
|
903
|
+
* @param value output value
|
904
|
+
* @return bool
|
905
|
+
*/
|
906
|
+
bool oboe_consume_request_count(unsigned int* value);
|
907
|
+
bool oboe_consume_token_bucket_exhaustion_count(unsigned int* value);
|
908
|
+
bool oboe_consume_trace_count(unsigned int* value);
|
909
|
+
bool oboe_consume_sample_count(unsigned int* value);
|
910
|
+
bool oboe_consume_through_ignored_count(unsigned int* value);
|
911
|
+
bool oboe_consume_through_trace_count(unsigned int* value);
|
912
|
+
bool oboe_consume_triggered_trace_count(unsigned int* value);
|
913
|
+
/**
|
914
|
+
* Request Counts function
|
915
|
+
* If succeed, it can get the value
|
916
|
+
* @param value output value
|
917
|
+
* @return bool
|
918
|
+
*/
|
919
|
+
bool oboe_get_last_used_sample_rate(unsigned int* value);
|
920
|
+
bool oboe_get_last_used_sample_source(unsigned int* value);
|
921
|
+
|
879
922
|
#ifdef __cplusplus
|
880
923
|
} // extern "C"
|
881
924
|
#endif
|
@@ -447,9 +447,6 @@ bool Event::sendProfiling() {
|
|
447
447
|
size_t len = (size_t)(this->bbuf.cur - this->bbuf.buf);
|
448
448
|
retval = oboe_raw_send(OBOE_SEND_PROFILING, this->bb_str, len);
|
449
449
|
|
450
|
-
if (retval < 0)
|
451
|
-
OBOE_DEBUG_LOG_ERROR(OBOE_MODULE_LIBOBOE, "Raw send failed - reporter returned %d", retval);
|
452
|
-
|
453
450
|
return (retval >= 0);
|
454
451
|
}
|
455
452
|
|
@@ -589,11 +586,12 @@ Reporter::Reporter(
|
|
589
586
|
std::string grpc_proxy, // HTTP proxy address and port to be used for the gRPC connection
|
590
587
|
int stdout_clear_nonblocking, // flag indicating if the O_NONBLOCK flag on stdout should be cleared,
|
591
588
|
// only used in lambda reporter (off=0, on=1, default off)
|
592
|
-
int metric_format
|
589
|
+
int metric_format, // flag indicating the format of metric (0 = Both; 1 = TransactionResponseTime only; 2 = ResponseTime only; default = 0)
|
590
|
+
int log_type // log type (0 = stderr; 1 = stdout; 2 = file; 3 = null; 4 = disabled; default = 0)
|
593
591
|
) {
|
594
592
|
oboe_init_options_t options;
|
595
593
|
memset(&options, 0, sizeof(options));
|
596
|
-
options.version =
|
594
|
+
options.version = 16;
|
597
595
|
oboe_init_options_set_defaults(&options);
|
598
596
|
|
599
597
|
if (hostname_alias != "") {
|
@@ -629,11 +627,12 @@ Reporter::Reporter(
|
|
629
627
|
}
|
630
628
|
options.stdout_clear_nonblocking = stdout_clear_nonblocking;
|
631
629
|
options.metric_format = metric_format;
|
630
|
+
options.log_type = log_type;
|
632
631
|
init_status = oboe_init(&options);
|
633
632
|
}
|
634
633
|
|
635
634
|
Reporter::~Reporter() {
|
636
|
-
|
635
|
+
oboe_shutdown();
|
637
636
|
}
|
638
637
|
|
639
638
|
bool Reporter::sendReport(Event *evt, bool with_system_timestamp) {
|
@@ -690,3 +689,103 @@ bool Config::checkVersion(int version, int revision) {
|
|
690
689
|
std::string Config::getVersionString() {
|
691
690
|
return oboe_config_get_version_string();
|
692
691
|
}
|
692
|
+
|
693
|
+
// ===================================================================================================
|
694
|
+
OboeAPI::OboeAPI(const OboeAPIOptions& options) {
|
695
|
+
oboe_init_options_t oboe_options;
|
696
|
+
memset(&oboe_options, 0, sizeof(oboe_options));
|
697
|
+
oboe_options.version = 16;
|
698
|
+
oboe_init_options_set_defaults(&oboe_options);
|
699
|
+
oboe_options.log_level = options.logging_options.level;
|
700
|
+
oboe_options.log_type = options.logging_options.type;
|
701
|
+
oboe_init(&oboe_options);
|
702
|
+
}
|
703
|
+
|
704
|
+
OboeAPI::~OboeAPI() {
|
705
|
+
oboe_shutdown();
|
706
|
+
}
|
707
|
+
|
708
|
+
void OboeAPI::getTracingDecision(
|
709
|
+
// output
|
710
|
+
int *do_metrics,
|
711
|
+
int *do_sample,
|
712
|
+
int *sample_rate,
|
713
|
+
int *sample_source,
|
714
|
+
double *bucket_rate,
|
715
|
+
double *bucket_cap,
|
716
|
+
int *type,
|
717
|
+
int *auth,
|
718
|
+
std::string *status_msg,
|
719
|
+
std::string *auth_msg,
|
720
|
+
int *status,
|
721
|
+
// input
|
722
|
+
const char *in_xtrace,
|
723
|
+
const char *tracestate,
|
724
|
+
int custom_tracing_mode,
|
725
|
+
int custom_sample_rate,
|
726
|
+
int request_type,
|
727
|
+
int custom_trigger_mode,
|
728
|
+
const char *header_options,
|
729
|
+
const char *header_signature,
|
730
|
+
long header_timestamp) {
|
731
|
+
oboe_tracing_decisions_in_t tdi;
|
732
|
+
memset(&tdi, 0, sizeof(tdi));
|
733
|
+
tdi.version = 3;
|
734
|
+
|
735
|
+
tdi.custom_tracing_mode = custom_tracing_mode;
|
736
|
+
tdi.custom_sample_rate = custom_sample_rate;
|
737
|
+
tdi.custom_trigger_mode = custom_trigger_mode;
|
738
|
+
tdi.request_type = request_type;
|
739
|
+
|
740
|
+
tdi.in_xtrace = in_xtrace;
|
741
|
+
tdi.tracestate = tracestate; // value of sw member in tracestate, ignored when not in w3c mode
|
742
|
+
tdi.header_options = header_options;
|
743
|
+
tdi.header_signature = header_signature;
|
744
|
+
tdi.header_timestamp = header_timestamp;
|
745
|
+
|
746
|
+
oboe_tracing_decisions_out_t tdo;
|
747
|
+
memset(&tdo, 0, sizeof(tdo));
|
748
|
+
tdo.version = 3;
|
749
|
+
|
750
|
+
*status = oboe_tracing_decisions(&tdi, &tdo);
|
751
|
+
|
752
|
+
*do_sample = tdo.do_sample;
|
753
|
+
*do_metrics = tdo.do_metrics;
|
754
|
+
*sample_rate = tdo.sample_rate;
|
755
|
+
*sample_source = tdo.sample_source;
|
756
|
+
*bucket_rate = tdo.token_bucket_rate;
|
757
|
+
*bucket_cap = tdo.token_bucket_capacity;
|
758
|
+
*type = tdo.request_provisioned;
|
759
|
+
if (tdo.status_message && tdo.status_message[0] != '\0') {
|
760
|
+
*status_msg = tdo.status_message;
|
761
|
+
}
|
762
|
+
*auth = tdo.auth_status;
|
763
|
+
if (tdo.auth_message && tdo.auth_message[0] != '\0') {
|
764
|
+
*auth_msg = tdo.auth_message;
|
765
|
+
}
|
766
|
+
}
|
767
|
+
|
768
|
+
bool OboeAPI::consumeRequestCount(unsigned int& counter) {
|
769
|
+
return oboe_consume_request_count(&counter);
|
770
|
+
}
|
771
|
+
bool OboeAPI::consumeTokenBucketExhaustionCount(unsigned int& counter) {
|
772
|
+
return oboe_consume_token_bucket_exhaustion_count(&counter);
|
773
|
+
}
|
774
|
+
bool OboeAPI::consumeTraceCount(unsigned int& counter) {
|
775
|
+
return oboe_consume_through_trace_count(&counter);
|
776
|
+
}
|
777
|
+
bool OboeAPI::consumeSampleCount(unsigned int& counter) {
|
778
|
+
return oboe_consume_sample_count(&counter);
|
779
|
+
}
|
780
|
+
bool OboeAPI::consumeThroughTraceCount(unsigned int& counter) {
|
781
|
+
return oboe_consume_through_trace_count(&counter);
|
782
|
+
}
|
783
|
+
bool OboeAPI::consumeTriggeredTraceCount(unsigned int& counter) {
|
784
|
+
return oboe_consume_triggered_trace_count(&counter);
|
785
|
+
}
|
786
|
+
bool OboeAPI::getLastUsedSampleRate(unsigned int& rate) {
|
787
|
+
return oboe_get_last_used_sample_rate(&rate);
|
788
|
+
}
|
789
|
+
bool OboeAPI::getLastUsedSampleSource(unsigned int& source) {
|
790
|
+
return oboe_get_last_used_sample_source(&source);
|
791
|
+
}
|
@@ -102,7 +102,6 @@ class Context {
|
|
102
102
|
* @param newMode One of
|
103
103
|
* - OBOE_TRACE_DISABLED(0) to disable tracing,
|
104
104
|
* - OBOE_TRACE_ENABLED(1) to start a new trace if needed, or
|
105
|
-
* - OBOE_TRACE_THROUGH(2) to only add to an existing trace.
|
106
105
|
*/
|
107
106
|
static void setTracingMode(int newMode);
|
108
107
|
|
@@ -463,7 +462,8 @@ class Reporter : private oboe_reporter_t {
|
|
463
462
|
std::string grpc_proxy, // HTTP proxy address and port to be used for the gRPC connection
|
464
463
|
int stdout_clear_nonblocking, // flag indicating if the O_NONBLOCK flag on stdout should be cleared,
|
465
464
|
// only used in lambda reporter (off=0, on=1, default off)
|
466
|
-
int metric_format
|
465
|
+
int metric_format, // flag indicating the format of metric (0 = Both; 1 = TransactionResponseTime only; 2 = ResponseTime only; default = 0)
|
466
|
+
int log_type // log type (0 = stderr; 1 = stdout; 2 = file; 3 = null; 4 = disabled; default = 0)
|
467
467
|
);
|
468
468
|
|
469
469
|
~Reporter();
|
@@ -498,4 +498,123 @@ class Config {
|
|
498
498
|
static std::string getVersionString();
|
499
499
|
};
|
500
500
|
|
501
|
+
struct LoggingOptions {
|
502
|
+
LoggingOptions() : level(2), type(0) {
|
503
|
+
}
|
504
|
+
int level;
|
505
|
+
int type;
|
506
|
+
};
|
507
|
+
|
508
|
+
struct OboeAPIOptions {
|
509
|
+
LoggingOptions logging_options;
|
510
|
+
};
|
511
|
+
|
512
|
+
class OboeAPI {
|
513
|
+
public:
|
514
|
+
OboeAPI(const OboeAPIOptions& options = OboeAPIOptions());
|
515
|
+
~OboeAPI();
|
516
|
+
/**
|
517
|
+
* Get tracing decision
|
518
|
+
* @param do_metrics
|
519
|
+
* @param do_sample
|
520
|
+
* @param sample_rate
|
521
|
+
* @param sample_source
|
522
|
+
* @param bucket_rate
|
523
|
+
* @param bucket_cap
|
524
|
+
* @param type
|
525
|
+
* @param auth
|
526
|
+
* @param status_msg
|
527
|
+
* @param auth_msg
|
528
|
+
* @param status
|
529
|
+
* @param in_xtrace
|
530
|
+
* @param tracestate
|
531
|
+
* @param custom_tracing_mode
|
532
|
+
* @param custom_sample_rate
|
533
|
+
* @param request_type
|
534
|
+
* @param custom_trigger_mode
|
535
|
+
* @param header_options
|
536
|
+
* @param header_signature
|
537
|
+
* @param header_timestamp
|
538
|
+
*/
|
539
|
+
void getTracingDecision(
|
540
|
+
// SWIG output
|
541
|
+
int *do_metrics,
|
542
|
+
int *do_sample,
|
543
|
+
int *sample_rate,
|
544
|
+
int *sample_source,
|
545
|
+
double *bucket_rate,
|
546
|
+
double *bucket_cap,
|
547
|
+
int *type,
|
548
|
+
int *auth,
|
549
|
+
std::string *status_msg,
|
550
|
+
std::string *auth_msg,
|
551
|
+
int *status,
|
552
|
+
// SWIG input
|
553
|
+
const char *in_xtrace = NULL,
|
554
|
+
const char *tracestate = NULL,
|
555
|
+
int custom_tracing_mode = OBOE_SETTINGS_UNSET,
|
556
|
+
int custom_sample_rate = OBOE_SETTINGS_UNSET,
|
557
|
+
int request_type = 0,
|
558
|
+
int custom_trigger_mode = 0,
|
559
|
+
const char *header_options = NULL,
|
560
|
+
const char *header_signature = NULL,
|
561
|
+
long header_timestamp = 0);
|
562
|
+
/**
|
563
|
+
* Consume request count
|
564
|
+
* Check the return bool before using the counter, also consumeRequestCount will set the internal counter to 0 after referencing it
|
565
|
+
* @param counter
|
566
|
+
* @return bool
|
567
|
+
*/
|
568
|
+
bool consumeRequestCount(unsigned int& counter);
|
569
|
+
/**
|
570
|
+
* Consume token bucket exhaustion count
|
571
|
+
* Check the return bool before using the counter, also consumeTokenBucketExhaustionCount will set the internal counter to 0 after referencing it
|
572
|
+
* @param counter
|
573
|
+
* @return bool
|
574
|
+
*/
|
575
|
+
bool consumeTokenBucketExhaustionCount(unsigned int& counter);
|
576
|
+
/**
|
577
|
+
* Consume trace count
|
578
|
+
* Check the return bool before using the counter, also consumeTraceCount will set the internal counter to 0 after referencing it
|
579
|
+
* @param counter
|
580
|
+
* @return bool
|
581
|
+
*/
|
582
|
+
bool consumeTraceCount(unsigned int& counter);
|
583
|
+
/**
|
584
|
+
* Consume sample count
|
585
|
+
* Check the return bool before using the counter, also consumeSampleCount will set the internal counter to 0 after referencing it
|
586
|
+
* @param counter
|
587
|
+
* @return bool
|
588
|
+
*/
|
589
|
+
bool consumeSampleCount(unsigned int& counter);
|
590
|
+
/**
|
591
|
+
* Consume through trace count
|
592
|
+
* Check the return bool before using the counter, also consumeThroughTraceCount will set the internal counter to 0 after referencing it
|
593
|
+
* @param counter
|
594
|
+
* @return bool
|
595
|
+
*/
|
596
|
+
bool consumeThroughTraceCount(unsigned int& counter);
|
597
|
+
/**
|
598
|
+
* Consume triggered trace count
|
599
|
+
* Check the return bool before using the counter, also consumeTriggeredTraceCount will set the internal counter to 0 after referencing it
|
600
|
+
* @param counter
|
601
|
+
* @return bool
|
602
|
+
*/
|
603
|
+
bool consumeTriggeredTraceCount(unsigned int& counter);
|
604
|
+
/**
|
605
|
+
* Get last used sample rate
|
606
|
+
* Check the return bool before using the rate
|
607
|
+
* @param rate
|
608
|
+
* @return bool
|
609
|
+
*/
|
610
|
+
bool getLastUsedSampleRate(unsigned int& rate);
|
611
|
+
/**
|
612
|
+
* Get last used sample source
|
613
|
+
* Check the return bool before using the source
|
614
|
+
* @param source
|
615
|
+
* @return bool
|
616
|
+
*/
|
617
|
+
bool getLastUsedSampleSource(unsigned int& source);
|
618
|
+
};
|
619
|
+
|
501
620
|
#endif // OBOE_API_H
|