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 :-(
pondělí 11. března 2019
č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]
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]