Puppet Class: prometheus::jmx_exporter

Inherits:
prometheus
Defined in:
manifests/jmx_exporter.pp

Summary

Installs and configures the Prometheus JMX exporter

Overview

Parameters:

  • version (String[1])

    Version of JMX exporter to download

  • config_file_location (Stdlib::Absolutepath) (defaults to: '/etc/jmx-exporter.yaml')

    Location where the jmx-exporter configuration should be placed

  • service_name (String[1]) (defaults to: 'jmx_exporter')

    System service name for jmx exporter httpserver deployment

  • user (String[1]) (defaults to: 'jmx_exporter')

    Service user for httpserver deployment

  • group (String[1]) (defaults to: 'jmx-exporter')

    Service group for httpserver deployment

  • extra_groups (Array[String[1]]) (defaults to: [])

    Additional groups for httpserver deployment service user

  • java_bin_path (Stdlib::Absolutepath) (defaults to: '/usr/bin/java')

    Path to JAVA (required for httpserver deployment)

  • configuration (Hash) (defaults to: {})

    jmx-exporter configuration (see website for details)

  • deployment (Enum['javaagent', 'httpserver']) (defaults to: 'httpserver')

    Way of deploying jmx-exporter. Defaults to standalone httpserver deployment. If set to javaagent, requires additional configuration on the target jmx service

  • os (String[1]) (defaults to: downcase($facts['kernel']))

    Operating system (linux is the only one supported)

  • arch (String[1]) (defaults to: $prometheus::real_arch)

    Architecture (amd64 or i386)

  • bin_dir (Stdlib::Absolutepath) (defaults to: $prometheus::bin_dir)

    Directory where binaries are located

  • config_mode (String[1]) (defaults to: $prometheus::config_mode)

    File mode for jmx exporter configuration file

  • restart_on_change (Boolean) (defaults to: true)

    Restart jmx exporter service when the configuration file was updated

  • manage_user (Boolean) (defaults to: true)

    Manage service user

  • manage_group (Boolean) (defaults to: true)

    Manage service group

  • manage_service (Boolean) (defaults to: true)

    Manage service

  • port (Optional[Stdlib::Port::Unprivileged]) (defaults to: undef)

    Port that the JMX exporter should listen on (required for httpserver deployment)

  • download_url (Optional[Prometheus::Uri]) (defaults to: undef)

    Download URL for JMX exporter

  • proxy_server (Optional[String[1]]) (defaults to: undef)

    Optional proxy server, with port number if needed. ie: example.com:8080

  • proxy_type (Optional[Enum['none', 'http', 'https', 'ftp']]) (defaults to: undef)

    Optional proxy server type (none|http|https|ftp)

  • java_options (Optional[String]) (defaults to: undef)

    Optional options for the JVM of the standalone jmx exporter

See Also:



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
# File 'manifests/jmx_exporter.pp', line 48

class prometheus::jmx_exporter (
  String[1] $version,
  Stdlib::Absolutepath $config_file_location                 = '/etc/jmx-exporter.yaml',
  String[1] $service_name                                    = 'jmx_exporter',
  String[1] $user                                            = 'jmx_exporter',
  String[1] $group                                           = 'jmx-exporter',
  Array[String[1]] $extra_groups                             = [],
  Stdlib::Absolutepath $java_bin_path                        = '/usr/bin/java',
  Hash $configuration                                        = {},
  Enum['javaagent', 'httpserver'] $deployment                = 'httpserver',
  String[1] $os                                              = downcase($facts['kernel']),
  String[1] $arch                                            = $prometheus::real_arch,
  Stdlib::Absolutepath $bin_dir                              = $prometheus::bin_dir,
  String[1] $config_mode                                     = $prometheus::config_mode,
  Boolean $restart_on_change                                 = true,
  Boolean $manage_user                                       = true,
  Boolean $manage_group                                      = true,
  Boolean $manage_service                                    = true,
  Optional[Stdlib::Port::Unprivileged] $port                 = undef,
  Optional[Prometheus::Uri] $download_url                    = undef,
  Optional[String[1]] $proxy_server                          = undef,
  Optional[Enum['none', 'http', 'https', 'ftp']] $proxy_type = undef,
  Optional[String] $java_options                             = undef,
) inherits prometheus {
  if $deployment == 'httpserver' and $port == undef {
    fail('Port is required for httpserver deployment')
  }

  $base_url = 'https://repo1.maven.org/maven2/io/prometheus/jmx'
  $real_download_url = $download_url ? {
    undef   => "${base_url}/jmx_prometheus_${deployment}/${version}/jmx_prometheus_${deployment}-${version}.jar",
    default => $download_url
  }

  $_manage_service = $deployment ? {
    'javaagent' => false,
    default     => $manage_service
  }

  $notify_service = ($restart_on_change and $_manage_service) ? {
    true    => Service[$service_name],
    default => undef,
  }

  file { $config_file_location:
    ensure  => file,
    owner   => 'root',
    group   => $group,
    mode    => $config_mode,
    content => template('prometheus/jmx_exporter.yaml.erb'),
    notify  => $notify_service,
  }

  $_manage_group = $deployment ? {
    'javaagent' => false,
    default     => $manage_group
  }

  $_manage_user = $deployment ? {
    'javaagent' => false,
    default     => $manage_user
  }

  $_java_options = $java_options ? {
    undef   => '',
    default => "${java_options} "
  }

  $_name = 'jmx_exporter'

  prometheus::daemon { $_name:
    notify_service     => $notify_service,
    install_method     => 'url',
    version            => $version,
    download_extension => '',
    real_download_url  => $real_download_url,
    proxy_server       => $proxy_server,
    proxy_type         => $proxy_type,
    manage_group       => $_manage_group,
    manage_service     => $_manage_service,
    manage_user        => $_manage_user,
    extra_groups       => $extra_groups,
    user               => $user,
    group              => $group,
    manage_bin_link    => false,
    bin_dir            => dirname($java_bin_path),
    bin_name           => basename($java_bin_path),
    options            => "${_java_options}-jar /opt/${_name}-${version}.${os}-${arch}/${_name} ${port} ${config_file_location}",
    os                 => $os,
    arch               => $arch,
  }
}