The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Доступен mdadm 4.0, инструментарий для управления программны..."
Отправлено stopa85, 17-Янв-17 05:10 
Ребята, я не абы какой крутой админ, но юзая zabbix делаю так. Добавляю скрипты необходимые для авто-обнаружения массивов и элементы данных для их мониторинга на хост, который будем мониторить. Со стороны заббикса имею шаблон и прототипами элементов данных и триггирами.

Может кому-то пригодится, а может кто-то даст дельный совет, буду рад в любом случае.

Сами скрипты:

1. /etc/zabbix/zabbix_agentd.conf.d/md.conf
#Старый-добрый алерт выдающий количество массивов со сбойными дисками
UserParameter=system.md.state,egrep "\[.*_.*\]" /proc/mdstat | wc -l

#Тут мы добавляем элементы данных для обнаружения устройств входящих в программные массивы и мониторинга их состояния
UserParameter=system.md.device.discovery,/usr/local/sbin/discovery_md_devices.py
UserParameter=system.md.device.state[*],cat /sys/block/md*/md/dev-$1/state

#А здесь скрипт для обнаружения самих массивов и элементы данных для их мониторинга
UserParameter=system.md.array.discovery,/usr/local/sbin/discovery_md_arrays.py
UserParameter=system.md.array.state[*],cat /sys/block/$1/md/array_state
UserParameter=system.md.sync.state[*],cat /sys/block/$1/md/sync_action

Далее оба скрипта, мне было проще написать их на питоне
2. /usr/local/sbin/discovery_md_arrays.py
#!/usr/bin/python
import os,sys

first_out = True
f = os.popen( 'ls /sys/block | grep md' )
lines = f.readlines();

sys.stdout.write( '{\n\t "data":\n\t[\n' )

for line in lines:
    t = line.split()
    md_array = t[0]

    if not first_out:
        sys.stdout.write( ',\n' )

    first_out = False

    sys.stdout.write( '\t\t{{ "{{#MD_ARRAY}}": "{0}" }}'.format(md_array) )


sys.stdout.write( '\n\t]\n}' )

sys.stdout.write( '\n' )

3. /usr/local/sbin/discovery_md_devices.py
#!/usr/bin/python
import os,sys

first_out = True
f = os.popen( 'ls /sys/block/md*/md/ | grep dev-' )
lines = f.readlines();

sys.stdout.write( '{\n\t "data":\n\t[\n' )

for line in lines:
    t = line.split()
    md_disk = t[0]
    md_disk = md_disk.replace( 'dev-', '' )
    if not first_out:
        sys.stdout.write( ',\n' )

    first_out = False

    sys.stdout.write( '\t\t{{ "{{#MD_DEVICE}}": "{0}" }}'.format(md_disk) )

sys.stdout.write( '\n\t]\n}' )

sys.stdout.write( '\n' )

P.S. За сумбурность простите, через 20 мин сына будить и в садик везти, zabbix-шаблон сюда не выкладываю, там много букв, xml как ни как.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру