Log Analytics: jak měřit výkon čehokoli v Linuxu

Log Analytics (OMS) dokáže sbírat výkonnostní ukazatele z Linuxu. Nativně je OMS agent schopen získávat několik systémových čitačů a má také přímou podporu pro monitoring Apache a MySQL. Nicméně sledovat můžete cokoli, tedy i různé další aplikace, díky integraci s CollectD. Podívejme se dnes jak Log Analytics sbírá performance countery z Linuxu a jak přidat další.

Nativní sběr ukazatelů

Jak už padlo v úvodu Log Analytics dokáže nativně sbírat řadu výkonnostních ukazatelů v tomto okruhu - procesor, disk, síťová karta, procesy, paměť a systém.

Ty nejpoužívanější můžete přidat doslova jedním kliknutím.

Můžete si nastavit jaké instance (výskyty, třeba jádra) chcete sledovat a v jakém intervalu.

Četnost sběru se odrazí na celkově spotřebě prostoru v Log Analytics - zhruba můžete počítat, že při desetivteřinovém intervalu zabere jedna instance counteru asi 1MB denně. Logicky tedy pokud pro některé ukazatele zvednete četnost odečtu na 100 vteřin, sníží se potřebný úložný prostor na 0,1MB. V GUI můžete provádět nastavení, které se zapíše do všech Linux strojů. Pokud potřebujete selektivně zapnout různé country pro různé stroje, je to možné, ale pak jde o nastavení v konfiguračním souboru konkrétního agenta a centrální konfiguraci z GUI vypnete (a v tomto článku se do toho pouštět nebudeme).

OMS agent nativně pozná, když je v serveru Apache a umožní vám jednoduše přidat tyto ukazatele:

Podobně je to s MySQL, ale tam musíte nastavit v OS příslušná oprávnění (o tom asi jindy):

Jednotlivé metriky můžete přímo vyhledávat a vizualizovat v Log Search.

Můžeme také vystavět například konkrétní graf nějakého counteru. Použiji například toto query, které zobrazí zatíženost procesoru:

Type=Perf TimeGenerated>NOW-2HOUR ObjectName=Processor InstanceName=_Total CounterName="% Processor Time" Computer="mojeoms-linux" | measure avg(CounterValue) by Computer interval 5minute

Pokud chcete, můžete si udělat grafy přímo na dashboard - stačí použít příslušná query ve view designeru.

Sbírejte cokoli s CollectD

Systémové čitače, MySQL a Apache dokáže OMS agent sbírat nativně a určitě se budou další aplikace v budoucnu přidávat. Nicméně možná potřebujete sbírat už teď něco jiného, třeba request v nginx. Vyzkoušejme si to na mém Ubuntu 16.04.

Nejprve nainstalujte nginx.

sudo apt-get install nginx

Upravíme si konfigurační soubor /etc/nginx/sites-available/default

Do něj přidáme možnost reportovat status - do sekce s vašim location / přidejte tohle:

location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}

Restartujte nginx a může vyzkoušet curl http://127.0.0.1/nginx_status.

sudo /etc/init.d/nginx restart

Výborně. Teď nainstalujeme CollectD.

sudo apt-get install collectd

Potřebujeme zapnout a nakonfigurovat nginx plugin. Vytvoříme tento soubor s tímto obsahem:

sudo nano /etc/collectd/collectd.conf.d/nginx.conf

LoadPlugin nginx
<Plugin "nginx">
    URL "http://localhost/nginx_status"
</Plugin>

CollectD typicky reportuje host (což se v OMS objeví jako Computer) s FQDN, což nemusí být jak identifikuje stroj OMS agent. Pro jistotu změňte toto jméno v konfiguraci CollectD (/etc/collectd/collectd.conf):

Hostname mojeoms
FQDNLookup false

Teď už potřebujeme jen propojit CollectD a OMS agenta. Povídat si spolu budou interně na portu 26000 (ale to můžete změnit). OMS má pro nás připravenou konfigurace pluginu do CollectD, takže tu stačí jen nakopírovat.

sudo cp /etc/opt/microsoft/omsagent/sysconf/omsagent.d/oms.conf /etc/collectd/collectd.conf.d/oms.conf

Tím máme nastaveno, že CollectD posílá data do OMS agenta. Ten je bude přijímat a konvertovat do formátu vhodného pro OMS. Zbývá nám tedy tuto funkci v OMS agentovi zapnout. Opět je pro vás připraven hotový konfigurační soubor a stačí ho nakopírovat. V adresářové cestě je workspace ID - to u vás bude jiné (OMS agent dokáže reportovat do vícero workspaců, takže pokud je to váš případ vyberte si ty, kam chcete CollectD metriky posílat).

sudo cp /etc/opt/microsoft/omsagent/sysconf/omsagent.d/collectd.conf /etc/opt/microsoft/omsagent/5bf60783-28f2-4524-9c86-8610b4c1f18f/conf/omsagent.d/
sudo chown omsagent:omiusers /etc/opt/microsoft/omsagent/5bf60783-28f2-4524-9c86-8610b4c1f18f/conf/omsagent.d/collectd.conf

Na závěr restartujte CollectD i OMS agenta.

sudo /etc/init.d/collectd restart
sudo /opt/microsoft/omsagent/bin/service_control restart

Výborně - podívejme se do OMS a můžeme začít sledovat například nginx otevřené spojení nebo requesty za vteřinu.

Stejně jako u nativních counterů můžete na základě takto sesbíraných dat zobrazovat různé grafy, tabulky a tak podobně.

 

Jak vidíte Log Analytics nabízí vysokou míru flexibility. Linux OMS agent dokáže nativně sbírat systémová měření, ale i Apache a MySQL. Nicméně pokud vám něco chybí využijte propojení s CollectD, které přichází s velkým množstvím pluginů pro různé aplikace - a jeslti nějaká chybí, můžete si ho dopsat.



Azure, Kubernetes, FinOps a strategie účtování nákladů Monitoring
Máte rádi Prometheus a Grafana pro váš Kubernetes? Jak na to všechno v plně managed formě v Azure? Monitoring
Nativní Azure Monitor a Microsoft Sentinel nově umí levnější logy a zabudovanou levnější archivaci - praxe (část 2) Monitoring
Nativní Azure Monitor a Microsoft Sentinel nově umí levnější logy a zabudovanou levnější archivaci - analýza nákladů (část 1) Monitoring
Prolevněte si Azure Sentinel s Fluent Bit, Blobem a Azure Data Explorer Monitoring