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

pátek 17. ledna 2020

Zabbix HA - s MariaDB s DRBD



 Již mnoho let jsem chtěl vyzkoušet DRBD pro synchronizaci raw device (/dev/sdb) na druhý server. Něco jako RAID-1 po síti. V době mého zájmu zájmu o DRBD bylo vše mnohem složitější a bylo nutno kompilovat modul do kernelu. To je dnes mnohem snažší. Za DRBD® stojí společnost , LINBIT®, která zajišťuje vývoj, placenou podporua zároveň DRBD pouzívá ve svých storrage technologiích a produktech.


Využití DRBD pro HA je hnedle několik. Já jej použiji pro synchronizaci disku na kterém běží MariaDB databáze, která je využívána pro monitorovací systém Zabbix.

Pro otestování jsem si vybral Linux Distribuci CentOS 7.7 do níž je přidán repository ELRepo.

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org --httpproxy=http://192.168.42.1:3128
yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm


yum repolist | grep ELRepo
elrepo                      ELRepo.org Community Enterprise Linux Repository


yum update
yum install -y kmod-drbd90 drbd90-utils

lsmod | grep -i drbd
modprobe drbd
echo drbd > /etc/modules-load.d/drbd.conf


tail -f /var/log/messages
Jan  7 08:26:36 zbx-02  kernel: drbd: initialized. Version: 9.0.20-1 (api:2/proto:86-115)
Jan  7 08:26:36 zbx-02  kernel: drbd: GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335 build by mockbuild@, 2019-10-17 20:27:56
Jan  7 08:26:36 zbx-02  kernel: drbd: registered as block device major 147


cat /proc/drbd
version: 9.0.20-1 (api:2/proto:86-115)
GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335 build by mockbuild@, 2019-10-17 20:27:56

Hlavní konfigurace DRBD se provádí zde:

vim /etc/drbd.d/global_common.conf
global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}


protocol A: Asynchronous replication protocol; it’s most often used in long distance replication scenarios.
protocol B: Semi-synchronous replication protocol aka Memory synchronous protocol.
protocol C: commonly used for nodes in short distanced networks; it’s by far, the most commonly used replication protocol in DRBD setups.

Zdroje DRBD se defunuji naříklad takto:

vim /etc/drbd.d/mariadb_data.res

resource zbxdb {
        on zbx-01 {
         device /dev/drbd0;
               disk /dev/sdb;
            meta-disk internal;   
                address 192.168.42.10:7789;
        }
        on zbx-02 {
        device /dev/drbd0;
            disk /dev/sdb;
            meta-disk internal;
                address 192.168.42.20:7789;
        }
}


Vytvoření zdroje:

