checkmk_agent

checkmk_agent

Качество роли Ansible Скачивания роли Ansible Размер репозитория GitHub

Выпуск Проблемы GitHub

Создано с использованием Bash Создано с использованием Markdown Лицензия GitHub

Это Ansible роль для установки агента/клиента для CheckMK RAW edition.

Это полная переработка роли install-check_mk-agent, которую я создавал и поддерживал в течение многих лет, выполненная в связи с изменениями в CI/CD и правилами наименования в Ansible Galaxy и CheckMK.

Все задачи имеют тег checkmk-agent.

Следующие дистрибутивы были протестированы автоматически:

В целях производительности следующие "разделы" отключены по умолчанию в Windows агенте:

  • services
  • msexch
  • dotnet_clrmemory
  • wmi_webservices
  • wmi_cpuload
  • ps
  • fileinfo
  • logwatch
  • openhardwaremonitor

Кроме того, выполнение плагинов было скорректировано:

  • Время ожидания увеличено с 30 до 120
  • Включена асинхронность
  • Возраст кэша установлен на 3600 (1 час)

Создайте свой собственный "check_mk.user.yml.j2" и переопределите checkmk_agent_win_config_src для дальнейшей настройки, или установите переменную checkmk_agent_win_config_optimize в false, чтобы отключить эту оптимизацию.

Аналогичные модификации были сделаны в стандартном файле docker.cfg. Здесь все разделы docker были включены и могут быть возвращены к значению по умолчанию, установив переменную checkmk_agent_docker_complete в false.

Матрица версий

Версия CheckMK Raw Edition Версия/Тег роли
2.3.0p13 1.1.1
2.3.0p12 1.1.0
2.3.0p11 1.0.99
2.3.0p10 1.0.98
2.3.0p9 1.0.97

Требования

Эта роль не требует других ролей. Она разработана для совместимости с сервером CheckMK в общем и kso512.checkmk_server в частности.

Если вы подключаетесь к Windows хосту с помощью Windows Remote Management (WinRM), вам может понадобиться установить пакет pywinrm на вашей системе Ansible:

pip install "pywinrm>=0.3.0"

Эта роль использует SSH на Unix-подобных системах вместо стандартного порта 6556. Это шифрует коммуникации и избегает открытия нового порта для мониторинга и настройки новой службы.

Чтобы создать ключи аутентификации для SSH, используйте программу "ssh-keygen", как показано здесь.

Пример создания стандартных ключей без пароля в локальной папке:

ssh-keygen -C "cmkagent@$HOSTNAME" -f ./id_rsa -N "" -v

Это создаст два файла: id_rsa & id_rsa.pub

id_rsa = Закрытый ключ, который должен храниться в безопасности. Этот файл необходимо разместить в папке ~/.ssh пользователя CheckMK Agent. Пример с использованием стандартного пользователя и сайта "kso512.checkmk_server":

cp ./id_rsa /opt/omd/sites/test/.ssh

id_rsa.pub = Открытый ключ, который можно передавать другим доверенным хостам. Этот файл необходимо добавить в ваш локальный файл "authorized_keys.j2". Предполагается стандартная структура ролей:

echo '# {{ ansible_managed }}' > /etc/ansible/local/authorized_keys.j2
cat ./id_rsa.pub >> /etc/ansible/local/authorized_keys.j2

Затем объявите local/authorized_keys.j2 как checkmk_agent_authkey_src в ваших собственных переменных; пример приведен ниже.

Наконец, настройте сам CheckMK так, чтобы он использовал эти файлы вместо попыток подключаться к TCP порту 6556:

  • Войдите в CheckMK
  • Настройка > Поиск > "индивидуально" > Индивидуальный вызов программы вместо доступа агенту
  • Создайте правило в папке: Главный каталог
    • Описание: Использовать SSH и учетную запись cmkagent с SSH ключами
    • Команда для выполнения: ssh -i ~/.ssh/id_rsa -l cmkagent <IP> sudo /home/cmkagent/check_mk_agent
    • Явные хосты: (выберите тестовый хост, затем, когда все работает, настройте теги или метки хостов)
    • Сохранить
  • 1 изменение > Активировать на выбранных сайтах

Переменные роли

Некоторые из этих переменных могут показаться избыточными, но указаны, чтобы будущие пользователи могли переопределять их с локальными переменными по мере необходимости.

Таблица переменных (с значениями по умолчанию)

