@@ -21,16 +21,9 @@ use anyhow::anyhow;
21
21
use arrow_schema:: Field ;
22
22
use bytes:: Bytes ;
23
23
use chrono:: { DateTime , NaiveDateTime , Utc } ;
24
- use nom:: AsBytes ;
25
- use opentelemetry_proto:: tonic:: {
26
- logs:: v1:: LogsData , metrics:: v1:: MetricsData , trace:: v1:: TracesData ,
27
- } ;
28
24
use itertools:: Itertools ;
29
25
use serde_json:: Value ;
30
- use std:: {
31
- collections:: { BTreeMap , HashMap } ,
32
- sync:: Arc ,
33
- } ;
26
+ use std:: { collections:: HashMap , sync:: Arc } ;
34
27
35
28
use crate :: {
36
29
event:: {
@@ -39,11 +32,9 @@ use crate::{
39
32
} ,
40
33
handlers:: {
41
34
http:: { ingest:: PostError , kinesis} ,
42
- LOG_SOURCE_KEY , LOG_SOURCE_KINESIS , LOG_SOURCE_OTEL_LOGS , LOG_SOURCE_OTEL_METRICS ,
43
- LOG_SOURCE_OTEL_TRACES , PREFIX_META , PREFIX_TAGS , SEPARATOR ,
35
+ LOG_SOURCE_KEY , LOG_SOURCE_KINESIS , PREFIX_META , PREFIX_TAGS , SEPARATOR ,
44
36
} ,
45
37
metadata:: { SchemaVersion , STREAM_INFO } ,
46
- otel:: { logs:: flatten_otel_logs, metrics:: flatten_otel_metrics, traces:: flatten_otel_traces} ,
47
38
storage:: StreamType ,
48
39
utils:: { header_parsing:: collect_labelled_headers, json:: convert_array_to_object} ,
49
40
} ;
@@ -57,32 +48,19 @@ pub async fn flatten_and_push_logs(
57
48
push_logs ( stream_name, & req, & body) . await ?;
58
49
return Ok ( ( ) ) ;
59
50
} ;
60
- let mut json: Vec < BTreeMap < String , Value > > = Vec :: new ( ) ;
61
- match log_source. to_str ( ) . unwrap ( ) {
62
- LOG_SOURCE_KINESIS => json = kinesis:: flatten_kinesis_logs ( & body) ,
63
- //custom flattening required for otel logs
64
- LOG_SOURCE_OTEL_LOGS => {
65
- let logs: LogsData = serde_json:: from_slice ( body. as_bytes ( ) ) ?;
66
- json = flatten_otel_logs ( & logs) ;
67
- }
68
- //custom flattening required for otel metrics
69
- LOG_SOURCE_OTEL_METRICS => {
70
- let metrics: MetricsData = serde_json:: from_slice ( body. as_bytes ( ) ) ?;
71
- json = flatten_otel_metrics ( metrics) ;
72
- }
73
- //custom flattening required for otel traces
74
- LOG_SOURCE_OTEL_TRACES => {
75
- let traces: TracesData = serde_json:: from_slice ( body. as_bytes ( ) ) ?;
76
- json = flatten_otel_traces ( & traces) ;
77
- }
78
- log_source => {
79
- tracing:: warn!( "Unknown log source: {}" , log_source) ;
51
+ let log_source = log_source. to_str ( ) . unwrap ( ) ;
52
+ if log_source == LOG_SOURCE_KINESIS {
53
+ let json = kinesis:: flatten_kinesis_logs ( & body) ;
54
+ for record in json. iter ( ) {
55
+ let body: Bytes = serde_json:: to_vec ( record) . unwrap ( ) . into ( ) ;
80
56
push_logs ( stream_name, & req, & body) . await ?;
81
57
}
82
- }
83
-
84
- for record in json. iter_mut ( ) {
85
- let body: Bytes = serde_json:: to_vec ( record) . unwrap ( ) . into ( ) ;
58
+ } else if log_source. contains ( "otel" ) {
59
+ return Err ( PostError :: Invalid ( anyhow ! (
60
+ "Please use endpoints `/v1/logs` for otel logs, `/v1/metrics` for otel metrics and `/v1/traces` for otel traces"
61
+ ) ) ) ;
62
+ } else {
63
+ tracing:: warn!( "Unknown log source: {}" , log_source) ;
86
64
push_logs ( stream_name, & req, & body) . await ?;
87
65
}
88
66
0 commit comments