drbdadm create-md zbxdb
initializing activity log
initializing bitmap (160 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.



Nahození synchronizace:

drbdadm up zbxdb


Nastavení primátního sync media:

[root@zbx-01 ~]# drbdadm primary --force zbxdb

Status synchronizace zjistíme takto:

[root@zbx-01 ~]# drbdadm status zbxdb
zbxdb role:Primary
  disk:UpToDate
  zbx-02 role:Secondary
    peer-disk:UpToDate

[root@zbx-02 ~]# drbdadm status zbxdb
zbxdb role:Secondary
  disk:UpToDate
  zbx-01 role:Primary
    peer-disk:UpToDate


Vytvoříme mount point a naformatujeme disk např. pomocí xfs.

mkdir -p /data/mariadb
mkfs.xfs /dev/drbd0
mount -t xfs -o noatime,nodiratime,attr2 /dev/drbd0 /data/mariadb

Veškeré HA služby svěřím aplikacím Corosync a Pacemaker z projektu ClusterLabs. Společnost LINBIT přispívá do projektu Pacemaker a tím zajišťuje podporu pro správné volání drbadm. Nadefinováním zdroju clusteru docilim toho, že Zabbix server beží jen na jednim nodu a zároveň i databáze jejíz data (disk) se synchroniyuje na druhý node.


Tato testovací instalace bude v budoucnosti reinstalována na CentOS 8 se Zabbix 4.4, protože novější Zabbix umí monitorovat raw device a to v tomto případě je velmi zajímavé, protože na node2 pokud není /dev/drbd0 namontován o disku nic nevime.

Monitoring Clusteru se dá snadno realizovat z těchto zdrojů.

https://share.zabbix.com/cat-server-hardware/other/template-drbd
https://github.com/VadimIpatov/zbx_pacemaker
https://github.com/cnshawncao/zabbix-module-mysql

Dále je se třeba zaměřit na performace a patřičně upravit a vylepšit konfiguraci DRBD.

https://docs.linbit.com/docs/users-guide-9.0/#p-performance

č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

úterý 24. listopadu 2015

UPnP & NAT-PMP na pfSense 2.2.5 vs Synology DSM 5.2-5644

Nedávno jsem se známým řešil na jeho pfSense routeru doma podivné chování. V pravidlech neměl žádný portforward a i přesto mu funoval Postfix běžící na Synology z internetu. Po schizofréních dvouch hodinách a testování jsem si všiml zapnuté služby UPnP & NAT-PMP. Tuto službu jsem již dříve testoval a např. Skype ji umí využívat a otevírá si porty na WAN interface routeru. Povětšinou tuto službu nechávám raději vypnutou.

pfSense disponuje touto funkcionalitou - UPnP & NAT-PMP - jedná se o projekt miniupnpd, který zajišťuje NAT Port Mapping Protocol (NAT-PMP). Automatické mapování portů, které je řízené klientem.

V NAS Synology je tedy možno řídit co se má mapovat a co ne. Nastavení se provádí v menu Synology a router pfSense mapování zajistí automatizovaně. V nepovolaných rukou může být tato funkcionalita velmi nebezpečná. Na druhou stranu je to zajímavé technícké řešení automatizace NAT-PMP.

Controll Panel / External Acces / Router Configuration


V pfSense existuje sránka Status: UPnP & NAT-PMP Status, kde je přehledně vidět kdo (upnpclient) jaké porty kam mapuje.

úterý 27. října 2015

Zabbix Search::Elasticsearch

Pokud chceme monitorovat pomocí Zabbixu Elasticsearch server, tak se nám bude hodit Perl modul Search::Elasticsearch

Sice se na stránkách elastic o modulu píše, ale součásti repository pro CentOS modul neni.
https://www.elastic.co/guide/en/elasticsearch/client/perl-api/current/index.html



Po nějaké době hledání jsem našel repository OpenFusion, ale ten obsahuje jen starší verzi perl modulu.

Nezbude nam na CentOS 6 než použít cmanm

yum install perl-devel
yum install perl-CPAN

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

/usr/local/bin/cpanm Search::Elasticsearch

find / -name Elasticsearch.pm
/usr/local/share/perl5/Search/Elasticsearch.pm


Např. ve FreeBSD je to s Perl mudulama mnohem lepší.

p5-Search-Elasticsearch-1.20_1 ElasticSearch API

neděle 25. října 2015

ComLynx Weblogger

Oslovil mě jeden známý, že má problém se specifickým zařízením pro FVE. Prý se do něj nedostane. Měnila se prý IP a nějak se změnila špatně.

Jedná se o Webový záznamník ComLynx Weblogger od již neexistující společnosti Danfoss.

Webový záznamník ComLynx Weblogger pro solární střídače poskytuje přístup k
datům FV elektrárny odkudkoli – stačí mu k tomu internetový prohlížeč. Webový záznamník ComLynx Weblogger zaznamenává data z jednotlivých střídačů a prostřednictvím webové stránky zobrazuje informace o jednotlivých snímačích a také celkový stav systému.

Nejprve jsem se zhrozil, co s tím mohu já udělat. Ukázalo se, že na desce je paměťová karta Comact Flash. A tak jsem ji připojil do Linuxu a zjistil že systém ComLynx Weblogger používá nějaký upravený Linux. O jakou distribuci se jednalo jsem nezjistoval, nebyl čas. V /etc jsem hledal nějaké nastavení IP a našel jsem soubor /etc/rc.local, kde se nastavovali IP adresy a spousta dalších věcí. Opravil jsem IP dle potřeb a systém zase ožil.

Je srandovní, že manipulaci s CF může provádet jen autorizovaný service.

středa 20. května 2015

UniFi Controller on FreeBSD


Nedávno jsem se musel seznámit s Enterprice WiFinama od Ubnt. Přesněji UniFi UAP-AC a UniFi UAP-AC Outdoor, celkem 5kousků v jedné lokalite. Prvním ohlednáním zjistíte, že tyto zařízení nemají žádné Web GUI. Po oscanování zjistíme, že na WiFině běží jen SSH server.

Dokumentace nás navede na aplikaci UniFi Controller, což je aplikace běžící pod Apache Tomcat využívající MongoDB. Oficiálně je aplikace dostupná pro Windows a Mac OSX. Ale na komunitních stránkách je informace o repo pro Linux Debian/Ubuntu. Testoval jsem to na Kali a funguje.

Mile mě překvapilo, že UniFi Controller je instalovatelný i pod FreeBSD. Existuje patřičný port.Jak už to u FBSD bývá je možno si vybrat i starší verze.

cd /usr/ports/net-mgmt/unifi4/
make install clean

Aktualizace: 20151030

Databázi MongoDB si UniFi pouští samo a směruje si ji do svého dataDir. Ale je nutno mírně upravit konfigurační soubor, jinak mongodb-2.6.7 nenabehne. 

vi /usr/local/share/java/unifi/data/system.properties
...
unifi.db.extraargs=--smallfiles

středa 12. března 2014

dos2unix vs tr ^M

Řešil jsem úpravu konfiguraku apache na AIXu. Admin serveru přenesl konfigurák z Windows a tak při otevření editorem vi, je místo Enter ^M :-( Jak soubor převést do unixu ?

dos2unix je obecně pěkně popsáno zde.

tr -d "\015\032" < file.conf > file.conf_new

P.S. Libore díky ...

pátek 21. února 2014

Zabbix API - JSON RPC

Na blogu Zabbixu je pěkný návod jak začít pracovat s Zabbix API pomoci jazyka Perl. Používá se k tomu  modul JSON::RPC. Ukázka používá metody user.login a host.get. Pro své potřeby jsem ještě použil metody item.gethistory.get.

Návod zmiňuje použití na OS Debian.

sudo apt-get install libjson-rpc-perl

Kde je v repository starsi verze 0.96
JSON::RPC::Client

Např. ve FreeBSD je aktuální verze 1.03
JSON::RPC::Legacy::Client

p5-JSON-RPC-1.03               Perl implementation of JSON-RPC 1.1 protocol

Došlo ke změně podmodulu, což je poměrně matoucí. A Perl scripty je nutno modifikovat. Na nekompatibilitu jsem zatím nenarazil.

Podrobnosti ...
http://en.wikipedia.org/wiki/JSON-RPC

středa 4. prosince 2013

Zabbix 2.2.1rc1 vmware collector II.

Dnes jsem konečně vyzkoušel vmware collector v monitorovacím systému Zabbix 2.2.x. Čekal jsem až výjde opravná verze Zabbix 2.2.1rc1, ve které je opraveno několik chyb, na které jsem narazil. Více jsem psal zde. V poznámkách k výdání je podrobný seznam všech oprav Zabbix 2.2.1rc1.

Nutno ještě dodat, že tato RC verze opravuje i jednu bezpečnostní chybu.

[ZBX-7479] fixed remote command execution from Zabbix server if flexible user parameters are configured; thanks to Recurity Labs Team for the report; reference CVE-2013-6824

K samotnému monitorování VMware nutno dodat, že je to opravdu komplexní řešení pro monitoring. Testoval jsem na sólo ESXi 4.0  a vCenter, který obhospodařuje 6 hypervisorů ESXi 5.5.0.

Monitoring hypervisoru získá základní informace o prostředcích virtualizace.

Monitoring  vCenter pomocí LLD detekuje seznam všech hypervisorů a posléze jde ještě dál a získá seznam všech virtuálek. Takže monitorujeme samotné virtualky z pohledu virtualizace.

Nutno si uvědomit, kolik virtuálek je hostováno v daném prostředí. Tomu úměrně vzroste i počet měřených hodnot.



středa 24. července 2013

WebSphere 7 + OSGi/JPA 2.0 Feature Pack

Řešil jsem v práci opět takovej bombónek s WAS 7. Ve WebSphere 7 je verze
Java Persistence API (JPA)  1.x. Zmíněný framework je implementován např. pomocí OpenJPA. Ale pokud vyžadujeme APJ 2.x je nutno do WebSphere instalovat Feature Pack (FeP). Seznam známých FeP je na stránkach IBM WebSphere Application Server Feature Packs Family.

Instaloval jsem tedy FeP

WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API 2.0

Při snaze rozšíření stáhnout od IBM dostavám krásnou hlášku :-)

The link which brought you here is invalid. Please reload the previous page and try again.

message code: 57e

Po době pátrání a laborování se vydávám cestou instalace FeP pomocí IBM Instalation Managera což je Java GUI SW pro instalaci a aktualizaci IBM produktů. Po instalaci a aktualizaci samotného IBM IM na aktuální verzi  1.6.3.1, dle instrukcí přidávám repositáře pro IBM WebSphere. A posléze nainstaluji i samotné požadované rozšíření. V Product Information je FeP videt.

IBM IM lze instalovat jak pod rootem ./install nebo pod userem pod kterým běží WAS ./userinst. Instalace si ukláda nějaká data do /etc a /var, v případě userinst do home adresáře usera /home/was/etc a /home/was/var.

Pro otestování, jakou verzi JPA WAS používá použijeme následující příkaz.

was@wastest ~]$ /ibm/app/was/profiles/AppSrv01/bin/wsjpaversion.sh
WSJPA 1.2.1-SNAPSHOT
version id: WSJPA-1.2.1-SNAPSHOT-r1118:2591
revision: 1118:2591

