@@ -31,42 +31,47 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
31
31
} ;
32
32
}
33
33
34
+ buildLogsDataFrame ( logs : any [ ] , target : MyQuery ) {
35
+ const fieldsMapping : { [ key : string ] : FieldType } = {
36
+ Utf8 : FieldType . string ,
37
+ Int64 : FieldType . number ,
38
+ timestamp : FieldType . time ,
39
+ } ;
40
+
41
+ const fields = [
42
+ { name : 'Time' , type : FieldType . time } ,
43
+ { name : 'Content' , type : FieldType . string } ,
44
+ ] ;
45
+
46
+ target . streamFields . forEach ( ( field : any ) => {
47
+ fields . push ( {
48
+ name : field . name ,
49
+ type : fieldsMapping [ field . type ] ,
50
+ } ) ;
51
+ } ) ;
52
+
53
+ const frame = new MutableDataFrame ( {
54
+ refId : target . refId ,
55
+ meta : {
56
+ preferredVisualisationType : 'logs' ,
57
+ } ,
58
+ fields,
59
+ } ) ;
60
+
61
+ logs . forEach ( ( log : any ) => {
62
+ frame . add ( { ...log , Content : JSON . stringify ( log ) } ) ;
63
+ } ) ;
64
+
65
+ return frame ;
66
+ }
67
+
34
68
async query ( options : DataQueryRequest < MyQuery > ) : Promise < DataQueryResponse > {
35
69
const timestamps = this . getConsumableTime ( options . range ) ;
36
70
const promises = options . targets . map ( ( target ) => {
37
- // Your code goes here.
38
71
const reqData = this . buildQuery ( target , timestamps ) ;
39
72
return this . doRequest ( target , reqData )
40
73
. then ( ( response ) => {
41
- const frame = new MutableDataFrame ( {
42
- refId : target . refId ,
43
- meta : {
44
- preferredVisualisationType : 'logs' ,
45
- } ,
46
- fields : [
47
- { name : 'Time' , type : FieldType . time } ,
48
- { name : 'log' , type : FieldType . string } ,
49
- { name : 'kubernetes_container_hash' , type : FieldType . string } ,
50
- { name : 'kubernetes_container_image' , type : FieldType . string } ,
51
- { name : 'kubernetes_container_name' , type : FieldType . string } ,
52
- { name : 'kubernetes_docker_id' , type : FieldType . string } ,
53
- { name : 'kubernetes_labels_app_kubernetes_io_instance' , type : FieldType . string } ,
54
- { name : 'kubernetes_host' , type : FieldType . string } ,
55
- ] ,
56
- } ) ;
57
- response . hits . forEach ( ( point : any ) => {
58
- frame . appendRow ( [
59
- point . time ,
60
- point . log ,
61
- point . kubernetes_container_hash ,
62
- point . kubernetes_container_image ,
63
- point . kubernetes_container_name ,
64
- point . kubernetes_docker_id ,
65
- point . kubernetes_labels_app_kubernetes_io_instance ,
66
- point . kubernetes_host ,
67
- ] ) ;
68
- } ) ;
69
- return frame ;
74
+ return this . buildLogsDataFrame ( response . hits , target ) ;
70
75
} )
71
76
. catch ( ( err ) => {
72
77
let error = '' ;
0 commit comments