mirror of
https://github.com/zulip/zulip.git
synced 2025-10-24 16:43:57 +00:00
This provides access logging metrics to Prometheus. For cardinality reasons, we cannot (nor would we want to) put every request path into its own label value -- but we do separate out the most-frequent access paths (as well as some low-frequency but high-interest ones) into their own label values. In order to differentiate accesses to https://zulip.com/ from https://example.zulipchat.com/ (both of which appear at path `/`), we use a `grok_exporter.realm_names_regex` value in `zulip.conf`, which is expected to be set to match the hostname of all possible realms.
46 lines
1.5 KiB
Puppet
46 lines
1.5 KiB
Puppet
# @summary Parses nginx access_log files
|
|
#
|
|
class kandra::prometheus::grok {
|
|
include kandra::prometheus::base
|
|
include zulip::supervisor
|
|
|
|
$version = $zulip::common::versions['grok_exporter']['version']
|
|
$dir = "/srv/zulip-grok_exporter-${version}"
|
|
$bin = "${dir}/grok_exporter"
|
|
|
|
zulip::external_dep { 'grok_exporter':
|
|
version => $version,
|
|
url => "https://github.com/fstab/grok_exporter/releases/download/v${version}/grok_exporter-${version}.linux-${zulip::common::goarch}.zip",
|
|
tarball_prefix => "grok_exporter-${version}.linux-${zulip::common::goarch}",
|
|
bin => [$bin],
|
|
cleanup_after => [Service[supervisor]],
|
|
}
|
|
|
|
$realm_names_regex = zulipconf('grok_exporter', 'realm_names_regex', '__impossible__')
|
|
$include_dir = "${dir}/patterns"
|
|
file { '/etc/grok_exporter.yaml':
|
|
ensure => file,
|
|
owner => zulip,
|
|
group => zulip,
|
|
mode => '0644',
|
|
content => template('kandra/prometheus/grok_exporter.yaml.template.erb'),
|
|
notify => Service[supervisor],
|
|
}
|
|
|
|
kandra::firewall_allow { 'grok_exporter': port => '9144' }
|
|
file { "${zulip::common::supervisor_conf_dir}/prometheus_grok_exporter.conf":
|
|
ensure => file,
|
|
require => [
|
|
User[zulip],
|
|
Package[supervisor],
|
|
File[$bin],
|
|
File['/etc/grok_exporter.yaml'],
|
|
],
|
|
owner => 'root',
|
|
group => 'root',
|
|
mode => '0644',
|
|
content => template('kandra/supervisor/conf.d/prometheus_grok_exporter.conf.template.erb'),
|
|
notify => Service[supervisor],
|
|
}
|
|
}
|