OpenJPA 1.2.3-SNAPSHOT
version id: openjpa-1.2.3-SNAPSHOT-r422266:1395723
Apache svn revision: 422266:1395723

os.name: Linux
os.version: 2.6.18-308.el5
os.arch: amd64

java.version: 1.6.0
java.vendor: IBM Corporation

java.class.path:
    /ibm/app/was/dev/JavaEE/j2ee.jar
    /ibm/app/was/plugins/com.ibm.ws.jpa.jar
    /ibm/app/was/plugins/com.ibm.ws.prereq.commons-collections.jar

user.dir: /home/was

A zde je problém, protože WAS používá své interní JPA a nikoliv naše instalované. Ale jistá aplikace vyžaduje verzi JPA 2.x.

Dohledal jsem si patřičný JAR, který JPA ve WAS řeší.

[was@wastest was]$ cd /ibm/app/was/profiles/AppSrv01/ && find . -name com.ibm.ws.jpa.jar
./plugins/com.ibm.ws.jpa.jar
./feature_packs/jpa/plugins/com.ibm.ws.jpa.jar


Pokud chceme používat FeP verze JPA musíme ještě rozšířit profil WAS.

./manageprofiles.sh -augment -profileName AppSrv01 -templatePath /ibm/app/was/profileTemplates/JPA/default.jpafep/
INSTCONFSUCCESS: Zvětšení profilu proběhlo úspěšně.

