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

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