github.com/netdata/go.d.plugin@v0.58.1/modules/logstash/charts.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package logstash 4 5 import ( 6 "fmt" 7 "strings" 8 9 "github.com/netdata/go.d.plugin/agent/module" 10 ) 11 12 const ( 13 prioJVMThreads = module.Priority + iota 14 prioJVMMemHeapUsed 15 prioJVMMemHeap 16 prioJVMMemPoolsEden 17 prioJVMMemPoolsSurvivor 18 prioJVMMemPoolsOld 19 prioJVMGCCollectorCount 20 prioJVMGCCollectorTime 21 prioOpenFileDescriptors 22 prioEvent 23 prioEventDuration 24 prioPipelineEvent 25 prioPipelineEventDurations 26 prioUptime 27 ) 28 29 var charts = module.Charts{ 30 // thread 31 { 32 ID: "jvm_threads", 33 Title: "JVM Threads", 34 Units: "count", 35 Fam: "threads", 36 Ctx: "logstash.jvm_threads", 37 Priority: prioJVMThreads, 38 Dims: module.Dims{ 39 {ID: "jvm_threads_count", Name: "threads"}, 40 }, 41 }, 42 // memory 43 { 44 ID: "jvm_mem_heap_used", 45 Title: "JVM Heap Memory Percentage", 46 Units: "percentage", 47 Fam: "memory", 48 Ctx: "logstash.jvm_mem_heap_used", 49 Priority: prioJVMMemHeapUsed, 50 Dims: module.Dims{ 51 {ID: "jvm_mem_heap_used_percent", Name: "in use"}, 52 }, 53 }, 54 { 55 ID: "jvm_mem_heap", 56 Title: "JVM Heap Memory", 57 Units: "KiB", 58 Fam: "memory", 59 Ctx: "logstash.jvm_mem_heap", 60 Type: module.Area, 61 Priority: prioJVMMemHeap, 62 Dims: module.Dims{ 63 {ID: "jvm_mem_heap_committed_in_bytes", Name: "committed", Div: 1024}, 64 {ID: "jvm_mem_heap_used_in_bytes", Name: "used", Div: 1024}, 65 }, 66 }, 67 { 68 ID: "jvm_mem_pools_eden", 69 Title: "JVM Pool Eden Memory", 70 Units: "KiB", 71 Fam: "memory", 72 Ctx: "logstash.jvm_mem_pools_eden", 73 Type: module.Area, 74 Priority: prioJVMMemPoolsEden, 75 Dims: module.Dims{ 76 {ID: "jvm_mem_pools_eden_committed_in_bytes", Name: "committed", Div: 1024}, 77 {ID: "jvm_mem_pools_eden_used_in_bytes", Name: "used", Div: 1024}, 78 }, 79 }, 80 { 81 ID: "jvm_mem_pools_survivor", 82 Title: "JVM Pool Survivor Memory", 83 Units: "KiB", 84 Fam: "memory", 85 Ctx: "logstash.jvm_mem_pools_survivor", 86 Type: module.Area, 87 Priority: prioJVMMemPoolsSurvivor, 88 Dims: module.Dims{ 89 {ID: "jvm_mem_pools_survivor_committed_in_bytes", Name: "committed", Div: 1024}, 90 {ID: "jvm_mem_pools_survivor_used_in_bytes", Name: "used", Div: 1024}, 91 }, 92 }, 93 { 94 ID: "jvm_mem_pools_old", 95 Title: "JVM Pool Old Memory", 96 Units: "KiB", 97 Fam: "memory", 98 Ctx: "logstash.jvm_mem_pools_old", 99 Type: module.Area, 100 Priority: prioJVMMemPoolsOld, 101 Dims: module.Dims{ 102 {ID: "jvm_mem_pools_old_committed_in_bytes", Name: "committed", Div: 1024}, 103 {ID: "jvm_mem_pools_old_used_in_bytes", Name: "used", Div: 1024}, 104 }, 105 }, 106 // garbage collection 107 { 108 ID: "jvm_gc_collector_count", 109 Title: "Garbage Collection Count", 110 Units: "counts/s", 111 Fam: "garbage collection", 112 Ctx: "logstash.jvm_gc_collector_count", 113 Priority: prioJVMGCCollectorCount, 114 Dims: module.Dims{ 115 {ID: "jvm_gc_collectors_eden_collection_count", Name: "eden", Algo: module.Incremental}, 116 {ID: "jvm_gc_collectors_old_collection_count", Name: "old", Algo: module.Incremental}, 117 }, 118 }, 119 { 120 ID: "jvm_gc_collector_time", 121 Title: "Time Spent On Garbage Collection", 122 Units: "ms", 123 Fam: "garbage collection", 124 Ctx: "logstash.jvm_gc_collector_time", 125 Priority: prioJVMGCCollectorTime, 126 Dims: module.Dims{ 127 {ID: "jvm_gc_collectors_eden_collection_time_in_millis", Name: "eden", Algo: module.Incremental}, 128 {ID: "jvm_gc_collectors_old_collection_time_in_millis", Name: "old", Algo: module.Incremental}, 129 }, 130 }, 131 // processes 132 { 133 ID: "open_file_descriptors", 134 Title: "Open File Descriptors", 135 Units: "fd", 136 Fam: "processes", 137 Ctx: "logstash.open_file_descriptors", 138 Priority: prioOpenFileDescriptors, 139 Dims: module.Dims{ 140 {ID: "process_open_file_descriptors", Name: "open"}, 141 }, 142 }, 143 // events 144 { 145 ID: "event", 146 Title: "Events Overview", 147 Units: "events/s", 148 Fam: "events", 149 Ctx: "logstash.event", 150 Priority: prioEvent, 151 Dims: module.Dims{ 152 {ID: "event_in", Name: "in", Algo: module.Incremental}, 153 {ID: "event_filtered", Name: "filtered", Algo: module.Incremental}, 154 {ID: "event_out", Name: "out", Algo: module.Incremental}, 155 }, 156 }, 157 { 158 ID: "event_duration", 159 Title: "Events Duration", 160 Units: "seconds", 161 Fam: "events", 162 Ctx: "logstash.event_duration", 163 Priority: prioEventDuration, 164 Dims: module.Dims{ 165 {ID: "event_duration_in_millis", Name: "event", Div: 1000, Algo: module.Incremental}, 166 {ID: "event_queue_push_duration_in_millis", Name: "queue", Div: 1000, Algo: module.Incremental}, 167 }, 168 }, 169 // uptime 170 { 171 ID: "uptime", 172 Title: "Uptime", 173 Units: "seconds", 174 Fam: "uptime", 175 Ctx: "logstash.uptime", 176 Priority: prioUptime, 177 Dims: module.Dims{ 178 {ID: "jvm_uptime_in_millis", Name: "uptime", Div: 1000}, 179 }, 180 }, 181 } 182 183 var pipelineChartsTmpl = module.Charts{ 184 { 185 ID: "pipeline_%s_event", 186 Title: "Pipeline Events", 187 Units: "events/s", 188 Fam: "pipeline events", 189 Ctx: "logstash.pipeline_event", 190 Priority: prioPipelineEvent, 191 Dims: module.Dims{ 192 {ID: "pipelines_%s_event_in", Name: "in", Algo: module.Incremental}, 193 {ID: "pipelines_%s_event_filtered", Name: "filtered", Algo: module.Incremental}, 194 {ID: "pipelines_%s_event_out", Name: "out", Algo: module.Incremental}, 195 }, 196 }, 197 { 198 ID: "pipeline_%s_event_duration", 199 Title: "Pipeline Events Duration", 200 Units: "seconds", 201 Fam: "pipeline events duration", 202 Ctx: "logstash.pipeline_event_duration", 203 Priority: prioPipelineEventDurations, 204 Dims: module.Dims{ 205 {ID: "pipelines_%s_event_duration_in_millis", Name: "event", Div: 1000, Algo: module.Incremental}, 206 {ID: "pipelines_%s_event_queue_push_duration_in_millis", Name: "queue", Div: 1000, Algo: module.Incremental}, 207 }, 208 }, 209 } 210 211 func (l *Logstash) addPipelineCharts(id string) { 212 charts := pipelineChartsTmpl.Copy() 213 214 for _, chart := range *charts { 215 chart.ID = fmt.Sprintf(chart.ID, id) 216 chart.Labels = []module.Label{ 217 {Key: "pipeline", Value: id}, 218 } 219 for _, dim := range chart.Dims { 220 dim.ID = fmt.Sprintf(dim.ID, id) 221 } 222 } 223 224 if err := l.Charts().Add(*charts...); err != nil { 225 l.Warning(err) 226 } 227 } 228 229 func (l *Logstash) removePipelineCharts(id string) { 230 for _, chart := range *l.Charts() { 231 if strings.HasPrefix(chart.ID, "pipeline_"+id) { 232 chart.MarkRemove() 233 chart.MarkNotCreated() 234 } 235 } 236 }