./manageprofiles.sh -listAugments -profileName AppSrv01
Registrované šablony rozšíření
    /ibm/app/was/profileTemplates/JPA/default.jpafep

[was@wastest bin]$ /ibm/app/was/profiles/AppSrv01/bin/wsjpaversion.sh
WSJPA 2.0.1-SNAPSHOT
ID verze: WSJPA-2.0.1-SNAPSHOT-r1118:2749
Revize dílčí verze rozhraní JPA platformy WebSphere: 1118:2749

OpenJPA 2.0.2-SNAPSHOT
ID verze: openjpa-2.0.2-SNAPSHOT-r422266:1484287
Revize dílčí verze produktu Apache: 422266:1484287

os.name: Linux
os.version: 2.6.18-308.el5
os.arch: amd64

java.version: 1.6.0
java.vendor: IBM Corporation

java.class.path:
    /ibm/app/was/feature_packs/jpa/dev/jpa_api.jar
    /ibm/app/was/dev/JavaEE/j2ee.jar
    /ibm/app/was/feature_packs/jpa/plugins/com.ibm.ws.jpa.jar
    /ibm/app/was/plugins/com.ibm.ws.prereq.commons-collections.jar

user.dir: /ibm/app/was/bin


Po instalaci FeP jsme dotázáni, zda chceme pustit GUI Profile Manager a v něm můžeme rozšíření profilu provést s tím, že nám aplikace napoví, jaky profileTemplate máme použít.

čtvrtek 13. června 2013

Monitoring HAProxy pomocí Zabbix Agent

 V práci jsem narazil na server, kde byla zprovozněna HAProxy pro přepínání provozu na dva IBM IHS servery (Apache).

Stav HAProxy se dá velmi podrobně sledovat pomoci socket. Pěknou inspirací byl tento návod.

V konfiguraci haproxy.conf je nutno zapnout zápis do socketů.

global
# Create a socket that allows us to query it directly
stats socket    /tmp/haproxy.sock


Pro čtení ze socketu je třeba aplikace socat, která  např. v RHEL 5.8 není a tak je někdy potřeba si ji zkompilovat ručne.

Já volil konkrétně tuto verzi, novější mi nešla zkompilovat.

cd /usr/local/src
wget http://www.dest-unreach.org/socat/download/socat-1.7.2.1.tar.gz
tar xzf socat-1.7.2.1.tar.gz
cd socat-1.7.2.1
./configure --disable-fips
make
make install


Pak už můžeme vyčítat požadované hodnoty. Zmíněný návod je velmi podrobný.

[root@server ~]# echo "show info" | socat /tmp/haproxy.sock stdio
Name: HAProxy
Version: 1.4.21
Release_date: 2012/05/21
Nbproc: 1
Process_num: 1
Pid: 29810
Uptime: 0d 0h01m46s
Uptime_sec: 106
Memmax_MB: 0
Ulimit-n: 8219
Maxsock: 8219
Maxconn: 4096
Maxpipes: 0
CurrConns: 17
PipesUsed: 0
PipesFree: 0
Tasks: 25
Run_queue: 1
node: server.domena.cz
description:


Konfigurací Zabbix agenta, kde nadefinujeme uživatelské parametry a pomocí grep a awk atd. vyďobeme jednotlivé potřebné hodnoty.

Toto je např. HAProxy "total" connections/sessions

UserParameter=hap.scur, echo "show stat" | /usr/bin/sudo /usr/local/bin/socat /tmp/haproxy.sock stdio | grep -i 'server,FRONTEND' |
sed 's/,/\ /g' | awk '{print $3}'


Pro povolení práce se socketem je nutno delegovat opravnění uživateli zabbix.

visudo
...
Defaults:%zabbix !requiretty
Defaults:zabbix !requiretty

## Allows 'zabbix' user to run all commands without password.
zabbix ALL=NOPASSWD: ALL

čtvrtek 14. března 2013

GNU date vs BSD date

Pro kotrolu validace SSL certifikátů v Zabbixu jsem se rozhodl použít návod na wiki.zabbix, kde je odkaz na podrobnější autorův web.

Vše by fungovalo, až na malou drobnost a tou je následující příkaz, který je součástí scriptu, porovnávající datum z certifikátu s aktuálním časem. BSD date a GNU date je jiný a parametry jsou jine.

BSD date

date '+%s' --date "Dec 29 23:59:59 2013 GMT"
date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
            [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]


Script zext_ssl_check.sh, který používá OpenSSL (openssl s_client) pro zjištění data expirace certifikátu jsem si postupně prošel až jsem narazil na příkaz date. Abych FreeBSD naučil GNU date - gdate, musel jsem doinstalovat následující balíček coreutils.

coreutils-8.20_2    The Free Software Foundation's core utilities

Pak už příkaz dělal co má.

GNU date

gdate '+%s' --date "Dec 29 23:59:59 2013 GMT"
1388361599


Pak už příkaz dělal co má. Na stránce autora jsou dvě verze scriptu pro kontrolu SSL certifikátů. Jedna je z webu a druha je z svn.

Verze s svn vraci jen počet dní do expirace.

./zext_ssl_check.sh edu.mudk.cz 443
290


Verze z webu ma širší použití.

./zext_ssl_cert.sh
usage: ./zext_ssl_cert.sh [-i|-d] hostname port
    -i Show Issuer
    -d Show valid days remaining


./zext_ssl_cert.sh -i edu.mudk.cz 443
Thawte DV SSL CA


./zext_ssl_cert.sh -d edu.mudk.cz 443
290

Ke každému scriptu je extra Template. Použil jsem verzi z svn, ale musel jsem Template modifikovat pro Zabbix 2.0.5. Konkrétně mi External_check nefungoval.

Mnou upravená definice klíče.
zext_ssl_check.sh[{HOST.CONN},{$SSL_PORT}]

V Template bylo. Zkrátka musíme vědět co a jak je kde třeba :-)

zext_ssl_cert.sh[{$SSL_PORT}]

s tím, že varianta

zext_ssl_check.sh[{HOST.CONN}, {$SSL_PORT}]
a
zext_ssl_check.sh[{HOST.CONN} {$SSL_PORT}]

mi nefunovala v Zabbixu 2.0.5.

pátek 22. února 2013

PLCComS vs Zabbix

Pro společnost CeProgress jsem řešil instalaci programu PLCComS od splečnosti Teco a.s. PLCComS je to jednoduchá aplikace běžící pod Windows/Linux, která po TCP/IP komunikuje s PLC automatem řady Foxtrot pomocí protokolu EPSNET. Nadefinované proměnné přenese z PLC zařízení a dále je dokáže vypsat na portu 5010 pomocí telnetu a jednoduchého textového protokolu.

