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

sobota 30. října 2021

Zabbix server s PostgreSQL 14 a TimescaleDB 2.5

S oblibou používám OS FreeBSD a na něm provozuji Zabbix a to v konfiguraci s DB PostgreSQL s rozšířením TimescaleDB. TSDB vyšlo nedávno ve verzi 2.5.0 a tak jsem si napsal svůj velmi jednoduchý Ansible playbook, který zajistí instalaci statických pkg balíčků a provede nutnou kompilaci z portů u těch, u kterých je to třeba.

  • FreeBSD 13.0-RELEASE-p4
  • Zabbix  5.0.17
  • PostgreSQL 14.0_1
  • TimescaleDB 2.5.0

https://github.com/smejdil/freebsd-zabbix-server

Testováno v pomocí Vagrant a GCP ...

pátek 20. srpna 2021

Get Hosts or IP from Zabbix hosts export XML

Pomocí nástroje xmllint a přepínače xpath se dá poměrně snadno z XML exportu hostů získat např. seznam IPv4 nebo Hostů.

xmllint --xpath '/zabbix_export/hosts/host/host/text()' zbx_export_hosts.xml 

xmllint --xpath '/zabbix_export/hosts/host/interfaces/interface/ip/text()' zbx_export_hosts.xml

čtvrtek 30. dubna 2020

Upgrade firmware on PC Engines APU.3C4

Nedávno jsem psal článek, na root.cz, jak aktualizovat PC Engines BIOS pomoci pfSense a flashrom. Opakovani je matka moudrosti :-) Včera vyšel nový BIOS Mainline releases v4.11.0.6 a tak jsem jej chtěl vyzkoušet na desce PC Engines/APU.3C4. Od výrobce tam je 4.0.7 z 2017XXXX. Doposud jsem aktualizoval jen verze Legacy releases v4.0.30. Zde si poznamenám postup s updatem na aktuální Mainline releases.

Nainstalujeme si aktualizační nástroj.

pkg install flashrom

Zjistíme si generaci desky

dmidecode | grep 'Product Name' | uniq 
Product Name: APU3

Zjistíme si verzi aktuálního BIOSu.

dmidecode | grep 'Version'
Version: 4.0.7
Version: AMD GX-412TC SOC

Provedeme stažení správneho archivu, ověříme kontrolní součet a aktualizujeme, nakonec reboot.

cd /tmp
fetch https://3mdeb.com/open-source-firmware/pcengines/apu3/apu3_v4.11.0.6.zip
apu3_v4.11.0.6.zip                                     647 kB 1476 kBps    00s
 

unzip apu3_v4.11.0.6.zip
Archive:  apu3_v4.11.0.6.zip
 extracting: apu3_v4.11.0.6.rom 
 extracting: apu3_v4.11.0.6.SHA256.sig 
 extracting: apu3_v4.11.0.6.SHA256


cat apu3_v4.11.0.6.SHA256 a093e61db53aa4b5897c0f96f8e2df910db063e5faa77c941c64dd6d4f9a0153 apu3_v4.11.0.6.rom

openssl sha256 apu3_v4.11.0.6.rom
SHA256(apu3_v4.11.0.6.rom)= a093e61db53aa4b5897c0f96f8e2df910db063e5faa77c941c64dd6d4f9a0153
 


flashrom -w apu3_v4.11.0.6.rom -p internal:boardmismatch=force
flashrom v1.1 on FreeBSD 11.3-STABLE (amd64)
flashrom is free software, get the source code at https://flashrom.org Using clock_gettime for delay loops (clk_id: 4, resolution: 2ns).
coreboot table found at 0xdffae000.
Found chipset "AMD FCH". Enabling flash write... OK.
Found Winbond flash chip "W25Q64.V" (8192 kB, SPI) mapped at physical address 0x00000000ff800000.
This coreboot image (PC Engines:apu3) does not appear to be correct for the detected mainboard (PC Engines:PCEngines apu3).
Proceeding anyway because user forced us to.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

reboot

čtvrtek 21. června 2018

Qotom Mini PC 4 Gigabit - Q355G4 with pfSense

Po roce jsem se opět viděl s kolegy z FG. Radek na mě myslel a přinesl mi na oběd ukázat černou krabku vhodnou jako router. Byl jsem nesmělý, ale Radek mi Qotom doslova vnutil, za což mu moc děkuji.

Qotom vyrábí mnoho variací tohoto Q Series Mini PC. Mě se do ruky dostal model Q355G4. Vyráběny jsou variace s Core i3, i5 a i7. V pfSense se procesor identifikuje jako Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz 4 CPUs: 1 package(s) x 2 core(s) x 2 hardware threads AES-NI CPU Crypto: Yes (inactive).

