デバッグ ログに使用する Graylog2 サーバーにディスクの問題がいくつかありました。現在、割り当てられていないシャードがあります:
curl -XGET http://host:9200/_cat/shards
graylog_292 1 p STARTED 751733 648.4mb 127.0.1.1 Doctor Leery
graylog_292 1 r UNASSIGNED
graylog_292 2 p STARTED 756663 653.2mb 127.0.1.1 Doctor Leery
graylog_292 2 r UNASSIGNED
graylog_290 0 p STARTED 299059 257.2mb 127.0.1.1 Doctor Leery
graylog_290 0 r UNASSIGNED
graylog_290 3 p STARTED 298759 257.1mb 127.0.1.1 Doctor Leery
graylog_290 3 r UNASSIGNED
graylog_290 1 p STARTED 298314 257.3mb 127.0.1.1 Doctor Leery
graylog_290 1 r UNASSIGNED
graylog_290 2 p STARTED 297722 257.1mb 127.0.1.1 Doctor Leery
graylog_290 2 r UNASSIGNED
....
シャードは400以上です。単一ノードのセットアップなので、データを失うことなくそれらを削除できます。これを行うには、インデックス (graylog_xxx) とシャード (1,2,...) をループする必要があります。
Bash でこれ (2 つの変数) をループするにはどうすればよいですか? 削除 API 呼び出しには 2 つの変数があり、これを置き換える必要があります (私の知る限り):
curl -XPOST 'host:9200/_cluster/reroute' -d '{
"commands" : [ {
"allocate" : {
"index" : "$index",
"shard" : $shard,
"node" : "Doctor Leery",
"allow_primary" : true
}
}
]
}'
これについて私が気になるのは、割り当てられていないシャードにはノードがないことです。しかし、API 呼び出しで指定する必要があります。