Migrace Graylogu na nový server
Nastala situace, na kterou jsem se vůbec netěšil - potřeboval jsem přemigrovat Graylog na jiný server (tedy kompletní stack Graylog/Elasticsearch/MongoDB). Po dvou hodinách studování a zkoušení se nakonec ukázalo, že to není až tak neřešitelný problém. Zde je tedy návod jak zmigrovat Graylog na jiný server (a zachovat konfiguraci i data).
Tato migrace funguje celkem jednoduše, protože používám single-node elasticsearch. Všechny zprávy do Graylogu sbírám pomocí RabbitMQ, takže při vypnutí se žádná nově příchozí data neztratí. Pokud fungujete jinak, musíte jít složitější cestou.
Migraci jsem rozdělil na jednotlivé služby - od MongoDB po Graylog. Vždy nainstalovat službu, přemigrovat data a službu spustit/restartovat. Instalace jsem prováděl dle příručky s pro tento návod nepodstatnými úpravami. Před migrací je více než vhodné starý server aktualizovat tak, aby verze všech použitých služeb byly stejné jako na novém. Závěrem upozorňuji, že Elasticsearch vůbec neznám a nijak do ní nesahám. Proto je pravděpodobné, že existuje lepší forma migrace než snapshot/restore, kterou jsem použil já (třeba přidání nového serveru do clusteru, automatická synchronizace/replikace a vypnutí starého nodu).
1. Vypnout Graylog
Před začátkem migrace je vhodné vypnout Graylog, takže během migrace nemůže zapsat nová data.
sudo systemctl stop graylog-server.service
2. MongoDB
Migrace databáze je velmi jednoduchá. Stačí 'dumpnout' databázi graylog a tento dump poté obnovit na novém serveru.
Export:
mongodump --db graylog --out /tmp/mongodbdump
Celou složku překopírovat na nový server.
Import:
Celou složku importovat.
mongorestore --db graylog mongodbdump/
3. ElasticSearch
Export
- Do konfiguračního souboru
/etc/elasticsearch/elasticsearch.yml
musíte vložit řádek, který popisuje, kam se snapshot vytvoří. Danou složku samozřejmě musíte vytvořit a jako vlastníka-skupinu nastavit elasticsearch.
path.repo: "/etc/elasticsearch/backups"
- Restartovat Elasticsearch
- Registrovat složku/filesystem z kroku 1
curl -XPUT 'localhost:9200/_snapshot/my_fs_backup?pretty' -H 'Content-Type: application/json' -d '{"type": "fs", "settings": {"location": "/etc/elasticsearch/backups", "compress": true}}'
- Opět restart
- Vytvořit snapshot
curl -XPUT 'localhost:9200/_snapshot/my_backup/snp1?pretty' -H 'Content-Type: application/json' -d '{"type": "fs", "settings": {"location": "/etc/elasticsearch/backups"}}'
- Celou složku se snapshotem přesunout na nový server.
Import
- Analogicky vytvořit složku
/etc/elasticsearch/backups
a přidat volbupath.repo
do elasticsearch.yml. - Nakopírovat do složky backups soubory získané při exportu a nastavit oprávnění tak, aby byla +r,w pro skupinu elasticsearch.
- Registrovat složku
curl -XPUT 'localhost:9200/_snapshot/my_fs_backup?pretty' -H 'Content-Type: application/json' -d '{"type": "fs", "settings": {"location": "/etc/elasticsearch/backups", "compress": true}}'
- Zahájit obnovování
curl -XPOST 'localhost:9200/_snapshot/my_fs_backup/snp1/_restore'
- Restartovat Elasticsearch
systemctl restart elasticsearch.service
4. Graylog server
Nyní je třeba nainstalovat Graylog server standardně dle příručky. Server zatím nespouštět. Po instalaci je třeba překopírovat konfigurační soubor a soubor node-id ze starého serveru, aby nebylo třeba upravovat databázi.
/etc/graylog/server/server.conf /etc/graylog/server/node-id
Nakonec je nutné upravit hodnoty http_bind_address, http_publish_uri, http_external_uri v server.conf tak, aby odpovídaly novému serveru.
Nyní je možné server spustit. Při troše štěstí dojde k hladkému spuštění, původní data budou k dispozici a všechny Inputs budou fungovat.
5. Závěrem
Doufám že návod byl užitečný a ušetřil vám nějakou práci. Pokud znáte lepší způsob, poučte mě prosím v komentářích.
Add new comment