HTOP per veure com està la Raspberry Pi

HTOP

I després d’instal·lar-hi un bon grapat de paquets, com sabem si està bé i pot aguantar encara més càrrega la nostre Raspberry Pi? doncs coneixia el comandament top, però no htop (https://htop.dev), que permet veure a temps real la monitortizació i estat d’un equip amb LINUX.

HTOP

Jo he trobat que la meva distribució ja el tenia instal·lat, però sinó només cal fer:

sudo apt-get install htop

i per executar-ho

sudo htop

resultat de la sentència htp

Tot i tenir una pantalla text o shell, podrem personalitzar alguns paràmetres com els colors, el mode de representar gràficament alguna informació o el fet de mostrar més detall d’alguns procesos. Excepcional i imprescindible!

Instal·lar UniFI Controler a una Raspberry Pi

Un dels objectius de tenir una altre Raspberry Pi funcionant per casa, és tenir en ella funcionant l’UniFi Controller i així no dependre de l’estació de treball on està actualment per tenir menys consums energètics i alliberar recursos d’un equip que no ha de fer de servidor.

Hi ha documentació oficial de Ubiquiti (https://community.ui.com/questions/Step-By-Step-Tutorial-Guide-Raspberry-Pi-with-UniFi-Controller-and-Pi-hole-from-scratch-headless/e8a24143-bfb8-4a61-973d-0b55320101dc), però he arribat a un enllaç encara millor:

https://pimylifeup.com/rasberry-pi-unifi/ (Genial la documentació!!)

Genial i fàcil. Copio les instruccions per si mai es perd la web.

Un cop seguits els passos, només he recuperat d’una còpia de seguretat la configuració anterior i en 1 minut ja estava migrat i funcionant el servei, a més amb més molt bon rendiment que abans!!

 Preparació del vostre Raspberry Pi per al controlador UniFi

En aquesta secció, prepararem el sistema operatiu perquè pugui executar el programari UniFi.

1. El primer que heu de fer és assegurar-vos que el vostre Raspberry Pi estigui executant paquets actualitzats.

Per actualitzar tots els paquets, haureu d’executar l’ordre següent.

sudo apt update
sudo apt upgrade

2. A continuació, hem d’instal·lar la versió 8 de l’entorn d’execució de Java al nostre Raspberry Pi executant l’ordre següent.

Hem d’instal·lar Java ja que el controlador de xarxa UniFi requereix que s’executi.

sudo apt install openjdk-8-jre-headless

A partir del moment de la publicació, UniFi no admet versions més recents del temps d’execució de Java.

3.Per millorar la velocitat d’inici del programari del controlador UniFi al nostre Raspberry Pi, hem d’instal·lar-lo rng-tools.

Utilitzarem aquest paquet per assegurar-nos que Raspberry Pi tingui prou entropia per a la generació de números aleatoris que utilitza el programari UniFi.

sudo apt install rng-tools

4. Ara hem de fer un lleuger canvi a la configuració de rng-tools.

Comenceu a editar el fitxer de configuració executant l’ordre següent.

sudo nano /etc/default/rng-tools

5. Dins d’aquest fitxer, cerqueu i descomenteu la línia següent.

Troba

#HRNGDEVICE=/dev/hwrng

Substitueix per

HRNGDEVICE=/dev/hwrng

En fer un comentari sobre aquesta línia, afegirem la quantitat d’entropia (la quantitat d’atzar) que el sistema té disponible.

El Raspberry Pi compta amb un generador de números aleatoris integrat que podem utilitzar per augmentar el conjunt d’entropies.

6.Un cop s’hagi realitzat el canvi, deseu l’arxiu prement CTRLXi, a continuació Y, seguit per ENTER.

7.Finalment, reinicieu el rng-toolsservei executant l’ordre següent.

sudo systemctl restart rng-tools

Un cop el servei hagi acabat de reiniciar-se, ara hauria de ser segur passar a la següent secció d’aquesta guia.

 Instal·lació del controlador UniFi al Raspberry Pi

1. La nostra primera tasca és afegir el dipòsit UniFi a la nostra llista de fonts.

Ho podem aconseguir executant l’ordre següent.

echo 'deb https://www.ui.com/downloads/unifi/debian stable ubiquiti' | sudo tee /etc/apt/sources.list.d/100-ubnt-unifi.list

2. Ara hem d’afegir la clau GPG dels repositoris mitjançant l’ordre següent.

sudo wget -O /etc/apt/trusted.gpg.d/unifi-repo.gpg https://dl.ui.com/unifi/unifi-repo.gpg

La clau GPG és la que ajuda a dir al gestor de paquets que descarrega el paquet correcte.

3. A mesura que vam fer canvis als dipòsits, ara hem d’actualitzar la llista de paquets executant l’ordre següent.

sudo apt update

4. Ara, finalment, podem instal·lar el programari Unifi Controller al nostre Raspberry Pi executant l’ordre següent.

sudo apt install unifi

La instal·lació d’UniFi mitjançant aquest mètode configurarà automàticament un servei. Aquest servei iniciarà automàticament el programari UniFi en arrencar.

Habilitar VNC des de SSH a una Raspberry Pi

Segueixo amb aquest monogràfic sobre primers pasos amb una Raspberry Pi improvitzats que estic fent avui… si un cop funcionant la Raspberry, vols habilitar l’accés VNC, o modificar altres paràmetres (com el nom de l’equip, fer overcloquing, etc..), Hi ha sentència que desconeixia i que penso que és d’obligat ús a un principiant de Raspberry..

sudo raspi-config

I ens apareixerà la següent pantalla amb totes les opcions per acabar de configurar i personalitzar via línea de comandes.

Configuració Xarxa Sense fils Raspberry pi

Si estàs començant a trastejar amb una Raspberry pi i no disposes de teclat/monitor extern i vols predeterminar la configuració de xarxa sense fils a on connectar, potser complicat…

Hi ha però una solució força interesant que deixo documentada:

Igual que en el post anterior, on habilitem el ssh a la targeta de memòria, podem deixar també a la mateixa partició de la targeta un arxiu wpa_supplicant.conf amb la configuració mínima de la teva xarxa sense fils local.

Els passos serien els següents:

– A la targeta de memòria, connectant-la en un altre equip, accedir a la partició /boot

– Crear un arxiu amb el nom: wpa_supplicant.conf

– Afegir en ell la següent informació -personalitzada-:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1

country=CA

network={

ssid="__NOM_XARXA_SENSEFILS"

psk="__CLAU_DE_LA_XARXA_SENSEFILS"

key_mgmt=WPA-PSK

}

I amb això, un cop afegim la targeta a la nostre Raspberry Pi, quan arranqui es connectarà ja automàticament a la nostre xarxa sense fils.

Habilitar ssh a una Raspberry pi

Si acabes de configurar una Raspberry Pi, i vols començar a “jugar” amb ella, alerta que per poder accedir remotament has de poder habilitar primer l’accès SSH.

Per fer-ho, el mètode més fàcil és agafar la targeta de memòria i crear a l’arrel un arxiu anomenat “ssh” sense cap extensió ni cap contingut en ell. Assegura’t que ha quedat desat a la partició “boot”, i ja pots afegir la targeta a la Raspberry i començar a tocar configuracions.

Corregir permisos httpdocs i plesk

Ja m’he trobat en més d’una ocasió que per motius “desconeguts” els permisos dels arxius d’una carpeta httpdocs -o /var/www- d’un servidor (habitualment amb PLESK), perd la seva configuració de permisos.

El resultat en un servidor administrat amb PLESK és que perds mínimament les avantatges que et proporciona aquest gestor d’arxius. Automatitzacions automàtiques o simplement gestions sobre dominis les deixes de poder fer.

Finalment he trobat una bona guia que no voldria perdre. S’han de fer dos pasos:

Primer:

chown -R nomusuariPLESK:psacln /ruta_del_servidor/httpdocs

Amb aquesta primera sentència rerstaurarem de manera recursiva a tots els permisos per al grup “psacln” de la ruta que l’indiquem. Important serà posar correctament també el nom d’usuari plesk que ha de treballar en aquesta ruta.

Segon:

chown nomusuariPLESK:psaserv /ruta_del_servidor/httpdocs

Amb aquesta segona sentència resolem un problema (hem assignat els mateixos permissos a arxius i a directoris). Assignem al directori al grup “psaserv” -que amb la primera sentència hem assignat a arxius i directoris el mateix grup-.

Font: https://www.orware.com/blog/tips-and-how-tos/plesk/correct-httpdocs-permissions

Primers passos amb una rasberry pi 3

Aquests dies estic trastejant de nou una Raspberry Pi. En aquest ocasió una versió 3 per intentar evolucionar l’estació meteorològica que tinc. 

De moment anoto aquí tres sentències bàsiques per configurar el wifi a l’equip:

iw list

Per mostrar els paràmetres de configuració de la targeta sense fils de l’equip.

sudo iwlist wlan0 scan | grep ESSID

Per mostrar les xarxes sense fils que troba l’equip.

sudo iwlist wlan0 scan iwconfig

Buscar arxius grans en linux

Si necessites buscar els arxius més gran d’un tamany concret a linux has de fer:

find . -size +1000M

Entenent que buscarà des del pun on s’executi la comanda. Ens donarà diferents resultats la comanda si l’executem des de /home o de des de /var/www per exemple.

Netejar /var/spool/mqueue automàticament

Després de l’artí­cle anterior (Netejar /var/spool/mqueue i inodes plens) he pensat que això es podria automatitzar d’alguna manera per tal que no es generi de nou una carpeta amb un volum desmesurat d’arxius.

He afegit una entrada al crontab amb la següent informació:

crontab -e

0 0 * * * /usr/bin/find /var/spool/mqueue -mtime +2 -exec /bin/rm -f {} \;

De manera que cada dia a les 0:00 netejarà els arxius que siguin més antics a dos dies (-mtime +2) de la carpeta /var/spool/mqueue

 

Netejar /var/spool/mqueue i inodes plens

Les últimes setmanes m’he trobat que el servidor local dedicat a servir les dades meteorològiques no podia escriure més arxius.

Si feia un df -k tenia espai per escriure a totes les seves particions, però en canvi a efectes pràctics no era així­. Investigant, vaig descobrir que tenia espai per escriure però no hi havia espai disponible per més inodes 

10:~# df -hi
S. fitxers           Nodes”i   En ús Lliures   %Ús Muntat a
/dev/sda1               743K    743K       1  100% /
tmpfs                   127K       5    127K    1% /lib/init/rw
udev                    126K     499    125K    1% /dev
tmpfs                   127K       1    127K    1% /dev/shm

Buscant, on pot estar perdent-se tot aquest espai en arxius petits descontrolats he trobat que a la carpeta  /var/spool/mqueue  s’acaba emmagatzemant arxius pendents d’enviament de correu electrònic (d’alertes, logs, etc)… i que al intentar eliminar-los amb un rm -r *   acabava amb un missatge d’error:

10:/var/spool/mqueue# rm * -r
-bash: /bin/rm: La llista d’arguments és massa llarga

Total, per fer neteja he seguit una petita guia (http://docs.oracle.com/cd/E23824_01/html/821-1454/mailadmin-138.html) i he fet el següent:

– Aturar el servei de correu electrònic momentàniament

10:/var/spool/mqueue# /etc/init.d/sendmail stop
Stopping Mail Transport Agent (MTA): sendmail.

– Moure la carpeta /var/spool/mqueue a una antiga per eliminar-la i crear una de nova amb els seus permisos corresponents.

10:/var/spool# mv /var/spool/mqueue /var/spool/mqueue-fixme
10:/var/spool# mkdir /var/spool/mqueue
10:/var/spool# chmod 755 /var/spool/mqueue
10:/var/spool# chown root:daemon /var/spool/mqueue

– Un cop fet això, eliminar tot el contingut de la carpeta temporal mqueue-fixme. El procès ha trigat com uns 15 minuts

10:/var/spool# cd mqueue-fixme/
10:/var/spool/mqueue-fixme# ls | xargs rm -f ‘{}’

Però en acabar torno a tenir espai de sobres per què la màquina segueixi mostrant la informació meteorològica

10:/var/spool/mqueue-fixme# df -i
S. fitxers           Nodes”i   En ús Lliures   %Ús Muntat a
/dev/sda1             760368  176986  583382   24% /
tmpfs                 129303       5  129298    1% /lib/init/rw
udev                  128190     499  127691    1% /dev
tmpfs                 129303       1  129302    1% /dev/shm

Arrancar servei snmpd al reiniciar sistema

Si tens un servei snmpd en un servidor CENTOS, podria donar-se el cas que al reiniciar el sistema no arranqui o aixequi el servei snmpd.  Per defecte, quan instal·lem aquest servei no queda programat per què s’encengui.

Per fer-ho tindrem dues opcions:

La més habitual seria afegir aquest servei als sistema d’arrancada:

 chkconfig –level 345 scriptname on

Un altre opció, que he trobat i és potser més intuïtiva és simplement dir-li que

chkconfig NOMSERVEI on

chkconfig snmpd on

Amb això quan tornem a reiniciar el sistema haurí­em de trobar que aixeca el servei automàticament.

Font: http://support.suso.com/supki/CentOS_Init_startup_scripts

 

Reiniciar DSL automàticament quan cau l’ADSL

Més sovint del que voldrí­em, almenys a mi em passa, l’ADSL queda com “col·lapsada” i deixa de funcionar.  La solució és ben fàcil, aixecar-te anar al router, reiniciar-lo i automàticament tornes a tenir internet.

El problema s’agreuja, quan tens algun petit servidor i estàs en remot treballant contra aquests serveis.   Mai havia tingut el temps, però aprofitant una tarda “relaxada”, he buscat i adaptat un script per què una màquina linux estigui monitoritzant si té internet o no, i en el cas que pel que sigui no hagi internet reiniciï la interfí­cie DSL del router de manera que torni a restablir el servei ADSL evitant haver d’anar a casa a reiniciar el router.

Requisits: una màquina linux a casa. En el meu cas una màquina amb debian.

Crearem un arxiu reset-dsl.sh i li afegirem el següent contingut:

#!/bin/bash
# Definim on volem fer ping potser 8.8.8.8, una ip pública o la IP del nostre servidor DNS
desti=8.8.8.8
if `ping -c 5 $desti> /dev/null` ;then
 echo Destí­ està Online
 #Tenim internet i ens dirà "Desí­ està online"
else
 #No tenim internet per tant iniciarem el reinici del servei
 echo Destí­ està Offline
 echo Reiniciant ADSL
Router-DSL=1.2.3.4
 #Aquí­ haurem d'introduïr la IP del nostre router d'internet
 port=23
 user=NomUsuari
 #Aquí­ haurem d'introduïr el nom d'usuari administrador del nostre router: admin, 1234, adminttd, admintde... segons el prvoeïdor.
 pass=CLAU
 #Aquí­ la clau del nostre router.
 cmd1=sh
 cmd2="adsl connection --down"
 cmd3="adsl connection --up"
 cmd4=reboot
( echo open ${Router-DSL}
 sleep 1
 echo ${user}
 sleep 1
 echo ${pass}
 sleep 1
 echo ${cmd1}
 sleep 2
 echo ${cmd2}
 sleep 2
 echo ${cmd3}
 sleep 2
 echo ${cmd4} ) | telnet
fi

Amb aquest arxiu, tindrem automatitzada la connexió al nostre router ADSL i farà un reinici de la interfí­cie DSL si aquesta no respòn.

Ara només ens faltarà modificar el crontab per què l’executi cada 15 minuts per exemple

crontab -e

*/15 * * * * /home/reset-dsl.sh

Potser per acabar de millorar-ho ens faltaria afegir que ens envii un correu electrònic un cop s’ha reiniciat per allò de tenir la estadí­stica de quantes vegades s’ha de reiniciar l’equip al dia.

 

Reiniciar Mysql automàticament quan cau

Si estàs començant a utiltizar una màquina virtual o un servidor VPS amb pocs recuros, serà habitual que en algun moment caigui el servidor MySQL i que a partir de llavors les diferents pàgines web que tinguis en el teu servidor quedin fora de servei.   He trobat un petit script que et permet “controlar” l’estat del teu servei Mysql, de manera que si el detecta “aturat”, el reinicia i t’envia un correu electrònic.

Segurament l’script seria millorable però a mi de moment m’està resultant útil i el comparteixo aquí­:

Primer de tot crearem un arxiu:

vi MonitoritzacioMysql.sh

I copiarem el següent contingut:

****
#!/bin/bash
/usr/bin/mysqladmin ping -pLATEVACONTRASSENYA| grep ‘mysqld is alive’ > /dev/null 2>&1
if [ $? != 0 ]
then
sudo /etc/init.d/apache2 restart;
sudo /etc/init.d/php-fpm restart;
sudo /etc/init.d/mysql restart;
echo MysqlReiniciat | mail -s AlertaMySQL elteumail@domini.cat
fi

En aquest script estarem primer de tot validant que el servei mysqld estigui viu. Si és així­ no farà res. En cas contrari ens reiniciarà l’apache, el php i el mysql.  A més, ens enviarà un correu electrònic a la nostre bústia. Serà important que tinguem instal·lat en el nostre equip VPS la utilitat mail (apt-get install mailutils).

Un cop fet això, caldrà donar-li permisos d’execució a l’arxiu que hem creat:

chmod +x MonitoritzacioMysql.sh

I per últim, modificarem el cron del nostre equip per tal que executi aquest script cada 5 minuts:

crontab -e

*/2 * * * * root sh /root/MonitoritzacioMysql.sh

Amb això ja ho tindrem tot fet. Recomano de totes maneres, provar manualment d’aturar el servei mysql i esperar uns minuts per veure com s’executa el procès i ens avisa per correu electrònic que s’ha reiniciat el servei.  Ara només ens quedarà mirar els logs del servidor amb calma per què no es produeixin reiniciades automàtiques del sistema.

 

 

 

 

 

 

 

Client Zabbix per pfsense

Per monitoritzar un tallafocs pfsense (2.1) mitjançant zabbix (2.2) els passos seran els següents:

  • Identificar-nos en el nostre tallafocs pfsense
  • Anar a System / available Packages (https://fw.local/pkg_mgr.php) i cercar el paquet Zabbix-2 Agent (zabbix2-agent-2.2.1 pkg v0.8_0),
  • Un cop instal·lat caldrà anar a Services / Zabbix-2 Agent i configurar els paràmetres segons la nostre configuració:
    • Activar l’agent
    • Server: IP del servidor Zabbix de la nostre xarxa
    • Server Active: IP del servidor Zabbix de la nostre xarxa
    • Hostname: nom exacte com hem creat o com crearem el host a monitoritzar (fw.local per exemple).
    • Listen IP: 0.0.0.0 per què ens escolti totes les IPs
    • Listen Port: 10050 el port d’escolta.
  • Desarem, i anirem a Status/ Services (https://fw.local/status_services.php) per validar que l’agent zabbix_aggentd està en marxa -en cas contrari apretarem el botó “play” per què s’activi).

A partir d’aquí­ haurem de mirar els logs de l’agent zabbix al pfsense per validar si tot és correcte.
Trobarem l’arxiu de log a: /var/log/zabbix2/zabbix2_agentd.log
Trobarem l’arxiu de configuració a: /usr/pbi/zabbix22-agent-amd64/etc/zabbix22/zabbix_agentd.conf

i l’arxiu de configuració meu ha quedat així­ per què funcioni:

Server=IPLOCAL-Zabbix
ServerActive=IPLOCAL-Zabbix
Hostname=fw.local
ListenIP=0.0.0.0
ListenPort=10050
RefreshActiveChecks=120
#DebugLevel=3
PidFile=/var/run/zabbix2/zabbix2_agentd.pid
LogFile=/var/log/zabbix2/zabbix2_agentd.log
#LogFileSize=1
#Timeout=3
#BufferSend=5
#BufferSize=100
#StartAgents=5

Un cop fet aquests passos, només caldrà crear el host al nostre servidor zabbix tenint cura de definir amb el mateix nom “dns” a l’entrada del client zabbix per què el pugui trobar. Passat uns minuts veurem que ha sincrontizat correctament.  En cas de problemes, el millor és mirar l’arxiu de log de l’agent zabbix al nostre pfsense i ens donarà pistes de quin problema té.

Canvi d’ús horari a centos

Ja m’ha passat dues vegades en els últims dies, de trobar-me una màquina amb #centos i que tingui un ús horari diferent a on estem, amb el que l’anàlisi de e logs es fa difí­cil de seguir.

Deixo aquí­ les sentències d’actualització per si em trobo per tercera vegada un cas similar:

Eliminem la configuració horària de l'equip: 

#rm -f /etc/localtime

Afegim la configuració del nostre ús horari

# ln -s /usr/share/zoneinfo/Europe/Madrid /etc/localtime

I comprovem que realment és així­:

# date
jue may 30 13:30:10 CET 2013