kso512.checkmk_agent

checkmk_agent

Jakość roli Ansible Pobrania roli Ansible Rozmiar repozytorium GitHub

Wydanie Problemy na GitHubie

stworzone w bash stworzone w Markdown GitHub

To jest Rola Ansible do instalacji agenta/klienta dla CheckMK RAW edition.

Jest to całkowicie przerobiona wersja roli install-check_mk-agent, którą tworzyłem i utrzymywałem przez lata. Zmiany zostały wprowadzone w związku z nowymi zasadami CI/CD oraz konwencjami nazewnictwa w Ansible Galaxy i CheckMK.

Wszystkie zadania są oznaczone jako checkmk-agent.

Poniższe dystrybucje zostały przetestowane automatycznie:

Z powodów wydajnościowych następujące "sekcje" zostały domyślnie wyłączone w agencie Windows:

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

Dodatkowo, wykonanie wtyczek zostało dostosowane:

  • Limit czasu zwiększony z 30 do 120
  • Włączono asynchroniczność
  • Cache_age ustawione na 3600 (1 godzina)

Utwórz własny plik "check_mk.user.yml.j2" i przekaż checkmk_agent_win_config_src, aby dostosować dalsze ustawienia, lub ustaw zmienną checkmk_agent_win_config_optimize na false, aby wyłączyć tę optymalizację.

Podobne modyfikacje zostały dokonane na domyślnym pliku docker.cfg. Tutaj wszystkie sekcje docker zostały włączone, a przywrócenie domyślnych ustawień można osiągnąć ustawiając zmienną checkmk_agent_docker_complete na false.

Ostatnia Matryca Wersji

Wersja CheckMK Raw Edition Wersja/Tag Roli
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

Wymagania

Ta rola nie wymaga innych ról. Jest zaprojektowana, aby współpracować z serwerami CheckMK w ogóle oraz z kso512.checkmk_server w szczególności.

Jeśli łączysz się z hostem Windows za pomocą Windows Remote Management (WinRM), może być konieczne zainstalowanie pakietu pywinrm na swoim systemie Ansible:

pip install "pywinrm>=0.3.0"

Ta rola wykorzystuje SSH na systemach typu Unix zamiast domyślnego portu 6556. Szyfruje to komunikację i unika otwierania nowego portu do monitorowania oraz uruchamiania nowej usługi.

Aby utworzyć klucze uwierzytelniające dla SSH, użyj programu "ssh-keygen", jak pokazano tutaj.

Przykład tworzenia domyślnych kluczy bez hasła w lokalnym folderze:

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

Utworzy to dwa pliki: id_rsa i id_rsa.pub.

id_rsa = Klucz prywatny, który należy przechowywać w bezpiecznym miejscu. Ten plik powinien znajdować się w folderze ~/.ssh użytkownika agenta CheckMK. Przykład użycia domyślnego użytkownika i witryny z "kso512.checkmk_server":

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

id_rsa.pub = Klucz publiczny, który można udostępniać innym zaufanym hostom. Ten plik powinien być dodany do lokalnego pliku "authorized_keys.j2". Zakładając domyślną strukturę ról:

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

Następnie zadeklaruj local/authorized_keys.j2 jako checkmk_agent_authkey_src w swoich własnych zmiennych; przykład pokazany poniżej.

Na koniec skonfiguruj sam CheckMK, aby wykorzystał te pliki zamiast próbować połączyć się z portem TCP 6556:

  • Zaloguj się do CheckMK
  • Ustawienia > Szukaj > "indywidualne" > Indywidualne wywołanie programu zamiast dostępu agenta
  • Utwórz regułę w folderze: Katalog główny
    • Opis: Użyj SSH i konta cmkagent z kluczami SSH
    • Linia poleceń do wykonania: ssh -i ~/.ssh/id_rsa -l cmkagent <IP> sudo /home/cmkagent/check_mk_agent
    • Explicit hosts: (wybierz hosta testowego, następnie, gdy będzie działać, skonfiguruj tagi hosta lub etykiety)
    • Zapisz
  • 1 zmiana > Aktywuj na wybranych witrynach

Zmienne Roli

Niektóre z nich mogą wydawać się zbędne, ale są podane, aby przyszli użytkownicy mogli je w razie potrzeby zmieniać za pomocą lokalnych zmiennych.

Tabela Zmiennych (z Domyślnymi Wartościami)