Tento 4 portový model je vhodný pro použití jako router, pro malé nebo střední firmy. Prodáva se opět v několika variacích s nebo bez RAM a stejně tak i s nebo bez SSD. Nejvhodnější se si pořídit holé těžítko a RAM s SSD dodat z lokálních zdrojů se zárukou.
Qotom Q355G4


Poříditelný je v číně na AliExpress nebo v EU na Amazon, prodejce Kettop.

Mě nenapadlo nic jiného než na tohoto černocha nainstalovat mnou oblíbený pfSense. Nejprve jsem si připravil USB instalaci.

zcat pfSense-CE-memstick-2.4.3-RELEASE-amd64.img.gz | dd of=/dev/sdX bs=16k
244615+1 vstoupivších záznamů
244615+1 vystoupivších záznamů
4 007 775 744 bajtů (4,0 GB) zkopírováno, 857,294 s, 4,7 MB/s



Oproti PC Engines nelze použít image pfSense-CE-memstick-serial-*. Qotom disponuje seriovým portem, ale nedostaneme se po seriové konzoli do BIOSu. Proto použijeme klasickou image. Qotom disponuje HDMI vstupem ke grafické kartě.
Deska s procesorem a chladičem

S HDMI jsem si užil. Protože mám v LABu monitor, který má jen DVI a tak mam kabel DVI > HDMI. Např. malina skrze tento kabel bootuje a je vidět vše. U Qotom se signál probral až během boot sequence. Protože na disku byl Ubuntu Server, nemel jsem možnost dostat se do BIOSu a změnit boot nastaveni. Řešením bylo Qotom připojit k plnohodnotnému HDMI display.

Opět budu tento HW srovnávat s mnou hodně používanými deskami PC Engines. Qotom se díky výkonějšímu procesoru chová velmi svižně. Testy rychlosti síťování jsem neprováděl.

pfSense 2.4.3 WebGUI


Pokud chceme po instalaci používat sériovou konzoli, stačí ji jen zapnout.

Povolení seriové konzole
Na závěr velmi letmého seznámení se s Qotom musím poznamenat, že poměr cena a výkon je u tohoto kousku velmi zajímavý.

pondělí 27. června 2016

pfSense 2.3.1_5 + LTE modem Huawei ME909u-521


V jedné lokalitě jsem se rozhodl provozovat LTE připojení. Volba nemohla padnout na nic jiného než mou oblíbený pfSense provozovaný na desce od PC Engines model APU 1D. Do routeru jsem si pořídil Mini PCI Express LTE modem Huawei ME909u-521. Dále je samozřejmě nutná anténa a pigtail viz ilustrační obrázek.

pfSense LTE

Již v minulosti jsem tento modem chtěl pořizovat, ale ve FreeBSD potažmo v pfSense nebyla podpora. To se ale nedávno změnilo.

Kontrolováno ve zdrojácích FreeBSD 10.3

