cw-datadog 2.23.0.7 → 2.23.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 767d32bfe21955c161a202aa6f76f7664bb2ac5fb7360a07838772c2bc3cdbc3
4
- data.tar.gz: b72a9c5a95d19c01d2b94d751e7fec196d0750383e5dca4c4d3985c20f25323d
3
+ metadata.gz: ad65aab58434d4c3d2ccf8a00d2c728231eaca2369aab6d8fac4293d146d7641
4
+ data.tar.gz: 7e4d9d0fc890f0d6ea2cb11014879f6a86af57f8eb89882fa3cdfc0db1acd3c5
5
5
  SHA512:
6
- metadata.gz: 40a7be0754bd238dbc77b1817eee6ba0fecac7f896382d23f7cc6e3c0ba79fa90c0cc303a1f0bc538fbf798db16fbff2f24485cd2bf865cf9dd5808a9085b8cd
7
- data.tar.gz: 5999b9758ab07a66bca413a01c89d842aceed792accbc2934e5cff9c8646a0cb24b579d630e8d0d92f4d1014b295a207065db174fda75231e1afe97ee31d4e76
6
+ metadata.gz: 4ed84231230329b12381aeccf6d3fdaf3b2e24ec250ed86ba9ee6972d254f28ff0db07618807869c468f4409641557515f7e5e8df8e9a776c75e0ae5402ca332
7
+ data.tar.gz: 17566d9b7b129d408dbbf78904c59ce53931070d91ef6528f3b46402de4aa660f2b91ec263cb67293a9d0bb292668ef82597b97c2823792b3b534578fe58817e
@@ -245,6 +245,38 @@ module Datadog
245
245
  })
246
246
  end
247
247
 
248
+ # DOCC 模式下的应用注册接口(使用 doop-agent-api 前缀)
249
+ # 在 DOCC 模式下也需要调用 DOOP 模式的应用注册逻辑
250
+ # 接口路径: /doop-agent-api/v2/app/create
251
+ # 调用频率: 每3分钟一次
252
+ def docc_register_application
253
+ host_ip = get_local_ip
254
+
255
+ post('/doop-agent-api/v2/app/create', {
256
+ serviceType: 'RUBY',
257
+ accountId: @token_account_id.to_i,
258
+ hostId: 0,
259
+ agentId: generate_agent_id(host_ip).to_i,
260
+ appId: generate_app_id(server_name).to_i,
261
+ sn: host_ip,
262
+ sport: get_server_port,
263
+ appName: server_name,
264
+ userDirRaw: server_name,
265
+ codeType: 1012,
266
+ app_type: 1,
267
+ vpc: '',
268
+ env_tag: 'default',
269
+ service_tag: 'default',
270
+ version_tag: 'default',
271
+ business_tag: '',
272
+ sys: '',
273
+ host_tag: '{}',
274
+ tags: {},
275
+ service_instance_id: generate_service_instance_id(host_ip).to_i,
276
+ system_uuid: ''
277
+ })
278
+ end
279
+
248
280
  # Check if should use integrated mode (DOCC interfaces)
249
281
  # 判断是否需要使用融合模式
250
282
  # token不为空且integrated_mode=true时启用
@@ -7,6 +7,7 @@ require_relative 'heartbeat_worker'
7
7
  require_relative 'license_worker'
8
8
  require_relative 'app_registration_worker'
9
9
  require_relative 'docc_registration_worker'
10
+ require_relative 'docc_app_registration_worker'
10
11
  require_relative 'docc_heartbeat_worker'
11
12
  require_relative 'docc_operation_worker'
12
13
  require_relative 'time_sync_worker'
@@ -49,7 +50,8 @@ module Datadog
49
50
  class Component
50
51
  attr_reader :client, :probe_state, :host_id_worker, :heartbeat_worker,
51
52
  :license_worker, :app_registration_worker, :logger,
52
- :docc_registration_worker, :docc_heartbeat_worker, :docc_operation_worker,
53
+ :docc_registration_worker, :docc_app_registration_worker,
54
+ :docc_heartbeat_worker, :docc_operation_worker,
53
55
  :time_sync_worker
54
56
 
55
57
  # 类级别的单例锁,确保全局只初始化一次