Zmienna Opis Domyślna
checkmk_agent_authkey_dest Pełna ścieżka do pliku "authorized_keys" "{{ checkmk_agent_ssh_path }}/authorized_keys"
checkmk_agent_authkey_group Nazwa grupy, która powinna posiadać plik "authorized_keys" "{{ checkmk_agent_ssh_group }}"
checkmk_agent_authkey_mode Ustawienia trybu pliku dla pliku "authorized_keys" "0600"
checkmk_agent_authkey_src Nazwa pliku szablonu "authorized_keys" authorized_keys.j2
checkmk_agent_authkey_user Nazwa użytkownika, który powinien posiadać plik "authorized_keys" "{{ checkmk_agent_ssh_user }}"
checkmk_agent_cache_group Nazwa grupy, która powinna posiadać folder i pliki "cache" "{{ checkmk_agent_cache_user }}"
checkmk_agent_cache_mode Ustawienia trybu pliku dla folderu i plików "cache" "{{ checkmk_agent_mode }}"
checkmk_agent_cache_path Pełna ścieżka do folderu "cache" "{{ checkmk_agent_home }}/cache"
checkmk_agent_cache_user Nazwa użytkownika, który powinien posiadać folder i pliki "cache" "{{ checkmk_agent_user }}"
checkmk_agent_comment Pełna nazwa użytkownika agenta CheckMK CheckMK Agent
checkmk_agent_count_users_crit Krytyczny próg zalogowanych użytkowników 15
checkmk_agent_count_users_warn Ostrzegawczy próg zalogowanych użytkowników 10
checkmk_agent_count_zombie_procs_crit Krytyczny próg procesów zombie 10
checkmk_agent_count_zombie_procs_warn Ostrzegawczy próg procesów zombie 5
checkmk_agent_dest Pełna ścieżka do pliku wykonywalnego agenta CheckMK "{{ checkmk_agent_home }}/check_mk_agent"
checkmk_agent_docker_complete Uwzględnij wszystkie moduły dockera true
checkmk_agent_docker_dest Pełna ścieżka do pliku konfiguracyjnego Dockera "{{ checkmk_agent_home }}/docker.cfg"
checkmk_agent_docker_group Nazwa grupy, która powinna posiadać plik konfiguracyjny Dockera "{{ checkmk_agent_group }}"
checkmk_agent_docker_mode Ustawienia trybu pliku dla pliku konfiguracyjnego Dockera "0644"
checkmk_agent_docker_src Nazwa pliku szablonu pliku konfiguracyjnego Dockera docker.cfg.j2
checkmk_agent_docker_user Nazwa użytkownika, który powinien posiadać plik konfiguracyjny Dockera "{{ checkmk_agent_user }}"
checkmk_agent_group Nazwa grupy, która powinna posiadać plik wykonywalny agenta CheckMK "{{ checkmk_agent_user }}"
checkmk_agent_home Pełna ścieżka do folderu domowego użytkownika agenta CheckMK /home/{{ checkmk_agent_user }}
checkmk_agent_local_checks Lista kontroli do skopiowania do folderu "local" count_users count_zombie_procs
checkmk_agent_local_checks_async Lista kontroli do skopiowania do folderów asynchronicznych "local" (Zobacz UWAGĘ A poniżej)
checkmk_agent_local_group Nazwa grupy, która powinna posiadać folder i pliki "local" "{{ checkmk_agent_local_user }}"
checkmk_agent_local_mode Ustawienia trybu pliku dla folderu i plików "local" "{{ checkmk_agent_mode }}"
checkmk_agent_local_path Pełna ścieżka do folderu "local" "{{ checkmk_agent_home }}/local"
checkmk_agent_local_purge Usuń folder "local" przed synchronizacją false
checkmk_agent_local_user Nazwa użytkownika, który powinien posiadać folder i pliki "local" "{{ checkmk_agent_user }}"
checkmk_agent_mode Ustawienia trybu pliku dla pliku wykonywalnego agenta CheckMK "0755"
checkmk_agent_plugin_checks Lista kontroli do skopiowania do folderu "plugin" hpsa lvm mk_inventory.linux mk_iptables mk_nfsiostat mk_sshd_config netstat.linux nfsexports smart
checkmk_agent_plugin_checks_async Lista kontroli do skopiowania do folderów asynchronicznych "plugin" (Zobacz UWAGĘ A poniżej)
checkmk_agent_plugin_group Nazwa grupy, która powinna posiadać folder i pliki "plugin" "{{ checkmk_agent_plugin_user }}"
checkmk_agent_plugin_mode Ustawienia trybu pliku dla folderu i plików "plugin" "{{ checkmk_agent_mode }}"
checkmk_agent_plugin_path Pełna ścieżka do folderu "plugin" "{{ checkmk_agent_home }}/plugins"
checkmk_agent_plugin_purge Usuń folder "plugin" przed synchronizacją false
checkmk_agent_plugin_user Nazwa użytkownika, który powinien posiadać folder i pliki "plugin" "{{ checkmk_agent_user }}"
checkmk_agent_prereqs Lista pakietów potrzebnych do udanej instalacji python3-docker sudo
checkmk_agent_prereqs_yum Lista pakietów potrzebnych do udanej instalacji na systemach korzystających z YUM jako menedżera pakietów sudo
checkmk_agent_src Nazwa pliku szablonu pliku wykonywalnego agenta CheckMK check_mk_agent.linux.j2
checkmk_agent_ssh_group Nazwa grupy, która powinna posiadać folder ".ssh" i pliki "{{ checkmk_agent_group }}"
checkmk_agent_ssh_mode Ustawienia trybu pliku dla folderu ".ssh" i plików "0700"
checkmk_agent_ssh_path Pełna ścieżka do folderu ".ssh" "{{ checkmk_agent_home }}/.ssh"
checkmk_agent_ssh_user Nazwa użytkownika, który powinien posiadać folder ".ssh" i pliki "{{ checkmk_agent_user }}"
checkmk_agent_spool_group Nazwa grupy, która powinna posiadać folder i pliki "spool" "{{ checkmk_agent_spool_user }}"
checkmk_agent_spool_mode Ustawienia trybu pliku dla folderu i plików "spool" "{{ checkmk_agent_mode }}"
checkmk_agent_spool_path Pełna ścieżka do folderu "spool" "{{ checkmk_agent_home }}/spool"
checkmk_agent_spool_user Nazwa użytkownika, który powinien posiadać folder i pliki "spool" "{{ checkmk_agent_user }}"
checkmk_agent_sudo_dest Pełna ścieżka do pliku "sudoers.d", używanego do nadania użytkownikowi agenta CheckMK dostępu sudo do pliku wykonywalnego agenta CheckMK /etc/sudoers.d/99_cmkagent
checkmk_agent_sudo_group Nazwa grupy, która powinna posiadać plik "sudoers.d" "{{ checkmk_agent_sudo_owner }}"
checkmk_agent_sudo_mode Ustawienia trybu pliku dla pliku "sudoers.d" "0440"
checkmk_agent_sudo_owner Nazwa użytkownika, który powinien posiadać plik "sudoers.d" root
checkmk_agent_sudo_src Nazwa pliku szablonu "sudoers.d" 99_cmkagent.j2
checkmk_agent_sudo_validate Polecenie służące do walidacji pliku "sudoers.d"; %s zostanie wypełnione wartością checkmk_agent_sudo_dest 'visudo -cf %s'
checkmk_agent_user Nazwa użytkownika agenta CheckMK cmkagent
checkmk_agent_version Wersja agenta CheckMK do zainstalowania 2.3.0p13
checkmk_agent_win_config_dest Pełna ścieżka do pliku konfiguracyjnego "{{ checkmk_agent_win_data_folder }}check_mk.user.yml"
checkmk_agent_win_config_optimize Optymalizuj agenta Windows, rezygnując z niektórych wolniejszych kontroli true
checkmk_agent_win_config_src Nazwa pliku szablonu pliku konfiguracyjnego check_mk.user.yml.j2
checkmk_agent_win_data_folder Pełna ścieżka do folderu danych agenta CheckMK C:\\ProgramData\\checkmk\\agent\\
checkmk_agent_win_install_dest Pełna ścieżka do pliku instalacyjnego agenta CheckMK c:\\Users\\{{ ansible_user }}\\Downloads\\{{ checkmk_agent_win_install_src }}
checkmk_agent_win_install_src Krótka nazwa pliku instalacyjnego agenta CheckMK check_mk_agent.msi
checkmk_agent_win_plugins Lista wtyczek Windows do skopiowania do folderu "plugin" mk_inventory.vbs windows_updates.vbs
checkmk_agent_win_productid Specyficzny dla wersji "Product ID" do zainstalowania "{B6212139-D124-4782-8F81-05D08203092D}"

UWAGA A

checkmk_agent_local_checks_async oraz checkmk_agent_plugin_checks_async - Lista kontroli do skopiowania do asynchronicznych folderów "plugin". Per dokumentacja:

Wynik lokalnych kontroli, jak to ma miejsce w przypadku wtyczek agenta, może być buforowany. Może to być konieczne, jeśli skrypt ma dłuższy czas przetwarzania. Taki skrypt jest następnie wykonywany asynchronicznie i tylko w określonym interwale czasowym, a ostatni wynik jest buforowany. Jeśli agent zostanie zapytany ponownie przed upływem czasu, używa tego cache'u dla lokalnej kontroli i zwraca go w wyniku agenta.

Format tych list jest następujący, z checkmk_agent_plugin_checks_async pokazanym:

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

To uruchomi wtyczkę apache_status.py tylko raz na pięć minut, a wtyczki mk_apt i mk_docker.py tylko raz dziennie, zamiast przy każdej kontroli. To oszczędza sekundy na każdej pozostałej kontroli w ciągu dnia, która korzysta z buforowanej wartości.

Zależności

Jak dotąd brak.

Przykładowy Playbook i Wywołanie

Przykład, który używa lokalnego pliku authorized_keys:

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

Przykład, który czyści folder plugin przed ponownym utworzeniem:

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

...

ZADANIE [kso512.checkmk_agent : Usunięcie katalogu - plugins | PLIKI] ***********
zmieniono: [instance]

ZADANIE [kso512.checkmk_agent : Utworzenie katalogu - plugins | PLIKI] ***********
zmieniono: [instance]

Licencja

GNU General Public License wersja 2

Współpraca

Jeśli masz jakieś sugestie lub pomysły, zapraszam do otwierania ticketów lub forkingu repozytorium i przesyłania prośby o scalenie.

Informacje o autorze

O projekcie

A role to install CheckMK RAW edition agent.

Zainstaluj
ansible-galaxy install kso512.checkmk_agent
Licencja
gpl-2.0
Pobrania
357
Właściciel