Переменная Описание Значение по умолчанию
checkmk_agent_authkey_dest Полный путь к файлу "authorized_keys" "{{ checkmk_agent_ssh_path }}/authorized_keys"
checkmk_agent_authkey_group Имя группы, которая должна владеть файлом "authorized_keys" "{{ checkmk_agent_ssh_group }}"
checkmk_agent_authkey_mode Настройки режима файла для файла "authorized_keys" "0600"
checkmk_agent_authkey_src Имя файла шаблона "authorized_keys" authorized_keys.j2
checkmk_agent_authkey_user Имя пользователя, который должен владеть файлом "authorized_keys" "{{ checkmk_agent_ssh_user }}"
checkmk_agent_cache_group Имя группы, которая должна владеть папкой и файлами "cache" "{{ checkmk_agent_cache_user }}"
checkmk_agent_cache_mode Настройки режима файла для папки и файлов "cache" "{{ checkmk_agent_mode }}"
checkmk_agent_cache_path Полный путь к папке "cache" "{{ checkmk_agent_home }}/cache"
checkmk_agent_cache_user Имя пользователя, который должен владеть папкой и файлами "cache" "{{ checkmk_agent_user }}"
checkmk_agent_comment Полное имя пользователя CheckMK Agent CheckMK Agent
checkmk_agent_count_users_crit Входящие пользователи, критический порог 15
checkmk_agent_count_users_warn Входящие пользователи, предупреждающий порог 10
checkmk_agent_count_zombie_procs_crit Зомби-процессы, критический порог 10
checkmk_agent_count_zombie_procs_warn Зомби-процессы, предупреждающий порог 5
checkmk_agent_dest Полный путь к исполняемому файлу CheckMK Agent "{{ checkmk_agent_home }}/check_mk_agent"
checkmk_agent_docker_complete Включить все модули Docker true
checkmk_agent_docker_dest Полный путь к файлу конфигурации Docker "{{ checkmk_agent_home }}/docker.cfg"
checkmk_agent_docker_group Имя группы, которая должна владеть файлом конфигурации Docker "{{ checkmk_agent_group }}"
checkmk_agent_docker_mode Настройки режима файла для файла конфигурации Docker "0644"
checkmk_agent_docker_src Имя файла шаблона конфигурационного файла Docker docker.cfg.j2
checkmk_agent_docker_user Имя файла шаблона конфигурационного файла Docker "{{ checkmk_agent_user }}"
checkmk_agent_group Имя группы, которая должна владеть исполняемым файлом CheckMK Agent "{{ checkmk_agent_user }}"
checkmk_agent_home Полный путь к домашней папке пользователя CheckMK Agent /home/{{ checkmk_agent_user }}
checkmk_agent_local_checks Список проверок для копирования в папку "local" count_users count_zombie_procs
checkmk_agent_local_checks_async Список проверок для копирования в асинхронные папки "local" (См. ПРИМЕЧАНИЕ A ниже)
checkmk_agent_local_group Имя группы, которая должна владеть папкой и файлами "local" "{{ checkmk_agent_local_user }}"
checkmk_agent_local_mode Настройки режима файла для папки и файлов "local" "{{ checkmk_agent_mode }}"
checkmk_agent_local_path Полный путь к папке "local" "{{ checkmk_agent_home }}/local"
checkmk_agent_local_purge Удалить папку "local" перед синхронизацией false
checkmk_agent_local_user Имя пользователя, который должен владеть папкой и файлами "local" "{{ checkmk_agent_user }}"
checkmk_agent_mode Настройки режима файла для исполняемого файла CheckMK Agent "0755"
checkmk_agent_plugin_checks Список проверок для копирования в папку "plugin" hpsa lvm mk_inventory.linux mk_iptables mk_nfsiostat mk_sshd_config netstat.linux nfsexports smart
checkmk_agent_plugin_checks_async Список проверок для копирования в асинхронные папки "plugin" (См. ПРИМЕЧАНИЕ A ниже)
checkmk_agent_plugin_group Имя группы, которая должна владеть папкой и файлами "plugin" "{{ checkmk_agent_plugin_user }}"
checkmk_agent_plugin_mode Настройки режима файла для папки и файлов "plugin" "{{ checkmk_agent_mode }}"
checkmk_agent_plugin_path Полный путь к папке "plugin" "{{ checkmk_agent_home }}/plugins"
checkmk_agent_plugin_purge Удалить папку "plugin" перед синхронизацией false
checkmk_agent_plugin_user Имя пользователя, который должен владеть папкой и файлами "plugin" "{{ checkmk_agent_user }}"
checkmk_agent_prereqs Список пакетов, необходимых для успешной установки python3-docker sudo
checkmk_agent_prereqs_yum Список пакетов, необходимых для успешной установки на системах, использующих YUM в качестве менеджера пакетов sudo
checkmk_agent_src Имя файла шаблона исполняемого файла CheckMK Agent check_mk_agent.linux.j2
checkmk_agent_ssh_group Имя группы, которая должна владеть папкой и файлами ".ssh" "{{ checkmk_agent_group }}"
checkmk_agent_ssh_mode Настройки режима файла для папки и файлов ".ssh" "0700"
checkmk_agent_ssh_path Полный путь к папке ".ssh" "{{ checkmk_agent_home }}/.ssh"
checkmk_agent_ssh_user Имя пользователя, который должен владеть папкой и файлами ".ssh" "{{ checkmk_agent_user }}"
checkmk_agent_spool_group Имя группы, которая должна владеть папкой и файлами "spool" "{{ checkmk_agent_spool_user }}"
checkmk_agent_spool_mode Настройки режима файла для папки и файлов "spool" "{{ checkmk_agent_mode }}"
checkmk_agent_spool_path Полный путь к папке "spool" "{{ checkmk_agent_home }}/spool"
checkmk_agent_spool_user Имя пользователя, который должен владеть папкой и файлами "spool" "{{ checkmk_agent_user }}"
checkmk_agent_sudo_dest Полный путь к файлу "sudoers.d", используемому для предоставления пользователю CheckMK Agent прав sudo на исполняемый файл CheckMK Agent /etc/sudoers.d/99_cmkagent
checkmk_agent_sudo_group Имя группы, которая должна владеть файлом "sudoers.d" "{{ checkmk_agent_sudo_owner }}"
checkmk_agent_sudo_mode Настройки режима файла для файла "sudoers.d" "0440"
checkmk_agent_sudo_owner Имя пользователя, который должен владеть файлом "sudoers.d" root
checkmk_agent_sudo_src Имя файла шаблона файла "sudoers.d" 99_cmkagent.j2
checkmk_agent_sudo_validate Команда, используемая для проверки файла "sudoers.d"; %s будет заполнено checkmk_agent_sudo_dest 'visudo -cf %s'
checkmk_agent_user Логин пользователя CheckMK Agent cmkagent
checkmk_agent_version Версия CheckMK Agent для установки 2.3.0p13
checkmk_agent_win_config_dest Полный путь к конфигурационному файлу "{{ checkmk_agent_win_data_folder }}check_mk.user.yml"
checkmk_agent_win_config_optimize Оптимизация Windows агента за счет отключения некоторых медленных проверок true
checkmk_agent_win_config_src Имя файла шаблона конфигурационного файла check_mk.user.yml.j2
checkmk_agent_win_data_folder Полный путь к папке данных CheckMK Agent C:\\ProgramData\\checkmk\\agent\\
checkmk_agent_win_install_dest Полный путь к файлу установки CheckMK Agent c:\\Users\\{{ ansible_user }}\\Downloads\\{{ checkmk_agent_win_install_src }}
checkmk_agent_win_install_src Короткое имя файла установки CheckMK Agent check_mk_agent.msi
checkmk_agent_win_plugins Список плагинов Windows для копирования в папку "plugin" mk_inventory.vbs windows_updates.vbs
checkmk_agent_win_productid Специфичный для версии "Product ID" для установки "{B6212139-D124-4782-8F81-05D08203092D}"

