summaryrefslogtreecommitdiffstats
path: root/src/aclk/aclk-schemas/proto/nodeinstance/info/v1/info.proto
blob: 7aa9d0448164e4b362a961dc23076b37c1ebd913 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
syntax = "proto3";
option go_package = "node_instance/info/v1;nodeinstanceinfo";

package nodeinstance.info.v1;

import "google/protobuf/timestamp.proto";
import "proto/aclk/v1/lib.proto";

// UpdateNodeInfo (Command)
//
// pulsar topic: `UpdateNodeInfo` (sharded)
//
// key: `claim_id,node_id`
//
// Publishers: `netdata/agent`
// Subscribers: `cloud-node-mqtt-output-service`
//
// When:
//  On nodeinstance connect
//
message UpdateNodeInfo {
  string node_id = 7;

  string claim_id = 1;

  NodeInfo data = 2;
  // to be obsoleted in future
  // all new fields should go into node_info
  // or node_instance_info respectively

  google.protobuf.Timestamp updated_at = 3;

  int64 session_id = 4;

  string machine_guid = 5;

  bool child = 6;

  MachineLearningInfo ml_info = 8;
  // to be obsoleted in far future

  NodeInfo2 node_info = 9;
  // node_info shows data about actual node
  // for example feature (ml) for this
  // node (child) might be available/enabled on the node (child) directly
  // but not available trough the parent (node_instance)

  NodeInstanceInfo node_instance_info = 10;
  // info specific to the node_instance for this node available trough agent
  // who sends this message.
  // e.g. machine learning is enabled for this node and processing is done
  // by the actual agent (parent). (child itself might or might not be
  // ml ml_capable by itself (see node_info))
}

message NodeInfo2 {
  repeated  aclk_lib.v1.Capability capabilities = 1;
}

message NodeInstanceInfo {
  repeated  aclk_lib.v1.Capability capabilities = 1;
}

// NodeInfo describes the metadata of a node
message NodeInfo {
  string name = 1;

  string os = 2;
  string os_name = 3;
  string os_version = 4;

  string kernel_name = 5;
  string kernel_version = 6;

  string architecture = 7;

  // number of cpu cores in the node
  uint32 cpus = 8;

  // human readable (value + unit) frequency of cpu
  string cpu_frequency = 9;

  // human readable (value + unit) size of node's memory
  string memory = 10;

  // human readable (value + unit) size of all (sum) node's disks
  string disk_space = 11;

  // version of the netdata agent
  string version = 12;

  // release channel of netdata agent (example: nightly)
  string release_channel = 13;

  string timezone = 14;

  // virtualization_type example: kvm (optional)
  string virtualization_type = 15;

  // container_type example: docker (optional)
  string container_type = 16;

  string custom_info = 17;

  // [Obsolete] repeated string services = 18;
  reserved 18;

  string machine_guid = 19;

  // [Obsolete] repeated MirroredHostStatus mirrored_hosts_status = 20;
  reserved 20;

  map<string, string> host_labels = 21;

  MachineLearningInfo ml_info = 22;
  
  // [Obsolete] repeated string collectors = 23;
  reserved 23;
}

message MachineLearningInfo {
  // have ML capability
  bool ml_capable = 1;

  // runs ML functionality
  bool ml_enabled = 2;
}

// UpdateNodeCollectors (Command)
//
// key: `claim_id,node_id`
//
// Publishers: `netdata/agent`
//
// When:
//  On nodeinstance connect (after agent settles) and on detection of change of collectors
//

message CollectorInfo {
  string module = 1;
  string plugin = 2;
}

message UpdateNodeCollectors {
  string claim_id = 1;
  string node_id = 2;
  repeated CollectorInfo collectors = 3;
}