Просмотр исходного кода

Use Pillar to chose which interfaces to monitor.

The `linux_netlink.ls` function used a regex to choose which interfaces
to collect metric for.

`_alphanum_re = re.compile(r'^[a-z0-9]+$')`

Unfortunately, by default this excludes vlan and tap interfaces, which
are kind of important.  ie `bond0.120` or `tap2a3dab86-fb`.

We also have a problem where even if we update the regex to include
these interfaces... if someone deletes and spawns a new instance then
the tap device name changes on the compute host, which will not be
monitored unless someone re-runs the `collectd` on the compute again.
Less than ideal.

This commit lets us choose `VerboseInterface "all"` using Pillar data
to avoid this problem.
pull/113/head
Jaymes Mosher 7 лет назад
Родитель
Сommit
cf6dbf1d6a
3 измененных файлов: 17 добавлений и 30 удалений
  1. +0
    -17
      _modules/linux_netlink.py
  2. +14
    -10
      linux/map.jinja
  3. +3
    -3
      linux/meta/collectd.yml

+ 0
- 17
_modules/linux_netlink.py Просмотреть файл

@@ -1,17 +0,0 @@
# -*- coding: utf-8 -*-

import re

_alphanum_re = re.compile(r'^[a-z0-9]+$')
_lo_re = re.compile(r'^lo$')


def _filter(interface):
return _alphanum_re.match(interface) and not _lo_re.match(interface)


def ls():
"""
Provide a list of network interfaces.
"""
return filter(_filter, __salt__['grains.get']('ip_interfaces', {}).keys())

+ 14
- 10
linux/map.jinja Просмотреть файл

@@ -190,24 +190,28 @@
{% set monitoring = salt['grains.filter_by']({
'default': {
'zombie': {
'warn': 3,
'crit': 7,
'warn': 3,
'crit': 7,
},
'procs': {
'warn': 5000,
'crit': 10000,
'warn': 5000,
'crit': 10000,
},
'load': {
'warn': '6,4,2',
'crit': '12,8,4',
'warn': '6,4,2',
'crit': '12,8,4',
},
'swap': {
'warn': '50%',
'crit': '20%',
'warn': '50%',
'crit': '20%',
},
'disk': {
'warn': '15%',
'crit': '5%',
'warn': '15%',
'crit': '5%',
},
'netlink': {
'interfaces': ['all'],
'ignore_selected': False,
},
},
}, grain='os_family', merge=salt['pillar.get']('linux:monitoring')) %}

+ 3
- 3
linux/meta/collectd.yml Просмотреть файл

@@ -1,11 +1,11 @@
{%- from "linux/map.jinja" import monitoring with context %}
local_plugin:
linux_network_netlink:
plugin: netlink
template: linux/files/collectd_netlink.conf
ignore_selected: false
{%- if 'linux_netlink.ls' in salt.keys() %}
ignore_selected: {{ monitoring.netlink.ignore_selected }}
interfaces:
{%- for interface_name in salt['linux_netlink.ls']() %}
{%- for interface_name in monitoring.netlink.interfaces|sort %}
- {{ interface_name }}
{%- endfor %}
{%- endif %}

Загрузка…
Отмена
Сохранить