Skip to content

Commit 045143b

Browse files
rogercolllahsivjar
andauthored
refactor: add APM Otel native collector components (#27)
* refactor: add APM Otel native collector components * chore: remove unused elasticsearch/apm exporter * fix: enable dynamic traces and metrics * Update resources/kubernetes/operator/helm/values.yaml Co-authored-by: Vishal Raj <[email protected]> * fix: yaml identation * docs: bump Chart version to 0.3.0 --------- Co-authored-by: Vishal Raj <[email protected]>
1 parent 4d6f1b9 commit 045143b

File tree

2 files changed

+276
-13
lines changed

2 files changed

+276
-13
lines changed

docs/onboarding/8_16/operator/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ $ kubectl create namespace opentelemetry-operator-system
7676
```
7777
$ helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
7878
$ helm repo update
79-
$ helm upgrade --install --namespace opentelemetry-operator-system opentelemetry-kube-stack open-telemetry/opentelemetry-kube-stack --values ./resources/kubernetes/operator/helm/values.yaml --version 0.2.2
79+
$ helm upgrade --install --namespace opentelemetry-operator-system opentelemetry-kube-stack open-telemetry/opentelemetry-kube-stack --values ./resources/kubernetes/operator/helm/values.yaml --version 0.3.0
8080
```
8181
8282
## Limitations

resources/kubernetes/operator/helm/values.yaml

Lines changed: 275 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -184,23 +184,255 @@ collectors:
184184
runAsGroup: 0
185185
scrape_configs_file: ""
186186
config:
187+
connectors:
188+
signaltometrics:
189+
logs:
190+
- name: service_summary
191+
include_resource_attributes:
192+
- key: service.name
193+
- key: deployment.environment # service.environment
194+
- key: telemetry.sdk.language # service.language.name
195+
- key: agent.name # set via elastictraceprocessor
196+
attributes:
197+
- key: metricset.name
198+
default_value: service_summary
199+
sum:
200+
value: "1"
201+
datapoints:
202+
- name: service_summary
203+
include_resource_attributes:
204+
- key: service.name
205+
- key: deployment.environment # service.environment
206+
- key: telemetry.sdk.language # service.language.name
207+
- key: agent.name # set via elastictraceprocessor
208+
attributes:
209+
- key: metricset.name
210+
default_value: service_summary
211+
sum:
212+
value: "1"
213+
spans:
214+
- name: service_summary
215+
include_resource_attributes:
216+
- key: service.name
217+
- key: deployment.environment # service.environment
218+
- key: telemetry.sdk.language # service.language.name
219+
- key: agent.name # set via elastictraceprocessor
220+
attributes:
221+
- key: metricset.name
222+
default_value: service_summary
223+
sum:
224+
value: Int(AdjustedCount())
225+
- name: transaction.duration.histogram
226+
description: APM service transaction aggregated metrics as histogram
227+
include_resource_attributes:
228+
- key: service.name
229+
- key: deployment.environment # service.environment
230+
- key: telemetry.sdk.language # service.language.name
231+
- key: agent.name # set via elastictraceprocessor
232+
attributes:
233+
- key: transaction.root
234+
- key: transaction.type
235+
- key: metricset.name
236+
default_value: service_transaction
237+
- key: elasticsearch.mapping.hints
238+
default_value: [_doc_count]
239+
unit: us
240+
exponential_histogram:
241+
value: Microseconds(end_time - start_time)
242+
- name: transaction.duration.summary
243+
description: APM service transaction aggregated metrics as summary
244+
include_resource_attributes:
245+
- key: service.name
246+
- key: deployment.environment # service.environment
247+
- key: telemetry.sdk.language # service.language.name
248+
- key: agent.name # set via elastictraceprocessor
249+
attributes:
250+
- key: transaction.root
251+
- key: transaction.type
252+
- key: metricset.name
253+
default_value: service_transaction
254+
- key: elasticsearch.mapping.hints
255+
default_value: [aggregate_metric_double]
256+
unit: us
257+
histogram:
258+
buckets: [1]
259+
value: Microseconds(end_time - start_time)
260+
- name: transaction.duration.histogram
261+
description: APM transaction aggregated metrics as histogram
262+
ephemeral_resource_attribute: true
263+
include_resource_attributes:
264+
- key: service.name
265+
- key: deployment.environment # service.environment
266+
- key: telemetry.sdk.language # service.language.name
267+
- key: agent.name # set via elastictraceprocessor
268+
- key: container.id
269+
- key: k8s.pod.name
270+
- key: service.version
271+
- key: service.instance.id # service.node.name
272+
- key: process.runtime.name # service.runtime.name
273+
- key: process.runtime.version # service.runtime.version
274+
- key: telemetry.sdk.version # service.language.version??
275+
- key: host.name
276+
- key: os.type # host.os.platform
277+
- key: faas.instance
278+
- key: faas.name
279+
- key: faas.version
280+
- key: cloud.provider
281+
- key: cloud.region
282+
- key: cloud.availability_zone
283+
- key: cloud.platform # cloud.servicename
284+
- key: cloud.account.id
285+
attributes:
286+
- key: transaction.root
287+
- key: transaction.name
288+
- key: transaction.type
289+
- key: transaction.result
290+
- key: event.outcome
291+
- key: metricset.name
292+
default_value: transaction
293+
- key: elasticsearch.mapping.hints
294+
default_value: [_doc_count]
295+
unit: us
296+
exponential_histogram:
297+
value: Microseconds(end_time - start_time)
298+
- name: transaction.duration.summary
299+
description: APM transaction aggregated metrics as summary
300+
ephemeral_resource_attribute: true
301+
include_resource_attributes:
302+
- key: service.name
303+
- key: deployment.environment # service.environment
304+
- key: telemetry.sdk.language # service.language.name
305+
- key: agent.name # set via elastictraceprocessor
306+
- key: container.id
307+
- key: k8s.pod.name
308+
- key: service.version
309+
- key: service.instance.id # service.node.name
310+
- key: process.runtime.name # service.runtime.name
311+
- key: process.runtime.version # service.runtime.version
312+
- key: telemetry.sdk.version # service.language.version??
313+
- key: host.name
314+
- key: os.type # host.os.platform
315+
- key: faas.instance
316+
- key: faas.name
317+
- key: faas.version
318+
- key: cloud.provider
319+
- key: cloud.region
320+
- key: cloud.availability_zone
321+
- key: cloud.platform # cloud.servicename
322+
- key: cloud.account.id
323+
attributes:
324+
- key: transaction.root
325+
- key: transaction.name
326+
- key: transaction.type
327+
- key: transaction.result
328+
- key: event.outcome
329+
- key: metricset.name
330+
default_value: transaction
331+
- key: elasticsearch.mapping.hints
332+
default_value: [aggregate_metric_double]
333+
unit: us
334+
histogram:
335+
buckets: [1]
336+
value: Microseconds(end_time - start_time)
337+
- name: span.destination.service.response_time.sum.us
338+
description: APM span destination metrics
339+
ephemeral_resource_attribute: true
340+
include_resource_attributes:
341+
- key: service.name
342+
- key: deployment.environment # service.environment
343+
- key: telemetry.sdk.language # service.language.name
344+
- key: agent.name # set via elastictraceprocessor
345+
attributes:
346+
- key: span.name
347+
- key: event.outcome
348+
- key: service.target.type
349+
- key: service.target.name
350+
- key: span.destination.service.resource
351+
- key: metricset.name
352+
default_value: service_destination
353+
unit: us
354+
sum:
355+
value: Double(Microseconds(end_time - start_time))
356+
- name: span.destination.service.response_time.count
357+
description: APM span destination metrics
358+
ephemeral_resource_attribute: true
359+
include_resource_attributes:
360+
- key: service.name
361+
- key: deployment.environment # service.environment
362+
- key: telemetry.sdk.language # service.language.name
363+
- key: agent.name # set via elastictraceprocessor
364+
attributes:
365+
- key: span.name
366+
- key: event.outcome
367+
- key: service.target.type
368+
- key: service.target.name
369+
- key: span.destination.service.resource
370+
- key: metricset.name
371+
default_value: service_destination
372+
sum:
373+
value: Int(AdjustedCount())
374+
# event.success_count is populated using 2 metric definition with different conditions
375+
# and value for the histogram bucket based on event outcome. Both metric definition
376+
# are created using same name and attribute and will result in a single histogram.
377+
# We use mapping hint of aggregate_metric_double, so, only the sum and the count
378+
# values are required and the actual histogram bucket is ignored.
379+
- name: event.success_count
380+
description: Success count as a metric for service transaction
381+
include_resource_attributes:
382+
- key: service.name
383+
- key: deployment.environment # service.environment
384+
- key: telemetry.sdk.language # service.language.name
385+
- key: agent.name # set via elastictraceprocessor
386+
attributes:
387+
- key: transaction.root
388+
- key: transaction.type
389+
- key: metricset.name
390+
default_value: service_transaction
391+
- key: elasticsearch.mapping.hints
392+
default_value: [aggregate_metric_double]
393+
conditions:
394+
- attributes["event.outcome"] != nil and attributes["event.outcome"] == "success"
395+
unit: us
396+
histogram:
397+
buckets: [1]
398+
count: Int(AdjustedCount())
399+
value: Int(AdjustedCount())
400+
- name: event.success_count
401+
description: Success count as a metric for service transaction
402+
include_resource_attributes:
403+
- key: service.name
404+
- key: deployment.environment # service.environment
405+
- key: telemetry.sdk.language # service.language.name
406+
- key: agent.name # set via elastictraceprocessor
407+
attributes:
408+
- key: transaction.root
409+
- key: transaction.type
410+
- key: metricset.name
411+
default_value: service_transaction
412+
- key: elasticsearch.mapping.hints
413+
default_value: [aggregate_metric_double]
414+
conditions:
415+
- attributes["event.outcome"] != nil and attributes["event.outcome"] != "success"
416+
unit: us
417+
histogram:
418+
buckets: [0]
419+
count: Int(AdjustedCount())
420+
value: Double(0)
187421
exporters:
188422
debug:
189423
verbosity: basic
190-
elasticsearch/apm:
191-
endpoints:
192-
- ${env:ELASTIC_ENDPOINT}
193-
api_key: ${env:ELASTIC_API_KEY}
194-
logs_dynamic_index:
195-
enabled: true
196-
mapping:
197-
mode: ecs
198424
elasticsearch/otel:
199425
endpoints:
200426
- ${env:ELASTIC_ENDPOINT}
201427
api_key: ${env:ELASTIC_API_KEY}
428+
metrics_dynamic_index:
429+
enabled: true
202430
logs_dynamic_index:
203431
enabled: true
432+
traces_dynamic_index:
433+
enabled: true
434+
flush:
435+
interval: 10s
204436
# tls:
205437
# insecure_skip_verify: true
206438
mapping:
@@ -215,6 +447,24 @@ collectors:
215447
mode: ecs
216448
processors:
217449
batch: {}
450+
elastictrace:
451+
lsminterval:
452+
intervals:
453+
- duration: 1m
454+
statements:
455+
- set(resource.attributes["metricset.interval"], "1m")
456+
- set(attributes["data_stream.dataset"], Concat([attributes["metricset.name"], "1m"], "."))
457+
- set(attributes["processor.event"], "metric")
458+
- duration: 10m
459+
statements:
460+
- set(resource.attributes["metricset.interval"], "10m")
461+
- set(attributes["data_stream.dataset"], Concat([attributes["metricset.name"], "10m"], "."))
462+
- set(attributes["processor.event"], "metric")
463+
- duration: 60m
464+
statements:
465+
- set(resource.attributes["metricset.interval"], "60m")
466+
- set(attributes["data_stream.dataset"], Concat([attributes["metricset.name"], "60m"], "."))
467+
- set(attributes["processor.event"], "metric")
218468
elasticinframetrics:
219469
add_system_metrics: true
220470
add_k8s_metrics: true
@@ -515,30 +765,43 @@ collectors:
515765
exporters:
516766
- debug
517767
- elasticsearch/ecs
518-
metrics/apm:
768+
metrics/otel-apm:
519769
receivers:
520770
- otlp
521771
processors:
522772
- batch
523773
exporters:
524774
- debug
525-
- elasticsearch/apm
775+
- signaltometrics
776+
- elasticsearch/otel
526777
logs/apm:
527778
receivers:
528779
- otlp
529780
processors:
530781
- batch
531782
exporters:
532783
- debug
533-
- elasticsearch/apm
784+
- signaltometrics
785+
- elasticsearch/otel
534786
traces/apm:
535787
receivers:
536788
- otlp
537789
processors:
538790
- batch
791+
- elastictrace
539792
exporters:
540793
- debug
541-
- elasticsearch/apm
794+
- signaltometrics
795+
- elasticsearch/otel
796+
metrics/aggregated-otel-metrics:
797+
receivers:
798+
- signaltometrics
799+
processors:
800+
- batch
801+
- lsminterval
802+
exporters:
803+
- debug
804+
- elasticsearch/otel
542805

543806
instrumentation:
544807
name: elastic-instrumentation

0 commit comments

Comments
 (0)