grep -iR ME909U /usr/src/sys/dev/*        
/usr/src/sys/dev/usb/serial/u3g.c:    U3G_DEV(HUAWEI, ME909U,U3GINIT_HUAWEISCSI2),
/usr/src/sys/dev/usb/usbdevs:product HUAWEI ME909U        0x1573  LTE modem


Modem se na konzoli jeví např. takto.

dmesg | grep -i huawei
ugen3.2: at usbus3
u3g0: on usbus3


Podrobný výpis modemu. Vypis ala lsusb (Linux)

usbconfig -d ugen3.2 dump_device_desc
ugen3.2: at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x12d1
  idProduct = 0x1573
  bcdDevice = 0x0228
  iManufacturer = 0x0001 
  iProduct = 0x0002 
  iSerialNumber = 0x0003  0123456712ABCA17
  bNumConfigurations = 0x0003


Dostupné seriové porty modemu.

ls -1 /dev/cuaU0.*
/dev/cuaU0.0
/dev/cuaU0.1
/dev/cuaU0.2
/dev/cuaU0.3
/dev/cuaU0.4


Karta je osazena i GPS chipem, tak proto je tech portů vice.


Operátora jsem zvolil T-Mobile a SIM kartu a aktitovaným datovým tarifem a deaktivovaným PINem vložíme do SIM slotu na desce. Modem musí být vložen do Slotu (J16). Protože jen ten je propojen se SIM slotem viz popis k desce.

Pokud chceme modem otestovat ručně, můžeme z příkazové řádky.

Testovací AT příkazy převzaté z dokumentace.

cu -l /dev/cuaU0.0

Connected
AT^HCSQ?
^HCSQ: "LTE",56,49,158,20

ATI

Manufacturer: Huawei Technologies Co., Ltd.
Model: ME909u-521
Revision: 12.636.11.01.00
IMEI: 860461025220081
+GCAP: +CGSM

AT&V
&C: 1; &D: 2; &S: 0; E: 0; Q: 0; V: 1; X: 1; S0: 0; S3: 13; S4: 10;
S5: 8; S7: 0; S10: 14; +ICF: 3,3; +IFC: 0,0

AT+CGDCONT?
+CGDCONT: 1,"IP","internet.t-mobile.cz","0.0.0.0",0,0
+CGDCONT: 16,"IPV4V6","","0.0.0.0",0,0

AT^SYSINFOEX
^SYSINFOEX: 2,3,0,1,,6,"LTE",101,"LTE"


AT^IMEISV?
^IMEISV: 8604610252200816


Pokud nám modem takto reaguje je funkční a ovladače fungují. Pro zprovoznění LTE/4G musíme WAN interface nakonfigurovat pomocí PPP protokolu.

IPv4 Configuration Type     PPP
Country                     Czech Republic
Provider                    T-Mobile
Plan                        T-Mobile - internet.t-mobile.cz
Phone number                *99#
Access Point Name           internet.t-mobile.cz
Init string                 &F0E1Q0 +CMEE=2
Modem port                  /dev/cuaU0.0


Nastavení WAN_PPP




Status interface

Konfigurační soubor PPP který sestavil pfSense vypadá následovně.

cat /var/etc/mpd_wan.conf
startup:
    # configure the console
    set console close
    # configure the web server
    set web close

default:
pppclient:
    create bundle static wan
    set bundle enable ipv6cp
    set iface name ppp0
    set iface disable on-demand
    set iface idle 0
    set iface enable tcpmssfix
    set iface up-script /usr/local/sbin/ppp-linkup
    set iface down-script /usr/local/sbin/ppp-linkdown
    set ipcp ranges 0.0.0.0/0 10.64.64.0/0
    set ipcp enable req-pri-dns
    set ipcp enable req-sec-dns
    #log -bund -ccp -chat -iface -ipcp -lcp -link

    create link static wan_link0 modem
    set link action bundle wan
    set link disable multilink
    set link keep-alive 10 60
    set link max-redial 0
    set link disable chap pap
    set link accept chap pap eap
    set link disable incoming
    set link mtu 1492
    set auth authname "user"
    set auth password ��
    set modem device /dev/cuaU0.0
    set modem script DialPeer
    set modem idle-script Ringback
    set modem watch -cd
    set modem var $DialPrefix "DT"
    set modem var $Telephone "*99#"
    set modem var $InitString "&F0E1Q0 +CMEE=2"
    set modem var $APN "internet.t-mobile.cz"
    set modem var $APNum "1"
    open

úterý 22. března 2016

Raspberry Pi 1 Model B on FreeBSD


Na seznámení se s Raspberry mám doma již delší dobu půjčený model Raspberry Pi 1 Model B. Seznamování bylo hlavně s fungováním NOOBS, pomocí kterého jsem si instaloval Raspbian a pak ještě OpenELEC. Nakonec jsem se rozhodl testovat na tomto postarším kousku mé oblíbené FreeBSD, které by též mohlo být přítomno v NOOBS pro snadné instalování.

Podpora HW FreeBSD je u RPi 1 dostatešná. Nefunguje jen kamera a SMP. Vzhledem k jednomu jádru CPU se není žemu divit. RPi 2 je již plně funkční.

Existuje projekt raspbsd.org, který si klade za cíl vytvářet image pro aktuální vyvýjené FreeBSD 11 CURRENT. K dispozici jsou image pro RPi 1 A a B tak i pro RB 2. Image pro RPi 3 se objeví asi časem. Bude záležet na tom, zda existuje požadovaný driver pro WiFi.

Od jisté doby se v adresáři FTP objevují image pro RB-B a další mini arm-armv6 počítače stejného ražení.
Osobně nestíhám sledovat jaké další HW variace vznikají.

Instalace oficiální FreeBSD image je velmi jednoduchá a je popsána zde. Stáhl jsem si strom portů a nechal ve screenu zkompilovat Apache 2.4.18 a PHP 7.0.4. Jednojádrový armv6 se patřičně zapojitl, ale zvládl to naprosto v pohodě. Jak jinak u mě, rpi-b mám doma monitorované Zabbixem skrze Zabbix proxy v pfSense, takže sleduji na grafech jak dlouho se CPU trápilo.

pkg info | grep php
mod_php70-7.0.4                PHP Scripting Language
php70-7.0.4                    PHP Scripting Language


file /usr/local/bin/php
/usr/local/bin/php: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 10.2, not stripped


Jsem si vědom, že Raspbian nebo Pidora jsou nejpoužívanější OS pro RPi, ale je tu i možnost nasadit FreeBSD a využít jeho kvalit.

Pořídil jsem si RPi, kde mám aktuálně Rasbian a UniFi Controller instalován jako zip. Plánuji přeinstalovat na FreeBSD s využitím portu unifi4. Nejbolestnější bude kompilace jdk, ale s tím si RPi 2 nebo 3 hravě poradi.

Mé plány jsou zatím uledu :-(

===>   unifi4-4.8.14 depends on package: mongodb>0 - not found
===>  mongodb-2.6.7 is only for i386 amd64, while you are running armv6
(reason: "not yet ported to anything other than i386 and amd64").
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/databases/mongodb
*** Error code 1

ú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

pátek 23. října 2015

OpenStreetMap import do PostGIS



Po dlouhé době jsem opět narazil na databázi PotgresSQL a jeho velmi zajímavé rozšíření PostGIS. Mile mě překvapilo, jak snadno se dá PostGIS naplnit daty z OpenStreetMap (OSM). A tím si snadno vytvoříte vlastní mapový server s velmi podrobnými daty.

Testováno na OS FreeBSD 10.2

Instalace poslední verze PostgreSQL 9.4

cd /usr/ports/databases/postgresql94-server/ && make install clean

Instalace rozšíření PostGIS

cd /usr/ports/databases/postgis21/ && make install clean

Instalace konvertoru OSM do pgsql

/usr/ports/converters/osm2pgsql/ && make install clean

Dále je postup poměrně jednoduchý.  Připravíme si databázi nejlépe i s table space.

mkdir -p /data/pgsql/postgis && chown pgsql:pgsql /data/pgsql/postgis

CREATE USER postgis;
CREATE TABLESPACE postgis OWNER postgis LOCATION '/data/pgsql/postgis';
CREATE DATABASE postgis WITH OWNER = postgis TABLESPACE = postgis;
CREATE LANGUAGE plpgsql;


Provedeme instalaci PostGIS rozšíření PostgreSQL.

cd /usr/local/share/postgresql/contrib/postgis-2.1/
psql -d postgis -f postgis.sql
psql -d postgis -f spatial_ref_sys.sql
psql -d postgis -f postgis_comments.sql
psql -d postgis -f topology.sql
psql -d postgis -f topology_comments.sql
psql -d postgis -f rtpostgis.sql
psql -d postgis -f rtpostgis_legacy.sql
psql -d postgis -f legacy.sql


Ověříme verze PostgreSQL a PostGIS

[root@gis-test ~]# psql postgis
psql (9.4.5)
Type "help" for help.

postgis=# SELECT version();
PostgreSQL 9.4.5 on amd64-portbld-freebsd10.2, compiled by FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512, 64-bit

postgis=# SELECT postgis_full_version();
POSTGIS="2.1.7 r13414" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.1, released 2015/09/15" LIBXML="2.9.2" LIBJSON="UNKNOWN" TOPOLOGY RASTER



Provedeme stažení OSM mapy ČR a naimportujeme do PostGIS.

fetch http://download.geofabrik.de/europe/czech-republic-latest.osm.pbf # 589M

osm2pgsql -d postgis --slim -C 1500 --number-processes 4 czech-republic-latest.osm.pbf

Import nějakou dobu trvá a zabere i dost místa ve vytvořeném TABLE SPACE :-)

Jak používat data z PostGIS je zase jiné téma. Jen uvedu pár zajímavých projektů.

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

pondělí 2. února 2015

PC Engines APU.1D vs pfSense 2.2


Dostala se mi pod ruku nová generace desky od PC Engines s označením APU.1D. Je to nástupce desek ALIX.2D3 a jí podobných. Desku jsem vybavil mSATA SSD diskem a wifi kartou. Deska je od výroby dodávána s hliníkovým pruhem jakožto pasivním chladičem přehřívaných čipu. Popis instalace je zobrazen v návodu výrobce. Vypadá to amatérsky, ale asi to mají spočítané a otestované, že to stačí i pro provoz v letním období.

Po zapojení desky jsem se k ní připojil sériovou konzolí 115200 8N1. Používám GNU screen.

sudo screen /dev/ttyUSB0 115200

Deska disponuje BIOSem, který umí bootovat z několika periferii iPXE, mSATA a např. USB. Podrobnosti jsou v dokumentaci k deskce. Rozhodl jsem se v desce povýšit BIOS na aktuální verzi Build 9/8/2014, jedná se o beta, ale na problémy jsem zatím nenarazil. K mání je i produkci verze.

Aktualizace BIOSu je možná pomocí USB nebo PXE. Oba postupy jsou poměrně jednoduché. Použil jsem svůj TFTP server.

Stáhneme http://www.pcengines.ch/file/apu_tinycore.tar.bz2 a umístíme na TFTP server a upravíme konfiguraci PXE. Výrobce používá projekt Tiny Core Linux, pomocí kterého bootneme do mini Linux distribuce, která obsahuje vše potřebné pro zapsání image BIOSu na flashROM. Obdobné se dá vyrobit USB disk.

S deskou APU mi měla dorazit i redukce mSATA <> SATA, ale ta se opozdila. Tak jsem si pomoci TFTP stáhl image pfSense do RAMdisku Tiny Core Linuxu. RAM 2GB je slušné vybavení desky.

tftp -g -r /pfsense/pfSense-2.2-RELEASE-4g-i386-nanobsd.img.gz 192.168.42.13
gunzip -c pfSense-2.2-RELEASE-4g-i386-nanobsd.img.gz | dd of=/dev/sda bs=4M

Po instalaci NanoBSD verze pfSense na SSD disk, stačí jen v BIOSu nastavit boot device mSATA a uložit.

Tento návod je pro zasvěcené systémáky. Kompletní router se vším všudy se dá pořídit v eShopu http://store.open-tech.cz/router/pfsense-apu-1d/

úterý 25. února 2014

Perl modul Zabbix-API

Na stránkách Zabbix v Download v sekci 3rd Party Tools je uveden Perl modul  Zabbix::API. Bohužel jsem jej nenašel nikde v repository Debian ani v portech FreeBSD.

A tak jsem se pokusil modul instalovat ručně pomoci Module::Build.

cd /usr/ports/devel/p5-JSON-RPC && make install
cd /tmp/ && fetch http://search.cpan.org/CPAN/authors/id/F/FG/FGA/Zabbix-API-0.009.tar.gz
tar xvzf Zabbix-API-0.009.tar.gz && cd /tmp/Zabbix-API-0.009

 
perl Build.PL
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'Zabbix-API' version '0.009'
./Build
Building Zabbix-API
./Build test
...
./Build install
...
FreeBSD: Registering installation in the package database
Can't open file Makefile: No such file or directory at (eval 35) line 2


Upravíme si konfigurační soubor, který se v ukázce používá a vyžívá modulu p5-YAML.


vi /root/.zabbixrc
host: http://zabbix.hide.lukasmaly.net/zabbix/api_jsonrpc.php
user: zbxuser
password: xzy123


Pro otestování můžeme použít ukázku autora modulu.

cp /tmp/Zabbix-API-0.009/examples/fetch-all-hosts.pl ./ && chmod 700 fetch-all-hosts.pl

./fetch-all-hosts.pl
---
available: 1
disable_until: 0
error: ''
errors_from: 0
flags: 0
host: fbsdserver
hostid: 10084
ipmi_authtype: -1
ipmi_available: 0
ipmi_disable_until: 0
ipmi_error: ''
ipmi_errors_from: 0
ipmi_password: ''
ipmi_privilege: 2
ipmi_username: ''
jmx_available: 0
jmx_disable_until: 0
jmx_error: ''
jmx_errors_from: 0
lastaccess: 0
maintenance_from: 0
maintenance_status: 0
maintenance_type: 0
maintenanceid: 0
maintenances: []
name: Zabbix server
proxy_hostid: 0
snmp_available: 0
snmp_disable_until: 0
snmp_error: ''
snmp_errors_from: 0
status: 0
templates:
  - hostid: 0
    templateid: 0
---
...


Nevýhodou tohoto postupu je, že systém o tomto modulu nic neví a tak se problematicky aktualizije. Časem se modul objeví v repositářích mnoha systémů.

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 13. listopadu 2013

Zabbix 2.2.0 vmware collector I.

Včera 12.11.2013 vyšla očekávaná nová majoritní verze oblíbeného monitorovacího systému Zabbix 2.2.0. Našel jsem si chvilku na vyzkoušení.

Nejprve jsem se rozhodl si provést čistou instalaci Na FreeBSD 9.1 s PostgreSQL. Vzhledem k tomu, že distribuční balíčky a porty výjdou s nějakým opožďěním. Provedl jsem instalaci ze zdrojových kódů.

Novinek je v nové verzi celá řada. Na webu zabbix.com se píše že jich je více jak 100. Na root.cz jsem do novinek napsal jen slabý odvar. Po pravdě nejvíce mě zajímá "Monitoring of vCenter and vSphere - vmware collector" A na tuto novinku jsem se zaměřil.

Z dokumentace je patrné, co je třeba při kompilaci pro podporu vmware. Tyto dvě kompilační volby --with-libxml2 a --with-libcurl je třeba mít zapnuté. No a zde jsem na FreeBSD narazil. Kompilace --with-libxml2 končila chybou ZBX-7329, která je již opravena ve verzi 2.2.1-rc1. Takže nový port na FreeBSD můžeme očekávat rovnou ve verzi 2.2.1 :-)

Posléze jsem se rozhodl povýšit testovací zabbix na Debianu 7 s MySQL, který jsem provozoval na verzi 2.0.9. Upgrade je popsán zde. Výhodou nové 2.2.0 verze je, že již podporuje auto upgrade schéma databáze. Takže po spuštění služby zabbix-server se začne databáze upgradovat.

   637:20131112:150038.112 Starting Zabbix Server. Zabbix 2.2.0 (revision 40163).
   637:20131112:150038.112 ****** Enabled features ******
   637:20131112:150038.112 SNMP monitoring:           YES
   637:20131112:150038.113 IPMI monitoring:           YES
   637:20131112:150038.113 WEB monitoring:            YES
   637:20131112:150038.113 VMware monitoring:         YES
   637:20131112:150038.113 Jabber notifications:      YES
   637:20131112:150038.113 Ez Texting notifications:  YES
   637:20131112:150038.113 ODBC:                       NO
   637:20131112:150038.113 SSH2 support:              YES
   637:20131112:150038.113 IPv6 support:               NO
   637:20131112:150038.113 ******************************
   637:20131112:150038.113 NodeID:                      1
   637:20131112:150038.113 ******************************
   637:20131112:150038.113 using configuration file: /opt/zabbix-2.2.0-server/etc/zabbix_server.conf
   637:20131112:150038.362 current database version (mandatory/optional): 02010000/02010000
   637:20131112:150038.362 required mandatory version: 02020000
   637:20131112:150038.362 starting automatic database upgrade
   637:20131112:150038.363 completed 0% of database upgrade
   637:20131112:150038.364 completed 1% of database upgrade
   637:20131112:150038.370 completed 2% of database upgrade
   637:20131112:150038.373 completed 3% of database upgrade

...
   637:20131112:155705.372 completed 99% of database upgrade
   637:20131112:155705.373 completed 100% of database upgrade
   637:20131112:155705.373 database upgrade fully completed


Po upgradu vše fungovalo. Jen není dořešen import nových Template/Šablon. V čisté instalaci se objevili tři nové šablony pro monitorování vmware.

Template Virt VMware
Applications (3) Items (3) Triggers (0) Graphs (0) Screens (0) Discovery (3) Web (0) 

Template Virt VMware Guest
Applications (8) Items (17) Triggers (0) Graphs (0) Screens (0) Discovery (3) Web (0)

Template Virt VMware Hypervisor
Applications (6) Items (19) Triggers (0) Graphs (0) Screens (0) Discovery (1)    Web (0)

Do upgradovaného Zabbixu je je třeba tyto Template importovat od jinud. O vmware collectoru se rozepisu později až jej podrobněji prozkoumám.

Update:
Při nastavení sledování vCenter server s template Template Virt VMware zabbix-server crash, Jiz na to existuje bug ZBX-7359, děje se mi tak jak na Debian 7 se Zabbix ze src, tak i na třetí 2.2.0 instalaci Ubuntu 12.04.3 amd64 z Oficial Zabbix Repo.

čtvrtek 19. září 2013

FortiGate-100D vs Zabbix 2.0.8


V jedné lokalitě se postarší router Cisco PIX přesný model nevím, vyměnil za router od společnosti Fortinet s označením FortiGate-100D a to ještě v HA řešení. A bylo zapotřebí opět sledovat jednotlivé interface atd. Na routeru se povolil protokol SNMP verze 2c s patřičnou komunitou.

Našel jsem pro daný model Zabbix Template na GitHub u Jean-Jacques Martrès.

Jeho archív šablon obsahuje i celou řadu dalších vendorů. Template jsou vytvořevny velmi šikovně a hlavně naplno využívají nových vlastností Zabbix 2.x, tím mám na mysli Low Level Discovery.

Názvy použitých Template pro Fortinet devices:

zbx-fortinet-antivirus
zbx-fortinet-envmon             
zbx-fortinet-ha
zbx-fortinet-hardware           
zbx-fortinet-ids
zbx-fortinet-interfaces         
zbx-fortinet-vdom
zbx-fortinet-vpn


Některé template používají externí scripty např. pro vykonání discovery funkcí.

echo.something
if.speed
if.vdom
vpn.vdom


Psány jsou v jazyce Ruby a bylo třeba doinstalovat potřebný SNMP gem. Instalace Ruby rotšíření je v jednotlivých distribucích nebo OS jiná.

Ve FreeBSD jsem užil následující.

cd /usr/ports/net-mgmt/rubygem-snmp && make install clean

rubygem-snmp-1.1.1  SNMP library for Ruby

V nastavení v Zabbixu jsem užil všechny template. S tím že zafungují ty, které v routeru objeví adekvátní nastavení např. VPN, nebo Antivir. V případě rekonfigurace routeru není nutné v Zabbixu nic měnit, vše se objeví a začne adekvátně monitorovat.


středa 7. srpna 2013

FreeBSD Distribuce

Poznamenávám si seznam OS odvozených od FreeBSD ...

FreeNAS 9.1.0 redesign plugin

Mnou oblíbený OS pod názvem FreeNAS dozrál do verze 9.1.0. Tato verze prináší několik změn. Kompletně byla přepracována správa Pluginů, jejich oficiální počet je stále jen tři, ale je možnost vytvářet vlastní.

Pluginy jsem využíval i ve FreeNAS 8.x, kde sdílely jeden Jail, ve verzi 9.1.0 je práce s Pluginama i Jailem hodně zjednodušena. Princip fungovani je stejný, jen je více uživatelsky přítulný. Každá externí aplikace nové běží ve svém Jailu. Je též využíván systém Warden z PC-BSD, který konfiguraci Jail zjednodušuje.

Vlastnosti FreeNAS jsou popsány zde.

Pokud budete upgradovat FreeNAS z verze 8.x je vhodné Pluginy a Jail smazat a po upgradu používat Jail po novu.

čtvrtek 27. června 2013

Metasploit db_nmap

Většina adminů někdy použila mnou oblíbený program nmap. Tento nástroj slouží ke scanování sítě a dokáže zjistit, jaké služby na kterém počítači běží. Pokud chceme výsledky scanu uložit a např. porovnávat v čase, je třeba použít db_nmap, což je program, který je součástí Frameworku Metasploit.

Metasploit je produktem firmy Rapid7, která tento nástroj tvoří a prodává. Je to program pro penetrační testy. Metasploit má několik verzí nebo spíše edicí. Placená verze umožňuje pravidelně aktualizovat databáze chyb případně i exploitů a funkcionalita je hodně rozsáhlá.

Pro naše potřeby programu db_nmap nám postačí  "Metasploit Framework - Free Open Source Development Platform", která je např. snadno instalovatelná ve FreeBSD jako port. Celý framework je postaven na jazyce Ruby.

Před samotnou instalací doporučuji instalovat Vámi preferovanou verzi databáze PostgreSQL.

cd /usr/ports/databases/postgresql92-server/ && make install clean

cd /usr/ports/security/metasploit && make install clean

Po instalaci je možné již pustit samotnou konzoli.

[root@fbsd ~]# msfconsole
Call trans opt: received. 2-19-98 13:24:18 REC:Loc

     Trace program: running

           wake up, Neo...
        the matrix has you
      follow the white rabbit.

          knock, knock, Neo.

                        (`.         ,-,
                        ` `.    ,;' /
                         `.  ,'/ .'
                          `. X /.'
                .-;--''--.._` ` (
              .'            /   `
             ,           ` '   Q '
             ,         ,   `._    \
          ,.|         '     `-.;_'
          :  . `  ;    `  ` --,.._;
           ' `    ,   )   .'
              `._ ,  '   /_
                 ; ,''-,;' ``-
                  ``-..__``--`

                             http://metasploit.pro


       =[ metasploit v4.6.2-1 [core:4.6 api:1.0]
+ -- --=[ 1103 exploits - 621 auxiliary - 178 post
+ -- --=[ 300 payloads - 29 encoders - 8 nops

[*] Processing /root/.msf4/msfconsole.rc for ERB directives.
resource (/root/.msf4/msfconsole.rc)> db_connect -y /usr/local/share/metasploit/config/database.yml
[*] Rebuilding the module cache in the background...
resource (/root/.msf4/msfconsole.rc)> workspace -a SmEjDiL

[*] Added workspace: SmEjDiL
msf >

Z ukázky je vidět, že konzoje již využívá databázi pro ukládání výsledků scanů. Velmi podrobný a snadno pochopiletný postup, jak inicializovat databázi je popsán zde. Snad jen poznámka dríve byla podpora více databázi MySQL, SQLite a ta byla ukončena a podporována je pouze PostgreSQL. Metasploit je též součástí Linuxové distribuce Backtrack linux, kde je možná i nějaká modifikovaná verze.

Můžeme začít scanovat do DB

msf > db_status
[*] postgresql connected to msf_database
msf > db_nmap 192.168.42.0/24


Příkazem hosts si vypíšeme jednotlive výsledky, např. takto.

msf > hosts -R 81.95.98.2 -c address,name,os_name,os_flavor,updated_at,

Hosts
=====

address     name                os_name  os_flavor  updated_at
-------     ----                -------  ---------  ----------
81.95.98.2  gds39d.active24.cz  Linux    2.6.X      2013-06-26 19:24:57 UTC

RHOSTS => 81.95.98.2


Příkazem services si vypíšeme objevené služby na daném hostu.

msf > services -R 81.95.98.2

Services
========

host        port  proto  name   state  info
----        ----  -----  ----   -----  ----
81.95.98.2  25    tcp    smtp   open   Postfix smtpd
81.95.98.2  80    tcp    http   open  
81.95.98.2  443   tcp    https  open  

RHOSTS => 81.95.98.2


Pokud nechceme používat jen nmap Metasploit disponuje např. celou řadou scaneru. Zajímá mě jaké verze Windows se v mé síti nacházejí. Pěkný návod jak nato je např. zde.

msf > use auxiliary/scanner/smb/smb_version
msf auxiliary(smb_version) > set RHOSTS 192.168.42.40-50
RHOSTS => 192.168.42.40-100
msf auxiliary(smb_version) > set THREADS 11
THREADS => 11
msf auxiliary(smb_version) > run


Výsledkem je např. toto.

msf> hosts -c address,os_name,os_flavor,os_sp,purpose

Hosts
=====

address        os_name            os_flavor            os_sp  purpose
-------        -------            ---------            -----  -------

192.168.42.40  Microsoft Windows  7 Professional 7601  b1     client
192.168.42.42  Microsoft Windows  XP                   SP3    client


V minulosti jsem si koupil tuto knihu, která je pro msf3, ale i tak se z ní dá hodně čerpat.

Bezpečnosti zdar :-)

č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.

pondělí 11. března 2013

Zabbix PostgreSQL

Pro dočasné monitorování mailserveru edu.mudk.cz jsem na byvalém serveru zprovoznil Zabbix pod aktuální verzí FreeBSD 9.1-RELEASE-p1. Zabbix jsem nyní chtěl vyzkoušet s databází PostgreSQL 9.2.

Instalace a konfigurace všech potřebných aplikací vychází z aktuálních FreeBSD portů.
U PostgreSQL jsem se rozhodl použít TABLESPACE. Obecně potřeba nejsou, ale chtěl jsem mít data Zabbixu oddělené od hlavní db.

Konfigrace Zabbixu s použitím PostgreSQL je obecně popsána zde.

psql template1
CREATE USER zabbix WITH ENCRYPTED PASSWORD '*****' NOCREATEDB NOCREATEUSER;


Vytvoříme a převlastníme adresář pro TABLESPACE.

mkdir -p /data/pgsql/zabbix && chown pgsql:pgsql /data/pgsql/zabbix

CREATE TABLESPACE zabbix OWNER zabbix LOCATION '/data/pgsql/zabbix';
CREATE DATABASE zabbix WITH OWNER = zabbix TABLESPACE = zabbix;


Rozbalíme si tarbal.

cd /tmp/  && tar xvzf /usr/ports/distfiles/zabbix-2.0.5.tar.gz
cd /tmp/zabbix-2.0.5/database/postgresql


Naimportujeme db schéma

cat schema.sql | psql -U zabbix zabbix  
cat images.sql | psql -U zabbix zabbix
cat data.sql | psql -U zabbix zabbix


Kompilace Zabbixu i PHP musí být nastavena s podporou PostgreSQL.