root@server:~$ telnet localhost 5010
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GETINFO:
GETINFO:VERSION,Ver 2.9 Aug 23 2012 14:09:38
GETINFO:VERSION_EPSNET,Ver 1.8 Aug 23 2012 13:22:47
GETINFO:VERSION_INI,Ver 3.2 Apr 24 2012 08:36:13
GETINFO:VERSION_PLC,CP1020K   B 2.7 7.4
GETINFO:IPADDR_PLC,192.168.5.60
GETINFO:PUBFILE,2/82 [FIXED_Foxtrot.pub,//Hlavni_m.pub]
GETINFO:NETWORK,1/10 [127.0.0.1]
GETINFO:

...
EN:TOPENI_STAVY_2NP[211].POZTEPLOTA
GET:TOPENI_STAVY_2NP[211].POZTEPLOTA
GET:TOPENI_STAVY_2NP[211].POZTEPLOTA,10.000000
 



Rozhodl jsem se hodnoty z čidel zaznamenávat do Zabbixu a patřičně dále data reportovat skrze grafy. Zabbix disponuje monitorovacím typem - Telnet agent, který, bohužel vyžaduje autentizaci. A bez ni se mi Item pro hodnotu nepovedlo nastavit. PLCComS autentizaci nemá implementovánu. Pro získání hodnot jsem si napsal jednoduchý Perl script, využívající modul Net::Telnet. Na server, kde běží aplikace se ze Zabbixu přihlašuji pomoci SSH agenta a pouštím perlový script, který Telnet modulem ziska patřičné hodnoty.

Bylo by dobré, kdyby společnost Teco a.s. tento svuj SW vylepšila o Telnet s autentizaci. A ještě lepší by bylo implementovat protokol SNMP a možnost mapovat proměnné přímo na hodnoty získatelné pomocí MIBu, ale to jsem moc náročnej.

Jako další úkol si zadávám pomocí Zabbix API a patřičné PHP knihovny vykreslit grafy na jiném web serveru serveru než kde běží Zabbix.

pondělí 14. ledna 2013

Reset Windows hesla

Jedním z možných řešení jak resetovat heslo ve windows je použít Offline Windows Password & Registry Editor, Bootdisk / CD



http://pogostick.net/~pnh/ntpasswd/

Stačí stáhnout ~3MB - Bootable CD image a uvést na jakém disku se systém nachází.

pátek 14. prosince 2012

Zabbix repository - ZabbixZone

 Zabbix jakožto monitorovací systém je možné zprovoznit na všemožných verzích systémů. Ale ve většině případů budete muset kompilovat ze zdrojových kódů, což je plně funkční, ale méně komfortní pro dlouhodobý provoz.

Aktuální verzí Zabbixu je 2.0.4, která vyšla 8.12.2012. Mnoho distribucí má Zabbix ve svých oficiálních repositářích, ale bohužel nejsou moc aktuální.
  • Ubuntu 12.04 LTS - Zabbix 1.8.11
  • Ubuntu 10.04 LTS - Zabbix 1.8.1
  • Ubuntu 8.04 LTS - Zabbix 1.4.2
  • Ubunt 12.10 - Zabbix 2.0.2
  • Debian 6.0.6 - Zabbix 1.8.2
  • Fedora 17 - Repo EPEL
  • CentOS 6 - Repo EPEL
  • RedHat 6.3 - Repo EPEL
Řešením je aktuální Zabbix repository http://repo.zabbixzone.com/, který je dostupný pro distribuce CentOS 5, CentOS 6 and Debian 6 (Squeeze). Spravuje jej Kodai Terashima, který je zaměstnán společností Zabbix SIA. Aktuálnost repository jsem již několikrát prověřil. Existují zde balíčky pro agent, server, proxy, java-gatevay, ale také jen get a sender, které se též mohou hodit.

Operační systém FreeBSD má ve svých portech dokonce obě verze Zabbixu 1.8.x a 2.0.x

Mnou doporučené Operační systémy pro provoz monitorovacího systému Zabbix jsou:
  • CentOS + ZabbixZone
  • Debian + ZabbixZone
  • FreeBSD

Pevně veřím, že společnost RedHat začne vnímat Zabbix jako skutečný enterprice monitorovací systém. A začlení jej do oficiálních repositářů. Naději u mě podporuje fakt, že letošní Zabbix konferenci RedHat sponzoroval jako Gold sponzor.

úterý 6. listopadu 2012

RedHat Local Repo - reposync createrepo

Rešil jsem takový malý problém. Mám 10 RHEL 6.3 serverů a při jejich aktualizaci nechci balíky stahovat pokaždé z RedHat RHN. S tím že Squid HTTP proxy je jen průtokáčem a nic se nekešuje :-( Komunikace s RHN se provádí skrze xmlrpc bránu.

1352209629.189   1482 192.192.42.13 TCP_MISS/000 2206 CONNECT xmlrpc.rhn.redhat.com:443 - FIRST_UP_PARENT/192.192.42.42 -

První plánované řešení bylo použít RHN Proxy Server. Tento server je součástí komerčního RedHat Network Satellite. Jistou variantou bylo použít komunitní verzi SpaceWalk, ale pro 10 serverů je to moc velký moloch, který se vyplatí používat jen u velkých firem o desítkách serverů.

Pan Google mě přivedl na tento návod. Kde se použije poněkud jednodužší řesení s reposync. Jeden s 10ti serverů vybereme jako ten pro stahovaní repo. Všechny servery jsou registrovány v RHN. 11cty server je CentOS, kde je zprovozněn NFS server, kde je repo fyzicky umístěný.

Vypíši si použité repositáře na RHEL serveru:

yum repolist 
repo id
rhel-x86_64-server-6
rhel-x86_64-server-ha-6
rhel-x86_64-server-supplementary-6


Příkazy pro synchronizaci repository. Je zapotřebí balík yum-utils

reposync -p /data/nfs/repo/ --repoid=rhel-x86_64-server-ha-6 -l
reposync -p /data/nfs/repo/ --repoid=rhel-x86_64-server-supplementary-6 -l
reposync -p /data/nfs/repo/ --repoid=rhel-x86_64-server-6 -l


Pro funkční repo musíme nainstalovat balíček createrepo

yum install createrepo

createrepo /data/nfs/repo/
...
Saving Primary metadata
Saving file lists metadata
Saving other metadata


V adresáři kam se syncují repositáře se vytvoří adresář repodata s metadaty o aktualizacích. Vzhledem k tomu, že tři uvedené repo obsahuji 16GB dat je vytvoření metadat o 9tisících souborech poněkud zdlouhavé.

ls -1 repodata/

filelists.xml.gz
other.xml.gz
primary.xml.gz
repomd.xml


Nastavení yum na jednotlivých RHEL serverech.

vi /etc/yum.repos.d/local.repo

[rhel-localrepo]
name=Local Red Hat Enterprise Linux $releasever - $basearch
baseurl=file:///data/nfs/repo
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


Vypneme RHN krom aktualizačního serveru.

vi /etc/yum/pluginconf.d/rhnplugin.conf
[main]
enabled = 0


Provedeme aktualizace, za předpokladu, že všechny RHEL servery maji namontován NFS svazek do /data/nfs/repo.

yum clean all
yum list updates
yum update


A na závěr taková rejpavá poznámka. Proč ty komerční krámy musí být tak komplikované? CentOS má veřejné repo a např. Debianí svět má svou APT-Cacher NG.

pondělí 5. listopadu 2012

Bumblebee project


O víkendu se mi do rukou dostal notebook Lenovo IdeaPad G580 s tím, že majitel na něj nainstaloval Ubuntu 12.04 LTS. Ovšem nefungovalo mu OpenGL. Daný HW má v sobě dvě VGA karty.

00:02.0 VGA compatible controller: Intel Corporation Ivy Bridge Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation Device 0de9 (rev ff)


Problém spočívá v tom, že klasické nVidia drivery nejsou funkční. Tento problém jsem měl již v lednu s tehdejším firemním notebookem. Onehdá však nebylo řešení. Od té doby vznikl projekt http://bumblebee-project.org/ , který daný problém řeší.  Projekt řeší podporu NVIDIA Optimus technology pod Linuxem. Osobně bych se při koupi NTB této technologii vyhnul.

Instalace na Ubuntu je velmi jednoduchá.

Přidáme potřebný repozitář.

sudo add-apt-repository ppa:bumblebee/stable

Zaktualizujeme repo data.

sudo apt-get update

Nainstalujeme potřebný balíky.

sudo apt-get install bumblebee bumblebee-nvidia

úterý 30. října 2012

Samsung Smart TV používá XFS


K mé televizi 37" Samsung UE37ES6100 jsem připojil čtečku karet s Compact Flash a chtěl jsem na ní vyzkoušet nahrávání. TV mě oznámila, že si kartu zformátuje. Po formátu mi oznámila, že je vhodnější použít klasický disk, karta byla pomalá pro zápis. I tak jsem na kartu nahrál část Partičky.

Pak jsem neváhal a vzal jeden postarší 80GB disk co se mi válel pod stolem a pomocí patřičného konvertoru a napájení jej připojil k TV. Při volbě nahrávání mě TV opět vyzvala k formátování disku.

Po nahrávání jsem disk připojil k domácímu PC s OS Linux Ubuntu a mile jsem byl překvapen, když jsem zjistil zě TV používat filesystém XFS. Který je v UNIX/Linux OS doma. Tento žurnálový filesystém uvolnila společnost SGI - Silicon Graphics.

http://cs.wikipedia.org/wiki/XFS
http://en.wikipedia.org/wiki/XFS

Již chápu dotazy známých na téma, já si něco nahraju na disk z TV, ale když to připojím do Window$ tak tam nic není. To bude asi tím, že Win XFS neumějí :-) Samsung má u mě další kladné body.

Uložená nahrávka má vždy 5 souborů.

-rw-r--r-- 1 root root  572 1970-01-01 01:53 20121031021004.ss
-rw-r--r-- 1 root root 921M 1970-01-01 02:18 20121031021004.srf
-rw-r--r-- 1 root root 1,4M 1970-01-01 02:18 20121031021004.mdb
-rwxr-xr-x 1 root root 7,8K 1970-01-01 02:18 20121031021004.inf
-rw-r--r-- 1 root root  89K 1970-01-01 02:18 20121031021004.mta


Popis je např. zde.

Připojení disktu k Linuxu.

Oct 31 20:45:12 negr kernel: [11114.576017] usb 2-1: new high speed USB device using ehci_hcd and address 2
Oct 31 20:45:12 negr kernel: [11114.709809] usb 2-1: configuration #1 chosen from 1 choice
Oct 31 20:45:12 negr kernel: [11115.159838] Initializing USB Mass Storage driver...
Oct 31 20:45:12 negr kernel: [11115.159964] scsi8 : SCSI emulation for USB Mass Storage devices
Oct 31 20:45:12 negr kernel: [11115.160054] usbcore: registered new interface driver usb-storage
Oct 31 20:45:12 negr kernel: [11115.160056] USB Mass Storage support registered.
Oct 31 20:45:17 negr kernel: [11120.161478] scsi 8:0:0:0: Direct-Access     WDC WD80 0BB-00DAA1       3B02 PQ: 0 ANSI: 2 CCS
Oct 31 20:45:17 negr kernel: [11120.162192] sd 8:0:0:0: Attached scsi generic sg4 type 0
Oct 31 20:45:17 negr kernel: [11120.165306] sd 8:0:0:0: [sdd] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB)
Oct 31 20:45:17 negr kernel: [11120.166082] sd 8:0:0:0: [sdd] Write Protect is off
Oct 31 20:45:17 negr kernel: [11120.170339]  sdd: sdd1
Oct 31 20:45:17 negr kernel: [11120.192840] sd 8:0:0:0: [sdd] Attached SCSI disk
Oct 31 20:45:18 negr kernel: [11121.138362] SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled
Oct 31 20:45:18 negr kernel: [11121.140051] SGI XFS Quota Management subsystem
Oct 31 20:45:18 negr kernel: [11121.141832] XFS mounting filesystem sdd1

