PE - Configuring Prometheus Exporter for Bamboo

Prometheus Exporter for Bamboo exposes Bamboo metrics as JVM and issue statistics to Prometheus.

Setting up Prometheus Exporter for Bamboo

When you download the Prometheus installation package you can see a sample configuration in the prometheus.yml file.
There are three blocks of configuration in this file: global, rule_files, and scrape_configs:

  • Global controls the Prometheus server's global configuration.
  • Rule_files specifies the location of any rules that you want the Prometheus server to load.
  • Scrape_configs controls what resources Prometheus monitors.

 To enable Prometheus Exporter for Bamboo so that it collects metrics and pulls it into Prometheus: 

  1. Use the following scrape_configs:

    prometheus.yml
    scrape_configs:
      - job_name: 'bamboo'
        scheme: https #change to http if don't you have https
        metrics_path: '/<your_bamboo_context_path>/plugins/servlet/prometheus/metrics'
        static_configs:
          - targets: ['myhost:1990']


    For a complete specification of configuration options, see the Prometheus configuration documentation.

  2. On the Prometheus Status >Targets page, select the Prometheus Exporter for Bamboo endpoint to get the Prometheus metrics (see example below).

  3. Build any of the available dashboards with the selected metrics.

Configuring a secret token (recommended)

Warning

Note that this plugin publicly exposes some sensitive data by default. The metrics page exposes the usernames for who logged in last and so on. We recommend that you enable token protection to make sure the public cannot view usernames.

To configure a secret token:

  1. Log into your Bamboo as Admin.
  2. Go to Bamboo Administration > Manage apps, and click Prometheus Exporter Settings
    The Prometheus Exporter Settings page opens. 
  3. Generate or create a Token. We recommend to use 128 characters.
     


  4. Use this secret token in the following scrape_configs inside the prometheus.yml configuration file: 

    prometheus.yml
      - job_name: 'bamboo'
        scheme: https #change to http if don't you have https
        metrics_path: '/<your_bamboo_context_path>/plugins/servlet/prometheus/metrics?token=secrettoken'
        params:
             token: ['1234567890'] # i'd reccomend use 128 symbol lenght long [A-Za-z0-9]
        static_configs:
          - targets: ['myhost:1990']

Prometheus metrics example

 Prometheus Metrics Example