ПРИМЕЧАНИЕ A

checkmk_agent_local_checks_async и checkmk_agent_plugin_checks_async - Список проверок для копирования в асинхронные папки "plugin". Согласно документации:

Вывод локальных проверок, как и вывод плагинов агента, может кэшироваться. Это может быть необходимо, если скрипт занимает больше времени для обработки. Такой скрипт затем выполняется асинхронно и только через определенный интервал времени, а последний вывод кэшируется. Если агент запрашивается снова до истечения времени, он использует этот кэш для локальной проверки и возвращает его в выводе агента.

Формат этих списков следующий, с примером checkmk_agent_plugin_checks_async:

300:
  - apache_status.py
600:
  - ""
900:
  - ""
1800:
  - ""
86400:
  - mk_apt
  - mk_docker.py

Это запускает плагин apache_status.py только один раз каждые пять минут, а плагины mk_apt и mk_docker.py только один раз в день, вместо каждой проверки. Это экономит секунды на каждую оставшуюся проверку дня, использующую кэшированное значение.

Зависимости

На данный момент зависимости не определены.

Пример плейбука и вызова

Пример, который использует локальный файл authorized_keys:

- hosts: all
  roles:
     - { role: kso512.checkmk_agent, checkmk_agent_authkey_src="local/authorized_keys.j2" }

Пример, который очищает папку plugin перед ее повторным созданием:

$ ansible-playbook site.yml -t checkmk-agent -e "checkmk_agent_plugin_purge=true"

...

ЗАДАЧА [kso512.checkmk_agent : Удалить каталог - plugins | ФАЙЛ] ***********
изменен: [instance]

ЗАДАЧА [kso512.checkmk_agent : Создать каталог - plugins | ФАЙЛ] ***********
изменен: [instance]

Лицензия

GNU General Public License version 2

Участие

Если у вас есть предложения или идеи, пожалуйста, не стесняйтесь открывать проблему или форкать репозиторий и отправить запрос на слияние.

Информация об авторе

О проекте

A role to install CheckMK RAW edition agent.

Установить
ansible-galaxy install kso512/checkmk_agent
Лицензия
gpl-2.0
Загрузки
321
Владелец