neděle 28. října 2012

Samsung Smart TV + SERViiO


Po třech letech odkládání jsem konečně zahodil starou CRT TV + jeden z prvních Set-UP boxů Genius DVB-T. Už mě hodně vadilo, že okraje obrazu jsou značně ořezané, ale hlavním důvodem byla jakákoliv absence přehrávat data z FreeNAS.

Původně jsem chtěl plazmu, ale z velikosti TV jsem ustoupil a pořídil LED 37" Samsung UE37ES6100. Televize má integrované DLNA a tak jsem se zaměřil na jeho zprovoznění. Zprvu jsem čekal, že server Fuppes - Free UPnP Entertainment Service integrovaný ve FreeNAS 0.7 bude v TV podporován. Ale TV jej vůbec nevidí. Zaměřil jsem se na DLNA server  Mediatomb, který jsem zprovoznil na domácím FreeBSD serveru.

mediatomb-0.12.1_8  UPnP AV MediaServer

Tento media server se v TV objevil, ale nic z něj nešlo přehrávat. Nakonec jsem objevil Serviio, což je Java Media server. Též jsem jej instaloval na FreeBSD serveru z patřičného portu.

serviio-0.6.2       Transcoding DLNA-server implemented in Java

Tento server Serviio mě velmi mile překvapil. Bez velkého ladění najednou televize ožila. Pomocí GUI konzole jsem přidal adresáře namontované přez NFS z FreeNAS. DLNA server si obsah patřičně ošahal a zaindexoval. Pro každé zažízení v domácí síti, které chce DLNA využívat (TV, Mobil Android, PC Totem+Coherence) je možno přiřadit patřičný profil. Např. mi nešlo přehrávat MKV videa a po nastavení patřičného profilu Samsung TV / Player (C/D-series) k TV. Fungování MKV jsem otestoval a opět mě mile překvapilo fungování titulků skrze DLNA. V TV jsem jen nastavil českou verzi.

