2024. április 25., csütörtök

Gyorskeresés

Home Server kialakítása Broadwell-U alapokon

Passzív hűtéssel ellátott, kis fogyasztású, univerzálisan használható eszköz építése, linux kiszolgálóra támaszkodva.

[ ÚJ TESZT ]

Online Monitoring

Létezik kész megoldás arra, hogy online követhessük, irányíthassuk egy szerver tevékenységét, ám itt is inkább a saját megoldást választottam, tekintettel arra, hogy csak egy kis szeletet, a fogyasztást szerettem volna figyelni. Kezdetben.

Először írtam egy egyszerű bash scriptet és az azt futtató, felügyelő service-t. A script olvasta az Arduino Nano USB portján már közölt adatot, és leírta azt egy csv fájlba, időbélyeggel együtt. Így indult minden.

Aztán kisvártatva napvilágot látott az alábbi szörnyszülött:

#!/bin/bash

max_sorok=120;

while true

do

#TEMPPOWER adatok leírása fájlba
echo $(date +"%Y%m%d%H%M%S"),$(sensors | grep 'Core 0' | awk '{printf("%d\n",$3)}'),$(sensors | grep 'Core 1' | awk '{printf("%d\n",$3)}'),$(tail -1 /var/www/html/monitoring/arduino_serial_monitor.csv) >> /var/www/html/monitoring/temppower.csv

#TEMPPOWER felesleges sorok törlése
if [ "$(($(($(wc -l < /var/www/html/monitoring/temppower.csv)-1))-$max_sorok))" -gt 0 ]
then
sed -i 2,"$(($(($(($(wc -l < /var/www/html/monitoring/temppower.csv)-1))-$max_sorok))+1))"d /var/www/html/monitoring/temppower.csv
fi

#CPUMEM adatok leírása fájlba
echo $(date +"%Y%m%d%H%M%S"),$(cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{printf ("%d\n",($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5))}'),$(free | grep Mem | awk '{printf("%d\n",($2-$7)/$2 * 100)}') >> /var/www/html/monitoring/cpumem.csv

#CPUMEM felesleges sorok törlése
if [ "$(($(($(wc -l < /var/www/html/monitoring/cpumem.csv)-1))-$max_sorok))" -gt 0 ]
then
sed -i 2,"$(($(($(($(wc -l < /var/www/html/monitoring/cpumem.csv)-1))-$max_sorok))+1))"d /var/www/html/monitoring/cpumem.csv
fi

#Disk adatok leírása fájlba, max 1 sor
echo root,datavault,downloads > /var/www/html/monitoring/disks.csv
echo $(df -h | grep /dev/sdb3 | awk '{printf("%d\n",$5)}'),$(df -h | grep /dev/sda1 | awk '{printf("%d\n",$5)}'),$(df -h | grep /dev/sda2 | awk '{printf("%d\n",$5)}') >> /var/www/html/monitoring/disks.csv

cat /dev/null > /var/www/html/monitoring/arduino_serial_monitor.csv #Serial monitor fájl ürítése
sleep 10s

done

Maga a script talán kissé túl integrált, szét lehetett volna jobba bontani, strukturálni. Rögzíti a CPU maghőmérsékleteket, a fogyasztást, processzorhasználatot és memóriatelítettséget, valamint a lemezek telítettségét. Minden 10 másodpercben születik új adat, három csv fájlra szétosztva. A maximális sorok száma limitált, a legrégebbi sorokat törli. Az így frissen tartott csv fájlok tartalmát már könnyebben tudtam online formába önteni.

A webes megjelenítés adta magát, hiszen a Apache2 webszerver már futott a rendszeren. Grafikon formát képzeltem el, így némi keresés után eljutottam a C3.js projectig, amellyel viszonylag egyszerűen lehet chartokat rajzoltatni, lényegében csak alá kell tenni az adatot, és konfigurálni egy kicsit. Készítettem egy html fájlt, amiben elrendeztem a chartokat, beolvastattam az információkat.

Példa chart:

<script type='text/javascript'>

//TEMPOWER CHART

var chart1 = c3.generate({
bindto: '#tempandpowerchart',
data: {
url: 'temppower.csv',
type: 'line',
x: 'date',
xFormat: '%Y%m%d%H%M%S',
names: {
'temp1': 'Core0 Hőmérséklet [ºC]',
'temp2': 'Core1 Hőmérséklet [ºC]',
'power': 'Teljesítményfelvétel [W]',
},
types: {
temp1: 'area',
temp2: 'area',
power: 'area',
},
},
axis: {
x: {
label: {
text: 'Data: lm-sensors + Arduino Energy Monitor',
position: 'outer-right'
},
type: 'timeseries',
tick: {
format: '%Y-%m-%d %H:%M:%S'
}
},
y: {
max: 80,
min: 10,
},
},
zoom: {
enabled: true
},
legend: {
position: 'center'
},
});

</script>


Online Monitoring weboldal

A végeredmény egy új adat esetén automatikusan frissülő, webszerveren futkározó, szerintem mutatós monitoring oldal, ami csak a számomra releváns adatokat jeleníti meg (több kattintás a teljes mérethez).

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.