appoptics_apm-zearn 4.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.dockerignore +5 -0
- data/.github/ISSUE_TEMPLATE/bug-or-feature-request.md +16 -0
- data/.github/workflows/build_and_release_gem.yml +103 -0
- data/.github/workflows/build_for_packagecloud.yml +70 -0
- data/.github/workflows/docker-images.yml +47 -0
- data/.github/workflows/run_cpluplus_tests.yml +73 -0
- data/.github/workflows/run_tests.yml +168 -0
- data/.github/workflows/scripts/test_install.rb +23 -0
- data/.github/workflows/swig/swig-v4.0.2.tar.gz +0 -0
- data/.github/workflows/test_on_4_linux.yml +159 -0
- data/.gitignore +36 -0
- data/.rubocop.yml +29 -0
- data/.travis.yml +130 -0
- data/.yardopts +6 -0
- data/CHANGELOG.md +769 -0
- data/CONFIG.md +33 -0
- data/Gemfile +14 -0
- data/LICENSE +202 -0
- data/README.md +393 -0
- data/appoptics_apm.gemspec +70 -0
- data/bin/appoptics_apm_config +15 -0
- data/examples/prepend.rb +13 -0
- data/examples/sdk_examples.rb +158 -0
- data/ext/oboe_metal/README.md +69 -0
- data/ext/oboe_metal/extconf.rb +151 -0
- data/ext/oboe_metal/lib/.keep +0 -0
- data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.0.0.0.sha256 +1 -0
- data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.0.0.0.sha256 +1 -0
- data/ext/oboe_metal/noop/noop.c +8 -0
- data/ext/oboe_metal/src/README.md +6 -0
- data/ext/oboe_metal/src/VERSION +2 -0
- data/ext/oboe_metal/src/bson/bson.h +220 -0
- data/ext/oboe_metal/src/bson/platform_hacks.h +91 -0
- data/ext/oboe_metal/src/frames.cc +246 -0
- data/ext/oboe_metal/src/frames.h +40 -0
- data/ext/oboe_metal/src/init_appoptics_apm.cc +21 -0
- data/ext/oboe_metal/src/logging.cc +95 -0
- data/ext/oboe_metal/src/logging.h +35 -0
- data/ext/oboe_metal/src/oboe.h +1156 -0
- data/ext/oboe_metal/src/oboe_api.cpp +652 -0
- data/ext/oboe_metal/src/oboe_api.hpp +431 -0
- data/ext/oboe_metal/src/oboe_debug.h +59 -0
- data/ext/oboe_metal/src/oboe_swig_wrap.cc +7329 -0
- data/ext/oboe_metal/src/profiling.cc +435 -0
- data/ext/oboe_metal/src/profiling.h +78 -0
- data/ext/oboe_metal/test/CMakeLists.txt +53 -0
- data/ext/oboe_metal/test/FindGMock.cmake +43 -0
- data/ext/oboe_metal/test/README.md +56 -0
- data/ext/oboe_metal/test/frames_test.cc +164 -0
- data/ext/oboe_metal/test/profiling_test.cc +93 -0
- data/ext/oboe_metal/test/ruby_inc_dir.rb +8 -0
- data/ext/oboe_metal/test/ruby_prefix.rb +8 -0
- data/ext/oboe_metal/test/ruby_test_helper.rb +67 -0
- data/ext/oboe_metal/test/test.h +11 -0
- data/ext/oboe_metal/test/test_main.cc +32 -0
- data/init.rb +4 -0
- data/lib/appoptics_apm/api/layerinit.rb +41 -0
- data/lib/appoptics_apm/api/logging.rb +381 -0
- data/lib/appoptics_apm/api/memcache.rb +37 -0
- data/lib/appoptics_apm/api/metrics.rb +63 -0
- data/lib/appoptics_apm/api/tracing.rb +57 -0
- data/lib/appoptics_apm/api/util.rb +120 -0
- data/lib/appoptics_apm/api.rb +21 -0
- data/lib/appoptics_apm/base.rb +231 -0
- data/lib/appoptics_apm/config.rb +299 -0
- data/lib/appoptics_apm/frameworks/grape.rb +98 -0
- data/lib/appoptics_apm/frameworks/padrino.rb +78 -0
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller.rb +104 -0
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller4.rb +48 -0
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller5.rb +50 -0
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller6.rb +50 -0
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller_api.rb +50 -0
- data/lib/appoptics_apm/frameworks/rails/inst/action_view.rb +88 -0
- data/lib/appoptics_apm/frameworks/rails/inst/active_record.rb +27 -0
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/mysql.rb +43 -0
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/mysql2.rb +29 -0
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/postgresql.rb +31 -0
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/utils.rb +119 -0
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/utils5x.rb +114 -0
- data/lib/appoptics_apm/frameworks/rails/inst/logger_formatters.rb +27 -0
- data/lib/appoptics_apm/frameworks/rails.rb +100 -0
- data/lib/appoptics_apm/frameworks/sinatra.rb +96 -0
- data/lib/appoptics_apm/inst/bunny-client.rb +148 -0
- data/lib/appoptics_apm/inst/bunny-consumer.rb +89 -0
- data/lib/appoptics_apm/inst/curb.rb +332 -0
- data/lib/appoptics_apm/inst/dalli.rb +85 -0
- data/lib/appoptics_apm/inst/delayed_job.rb +92 -0
- data/lib/appoptics_apm/inst/em-http-request.rb +101 -0
- data/lib/appoptics_apm/inst/excon.rb +125 -0
- data/lib/appoptics_apm/inst/faraday.rb +106 -0
- data/lib/appoptics_apm/inst/graphql.rb +240 -0
- data/lib/appoptics_apm/inst/grpc_client.rb +159 -0
- data/lib/appoptics_apm/inst/grpc_server.rb +120 -0
- data/lib/appoptics_apm/inst/http.rb +81 -0
- data/lib/appoptics_apm/inst/httpclient.rb +174 -0
- data/lib/appoptics_apm/inst/logger_formatter.rb +50 -0
- data/lib/appoptics_apm/inst/logging_log_event.rb +28 -0
- data/lib/appoptics_apm/inst/lumberjack_formatter.rb +13 -0
- data/lib/appoptics_apm/inst/memcached.rb +86 -0
- data/lib/appoptics_apm/inst/mongo.rb +246 -0
- data/lib/appoptics_apm/inst/mongo2.rb +225 -0
- data/lib/appoptics_apm/inst/moped.rb +466 -0
- data/lib/appoptics_apm/inst/rack.rb +182 -0
- data/lib/appoptics_apm/inst/rack_cache.rb +35 -0
- data/lib/appoptics_apm/inst/redis.rb +274 -0
- data/lib/appoptics_apm/inst/resque.rb +151 -0
- data/lib/appoptics_apm/inst/rest-client.rb +48 -0
- data/lib/appoptics_apm/inst/sequel.rb +178 -0
- data/lib/appoptics_apm/inst/sidekiq-client.rb +55 -0
- data/lib/appoptics_apm/inst/sidekiq-worker.rb +66 -0
- data/lib/appoptics_apm/inst/twitter-cassandra.rb +294 -0
- data/lib/appoptics_apm/inst/typhoeus.rb +108 -0
- data/lib/appoptics_apm/instrumentation.rb +22 -0
- data/lib/appoptics_apm/loading.rb +65 -0
- data/lib/appoptics_apm/logger.rb +14 -0
- data/lib/appoptics_apm/noop/README.md +9 -0
- data/lib/appoptics_apm/noop/context.rb +27 -0
- data/lib/appoptics_apm/noop/metadata.rb +25 -0
- data/lib/appoptics_apm/noop/profiling.rb +21 -0
- data/lib/appoptics_apm/oboe_init_options.rb +211 -0
- data/lib/appoptics_apm/ruby.rb +35 -0
- data/lib/appoptics_apm/sdk/current_trace.rb +77 -0
- data/lib/appoptics_apm/sdk/custom_metrics.rb +94 -0
- data/lib/appoptics_apm/sdk/logging.rb +37 -0
- data/lib/appoptics_apm/sdk/tracing.rb +434 -0
- data/lib/appoptics_apm/support/profiling.rb +18 -0
- data/lib/appoptics_apm/support/transaction_metrics.rb +67 -0
- data/lib/appoptics_apm/support/transaction_settings.rb +219 -0
- data/lib/appoptics_apm/support/x_trace_options.rb +110 -0
- data/lib/appoptics_apm/support_report.rb +119 -0
- data/lib/appoptics_apm/test.rb +95 -0
- data/lib/appoptics_apm/thread_local.rb +26 -0
- data/lib/appoptics_apm/util.rb +326 -0
- data/lib/appoptics_apm/version.rb +16 -0
- data/lib/appoptics_apm/xtrace.rb +115 -0
- data/lib/appoptics_apm.rb +77 -0
- data/lib/joboe_metal.rb +212 -0
- data/lib/oboe.rb +7 -0
- data/lib/oboe_metal.rb +172 -0
- data/lib/rails/generators/appoptics_apm/install_generator.rb +47 -0
- data/lib/rails/generators/appoptics_apm/templates/appoptics_apm_initializer.rb +425 -0
- data/log/.keep +0 -0
- data/yardoc_frontpage.md +26 -0
- metadata +231 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
// Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
// All rights reserved.
|
3
|
+
|
4
|
+
#include "logging.h"
|
5
|
+
|
6
|
+
using namespace std;
|
7
|
+
|
8
|
+
const string Logging::profiling = "profiling";
|
9
|
+
const string Logging::ruby = "ruby";
|
10
|
+
const string Logging::entry = "entry";
|
11
|
+
const string Logging::info = "info";
|
12
|
+
const string Logging::exit = "exit";
|
13
|
+
|
14
|
+
Event *Logging::createEvent(Metadata &md, string &prof_op_id, bool entry_event) {
|
15
|
+
// startTrace does not add "Edge", for profiling we need to keep track of edges
|
16
|
+
// separately from the main trace metadata
|
17
|
+
|
18
|
+
oboe_metadata_t *md_t = md.metadata();
|
19
|
+
Event *event = Event::startTrace(md_t);
|
20
|
+
|
21
|
+
if (entry_event) {
|
22
|
+
event->addSpanRef(md_t);
|
23
|
+
} else {
|
24
|
+
event->addProfileEdge(prof_op_id);
|
25
|
+
event->addContextOpId(md_t);
|
26
|
+
}
|
27
|
+
prof_op_id.assign(event->opIdString());
|
28
|
+
|
29
|
+
return event;
|
30
|
+
}
|
31
|
+
|
32
|
+
bool Logging::log_profile_entry(Metadata &md, string &prof_op_id, pid_t tid, long interval) {
|
33
|
+
Event *event = Logging::createEvent(md, prof_op_id, true);
|
34
|
+
event->addInfo((char *)"Label", Logging::entry);
|
35
|
+
event->addInfo((char *)"Language", Logging::ruby);
|
36
|
+
event->addInfo((char *)"TID", (long)tid);
|
37
|
+
event->addInfo((char *)"Interval", interval);
|
38
|
+
|
39
|
+
struct timeval tv;
|
40
|
+
oboe_gettimeofday(&tv);
|
41
|
+
event->addInfo((char *)"Timestamp_u", (long)tv.tv_sec * 1000000 + (long)tv.tv_usec);
|
42
|
+
|
43
|
+
return Logging::log_profile_event(event);
|
44
|
+
}
|
45
|
+
|
46
|
+
bool Logging::log_profile_exit(Metadata &md, string &prof_op_id, pid_t tid,
|
47
|
+
long *omitted, int num_omitted) {
|
48
|
+
Event *event = Logging::createEvent(md, prof_op_id);
|
49
|
+
event->addInfo((char *)"Label", Logging::exit);
|
50
|
+
event->addInfo((char *)"TID", (long)tid);
|
51
|
+
event->addInfo((char *)"SnapshotsOmitted", omitted, num_omitted);
|
52
|
+
|
53
|
+
struct timeval tv;
|
54
|
+
oboe_gettimeofday(&tv);
|
55
|
+
event->addInfo((char *)"Timestamp_u", (long)tv.tv_sec * 1000000 + (long)tv.tv_usec);
|
56
|
+
|
57
|
+
return Logging::log_profile_event(event);
|
58
|
+
}
|
59
|
+
|
60
|
+
bool Logging::log_profile_snapshot(Metadata &md,
|
61
|
+
string &prof_op_id,
|
62
|
+
long timestamp,
|
63
|
+
std::vector<FrameData> const &new_frames,
|
64
|
+
long exited_frames,
|
65
|
+
long total_frames,
|
66
|
+
long *omitted,
|
67
|
+
int num_omitted,
|
68
|
+
pid_t tid) {
|
69
|
+
|
70
|
+
Event *event = Logging::createEvent(md, prof_op_id);
|
71
|
+
event->addInfo((char *)"Timestamp_u", timestamp);
|
72
|
+
event->addInfo((char *)"Label", Logging::info);
|
73
|
+
|
74
|
+
event->addInfo((char *)"SnapshotsOmitted", omitted, num_omitted);
|
75
|
+
event->addInfo((char *)"NewFrames", new_frames);
|
76
|
+
event->addInfo((char *)"FramesExited", exited_frames);
|
77
|
+
event->addInfo((char *)"FramesCount", total_frames);
|
78
|
+
event->addInfo((char *)"TID", (long)tid);
|
79
|
+
|
80
|
+
return Logging::log_profile_event(event);
|
81
|
+
}
|
82
|
+
|
83
|
+
bool Logging::log_profile_event(Event *event) {
|
84
|
+
event->addInfo((char *)"Spec", Logging::profiling);
|
85
|
+
event->addHostname();
|
86
|
+
event->addInfo((char *)"PID", (long)AO_GETPID());
|
87
|
+
event->addInfo((char *)"X-Trace", event->metadataString());
|
88
|
+
event->sendProfiling();
|
89
|
+
|
90
|
+
// see comment in oboe_api.cpp:
|
91
|
+
// "event needs to be deleted, it is managed by swig %newobject"
|
92
|
+
// !!! It needs to be deleted, I tested it !!!
|
93
|
+
delete event;
|
94
|
+
return true;
|
95
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
// Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
// All rights reserved.
|
3
|
+
|
4
|
+
#ifndef LOGGING_H
|
5
|
+
#define LOGGING_H
|
6
|
+
|
7
|
+
#include "oboe_api.hpp"
|
8
|
+
|
9
|
+
using namespace std;
|
10
|
+
|
11
|
+
extern "C" int oboe_gettimeofday(struct timeval *tv);
|
12
|
+
|
13
|
+
|
14
|
+
class Logging {
|
15
|
+
public:
|
16
|
+
static const string profiling, ruby, entry, info, exit;
|
17
|
+
static bool log_profile_entry(Metadata &md, string &prof_op_id, pid_t tid, long interval);
|
18
|
+
static bool log_profile_exit(Metadata &md, string &prof_op_id, pid_t tid,
|
19
|
+
long *omitted, int num_omitted);
|
20
|
+
static bool log_profile_snapshot(Metadata &md,
|
21
|
+
string &prof_op_id,
|
22
|
+
long timestamp,
|
23
|
+
std::vector<FrameData> const &new_frames,
|
24
|
+
long exited_frames,
|
25
|
+
long total_frames,
|
26
|
+
long *omitted,
|
27
|
+
int num_omitted,
|
28
|
+
pid_t tid);
|
29
|
+
|
30
|
+
private:
|
31
|
+
static Event *createEvent(Metadata &md, string &prof_op_id, bool entry_event = false);
|
32
|
+
static bool log_profile_event(Event *event);
|
33
|
+
};
|
34
|
+
|
35
|
+
#endif //LOGGING_H
|