@@ -192,6 +194,7 @@ module Datadog
192
194
  if @client.use_integrated_mode?
193
195
  @docc_heartbeat_worker&.stop(true)
194
196
  @docc_registration_worker&.stop(true)
197
+ @docc_app_registration_worker&.stop(true)
195
198
  @docc_operation_worker&.stop(true)
196
199
  Cloudwise.log_debug { 'Cloudwise DOCC component stopped' }
197
200
  else
@@ -246,6 +249,8 @@ module Datadog
246
249
  docc_operation_active: probe_status[:docc_operation_active],
247
250
  docc_heartbeat_running: docc_heartbeat_worker&.running?,
248
251
  docc_registration_running: docc_registration_worker&.running?,
252
+ docc_app_registered: probe_status[:app_registered],
253
+ docc_app_registration_running: docc_app_registration_worker&.running?,
249
254
  docc_operation_running: docc_operation_worker&.running?
250
255
  )
251
256
  else
@@ -321,14 +326,22 @@ module Datadog
321
326
  interval: settings.cloudwise.heartbeat_interval
322
327
  )
323
328
 
324
- # 3. DOCC Operation Worker (30s interval)
329
+ # 3. DOCC App Registration Worker (3 min interval, DOOP prefix)
330
+ @docc_app_registration_worker = DOCCAppRegistrationWorker.new(
331
+ client: client,
332
+ logger: logger,
333
+ probe_state: probe_state,
334
+ interval: settings.cloudwise.app_registration_interval
335
+ )
336
+
337
+ # 4. DOCC Operation Worker (30s interval)
325
338
  @docc_operation_worker = DOCCOperationWorker.new(
326
339
  client: client,
327
340
  logger: logger,
328
341
  probe_state: probe_state
329
342
  )
330
343
 
