foam-ruby 0.1.0.alpha5 → 0.1.0.alpha7
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 +4 -4
- data/README.md +12 -11
- data/lib/foam/ruby/configuration.rb +1 -4
- data/lib/foam/ruby/log_subscriber.rb +0 -3
- data/lib/foam/ruby/otel_setup.rb +4 -3
- data/lib/foam/ruby/version.rb +1 -1
- data/lib/foam/ruby.rb +2 -5
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6357c1e7accb580c8cec51b5ca55500a49c84964984f1037176dccd242240e82
|
|
4
|
+
data.tar.gz: 85b970210911bc6bbacf876c25407f13ab1d8900a0466a83d92d267f065d1bb6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 127fbcc2b2c88659c61d20404fb6361e090cdc2dc352221b87d123efeb3121e2727414f6b4f05ba4140b2748b330a137e2c8e1eda6205f27097ad2be592d896c
|
|
7
|
+
data.tar.gz: 9d5718f4db88c948a6787632687cf9081c4c0a0425e5b45ae4c349e4b3e333aed3d075980bf54ece6fdea8427b95139a8cb7ddcd7faea59ac2bf5d7ec56053f3
|
data/README.md
CHANGED
|
@@ -43,17 +43,6 @@ That's it. The gem will:
|
|
|
43
43
|
| `OTEL_SERVICE_NAME` | Service name for telemetry | `rails-app` |
|
|
44
44
|
| `FOAM_OTEL_ENDPOINT` | OTLP collector endpoint | `https://otel.api.foam.ai` |
|
|
45
45
|
|
|
46
|
-
### Disabling signals
|
|
47
|
-
|
|
48
|
-
```ruby
|
|
49
|
-
Foam::Ruby.init(
|
|
50
|
-
token: ENV["FOAM_API_TOKEN"],
|
|
51
|
-
service_name: "my-rails-app",
|
|
52
|
-
traces: false, # disable trace collection
|
|
53
|
-
logs: true
|
|
54
|
-
)
|
|
55
|
-
```
|
|
56
|
-
|
|
57
46
|
## How It Works
|
|
58
47
|
|
|
59
48
|
### Rails.logger → OTel Logs
|
|
@@ -98,6 +87,18 @@ The gem only initializes in production (`RAILS_ENV=production` or `RACK_ENV=prod
|
|
|
98
87
|
- **Rails 7.0 and below**: Falls back to `ActiveSupport::Logger.broadcast`
|
|
99
88
|
- **Ruby**: >= 3.0
|
|
100
89
|
|
|
90
|
+
## Acknowledgements
|
|
91
|
+
|
|
92
|
+
This package is built on top of the following open source projects:
|
|
93
|
+
|
|
94
|
+
| Project | License | Link |
|
|
95
|
+
|---------|---------|------|
|
|
96
|
+
| [OpenTelemetry Ruby SDK](https://github.com/open-telemetry/opentelemetry-ruby) (`opentelemetry-sdk`) | Apache-2.0 | https://github.com/open-telemetry/opentelemetry-ruby |
|
|
97
|
+
| [OpenTelemetry Ruby Logs SDK](https://github.com/open-telemetry/opentelemetry-ruby) (`opentelemetry-logs-sdk`) | Apache-2.0 | https://github.com/open-telemetry/opentelemetry-ruby |
|
|
98
|
+
| [OpenTelemetry OTLP Exporter](https://github.com/open-telemetry/opentelemetry-ruby) (`opentelemetry-exporter-otlp`) | Apache-2.0 | https://github.com/open-telemetry/opentelemetry-ruby |
|
|
99
|
+
| [OpenTelemetry OTLP Logs Exporter](https://github.com/open-telemetry/opentelemetry-ruby) (`opentelemetry-exporter-otlp-logs`) | Apache-2.0 | https://github.com/open-telemetry/opentelemetry-ruby |
|
|
100
|
+
| [OpenTelemetry Rails Instrumentation](https://github.com/open-telemetry/opentelemetry-ruby-contrib) (`opentelemetry-instrumentation-rails`) | Apache-2.0 | https://github.com/open-telemetry/opentelemetry-ruby-contrib |
|
|
101
|
+
|
|
101
102
|
## License
|
|
102
103
|
|
|
103
104
|
MIT
|
|
@@ -5,15 +5,12 @@ module Foam
|
|
|
5
5
|
class Configuration
|
|
6
6
|
FOAM_OTEL_ENDPOINT = "https://otel.api.foam.ai"
|
|
7
7
|
|
|
8
|
-
attr_accessor :token, :service_name, :endpoint
|
|
9
|
-
:traces_enabled, :logs_enabled
|
|
8
|
+
attr_accessor :token, :service_name, :endpoint
|
|
10
9
|
|
|
11
10
|
def initialize
|
|
12
11
|
@token = ENV["FOAM_API_TOKEN"]
|
|
13
12
|
@service_name = ENV.fetch("OTEL_SERVICE_NAME", "rails-app")
|
|
14
13
|
@endpoint = ENV.fetch("FOAM_OTEL_ENDPOINT", FOAM_OTEL_ENDPOINT)
|
|
15
|
-
@traces_enabled = true
|
|
16
|
-
@logs_enabled = true
|
|
17
14
|
end
|
|
18
15
|
|
|
19
16
|
def otel_headers
|
|
@@ -30,13 +30,10 @@ module Foam
|
|
|
30
30
|
def emit(severity, message)
|
|
31
31
|
return if message.nil? || (message.respond_to?(:empty?) && message.empty?)
|
|
32
32
|
|
|
33
|
-
span_context = OpenTelemetry::Trace.current_span.context
|
|
34
|
-
|
|
35
33
|
@otel_logger.on_emit(
|
|
36
34
|
body: message.to_s,
|
|
37
35
|
severity_number: SEVERITY_MAP.fetch(severity, OpenTelemetry::Logs::SeverityNumber::SEVERITY_NUMBER_INFO),
|
|
38
36
|
severity_text: SEVERITY_TEXT.fetch(severity, "INFO"),
|
|
39
|
-
span_context: span_context.valid? ? span_context : nil,
|
|
40
37
|
timestamp: Time.now
|
|
41
38
|
)
|
|
42
39
|
rescue StandardError => e
|
data/lib/foam/ruby/otel_setup.rb
CHANGED
|
@@ -12,8 +12,8 @@ module Foam
|
|
|
12
12
|
module_function
|
|
13
13
|
|
|
14
14
|
def configure!(config)
|
|
15
|
-
configure_traces(config)
|
|
16
|
-
configure_logs(config)
|
|
15
|
+
configure_traces(config)
|
|
16
|
+
configure_logs(config)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def configure_traces(config)
|
|
@@ -35,7 +35,8 @@ module Foam
|
|
|
35
35
|
|
|
36
36
|
def configure_logs(config)
|
|
37
37
|
resource = OpenTelemetry::SDK::Resources::Resource.create(
|
|
38
|
-
"service.name" => config.service_name
|
|
38
|
+
"service.name" => config.service_name,
|
|
39
|
+
"deployment.environment" => ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "production"
|
|
39
40
|
)
|
|
40
41
|
|
|
41
42
|
exporter = OpenTelemetry::Exporter::OTLP::Logs::LogsExporter.new(
|
data/lib/foam/ruby/version.rb
CHANGED
data/lib/foam/ruby.rb
CHANGED
|
@@ -10,15 +10,12 @@ module Foam
|
|
|
10
10
|
@initialized == true
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def init(token: nil, service_name: nil
|
|
13
|
+
def init(token: nil, service_name: nil)
|
|
14
14
|
return unless production?
|
|
15
15
|
|
|
16
16
|
config = configuration
|
|
17
17
|
config.token = token if token
|
|
18
18
|
config.service_name = service_name if service_name
|
|
19
|
-
config.endpoint = endpoint if endpoint
|
|
20
|
-
config.traces_enabled = options.fetch(:traces, true)
|
|
21
|
-
config.logs_enabled = options.fetch(:logs, true)
|
|
22
19
|
|
|
23
20
|
unless config.valid?
|
|
24
21
|
warn "[foam-ruby] Missing token — set FOAM_API_TOKEN or pass token: to Foam::Ruby.init"
|
|
@@ -29,7 +26,7 @@ module Foam
|
|
|
29
26
|
require_relative "ruby/log_subscriber"
|
|
30
27
|
|
|
31
28
|
OtelSetup.configure!(config)
|
|
32
|
-
schedule_logger_attach!
|
|
29
|
+
schedule_logger_attach!
|
|
33
30
|
bridge_sentry!
|
|
34
31
|
@initialized = true
|
|
35
32
|
rescue Exception => e # rubocop:disable Lint/RescueException
|