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