Добавление подключаемых модулей nagios в схему nconf

У меня установлены nagios и nconf, и я начинаю добавлять определения хоста и службы. Однако я заметил большое несоответствие между списком доступных модулей nagios, которые можно использовать для добавления службы, и теми, которые доступны на моем сервере nagios.

Чтобы увидеть, какие плагины nagios nconf, вам нужно настроить:

SELECT CV.attr_value AS nagios_plugin
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
JOIN ConfigValues CV ON CV.fk_id_attr = CA.id_attr
WHERE
CC.config_class = 'checkcommand' AND
CA.attr_name = 'command_name';

который возвращает

+----------------------+
| nagios_plugin        |
+----------------------+
| check_local_disk     |
| check_local_load     |
| check_local_procs    |
| check_local_users    |
| check_local_swap     |
| check_local_mrtgtraf |
| check_ftp            |
| check_hpjd           |
| check_snmp           |
| check_http           |
| check_ssh            |
| check_dhcp           |
| check_ping           |
| check_pop            |
| check_imap           |
| check_smtp           |
| check_tcp            |
| check_udp            |
| check_nt             |
+----------------------+

. Сравнение этого с тем, что находится на диске ls -1 / usr / lib / nagios / plugins , показывает, что около 70 подключаемых модулей nagios не работают. t отображается в nconf!

Мой вопрос - прежде чем я придумаю оператор SQL, чтобы добавить поддержку команд, которые я хочу использовать, например check_mysql , есть ли место, где соответствующий INSERT выписки уже есть? Есть ли лучший способ сделать это? Похоже, что nconf дает вам только ограниченный набор плагинов nagios для использования из коробки.

0
задан 19 May 2016 в 22:40
1 ответ

В конце концов я попробовал свои собственные варианты, чтобы добавить поддержку check_mysql . Поскольку сервер, к которому я хочу подключиться, поддерживает SSL, я создал команду проверки в nconf, специфичную для ssl-соединений, под названием check_mysql_ssl . Вот SQL, который я запускал, чтобы добавить. В ближайшем будущем я напишу полный пост в блоге с более подробной информацией. Обратите внимание, что причиной большого количества SQL является парадигма EAV, используемая базой данных nconf;)

-- ------------------------------------------------------------
-- Store some variables for future use
-- ------------------------------------------------------------
SELECT @command_name_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'command_name';

SELECT @command_line_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'command_line';

SELECT @command_syntax_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'command_syntax';

SELECT @default_params_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'default_params';

SELECT @command_param_count_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'command_param_count';

SELECT @default_service_name_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'default_service_name';

SELECT @service_template_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'service_template';

SELECT @default_service_dependency_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'default_service_dependency';

SELECT @dependency_execution_failure_criteria_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'dependency_execution_failure_criteria';

SELECT @dependency_notification_failure_criteria_attr_id := CA.id_attr, @config_class_id := CC.id_class
FROM ConfigClasses CC
JOIN ConfigAttrs CA ON CA.fk_id_class = CC.id_class
WHERE
  CC.config_class = 'checkcommand' AND
  CA.attr_name = 'dependency_notification_failure_criteria';

-- ------------------------------------------------------------
-- Create a new ConfigItem
-- ------------------------------------------------------------
INSERT INTO ConfigItems SET fk_id_class = @config_class_id;
SET @config_item_id := LAST_INSERT_ID();


-- ------------------------------------------------------------
-- Add support for check_mysql
-- ------------------------------------------------------------

-- command name
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('check_mysql_ssl', @command_name_attr_id, @config_item_id);

-- command line
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('$USER1$/check_mysql -H $ARG1$ -u $ARG2$ -p $ARG3$ -l -C $ARG4$ -a $ARG5$ -k $ARG6$', @command_line_attr_id, @config_item_id);

-- command syntax
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('ARG1=host, ARG2=username, ARG3=password, ARG4=ca-cert, ARG5=client-cert, ARG6=client-key', @command_syntax_attr_id, @config_item_id);

-- default params
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('!', @default_params_attr_id, @config_item_id);

-- command param count
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('6', @command_param_count_attr_id, @config_item_id);

-- default service name
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('', @default_service_name_attr_id, @config_item_id);

-- service template
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('', @service_template_attr_id, @config_item_id);

-- default service dependency
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('', @default_service_dependency_attr_id, @config_item_id);

-- depdency execution failure critieria
-- @note Return non-zero - how to specify that ??
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('', @dependency_execution_failure_criteria_attr_id, @config_item_id);

-- depdency notification failure critieria
-- @note Return non-zero - how to specify that ??
INSERT INTO ConfigValues (attr_value, fk_id_attr, fk_id_item)
VALUES ('', @dependency_notification_failure_criteria_attr_id, @config_item_id);
0
ответ дан 24 November 2019 в 06:31

Теги

Похожие вопросы