summaryrefslogtreecommitdiffstats
path: root/collectors/python.d.plugin/springboot
diff options
context:
space:
mode:
Diffstat (limited to 'collectors/python.d.plugin/springboot')
-rw-r--r--collectors/python.d.plugin/springboot/Makefile.inc13
-rw-r--r--collectors/python.d.plugin/springboot/README.md145
-rw-r--r--collectors/python.d.plugin/springboot/springboot.chart.py160
-rw-r--r--collectors/python.d.plugin/springboot/springboot.conf118
4 files changed, 0 insertions, 436 deletions
diff --git a/collectors/python.d.plugin/springboot/Makefile.inc b/collectors/python.d.plugin/springboot/Makefile.inc
deleted file mode 100644
index 06775f937..000000000
--- a/collectors/python.d.plugin/springboot/Makefile.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-# THIS IS NOT A COMPLETE Makefile
-# IT IS INCLUDED BY ITS PARENT'S Makefile.am
-# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT
-
-# install these files
-dist_python_DATA += springboot/springboot.chart.py
-dist_pythonconfig_DATA += springboot/springboot.conf
-
-# do not install these files, but include them in the distribution
-dist_noinst_DATA += springboot/README.md springboot/Makefile.inc
-
diff --git a/collectors/python.d.plugin/springboot/README.md b/collectors/python.d.plugin/springboot/README.md
deleted file mode 100644
index cdbc9a900..000000000
--- a/collectors/python.d.plugin/springboot/README.md
+++ /dev/null
@@ -1,145 +0,0 @@
-<!--
-title: "Java Spring Boot 2 application monitoring with Netdata"
-custom_edit_url: https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/springboot/README.md
-sidebar_label: "Java Spring Boot 2 applications"
--->
-
-# Java Spring Boot 2 application monitoring with Netdata
-
-Monitors one or more Java Spring-boot applications depending on configuration.
-Netdata can be used to monitor running Java [Spring Boot](https://spring.io/) applications that expose their metrics with the use of the **Spring Boot Actuator** included in Spring Boot library.
-
-## Configuration
-
-The Spring Boot Actuator exposes these metrics over HTTP and is very easy to use:
-
-- add `org.springframework.boot:spring-boot-starter-actuator` to your application dependencies
-- set `endpoints.metrics.sensitive=false` in your `application.properties`
-
-You can create custom Metrics by add and inject a PublicMetrics in your application.
-This is a example to add custom metrics:
-
-```java
-package com.example;
-
-import org.springframework.boot.actuate.endpoint.PublicMetrics;
-import org.springframework.boot.actuate.metrics.Metric;
-import org.springframework.stereotype.Service;
-
-import java.lang.management.ManagementFactory;
-import java.lang.management.MemoryPoolMXBean;
-import java.util.ArrayList;
-import java.util.Collection;
-
-@Service
-public class HeapPoolMetrics implements PublicMetrics {
-
- private static final String PREFIX = "mempool.";
- private static final String KEY_EDEN = PREFIX + "eden";
- private static final String KEY_SURVIVOR = PREFIX + "survivor";
- private static final String KEY_TENURED = PREFIX + "tenured";
-
- @Override
- public Collection<Metric<?>> metrics() {
- Collection<Metric<?>> result = new ArrayList<>(4);
- for (MemoryPoolMXBean mem : ManagementFactory.getMemoryPoolMXBeans()) {
- String poolName = mem.getName();
- String name = null;
- if (poolName.indexOf("Eden Space") != -1) {
- name = KEY_EDEN;
- } else if (poolName.indexOf("Survivor Space") != -1) {
- name = KEY_SURVIVOR;
- } else if (poolName.indexOf("Tenured Gen") != -1 || poolName.indexOf("Old Gen") != -1) {
- name = KEY_TENURED;
- }
-
- if (name != null) {
- result.add(newMemoryMetric(name, mem.getUsage().getMax()));
- result.add(newMemoryMetric(name + ".init", mem.getUsage().getInit()));
- result.add(newMemoryMetric(name + ".committed", mem.getUsage().getCommitted()));
- result.add(newMemoryMetric(name + ".used", mem.getUsage().getUsed()));
- }
- }
- return result;
- }
-
- private Metric<Long> newMemoryMetric(String name, long bytes) {
- return new Metric<>(name, bytes / 1024);
- }
-}
-```
-
-Please refer [Spring Boot Actuator: Production-ready Features](https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready) and [81. Actuator - Part IX. ‘How-to’ guides](https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-actuator) for more information.
-
-## Charts
-
-1. **Response Codes** in requests/s
-
- - 1xx
- - 2xx
- - 3xx
- - 4xx
- - 5xx
- - others
-
-2. **Threads**
-
- - daemon
- - total
-
-3. **GC Time** in milliseconds and **GC Operations** in operations/s
-
- - Copy
- - MarkSweep
- - ...
-
-4. **Heap Memory Usage** in KB
-
- - used
- - committed
-
-## Usage
-
-Edit the `python.d/springboot.conf` configuration file using `edit-config` from the Netdata [config
-directory](/docs/configure/nodes.md), which is typically at `/etc/netdata`.
-
-```bash
-cd /etc/netdata # Replace this path with your Netdata config directory, if different
-sudo ./edit-config python.d/springboot.conf
-```
-
-This module defines some common charts, and you can add custom charts by change the configurations.
-
-The configuration format is like:
-
-```yaml
-<id>:
- name: '<name>'
- url: '<metrics endpoint>' # ex. http://localhost:8080/metrics
- user: '<username>' # optional
- pass: '<password>' # optional
- defaults:
- [<chart-id>]: true|false
- extras:
- - id: '<chart-id>'
- options:
- title: '***'
- units: '***'
- family: '***'
- context: 'springboot.***'
- charttype: 'stacked' | 'area' | 'line'
- lines:
- - { dimension: 'myapp_ok', name: 'ok', algorithm: 'absolute', multiplier: 1, divisor: 1} # it shows "myapp.ok" metrics
- - { dimension: 'myapp_ng', name: 'ng', algorithm: 'absolute', multiplier: 1, divisor: 1} # it shows "myapp.ng" metrics
-```
-
-By default, it creates `response_code`, `threads`, `gc_time`, `gc_ope` abd `heap` charts.
-You can disable the default charts by set `defaults.<chart-id>: false`.
-
-The dimension name of extras charts should replace `.` to `_`.
-
-Please check
-[springboot.conf](https://raw.githubusercontent.com/netdata/netdata/master/collectors/python.d.plugin/springboot/springboot.conf)
-for more examples.
-
-
diff --git a/collectors/python.d.plugin/springboot/springboot.chart.py b/collectors/python.d.plugin/springboot/springboot.chart.py
deleted file mode 100644
index dbe11d6b8..000000000
--- a/collectors/python.d.plugin/springboot/springboot.chart.py
+++ /dev/null
@@ -1,160 +0,0 @@
-# -*- coding: utf-8 -*-
-# Description: tomcat netdata python.d module
-# Author: Wing924
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-import json
-
-from bases.FrameworkServices.UrlService import UrlService
-
-DEFAULT_ORDER = [
- 'response_code',
- 'threads',
- 'gc_time',
- 'gc_ope',
- 'heap',
-]
-
-DEFAULT_CHARTS = {
- 'response_code': {
- 'options': [None, "Response Codes", "requests/s", "response", "springboot.response_code", "stacked"],
- 'lines': [
- ["resp_other", 'Other', 'incremental'],
- ["resp_1xx", '1xx', 'incremental'],
- ["resp_2xx", '2xx', 'incremental'],
- ["resp_3xx", '3xx', 'incremental'],
- ["resp_4xx", '4xx', 'incremental'],
- ["resp_5xx", '5xx', 'incremental'],
- ]
- },
- 'threads': {
- 'options': [None, "Threads", "current threads", "threads", "springboot.threads", "area"],
- 'lines': [
- ["threads_daemon", 'daemon', 'absolute'],
- ["threads", 'total', 'absolute'],
- ]
- },
- 'gc_time': {
- 'options': [None, "GC Time", "milliseconds", "garbage collection", "springboot.gc_time", "stacked"],
- 'lines': [
- ["gc_copy_time", 'Copy', 'incremental'],
- ["gc_marksweepcompact_time", 'MarkSweepCompact', 'incremental'],
- ["gc_parnew_time", 'ParNew', 'incremental'],
- ["gc_concurrentmarksweep_time", 'ConcurrentMarkSweep', 'incremental'],
- ["gc_ps_scavenge_time", 'PS Scavenge', 'incremental'],
- ["gc_ps_marksweep_time", 'PS MarkSweep', 'incremental'],
- ["gc_g1_young_generation_time", 'G1 Young Generation', 'incremental'],
- ["gc_g1_old_generation_time", 'G1 Old Generation', 'incremental'],
- ]
- },
- 'gc_ope': {
- 'options': [None, "GC Operations", "operations/s", "garbage collection", "springboot.gc_ope", "stacked"],
- 'lines': [
- ["gc_copy_count", 'Copy', 'incremental'],
- ["gc_marksweepcompact_count", 'MarkSweepCompact', 'incremental'],
- ["gc_parnew_count", 'ParNew', 'incremental'],
- ["gc_concurrentmarksweep_count", 'ConcurrentMarkSweep', 'incremental'],
- ["gc_ps_scavenge_count", 'PS Scavenge', 'incremental'],
- ["gc_ps_marksweep_count", 'PS MarkSweep', 'incremental'],
- ["gc_g1_young_generation_count", 'G1 Young Generation', 'incremental'],
- ["gc_g1_old_generation_count", 'G1 Old Generation', 'incremental'],
- ]
- },
- 'heap': {
- 'options': [None, "Heap Memory Usage", "KiB", "heap memory", "springboot.heap", "area"],
- 'lines': [
- ["heap_committed", 'committed', "absolute"],
- ["heap_used", 'used', "absolute"],
- ]
- }
-}
-
-
-class ExtraChartError(ValueError):
- pass
-
-
-class Service(UrlService):
- def __init__(self, configuration=None, name=None):
- UrlService.__init__(self, configuration=configuration, name=name)
- self.url = self.configuration.get('url', "http://localhost:8080/metrics")
- self._setup_charts()
-
- def _get_data(self):
- """
- Format data received from http request
- :return: dict
- """
- raw_data = self._get_raw_data()
- if not raw_data:
- return None
-
- try:
- data = json.loads(raw_data)
- except ValueError:
- self.debug('%s is not a valid JSON page' % self.url)
- return None
-
- result = {
- 'resp_1xx': 0,
- 'resp_2xx': 0,
- 'resp_3xx': 0,
- 'resp_4xx': 0,
- 'resp_5xx': 0,
- 'resp_other': 0,
- }
-
- for key, value in data.iteritems():
- if 'counter.status.' in key:
- status_type = key[15:16] + 'xx'
- if status_type[0] not in '12345':
- status_type = 'other'
- result['resp_' + status_type] += value
- else:
- result[key.replace('.', '_')] = value
-
- return result or None
-
- def _setup_charts(self):
- self.order = []
- self.definitions = {}
- defaults = self.configuration.get('defaults', {})
-
- for chart in DEFAULT_ORDER:
- if defaults.get(chart, True):
- self.order.append(chart)
- self.definitions[chart] = DEFAULT_CHARTS[chart]
-
- for extra in self.configuration.get('extras', []):
- self._add_extra_chart(extra)
- self.order.append(extra['id'])
-
- def _add_extra_chart(self, chart):
- chart_id = chart.get('id', None) or self.die('id is not defined in extra chart')
- options = chart.get('options', None) or self.die('option is not defined in extra chart: %s' % chart_id)
- lines = chart.get('lines', None) or self.die('lines is not defined in extra chart: %s' % chart_id)
-
- title = options.get('title', None) or self.die('title is missing: %s' % chart_id)
- units = options.get('units', None) or self.die('units is missing: %s' % chart_id)
- family = options.get('family', title)
- context = options.get('context', 'springboot.' + title)
- charttype = options.get('charttype', 'line')
-
- result = {
- 'options': [None, title, units, family, context, charttype],
- 'lines': [],
- }
-
- for line in lines:
- dimension = line.get('dimension', None) or self.die('dimension is missing: %s' % chart_id)
- name = line.get('name', dimension)
- algorithm = line.get('algorithm', 'absolute')
- multiplier = line.get('multiplier', 1)
- divisor = line.get('divisor', 1)
- result['lines'].append([dimension, name, algorithm, multiplier, divisor])
-
- self.definitions[chart_id] = result
-
- @staticmethod
- def die(error_message):
- raise ExtraChartError(error_message)
diff --git a/collectors/python.d.plugin/springboot/springboot.conf b/collectors/python.d.plugin/springboot/springboot.conf
deleted file mode 100644
index 0cb369cd8..000000000
--- a/collectors/python.d.plugin/springboot/springboot.conf
+++ /dev/null
@@ -1,118 +0,0 @@
-# netdata python.d.plugin configuration for springboot
-#
-# This file is in YaML format. Generally the format is:
-#
-# name: value
-#
-# There are 2 sections:
-# - global variables
-# - one or more JOBS
-#
-# JOBS allow you to collect values from multiple sources.
-# Each source will have its own set of charts.
-#
-# JOB parameters have to be indented (using spaces only, example below).
-
-# ----------------------------------------------------------------------
-# Global Variables
-# These variables set the defaults for all JOBs, however each JOB
-# may define its own, overriding the defaults.
-
-# update_every sets the default data collection frequency.
-# If unset, the python.d.plugin default is used.
-# update_every: 1
-
-# priority controls the order of charts at the netdata dashboard.
-# Lower numbers move the charts towards the top of the page.
-# If unset, the default for python.d.plugin is used.
-# priority: 60000
-
-# penalty indicates whether to apply penalty to update_every in case of failures.
-# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes.
-# penalty: yes
-
-# autodetection_retry sets the job re-check interval in seconds.
-# The job is not deleted if check fails.
-# Attempts to start the job are made once every autodetection_retry.
-# This feature is disabled by default.
-# autodetection_retry: 0
-
-# ----------------------------------------------------------------------
-# JOBS (data collection sources)
-#
-# Any number of jobs is supported.
-#
-# All python.d.plugin JOBS (for all its modules) support a set of
-# predefined parameters. These are:
-#
-# job_name:
-# name: myname # the JOB's name as it will appear at the
-# # dashboard (by default is the job_name)
-# # JOBs sharing a name are mutually exclusive
-# update_every: 1 # the JOB's data collection frequency
-# priority: 60000 # the JOB's order on the dashboard
-# penalty: yes # the JOB's penalty
-# autodetection_retry: 0 # the JOB's re-check interval in seconds
-#
-# Additionally to the above, this plugin also supports the following:
-#
-# url: 'http://127.0.0.1/metrics' # the URL of the spring boot actuator metrics
-#
-# if the URL is password protected, the following are supported:
-#
-# user: 'username'
-# pass: 'password'
-#
-# defaults:
-# [chart_id]: true | false # enables/disables default charts, defaults true.
-# extras: {} # defines extra charts to monitor, please see the example below
-# - id: [chart_id]
-# options: {}
-# lines: []
-#
-# If all defaults is disabled and no extra charts are defined, this module will disable itself, as it has no data to
-# collect.
-#
-# Configuration example
-# ---------------------
-# example:
-# name: 'example'
-# url: 'http://localhost:8080/metrics'
-# defaults:
-# response_code: true
-# threads: true
-# gc_time: true
-# gc_ope: true
-# heap: false
-# extras:
-# - id: 'heap'
-# options: { title: 'Heap Memory Usage', units: 'KB', family: 'heap memory', context: 'springboot.heap', charttype: 'stacked' }
-# lines:
-# - { dimension: 'mem_free', name: 'free'}
-# - { dimension: 'mempool_eden_used', name: 'eden', algorithm: 'absolute', multiplier: 1, divisor: 1}
-# - { dimension: 'mempool_survivor_used', name: 'survivor', algorithm: 'absolute', multiplier: 1, divisor: 1}
-# - { dimension: 'mempool_tenured_used', name: 'tenured', algorithm: 'absolute', multiplier: 1, divisor: 1}
-# - id: 'heap_eden'
-# options: { title: 'Eden Memory Usage', units: 'KB', family: 'heap memory', context: 'springboot.heap_eden', charttype: 'area' }
-# lines:
-# - { dimension: 'mempool_eden_used', name: 'used'}
-# - { dimension: 'mempool_eden_committed', name: 'committed'}
-# - id: 'heap_survivor'
-# options: { title: 'Survivor Memory Usage', units: 'KB', family: 'heap memory', context: 'springboot.heap_survivor', charttype: 'area' }
-# lines:
-# - { dimension: 'mempool_survivor_used', name: 'used'}
-# - { dimension: 'mempool_survivor_committed', name: 'committed'}
-# - id: 'heap_tenured'
-# options: { title: 'Tenured Memory Usage', units: 'KB', family: 'heap memory', context: 'springboot.heap_tenured', charttype: 'area' }
-# lines:
-# - { dimension: 'mempool_tenured_used', name: 'used'}
-# - { dimension: 'mempool_tenured_committed', name: 'committed'}
-
-
-local:
- name: 'local'
- url: 'http://localhost:8080/metrics'
-
-local_ip:
- name: 'local'
- url: 'http://127.0.0.1:8080/metrics'