pondělí 11. března 2019

Aeskulap - DICOM Viewer

Dnes se mi do rukou dosly nějaké ty rentgeny na CD ke skartaci. Nedalo mi to na jeden svůj jsem se chtěl podívat. Na CD byl nějaký widloidní software a tak jsem pátral po Image souborech a objevil jsem formát DICOM.

Po krátké konzultaci s pane Googlem jsem našel alikaci - Aeskulap - DICOM Viewer psanou v GTK. Tak jsem si ji s radostí nainstaloval a na své snímky se podíval.

sudo aptitude install aeskulap

Aplikace se umí napojit i na server, kde se rentgeny ukládájí. Překvapilo, mě, že exisují i přidělené porty.

acr-nema    104/tcp        dicom        # Digital Imag. & Comm. 300
acr-nema    104/udp        dicom


V českém zdravotnictví se Ubuntu asi moc nepoužívá ale těší mě, že takové Open Source projekty existují :-)

Zdrojové kody této aplikace jsou na GitHubu. Zde autor uvádí informace o již zmíněných serverech PACS - picture archiving and communication system.

Tak jsem rychle hledal nejaký ten free software a ejhle je toho hned několik. Zajímavý název má aplikace PACS - Dicoogle, další je např. Orthanc-server. Oba servery jsou psány v Java a též je možné je provozovat na Devian/Ubuntu distrech. Předpokládám že tento SW se v českých nemocnicích nepoužíva :-(

čtvrtek 7. března 2019

ELK export import

Dlouho jsem si sem nic nepoznamenal. Ale právě řeším u jednoho zákazníka migraci Logmanagementu od Datasys z ELISA3 na ELISA4. Hlavním rozdílem jsou verze ELK.

ELISA3 - elasticsearch-1.7.5-1.noarch
ELISA4 - elasticsearch-6.4.2-1.noarch

Jediným možným způsobem jak přenést indexy ze stareho ELK do nové je export do JSON a opět import. K tomu se používá utilitka elasticdump.


yum intsall npm

npm install elasticdump -g
/usr/bin/elasticdump -> /usr/lib/node_modules/elasticdump/bin/elasticdump
/usr/bin/multielasticdump -> /usr/lib/node_modules/elasticdump/bin/multielasticdump


Samotný export import probíhá následovně:

Export z ELK do JSON

elasticdump --input=http://localhost:9200/logstash-2019.02.13 --output=/data/tmp/elisa-2019.02.13.json --type=data --limit=1000
Wed, 06 Mar 2019 14:33:04 GMT | starting dump
Wed, 06 Mar 2019 14:33:04 GMT | got 100 objects from source elasticsearch (offset: 0)
...
Wed, 06 Mar 2019 14:33:05 GMT | sent 100 objects to destination file, wrote 100
Wed, 06 Mar 2019 14:33:05 GMT | got 0 objects from source elasticsearch (offset: 1000)
Wed, 06 Mar 2019 14:33:05 GMT | Total Writes: 1000
Wed, 06 Mar 2019 14:33:05 GMT | dump complete



Po vytvoření dumpu je nutné změnit hlavní atributy, které ELISA4 nově zavedla.

Jednoduchý script provede náhradu řetězců atributu s @.

cat replace_atributes.sh
#!/bin/sh

sed -i -e 's/@message/AEFN.Message/g' $1
sed -i -e 's/@msgHost/AEFN.Host/g' $1
sed -i -e 's/@msgSource/AEFN.Source/g' $1
sed -i -e 's/@msgSeverity/AEFN.Severity/g' $1
sed -i -e 's/@msgUsername/AEFN.Username/g' $1

# EOF



Index, který v ELK má velikost 5GB má jako dump velikost mnohem větší 11GB, proto se i sed poněkud potrapí.

time ./replace_atributes.sh elisa-2019.02.13.json

real    21m26.231s
user    3m55.123s
sys     6m57.925s


Kopie dumpu na misto importu

scp migrace@10.20.30.40:/data/tmp/elisa-2019.02.13.json ./

V závěru už jen vesele importujeme do ELISA4 a zase jdeme na kafe.

Import z JSON do ELK

elasticdump --input=/data/tmp/elisa-2019.02.13.json --output=http://localhost:9200/elisa-2019.02.13 --type=data --limit=1000
...
Thu, 07 Mar 2019 10:00:49 GMT | sent 1008 objects to destination elasticsearch, wrote 1008
Thu, 07 Mar 2019 10:00:50 GMT | got 1009 objects from source file (offset: 1498981)
Thu, 07 Mar 2019 10:00:50 GMT | sent 1009 objects to destination elasticsearch, wrote 1009
Thu, 07 Mar 2019 10:00:50 GMT | got 1015 objects from source file (offset: 1499990)
Thu, 07 Mar 2019 10:00:51 GMT | sent 1015 objects to destination elasticsearch, wrote 1015
Thu, 07 Mar 2019 10:00:51 GMT | got 1021 objects from source file (offset: 1501005)

...

V logu ELK mužeme sledovat zaznamy spojené s importem

tail -f /var/log/elasticsearch/ELISA.log
[2019-03-07T10:57:25,396][INFO ][o.e.c.m.MetaDataMappingService] [elisa4] [elisa-2019.02.23/wQqd60uaRHWviUDdAyi7_w] update_mapping [logs]
[2019-03-07T10:57:41,658][INFO ][o.e.c.m.MetaDataMappingService] [elisa4] [elisa-2019.02.23/wQqd60uaRHWviUDdAyi7_w] update_mapping [logs]
[2019-03-07T10:58:12,576][INFO ][o.e.c.m.MetaDataMappingService] [elisa4] [elisa-2019.02.23/wQqd60uaRHWviUDdAyi7_w] update_mapping [logs]