Как я могу получить возможность сообщать, работает ли демон в Linux? Я не собираюсь выполнять какие-либо действия на основании результатов. Мне просто нужен список серверов с запущенным Apache. Я использую RHEL 6 и 7. Итак, RHEL 7 использует systemd, а RHEL 6 использует старые сценарии инициализации.
Ансибл service_facts модуль, вероятно, хорошая ставка.
IIRC назван сервис Apache httpd
на всех основных выпусках RHEL, поэтому вам не нужно делать зависимые от выпуска игры, а модуль Ansible позаботится о различиях systemd и upstart.
Что-то вроде приведенного ниже примера должно помочь (обратите внимание, что есть разница в проверке того, включена ли служба или действительно работает. Служба, которая в настоящее время не работает, потому что она не работает или была остановлена администратором, но должна быть работает, потому что служба включена, или наоборот)
- name: Check for apache status
service_facts:
- debug:
var: ansible_facts.services.httpd.state
Лучше использовать какой-нибудь инструмент для мониторинга. Ansible - это config mgt. инструмент, основанный на действии, выполняемом на стороне сервера через ssh. Это непродуктивная идея.
Если это единственный вариант, вы можете использовать Ansible Tower -> с расписанием (например, cron) ->, которое можно использовать с уведомлением Slack / по электронной почте.
Вы можете использовать команду: /etc/init.d/httpd status с регистром, чтобы проверить вывод stdout, и если он соответствует условию, он может вызвать предупреждение. Пример:
- name: check http
command: /etc/init.d/httpd status
register: httpd_status
failed_when: "'NOT' in httpd_status.stdout"
changed_when: False
change НЕ with any other output that you see while checking status.Ответ с использованием service_facts
очень интересно, но вы также можете решить эту проблему с помощью реализации некоторых "custom_facts", которые могут возвращать настраиваемые значения.
Пользовательские факты - это скрипты, которые выполняются при сборе фактов и возвращают JSON-объект.