Elukey has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/377753 )
Change subject: [WIP] role::kafka::jumbo::broker: enable Prometheus JMX
monitoring
......................................................................
[WIP] role::kafka::jumbo::broker: enable Prometheus JMX monitoring
Bug: T167992
Change-Id: Icb26d40cf4f9b6661d3560f314e073df075d3c1f
---
M hieradata/role/common/kafka/jumbo/broker.yaml
M hieradata/role/common/kafka/simple/broker.yaml
A modules/confluent/files/kafka/prometheus_jmx_exporter.yaml
M modules/confluent/manifests/kafka/broker.pp
M modules/confluent/templates/kafka/kafka.default.erb
M modules/profile/manifests/kafka/broker.pp
6 files changed, 67 insertions(+), 2 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/53/377753/1
diff --git a/hieradata/role/common/kafka/jumbo/broker.yaml
b/hieradata/role/common/kafka/jumbo/broker.yaml
index 2960a76..9e6ea8a 100644
--- a/hieradata/role/common/kafka/jumbo/broker.yaml
+++ b/hieradata/role/common/kafka/jumbo/broker.yaml
@@ -2,6 +2,9 @@
profile::kafka::broker::kafka_cluster_name: jumbo
+# Enable the Prometheus JMX Exporter
+profile::kafka::broker::jmx_exporter_enabled: true
+
profile::kafka::broker::log_dirs: [/srv/kafka/data]
profile::kafka::broker::plaintext: true
# TODO: does not yet work.
diff --git a/hieradata/role/common/kafka/simple/broker.yaml
b/hieradata/role/common/kafka/simple/broker.yaml
index 0ac2c22..a41c40a 100644
--- a/hieradata/role/common/kafka/simple/broker.yaml
+++ b/hieradata/role/common/kafka/simple/broker.yaml
@@ -1,5 +1,6 @@
kafka_cluster_name: simple
+profile::kafka::broker::jmx_exporter_enabled: false
profile::kafka::broker::log_dirs: [/srv/kafka/data]
profile::kafka::broker::plaintext: true
profile::kafka::broker::tls_secrets_path: false
diff --git a/modules/confluent/files/kafka/prometheus_jmx_exporter.yaml
b/modules/confluent/files/kafka/prometheus_jmx_exporter.yaml
new file mode 100644
index 0000000..1e927ac
--- /dev/null
+++ b/modules/confluent/files/kafka/prometheus_jmx_exporter.yaml
@@ -0,0 +1,14 @@
+---
+lowercaseOutputLabelNames: true
+lowercaseOutputName: true
+# Examples from Cassandra:
+# rules:
+# - pattern: org.apache.cassandra.metrics<type=(Connection|Streaming),
scope=(\S*), name=(\S*)><>(Count|Value)
+# name: cassandra_$1_$3
+# labels:
+# address: "$2"
+# - pattern: org.apache.cassandra.metrics<type=(\S*)(?:,
((?!scope)\S*)=(\S*))?(?:, scope=(\S*))?, name=(\S*)><>(Count|Value)
+# name: cassandra_$1_$5
+# labels:
+# "$1": "$4"
+# "$2": "$3"
diff --git a/modules/confluent/manifests/kafka/broker.pp
b/modules/confluent/manifests/kafka/broker.pp
index 3bb4935..9b1019f 100644
--- a/modules/confluent/manifests/kafka/broker.pp
+++ b/modules/confluent/manifests/kafka/broker.pp
@@ -206,6 +206,14 @@
# The maximum message size allowed.
# Default: 1048576
#
+# [*jmx_exporter_enabled*]
+# Enable the Prometheus Jmx exporter.
+# Default: false
+#
+# [*jmx_exporter_jar_version*]
+# Prometheus Jmx exporter version to use.
+# Default: 0.8-20170117.190412-1
+#
class confluent::kafka::broker(
$enabled = true,
$brokers = {
@@ -279,6 +287,9 @@
$log4j_properties_template =
'confluent/kafka/log4j.properties.erb',
$message_max_bytes = 1048576,
+
+ $jmx_exporter_enabled = false,
+ $jmx_exporter_jar_version = '0.8-20170117.190412-1',
) {
# confluent::kafka::client installs the kafka package
# and a handy wrapper script.
@@ -337,6 +348,23 @@
content => template($server_properties_template),
}
+ if $jmx_exporter_enabled {
+ # Allow the host to be deployable
+ scap::target { 'prometheus/jmx_exporter':
+ deploy_user => 'deploy-service',
+ manage_user => true,
+ }
+ # Create the Prometheus JMX Exporter configuration
+ file { '/etc/kafka/prometheus_jmx_exporter.yaml':
+ ensure => present,
+ source =>
'puppet:///modules/confluent/kafka/prometheus_jmx_exporter.yaml',
+ owner => 'kafka',
+ group => 'kafka',
+ mode => '0400',
+ require => Package[$confluent::kafka::client::package],
+ }
+ }
+
# log4j configuration for Kafka daemon
# process logs in /var/log/kafka.
file { '/etc/kafka/log4j.properties':
diff --git a/modules/confluent/templates/kafka/kafka.default.erb
b/modules/confluent/templates/kafka/kafka.default.erb
index a2dcdbe..e8f55ba 100644
--- a/modules/confluent/templates/kafka/kafka.default.erb
+++ b/modules/confluent/templates/kafka/kafka.default.erb
@@ -25,6 +25,10 @@
JMX_PORT=<%= @jmx_port %>
#KAFKA_JMX_OPTS=${KAFKA_JMX_OPTS:="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false"}
+<% if @jmx_exporter_enabled -%>
+JVM_OPTS="$JVM_OPTS
-javaagent:/srv/deployment/prometheus/jmx_exporter/lib/jmx_prometheus_javaagent-<%=
@jmx_exporter_jar_version %>.jar=<%= @ipaddress
%>:7800:/etc/kafka/prometheus_jmx_exporter.yaml"
+<% end -%>
+
<% if @jvm_performance_opts -%>
KAFKA_JVM_PERFORMANCE_OPTS="<%= @jvm_performance_opts %>"
<% else -%>
diff --git a/modules/profile/manifests/kafka/broker.pp
b/modules/profile/manifests/kafka/broker.pp
index 4d4b183..42ec63c 100644
--- a/modules/profile/manifests/kafka/broker.pp
+++ b/modules/profile/manifests/kafka/broker.pp
@@ -65,6 +65,10 @@
# than 0.10.2, the consumers' fetch size must also be increased
# so that the they can fetch record batches this large.
#
+# [*prometheus_jmx_exporter_enabled*]
+# Enable the prometheus jmx exporter.
+#
+#
class profile::kafka::broker(
$kafka_cluster_name =
hiera('profile::kafka::broker::kafka_cluster_name'),
$statsd = hiera('statsd'),
@@ -83,7 +87,8 @@
$replica_maxlag_warning =
hiera('profile::kafka::broker::replica_maxlag_warning'),
$replica_maxlag_critical =
hiera('profile::kafka::broker::replica_maxlag_critical'),
# This is set via top level hiera variable so it can be synchronized
between roles and clients.
- $message_max_bytes = hiera('kafka_message_max_bytes')
+ $message_max_bytes = hiera('kafka_message_max_bytes'),
+ $jmx_exporter_enabled =
hiera('profile::kafka::broker::jmx_exporter_enabled'),
) {
# TODO: WIP
$tls_secrets_path = undef
@@ -180,6 +185,15 @@
java_home => '/usr/lib/jvm/java-8-openjdk-amd64',
}
+ if $jmx_exporter_enabled {
+ # Allow automatic generation of config on the
+ # Prometheus master
+ prometheus::jmx_exporter_instance { $::hostname:
+ address => $::ipaddress,
+ port => 7800,
+ }
+ }
+
class { '::confluent::kafka::broker':
log_dirs => $log_dirs,
brokers => $config['brokers']['hash'],
@@ -195,7 +209,6 @@
# https://kafka.apache.org/documentation/#java
# Note that MetaspaceSize is a Java 8 setting.
jvm_performance_opts => '-server -XX:MetaspaceSize=96m
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35
-XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50
-XX:MaxMetaspaceFreeRatio=80',
-
listeners => $listeners,
security_inter_broker_protocol => $security_inter_broker_protocol,
@@ -209,6 +222,8 @@
auto_leader_rebalance_enable => $auto_leader_rebalance_enable,
num_replica_fetchers => $num_replica_fetchers,
message_max_bytes => $message_max_bytes,
+
+ jmx_exporter_enabled => $jmx_exporter_enabled,
}
class { '::confluent::kafka::broker::jmxtrans':
--
To view, visit https://gerrit.wikimedia.org/r/377753
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icb26d40cf4f9b6661d3560f314e073df075d3c1f
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Elukey <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits