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 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
|
package collector
import "encoding/json"
// nodeStatsResponse is a representation of a Elasticsearch Node Stats
type nodeStatsResponse struct {
ClusterName string `json:"cluster_name"`
Nodes map[string]NodeStatsNodeResponse
}
// NodeStatsNodeResponse defines node stats information structure for nodes
type NodeStatsNodeResponse struct {
Name string `json:"name"`
Host string `json:"host"`
Timestamp int64 `json:"timestamp"`
TransportAddress string `json:"transport_address"`
Hostname string `json:"hostname"`
Roles []string `json:"roles"`
Attributes map[string]string `json:"attributes"`
Indices NodeStatsIndicesResponse `json:"indices"`
OS NodeStatsOSResponse `json:"os"`
Network NodeStatsNetworkResponse `json:"network"`
FS NodeStatsFSResponse `json:"fs"`
ThreadPool map[string]NodeStatsThreadPoolPoolResponse `json:"thread_pool"`
JVM NodeStatsJVMResponse `json:"jvm"`
Breakers map[string]NodeStatsBreakersResponse `json:"breakers"`
HTTP map[string]int `json:"http"`
Transport NodeStatsTransportResponse `json:"transport"`
Process NodeStatsProcessResponse `json:"process"`
}
// NodeStatsBreakersResponse is a representation of a statistics about the field data circuit breaker
type NodeStatsBreakersResponse struct {
EstimatedSize int64 `json:"estimated_size_in_bytes"`
LimitSize int64 `json:"limit_size_in_bytes"`
Overhead float64 `json:"overhead"`
Tripped int64 `json:"tripped"`
}
// NodeStatsJVMResponse is a representation of a JVM stats, memory pool information, garbage collection, buffer pools, number of loaded/unloaded classes
type NodeStatsJVMResponse struct {
BufferPools map[string]NodeStatsJVMBufferPoolResponse `json:"buffer_pools"`
GC NodeStatsJVMGCResponse `json:"gc"`
Mem NodeStatsJVMMemResponse `json:"mem"`
}
// NodeStatsJVMGCResponse defines node stats JVM garbage collector information structure
type NodeStatsJVMGCResponse struct {
Collectors map[string]NodeStatsJVMGCCollectorResponse `json:"collectors"`
}
// NodeStatsJVMGCCollectorResponse defines node stats JVM garbage collector collection information structure
type NodeStatsJVMGCCollectorResponse struct {
CollectionCount int64 `json:"collection_count"`
CollectionTime int64 `json:"collection_time_in_millis"`
}
// NodeStatsJVMBufferPoolResponse defines node stats JVM buffer pool information structure
type NodeStatsJVMBufferPoolResponse struct {
Count int64 `json:"count"`
TotalCapacity int64 `json:"total_capacity_in_bytes"`
Used int64 `json:"used_in_bytes"`
}
// NodeStatsJVMMemResponse defines node stats JVM memory information structure
type NodeStatsJVMMemResponse struct {
HeapCommitted int64 `json:"heap_committed_in_bytes"`
HeapUsed int64 `json:"heap_used_in_bytes"`
HeapMax int64 `json:"heap_max_in_bytes"`
NonHeapCommitted int64 `json:"non_heap_committed_in_bytes"`
NonHeapUsed int64 `json:"non_heap_used_in_bytes"`
Pools map[string]NodeStatsJVMMemPoolResponse `json:"pools"`
}
// NodeStatsJVMMemPoolResponse defines node stats JVM memory pool information structure
type NodeStatsJVMMemPoolResponse struct {
Used int64 `json:"used_in_bytes"`
Max int64 `json:"max_in_bytes"`
PeakUsed int64 `json:"peak_used_in_bytes"`
PeakMax int64 `json:"peak_max_in_bytes"`
}
// NodeStatsNetworkResponse defines node stats network information structure
type NodeStatsNetworkResponse struct {
TCP NodeStatsTCPResponse `json:"tcp"`
}
// NodeStatsTransportResponse is a representation of a transport statistics about sent and received bytes in cluster communication
type NodeStatsTransportResponse struct {
ServerOpen int64 `json:"server_open"`
RxCount int64 `json:"rx_count"`
RxSize int64 `json:"rx_size_in_bytes"`
TxCount int64 `json:"tx_count"`
TxSize int64 `json:"tx_size_in_bytes"`
}
// NodeStatsThreadPoolPoolResponse is a representation of a statistics about each thread pool, including current size, queue and rejected tasks
type NodeStatsThreadPoolPoolResponse struct {
Threads int64 `json:"threads"`
Queue int64 `json:"queue"`
Active int64 `json:"active"`
Rejected int64 `json:"rejected"`
Largest int64 `json:"largest"`
Completed int64 `json:"completed"`
}
// NodeStatsTCPResponse defines node stats TCP information structure
type NodeStatsTCPResponse struct {
ActiveOpens int64 `json:"active_opens"`
PassiveOpens int64 `json:"passive_opens"`
CurrEstab int64 `json:"curr_estab"`
InSegs int64 `json:"in_segs"`
OutSegs int64 `json:"out_segs"`
RetransSegs int64 `json:"retrans_segs"`
EstabResets int64 `json:"estab_resets"`
AttemptFails int64 `json:"attempt_fails"`
InErrs int64 `json:"in_errs"`
OutRsts int64 `json:"out_rsts"`
}
// NodeStatsIndicesResponse is a representation of a indices stats (size, document count, indexing and deletion times, search times, field cache size, merges and flushes)
type NodeStatsIndicesResponse struct {
Docs NodeStatsIndicesDocsResponse
Store NodeStatsIndicesStoreResponse
Indexing NodeStatsIndicesIndexingResponse
Merges NodeStatsIndicesMergesResponse
Get NodeStatsIndicesGetResponse
Search NodeStatsIndicesSearchResponse
FieldData NodeStatsIndicesCacheResponse `json:"fielddata"`
FilterCache NodeStatsIndicesCacheResponse `json:"filter_cache"`
QueryCache NodeStatsIndicesCacheResponse `json:"query_cache"`
RequestCache NodeStatsIndicesCacheResponse `json:"request_cache"`
Flush NodeStatsIndicesFlushResponse
Warmer NodeStatsIndicesWarmerResponse
Segments NodeStatsIndicesSegmentsResponse
Refresh NodeStatsIndicesRefreshResponse
Translog NodeStatsIndicesTranslogResponse
Completion NodeStatsIndicesCompletionResponse
}
// NodeStatsIndicesDocsResponse defines node stats docs information structure for indices
type NodeStatsIndicesDocsResponse struct {
Count int64 `json:"count"`
Deleted int64 `json:"deleted"`
}
// NodeStatsIndicesRefreshResponse defines node stats refresh information structure for indices
type NodeStatsIndicesRefreshResponse struct {
Total int64 `json:"total"`
TotalTime int64 `json:"total_time_in_millis"`
}
// NodeStatsIndicesTranslogResponse defines node stats translog information structure for indices
type NodeStatsIndicesTranslogResponse struct {
Operations int64 `json:"operations"`
Size int64 `json:"size_in_bytes"`
}
// NodeStatsIndicesCompletionResponse defines node stats completion information structure for indices
type NodeStatsIndicesCompletionResponse struct {
Size int64 `json:"size_in_bytes"`
}
// NodeStatsIndicesSegmentsResponse defines node stats segments information structure for indices
type NodeStatsIndicesSegmentsResponse struct {
Count int64 `json:"count"`
Memory int64 `json:"memory_in_bytes"`
TermsMemory int64 `json:"terms_memory_in_bytes"`
IndexWriterMemory int64 `json:"index_writer_memory_in_bytes"`
NormsMemory int64 `json:"norms_memory_in_bytes"`
StoredFieldsMemory int64 `json:"stored_fields_memory_in_bytes"`
FixedBitSet int64 `json:"fixed_bit_set_memory_in_bytes"`
DocValuesMemory int64 `json:"doc_values_memory_in_bytes"`
TermVectorsMemory int64 `json:"term_vectors_memory_in_bytes"`
PointsMemory int64 `json:"points_memory_in_bytes"`
VersionMapMemory int64 `json:"version_map_memory_in_bytes"`
}
// NodeStatsIndicesStoreResponse defines node stats store information structure for indices
type NodeStatsIndicesStoreResponse struct {
Size int64 `json:"size_in_bytes"`
ThrottleTime int64 `json:"throttle_time_in_millis"`
}
// NodeStatsIndicesIndexingResponse defines node stats indexing information structure for indices
type NodeStatsIndicesIndexingResponse struct {
IndexTotal int64 `json:"index_total"`
IndexTime int64 `json:"index_time_in_millis"`
IndexCurrent int64 `json:"index_current"`
DeleteTotal int64 `json:"delete_total"`
DeleteTime int64 `json:"delete_time_in_millis"`
DeleteCurrent int64 `json:"delete_current"`
IsThrottled bool `json:"is_throttled"`
ThrottleTime int64 `json:"throttle_time_in_millis"`
}
// NodeStatsIndicesMergesResponse defines node stats merges information structure for indices
type NodeStatsIndicesMergesResponse struct {
Current int64 `json:"current"`
CurrentDocs int64 `json:"current_docs"`
CurrentSize int64 `json:"current_size_in_bytes"`
Total int64 `json:"total"`
TotalDocs int64 `json:"total_docs"`
TotalSize int64 `json:"total_size_in_bytes"`
TotalTime int64 `json:"total_time_in_millis"`
TotalThrottledTime int64 `json:"total_throttled_time_in_millis"`
}
// NodeStatsIndicesGetResponse defines node stats get information structure for indices
type NodeStatsIndicesGetResponse struct {
Total int64 `json:"total"`
Time int64 `json:"time_in_millis"`
ExistsTotal int64 `json:"exists_total"`
ExistsTime int64 `json:"exists_time_in_millis"`
MissingTotal int64 `json:"missing_total"`
MissingTime int64 `json:"missing_time_in_millis"`
Current int64 `json:"current"`
}
// NodeStatsIndicesSearchResponse defines node stats search information structure for indices
type NodeStatsIndicesSearchResponse struct {
OpenContext int64 `json:"open_contexts"`
QueryTotal int64 `json:"query_total"`
QueryTime int64 `json:"query_time_in_millis"`
QueryCurrent int64 `json:"query_current"`
FetchTotal int64 `json:"fetch_total"`
FetchTime int64 `json:"fetch_time_in_millis"`
FetchCurrent int64 `json:"fetch_current"`
SuggestTotal int64 `json:"suggest_total"`
SuggestTime int64 `json:"suggest_time_in_millis"`
ScrollTotal int64 `json:"scroll_total"`
ScrollTime int64 `json:"scroll_time_in_millis"`
}
// NodeStatsIndicesFlushResponse defines node stats flush information structure for indices
type NodeStatsIndicesFlushResponse struct {
Total int64 `json:"total"`
Time int64 `json:"total_time_in_millis"`
}
// NodeStatsIndicesWarmerResponse defines node stats warmer information structure for indices
type NodeStatsIndicesWarmerResponse struct {
Total int64 `json:"total"`
TotalTime int64 `json:"total_time_in_millis"`
}
// NodeStatsIndicesCacheResponse defines node stats cache information structure for indices
type NodeStatsIndicesCacheResponse struct {
Evictions int64 `json:"evictions"`
MemorySize int64 `json:"memory_size_in_bytes"`
CacheCount int64 `json:"cache_count"`
CacheSize int64 `json:"cache_size"`
HitCount int64 `json:"hit_count"`
MissCount int64 `json:"miss_count"`
TotalCount int64 `json:"total_count"`
}
// NodeStatsOSResponse is a representation of a operating system stats, load average, mem, swap
type NodeStatsOSResponse struct {
Timestamp int64 `json:"timestamp"`
Uptime int64 `json:"uptime_in_millis"`
// LoadAvg was an array of per-cpu values pre-2.0, and is a string in 2.0
// Leaving this here in case we want to implement parsing logic later
LoadAvg json.RawMessage `json:"load_average"`
CPU NodeStatsOSCPUResponse `json:"cpu"`
Mem NodeStatsOSMemResponse `json:"mem"`
Swap NodeStatsOSSwapResponse `json:"swap"`
}
// NodeStatsOSMemResponse defines node stats operating system memory usage structure
type NodeStatsOSMemResponse struct {
Free int64 `json:"free_in_bytes"`
Used int64 `json:"used_in_bytes"`
ActualFree int64 `json:"actual_free_in_bytes"`
ActualUsed int64 `json:"actual_used_in_bytes"`
}
// NodeStatsOSSwapResponse defines node stats operating system swap usage structure
type NodeStatsOSSwapResponse struct {
Used int64 `json:"used_in_bytes"`
Free int64 `json:"free_in_bytes"`
}
// NodeStatsOSCPUResponse defines node stats operating system CPU usage structure
type NodeStatsOSCPUResponse struct {
Sys int64 `json:"sys"`
User int64 `json:"user"`
Idle int64 `json:"idle"`
Steal int64 `json:"stolen"`
LoadAvg NodeStatsOSCPULoadResponse `json:"load_average"`
Percent int64 `json:"percent"`
}
// NodeStatsOSCPULoadResponse defines node stats operating system CPU load structure
type NodeStatsOSCPULoadResponse struct {
Load1 float64 `json:"1m"`
Load5 float64 `json:"5m"`
Load15 float64 `json:"15m"`
}
// NodeStatsProcessResponse is a representation of a process statistics, memory consumption, cpu usage, open file descriptors
type NodeStatsProcessResponse struct {
Timestamp int64 `json:"timestamp"`
OpenFD int64 `json:"open_file_descriptors"`
MaxFD int64 `json:"max_file_descriptors"`
CPU NodeStatsProcessCPUResponse `json:"cpu"`
Memory NodeStatsProcessMemResponse `json:"mem"`
}
// NodeStatsProcessMemResponse defines node stats process memory usage structure
type NodeStatsProcessMemResponse struct {
Resident int64 `json:"resident_in_bytes"`
Share int64 `json:"share_in_bytes"`
TotalVirtual int64 `json:"total_virtual_in_bytes"`
}
// NodeStatsProcessCPUResponse defines node stats process CPU usage structure
type NodeStatsProcessCPUResponse struct {
Percent int64 `json:"percent"`
Sys int64 `json:"sys_in_millis"`
User int64 `json:"user_in_millis"`
Total int64 `json:"total_in_millis"`
}
// NodeStatsHTTPResponse defines node stats HTTP connections structure
type NodeStatsHTTPResponse struct {
CurrentOpen int64 `json:"current_open"`
TotalOpen int64 `json:"total_open"`
}
// NodeStatsFSResponse is a representation of a file system information, data path, free disk space, read/write stats
type NodeStatsFSResponse struct {
Timestamp int64 `json:"timestamp"`
Data []NodeStatsFSDataResponse `json:"data"`
IOStats NodeStatsFSIOStatsResponse `json:"io_stats"`
}
// NodeStatsFSDataResponse defines node stats filesystem data structure
type NodeStatsFSDataResponse struct {
Path string `json:"path"`
Mount string `json:"mount"`
Device string `json:"dev"`
Total int64 `json:"total_in_bytes"`
Free int64 `json:"free_in_bytes"`
Available int64 `json:"available_in_bytes"`
}
// NodeStatsFSIOStatsResponse defines node stats filesystem device structure
type NodeStatsFSIOStatsResponse struct {
Devices []NodeStatsFSIOStatsDeviceResponse `json:"devices"`
}
// NodeStatsFSIOStatsDeviceResponse is a representation of a node stat filesystem device
type NodeStatsFSIOStatsDeviceResponse struct {
DeviceName string `json:"device_name"`
Operations int64 `json:"operations"`
ReadOperations int64 `json:"read_operations"`
WriteOperations int64 `json:"write_operations"`
ReadSize int64 `json:"read_kilobytes"`
WriteSize int64 `json:"write_kilobytes"`
}
// ClusterHealthResponse is a representation of a Elasticsearch Cluster Health
type ClusterHealthResponse struct {
ActivePrimaryShards int64 `json:"active_primary_shards"`
ActiveShards int64 `json:"active_shards"`
ClusterName string `json:"cluster_name"`
DelayedUnassignedShards int64 `json:"delayed_unassigned_shards"`
InitializingShards int64 `json:"initializing_shards"`
NumberOfDataNodes int64 `json:"number_of_data_nodes"`
NumberOfInFlightFetch int64 `json:"number_of_in_flight_fetch"`
NumberOfNodes int64 `json:"number_of_nodes"`
NumberOfPendingTasks int64 `json:"number_of_pending_tasks"`
RelocatingShards int64 `json:"relocating_shards"`
Status string `json:"status"`
TimedOut bool `json:"timed_out"`
UnassignedShards int64 `json:"unassigned_shards"`
}
|