# HELP jvm_buffer_pool_used_bytes Used bytes of a given JVM buffer pool.
# TYPE jvm_buffer_pool_used_bytes gauge
jvm_buffer_pool_used_bytes{pool="direct",} 129536.0
jvm_buffer_pool_used_bytes{pool="mapped",} 8543.0
# HELP jvm_buffer_pool_capacity_bytes Bytes capacity of a given JVM buffer pool.
# TYPE jvm_buffer_pool_capacity_bytes gauge
jvm_buffer_pool_capacity_bytes{pool="direct",} 129536.0
jvm_buffer_pool_capacity_bytes{pool="mapped",} 8543.0
# HELP jvm_buffer_pool_used_buffers Used buffers of a given JVM buffer pool.
# TYPE jvm_buffer_pool_used_buffers gauge
jvm_buffer_pool_used_buffers{pool="direct",} 17.0
jvm_buffer_pool_used_buffers{pool="mapped",} 4.0
# HELP jvm_gc_collection_seconds Time spent in a given JVM garbage collector in seconds.
# TYPE jvm_gc_collection_seconds summary
jvm_gc_collection_seconds_count{gc="PS Scavenge",} 824.0
jvm_gc_collection_seconds_sum{gc="PS Scavenge",} 8.763
jvm_gc_collection_seconds_count{gc="PS MarkSweep",} 9.0
jvm_gc_collection_seconds_sum{gc="PS MarkSweep",} 3.99
# HELP jvm_info JVM version info
# TYPE jvm_info gauge
jvm_info{version="1.8.0_171-b11",vendor="Oracle Corporation",runtime="Java(TM) SE Runtime Environment",} 1.0
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 777.4
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.531684541741E9
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 447.0
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1048576.0
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 4.801265664E9
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 1.426763776E9
# HELP jvm_classes_loaded The number of classes that are currently loaded in the JVM
# TYPE jvm_classes_loaded gauge
jvm_classes_loaded 40833.0
# HELP jvm_classes_loaded_total The total number of classes that have been loaded since the JVM has started execution
# TYPE jvm_classes_loaded_total counter
jvm_classes_loaded_total 41090.0
# HELP jvm_classes_unloaded_total The total number of classes that have been unloaded since the JVM has started execution
# TYPE jvm_classes_unloaded_total counter
jvm_classes_unloaded_total 257.0
# HELP bamboo_error_count Errors Count
# TYPE bamboo_error_count counter
# HELP bamboo_finished_build_count Finished Builds Count
# TYPE bamboo_finished_build_count counter
# HELP bamboo_canceled_build_count Canceled Builds Count
# TYPE bamboo_canceled_build_count counter
# HELP bamboo_finished_deploys_count Finished Deploys Count
# TYPE bamboo_finished_deploys_count counter
# HELP bamboo_build_queue_timeout_count Build Queue Timeout Count
# TYPE bamboo_build_queue_timeout_count counter
# HELP bamboo_maintenance_expiry_days_gauge Maintenance Expiry Days Gauge
# TYPE bamboo_maintenance_expiry_days_gauge gauge
bamboo_maintenance_expiry_days_gauge 532.0
# HELP bamboo_license_expiry_days_gauge License Expiry Days Gauge
# TYPE bamboo_license_expiry_days_gauge gauge
bamboo_license_expiry_days_gauge 0.0
# HELP bamboo_allowed_users_gauge Allowed Users Gauge
# TYPE bamboo_allowed_users_gauge gauge
bamboo_allowed_users_gauge 5.0
# HELP bamboo_all_agents_gauge All Agents Gauge
# TYPE bamboo_all_agents_gauge gauge
bamboo_all_agents_gauge 2.0
# HELP bamboo_active_agents_gauge Active Agents Gauge
# TYPE bamboo_active_agents_gauge gauge
bamboo_active_agents_gauge 1.0
# HELP bamboo_busy_agents_gauge Busy Agents Gauge
# TYPE bamboo_busy_agents_gauge gauge
bamboo_busy_agents_gauge 0.0
# HELP jvm_memory_bytes_used Used bytes of a given JVM memory area.
# TYPE jvm_memory_bytes_used gauge
jvm_memory_bytes_used{area="heap",} 4.79939832E8
jvm_memory_bytes_used{area="nonheap",} 3.85195728E8
# HELP jvm_memory_bytes_committed Committed (bytes) of a given JVM memory area.
# TYPE jvm_memory_bytes_committed gauge
jvm_memory_bytes_committed{area="heap",} 5.30055168E8
jvm_memory_bytes_committed{area="nonheap",} 4.02653184E8
# HELP jvm_memory_bytes_max Max (bytes) of a given JVM memory area.
# TYPE jvm_memory_bytes_max gauge
jvm_memory_bytes_max{area="heap",} 5.30055168E8
jvm_memory_bytes_max{area="nonheap",} -1.0
# HELP jvm_memory_bytes_init Initial bytes of a given JVM memory area.
# TYPE jvm_memory_bytes_init gauge
jvm_memory_bytes_init{area="heap",} 1.34217728E8
jvm_memory_bytes_init{area="nonheap",} 2555904.0
# HELP jvm_memory_pool_bytes_used Used bytes of a given JVM memory pool.
# TYPE jvm_memory_pool_bytes_used gauge
jvm_memory_pool_bytes_used{pool="Code Cache",} 1.29630208E8
jvm_memory_pool_bytes_used{pool="Metaspace",} 2.2751936E8
jvm_memory_pool_bytes_used{pool="Compressed Class Space",} 2.804616E7
jvm_memory_pool_bytes_used{pool="PS Eden Space",} 1.5238952E8
jvm_memory_pool_bytes_used{pool="PS Survivor Space",} 4449416.0
jvm_memory_pool_bytes_used{pool="PS Old Gen",} 3.23100896E8
# HELP jvm_memory_pool_bytes_committed Committed bytes of a given JVM memory pool.
# TYPE jvm_memory_pool_bytes_committed gauge
jvm_memory_pool_bytes_committed{pool="Code Cache",} 1.30809856E8
jvm_memory_pool_bytes_committed{pool="Metaspace",} 2.40648192E8
jvm_memory_pool_bytes_committed{pool="Compressed Class Space",} 3.1195136E7
jvm_memory_pool_bytes_committed{pool="PS Eden Space",} 1.67247872E8
jvm_memory_pool_bytes_committed{pool="PS Survivor Space",} 4718592.0
jvm_memory_pool_bytes_committed{pool="PS Old Gen",} 3.58088704E8
# HELP jvm_memory_pool_bytes_max Max bytes of a given JVM memory pool.
# TYPE jvm_memory_pool_bytes_max gauge
jvm_memory_pool_bytes_max{pool="Code Cache",} 2.5165824E8
jvm_memory_pool_bytes_max{pool="Metaspace",} -1.0
jvm_memory_pool_bytes_max{pool="Compressed Class Space",} 1.073741824E9
jvm_memory_pool_bytes_max{pool="PS Eden Space",} 1.68296448E8
jvm_memory_pool_bytes_max{pool="PS Survivor Space",} 4718592.0
jvm_memory_pool_bytes_max{pool="PS Old Gen",} 3.58088704E8
# HELP jvm_memory_pool_bytes_init Initial bytes of a given JVM memory pool.
# TYPE jvm_memory_pool_bytes_init gauge
jvm_memory_pool_bytes_init{pool="Code Cache",} 2555904.0
jvm_memory_pool_bytes_init{pool="Metaspace",} 0.0
jvm_memory_pool_bytes_init{pool="Compressed Class Space",} 0.0
jvm_memory_pool_bytes_init{pool="PS Eden Space",} 3.407872E7
jvm_memory_pool_bytes_init{pool="PS Survivor Space",} 5242880.0
jvm_memory_pool_bytes_init{pool="PS Old Gen",} 8.9653248E7
# HELP jvm_threads_current Current thread count of a JVM
# TYPE jvm_threads_current gauge
jvm_threads_current 142.0
# HELP jvm_threads_daemon Daemon thread count of a JVM
# TYPE jvm_threads_daemon gauge
jvm_threads_daemon 107.0
# HELP jvm_threads_peak Peak thread count of a JVM
# TYPE jvm_threads_peak gauge
jvm_threads_peak 158.0
# HELP jvm_threads_started_total Started thread count of a JVM
# TYPE jvm_threads_started_total counter
jvm_threads_started_total 296.0
# HELP jvm_threads_deadlocked Cycles of JVM-threads that are in deadlock waiting to acquire object monitors or ownable synchronizers
# TYPE jvm_threads_deadlocked gauge
jvm_threads_deadlocked 0.0
# HELP jvm_threads_deadlocked_monitor Cycles of JVM-threads that are in deadlock waiting to acquire object monitors
# TYPE jvm_threads_deadlocked_monitor gauge
jvm_threads_deadlocked_monitor 0.0

See also

Using Prometheus Exporter for Bamboo