331
- # 4. Time Sync Worker (3 min interval)
344
+ # 5. Time Sync Worker (3 min interval)
332
345
  @time_sync_worker = TimeSyncWorker.new(
333
346
  client: client,
334
347
  logger: logger,
@@ -416,8 +429,9 @@ module Datadog
416
429
  # 1. 启动 DOCC 心跳 worker
417
430
  # 2. 等待第一次心跳成功
418
431
  # 3. 启动 DOCC 注册 worker
419
- # 4. 启动 Time Sync worker (3 min interval)
420
- # 5. 启动 DOCC 操作 worker
432
+ # 4. 启动 App Registration worker (DOOP prefix, 3 min interval)
433
+ # 5. 启动 Time Sync worker (3 min interval)
434
+ # 6. 启动 DOCC 操作 worker
421
435
  def start_docc_workers_when_ready
422
436
  Thread.new do
423
437
  Thread.current.name = 'Cloudwise-DOCC-Initializer'
@@ -441,13 +455,19 @@ module Datadog
441
455
  @docc_registration_worker.start
442
456
 
443
457
  # ============================================================
444
- # STEP 3: Start Time Sync worker (3 min interval)
458
+ # STEP 3: Start App Registration worker (DOOP prefix)
459
+ # ============================================================
460
+ Cloudwise.log_debug { 'Cloudwise docc: Starting application registration worker (DOOP prefix)...' }
461
+ @docc_app_registration_worker.start
462
+
463
+ # ============================================================
464
+ # STEP 4: Start Time Sync worker (3 min interval)
445
465
  # ============================================================
446
466
  Cloudwise.log_debug { 'Cloudwise docc: Starting Time Sync worker (3 min interval)...' }
447
467
  @time_sync_worker.start
448
468
 
449
469
  # ============================================================
450
- # STEP 4: Start DOCC Operation worker
470
+ # STEP 5: Start DOCC Operation worker
451
471
  # ============================================================
452
472
  Cloudwise.log_debug { 'Cloudwise docc: Starting operation worker...' }
453
473
  @docc_operation_worker.start
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../worker'
4
+ require_relative '../workers/async'
5
+ require_relative '../workers/polling'
6
+
7
+ module Datadog
8
+ module Core
9
+ module Cloudwise
10
+ # Worker that registers application in DOCC mode using DOOP prefix
11
+ # DOCC 模式下调用 DOOP 的应用注册逻辑
12
+ # 接口路径: /doop-agent-api/v2/app/create
13
+ # 应用注册失败不影响数据采集
14
+ class DOCCAppRegistrationWorker < Worker
15
+ include Workers::Polling
16
+
17
+ # 3 minutes interval
18
+ DEFAULT_INTERVAL = 180
19
+ # 成功的状态码
20
+ CODE_SUCCESS = 1000
21
+
22
+ attr_reader :client
23
+
24
+ def initialize(client:, logger:, probe_state:, **options)
25
+ @client = client
26
+ @logger = logger
27
+ @probe_state = probe_state
28
+ @registration_successful = false
29
+
30
+ # Workers::Async::Thread settings
31
+ self.fork_policy = options.fetch(:fork_policy, Workers::Async::Thread::FORK_POLICY_STOP)
32
+
33
+ # Workers::IntervalLoop settings
34
+ self.loop_base_interval = options.fetch(:interval, DEFAULT_INTERVAL)
35
+
36
+ self.enabled = options.fetch(:enabled, true)
37
+ end
38
+
39
+ def perform
40
+ Cloudwise.log_debug { 'Cloudwise DOCC: Registering application (DOOP prefix)' }
41
+
42
+ result = client.docc_register_application
43
+
44
+ process_registration_result(result)
45
+
46
+ true
47
+ rescue => e
48
+ Cloudwise.log_error { "Cloudwise DOCC: Application registration worker error: #{e.class.name} #{e.message}" }
49
+ @probe_state.mark_app_unregistered!
50
+ true # Continue running
51
+ end
52
+
53
+ def registered?
54
+ @registration_successful
55
+ end
56
+
57
+ # Public method to start the worker
58
+ def start
59
+ return false if !enabled? || started?
60
+
61
+ # Start the async worker thread
62
+ perform
63
+ end
64
+
65
+ private
66
+
67
+ attr_reader :logger, :probe_state
68
+
69
+ def process_registration_result(result)
70
+ # 接口请求成功且 code == 1000
71
+ if result[:success] && result[:code] == CODE_SUCCESS
72
+ @registration_successful = true
73
+ Cloudwise.log_debug { 'Cloudwise DOCC: Application registration successful (DOOP prefix)' }
74
+ probe_state.mark_app_registered!
75
+ else
76
+ @registration_successful = false
77
+ error_msg = result[:error] || "code=#{result[:code]}"
78
+ Cloudwise.log_warn { "Cloudwise DOCC: Application registration failed: #{error_msg}, will retry in #{DEFAULT_INTERVAL}s" }
79
+ Cloudwise.log_warn { 'Cloudwise DOCC: Note - Registration failure does NOT affect data collection' }
80
+ probe_state.mark_app_unregistered!
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -5,7 +5,7 @@ module Datadog
5
5
  MAJOR = 2
6
6
  MINOR = 23
7
7
  PATCH = 0
8
- PATCH_MINOR = 7
8
+ PATCH_MINOR = 8
9
9
  PRE = nil
10
10
  BUILD = nil
11
11
  # PRE and BUILD above are modified for dev gems during gem build GHA workflow
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cw-datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.23.0.7
4
+ version: 2.23.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-07 00:00:00.000000000 Z
11
+ date: 2026-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -303,6 +303,7 @@ files:
303
303
  - lib/datadog/core/cloudwise/app_registration_worker.rb
304
304
  - lib/datadog/core/cloudwise/client.rb
305
305
  - lib/datadog/core/cloudwise/component.rb
306
+ - lib/datadog/core/cloudwise/docc_app_registration_worker.rb
306
307
  - lib/datadog/core/cloudwise/docc_heartbeat_worker.rb
307
308
  - lib/datadog/core/cloudwise/docc_operation_worker.rb
308
309
  - lib/datadog/core/cloudwise/docc_registration_worker.rb
@@ -1095,8 +1096,8 @@ licenses:
1095
1096
  - Apache-2.0
1096
1097
  metadata:
1097
1098
  allowed_push_host: https://rubygems.org
1098
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.23.0.7/CHANGELOG.md
1099
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.23.0.7
1099
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.23.0.8/CHANGELOG.md
1100
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.23.0.8
1100
1101
  post_install_message:
1101
1102
  rdoc_options: []
1102
1103
  require_paths: