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


Žádné komentáře: