Zobrazují se příspěvky se štítkemDocker. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemDocker. Zobrazit všechny příspěvky

středa 13. listopadu 2024

Zabbix Events to Event-Driven Ansible (EDA vs ansible-rulebook)

Již delší dobu jsem si sem nic nepoznamenal. Ale přišla příležitost si vyzkouset Zabbix a integraci s Event-Driven Ansible webhook v podobě Media Type. Inspirací a podnětem pro mě byl článek na blogu Zabbix.

Nejprve jsem se zaměřil na zprovoznění a seznámení se s EDA serverem, který jsem si zprovoznil pomocí docker compose.

https://github.com/smejdil/zabbix-eda/tree/main/tools/docker

EDA je pěkné klikátko, které má smysl použít jen s AWX nebo RedHat AAP protože neumí použít inventory :-( Tento poznatek byl zklamáním.


 
Narazil jsem na tuto chybu :-(

Rulebook fails with "Playbook has an action run_playbook which needs inventory to be defined"

https://access.redhat.com/solutions/7024714

Root Cause You can only use the run_playbook with ansible-rulebook cli while also specifying inventory. If you want to use the integrated AAP / EDA interactions, you probably are looking for run_job_template which is defined on your AAP controller and created under the correct organization.

No a ještě potvrzení ... ohledně akce run_playbook

run_playbook (only supported with ansible-rulebook CLI)

A tak jsem se tedy vydal cestou ansible-rulebook a vytvořil si Docker kontainer pro vytvoření webhooku na portu 5001, který reaguje na událost akci v podobě ansible playbooku.

- name: Zabbix test rulebook
  hosts: all
  sources:
    - ansible.eda.webhook:
        host: "::"
        port: 5001
    - ansible.eda.webhook:
        host: "0.0.0.0"
        port: 5001
  rules:
    - name: Run playbook for Apache2
      condition: >-
        event.payload.host_groups is select("==","Private/LM.NET/Office") and
        event.payload.event_tags.target is select("==","apache")
      action:
        run_playbook:
          name: playbooks/check-apache.yaml
...




Webhooků s ansible-rulebook si můžu rozjet více v kontainerech pro jednotlivé pojekty a ze Zabbixu to můžu posílat na jednotlivé porty dle akce ktára reaguje třeba jen na tag target:eda, takže je to událostní kolečko snadno realizovatelné.

Je pracné nadefinovat pravidla v rulebooku a napsat opravné playbooky, ale přijde mi to rozumný ucelený rešeni postavené na Ansible, pro fixnutí nějakých služeb, které maji nějaké podivné vlastnosti (třeba i ve Windows) a je nutné je za jistych zjištených okolností fixnout 😊 restartem nebo jiným opatřením.

Pravý Zabbixák mi odpoví nemusíš mít přeci Událostní udělátko, stačí Zabbix Script a Akce co reaguje na Trigger 😊

za me to jisté řešení je

Konec hlášení ...

čtvrtek 3. února 2022

Valheim Dedicated Server za pomoci Docker

Starší syn nedávno začal hrát hru Valheim se synem mého kamaráda. Netrvalo dlouho a zvědavost mě donutila se k nim též připojit a zažít tak vikingské dobrodružství, jako např. plavba na lodi do neznama. Hra ve čtyřech je úplně něco jiného.

Technické problémy spojené s provozem lokálního dedikovaného serveru na notebooku mě přivedly k myšlence pustit hru někde v internetu. Hra má svů port i pro Linux a tak se dalo čekat, že vývojáři něco připravené mají. Velmi mile mě překvapila možnost pustit dedikovaný herní server v Dockeru. Hra včera oslavila první narozeniny a i tak se dostala do povědomí mnoha hráčů, ale i hosterů. I u nás v čechách se hostingem zabývá fakaheda.eu. Proč za to platit, když si to umím zprovoznit sám :-)

Netrvalo dlouho s server běžel, dle mých představ. Následovalo zachovat svět, který měli chlapci odehraný. Škoda mnoha hodin. A tak jsem se připojil k vlastníkovi světa a data zkopíroval. Mírnou konfigurací se povedlo vše zachovat. To bych nebyl já abych si server i Docker kontejner nemonitoroval Zabbixem.

Valheim.SmEjDiL.CZ



čtvrtek 2. března 2017

Jak monitorovat Docker Zabbixem


 V poslední době se pracově intenzívně zabývám projektem Docker. V práci mám aktuálně instalovaných 6 serverů s docker-engine. Dva na seznamovaní a čtyři jsou aktuálně nachystané pro jeden větší projekt.

V rámci instalace serveru s CentOS 7.3 pomocí Kickstart se provádí post-install kroky jako přidáni repo docker a nastavení proxy.

yum install -y yum-utils
yum-config-manager --add-repo https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo
 

systemctl enable docker.service

vi /etc/yum.conf
proxy=http://192.168.10.42:8080
 

mkdir -p /etc/systemd/system/docker.service.d/
vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.10.42:3128/"


Když máme funkční Docker prostředí, přichází logicky na řadu monitoring :-) Existuje celá řada různých Zabbix šablon viz např. tento seznam. Já si vybral takovou velmi pěkně propracovanou a hlavně rychlou. Na konferenci Zabbix jsem poznal monitoringartist přesněji řečeno Jan Garaj se kterým jsem byl již v minulosti v kontaktu ohledně Zabbix překladů.

Jeho řešení monitorování Dockeru je zajímavé tím, že využívá zabbix agent modul. Moduly Zabbix zavedl od verze 2.2. Jedná se o možnost doplnit funkcionalitu zabbix agenta o vlastni klíče. Běžně se tato funkcionalita provádí skrze UserParameter, kde si definujeme klíč a k němu script, který získá požadovanou hodnotu. Ale toto je velmi pomalé a neefektivní. Pokud použijeme agent modul, který je psaný v jazyce C, je rychlost získání hodnot až 10x vyžší.

Na GitHubu je velmi podrobný postup, jak si modul zkompilovat. Honza má i předkompilované verze pro Zabbix 3.0 a 3.2 a to pro mnoho různých Linux distribucí.

Já šel cestou vlastní kompilace. Modul jsem si zkompiloval pro Zabbix 3.0:

yum install -y wget autoconf automake gcc svn

svn export svn://svn.zabbix.com/branches/3.0 zabbix
cd zabbix
./bootstrap.sh
./configure --enable-agent
mkdir src/modules/zabbix_module_docker
cd src/modules/zabbix_module_docker
wget https://raw.githubusercontent.com/monitoringartist/zabbix-docker-monitoring/master/src/modules/zabbix_module_docker/zabbix_module_docker.c
wget https://raw.githubusercontent.com/monitoringartist/zabbix-docker-monitoring/master/src/modules/zabbix_module_docker/Makefile
make
gcc -fPIC -shared -o zabbix_module_docker.so zabbix_module_docker.c -I../../../include -I../../../src/libs/zbxsysinfo
cp zabbix_module_docker.so /usr/local/lib/ 


Dále je potřeba umožnit Zabbixu číst Docker socket. Můžeme upravit konfiguraci Zabbix agenta a udělit oprávnění roota nebo přidat zabbix do skupiny docker. Zabbix agent může ziskat vyšši opravnění v podobě AllowRoot=1.

usermod -aG docker zabbix

nebo
 
vi /etc/zabbix/zabbix_agentd.conf
...
AllowRoot=1 

...
LoadModulePath=/usr/local/lib
LoadModule=zabbix_module_docker.so

 
Po restartu agenta se v logu objěví uspěšné nahrání modulu.

systemctl restart zabbix-agent.service

tail -f /var/log/zabbix/zabbix_agentd.log
...
51284:20170301:132041.853 loaded modules: zabbix_module_docker.so


Tento postup je pro toho kdo má svůj Zabbix server, který neběží v Dockeru. Dá se využít Honzova uceleného řešení Zabbix XXL, které logicky má již vše nastavené monitorování Dockeru.

Velké díky Honzovi za jeho zabbix modul zabbix_module_docker.c