Vlastností DLNA server Serviio je celá řada.  Překvapila mě např. funkcionalita ohledně indexování souborů. Server skrze API kontaktuje server TheTVdb.com, výsledkem je možnost hledání filmů podle herců, producentů či režisérů. Po indexaci obsahu jsem pátral v systému, kam si to ukládá. Serviio využívá databázi Derby. Adresář, kam si ukládá svá data /var/db/serviio zabírá nyní 244M.

Další zajímavou funkcionalitou je možnost sledování Online obsahu. Je možno nadefinovat internetová rádia či image gallery. Tyto vlastnosti budou teprve objevovat.

Už se těším až ve FreeBSD bude patřičný port aktualizován na aktuální verzi 1.0.1.

pátek 19. října 2012

RHEL 6.3 Bonding

Na OS RHEL 6.3 jsem rešil zprovoznění dvou síťovek za pomocí Bondingu. Konfigurace v režimu active-backup nebo 1. Nastavení je vcelku jednoduché. Vycházel jsem z oficiálná RedHat dokumentace Using Channel Bonding. Pěkný a ucelený návod je např. zde.

Nalezl jsem i bug, který je spojen s obdobným driverem, který používám na daném serveru. Naštěstí se mě netýkal.

Pro fungování bondigu je nutné aby byli síťovky zapojeny do Switch1 a Switch2. Konfiguraci na úrovni switchů jsem neřešil. Nevím, zda je tam pro bonding něco třeba. To třeba až zase někdy příště.

Driver "Ethernet Channel Bonding Driver" je možno konfigurovat složitěji. Např. se dají síťovky združovat a využít tak protokol LACP atd.

Výpis a informace o driveru pomocí ethtool.

ethtool -i eth0
driver: bnx2
version: 2.2.1
firmware-version: bc 5.2.3
bus-info: 0000:09:00.0


nebo

ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  1000baseT/Full
                                10000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Speed: Unknown!
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: g
        Wake-on: d
        Link detected: yes


Info z lspci

09:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709S Gigabit Ethernet (rev 20)
09:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709S Gigabit Ethernet (rev 20)


Prověříme, zda je přítomen patřičný balik kvuli programu ifenslave.

yum install iputils

Začneme konfigurovat interface eth0 a eth1

cd /etc/sysconfig/network-scripts/

DEVICE="bond0"
IPADDR="192.168.42.13"
NETMASK="255.255.255.0"
GATEWAY="192.168.42.1"
DNS1="192.168.42.10"

HOSTNAME="rhel63-test"
ONBOOT="yes"
BOOTPROTO="none"
USERCTL="no"
NAME="bond0"
BONDING_OPTS="miimon=80 mode=1"

DEVICE="eth0"
NAME="System eth0"
BOOTPROTO="none"
HWADDR="E8:39:35:C0:11:BC"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="9ae66694-cff1-4cab-99d4-fc7de045369c"
SLAVE="yes"
MASTER="bond0"

DEVICE="eth1"
NAME="System eth1"
BOOTPROTO="none"
HWADDR="E8:39:35:C0:11:BE"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="badf918c-3cc1-4e77-94c2-c8dc24032133"
SLAVE="yes"
MASTER="bond0"


Nastavíme load kernel modulu.

vi /etc/modprobe.d/bond0.conf
alias netdev-bond0 bonding


Restart síťových rozhraní.

/etc/init.d/network

V /proc můžeme prověřit některé informace.

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 80
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: e8:39:35:c0:11:bc
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: e8:39:35:c0:11:be
Slave queue ID: 0


ifenslave -a
The result of SIOCGIFFLAGS on lo is 49.
The result of SIOCGIFADDR is 7f.00.00.01.
The result of SIOCGIFHWADDR is type 772  00:00:00:00:00:00.
The result of SIOCGIFFLAGS on eth1 is 1043.
The result of SIOCGIFADDR is ffffffac.13.ffffffc8.20.
The result of SIOCGIFHWADDR is type 1  e8:39:35:c0:c0:e6.
 


Danou konfiguraci musím časem prověřit i ve FreeBSD. Zde je vodítko.