соляная шахта для всех сетевых интерфейсов

У меня возникли трудности с настройкой collectd.conf с помощью подключаемого модуля interface через salt. collectd.conf ожидает список сетевых интерфейсов для мониторинга, например:

<Plugin interface>
  Interface "em1"
  Interface "em2"
</Plugin>

Я понял, что мне нужно использовать salt mine, чтобы вытащить зерна в мастер, что достигается с помощью столбца sls, как показано ниже:

mine_functions:
  network.interfaces: []

и в моем collectd.conf у меня есть:

<Plugin interface>
{% for host, info in salt['mine.get']('*','network.interfaces').items() %}
 {% if host == grains['id'] %}
  {% for interface in info %}
  Interface "{{ interface }}"
  {% endfor %}
 {% endif %}
{% endif %}
{% endfor %}
</Plugin>

Однако, похоже, это не работает для меня :(


person yee379    schedule 19.06.2015    source источник


Ответы (1)


Если вы ищете интерфейсы на локальном хосте (как я понимаю, вы и есть, поскольку вы фильтруете зерна ['id']), то вам для этого не нужен мой. Вы можете получить имена интерфейсов на локальном хосте из зерна:

{%- for iface in grains['ip_interfaces'].keys() %}
Interface "{{ iface }}"
{%- endfor %}

Если вам нужен список адресов локальной машины вместо имен интерфейсов, вы можете вместо этого зациклиться на зернах ['ipv4']. Нет .keys(); это зерно представляет собой простой список.

Если вам нужна информация об интерфейсе для других хостов, используйте мой. Обратите внимание, что network.interfaces возвращает вложенный словарь, и, возможно, поэтому он у вас не работает — вы перебираете его, как если бы это был список, который (по крайней мере, когда я только что тестировал его) создает нечитаемый беспорядок.

Чтобы получить имена интерфейсов с других серверов, вы на самом деле использовали бы что-то вроде:

{%- for minion, ifaces in salt['mine.get']('*', 'network.interfaces').items() %}
{{ minion }}:
{%-   for iface in ifaces.keys() %}
  - {{ iface }}
{%-   endfor %}
{%- endfor %}

Что должно выводить:

minion1:
  - eth0
  - eth1
  - lo
minion2:
  - eth0
  - eth1
  - lo
...and so on.

Это то, о чем вы просили, но это не похоже на то, что вы на самом деле пытаетесь сделать.

person Andrew    schedule 19.06.2015
comment
как мы можем определить интерфейс, который установлен с помощью salt-minion? - person cslrnr; 12.10.2018