2017年3月30日木曜日

OSSのJob Arranger for Zabbix


面白そうなOSSを見つけました。こんど試してみたいと思います。

見つけたのは「Job Arranger for Zabbix」 です。
大和総研ビジネス・イノベーションのサイトで公開されています。(下記URL)

http://xn--yck0c5b3804be7h.fitechforce.com/index.html

「Job Arranger for Zabbix」はZabbix にジョブ管理機能を追加するアドオンです。

Windowsアプリケーションの管理画面を使用します。
アイコンでフローを描いてジョブの作成ができるようです(JP1的な)
日本語のマニュアルも整備されています。

主な特長は以下のとおり。

・Zabbixに追加するだけの簡単導入で、すぐに利用可能
・C言語で開発した軽量ソフトウェアで、高いパフォーマンスと安定性を実現
・豊富な部品を組み合わせて、複雑なジョブも作成可能
・分かり易いGUIで高い操作性と視認性を実現
・機能ごとに分離した判りやすいGUIで、操作が簡単
・フルオープンソースながら公式サポート・ドキュメントが充実


2017年3月5日日曜日

Elasticsearch5.1 のクラスタ(unicast)に動的にノードを追加する

Elasticsearch5.xの File-Based Discovery Plugin を使用すると、クラスタ構築時にunicast で指定するホスト名(またはIPアドレス)を別ファイル(例: config/discovery-file/unicast_hosts.txt)で管理でるようです。
また、この別ファイルの変更は、動的に反映されるようなので、試してみました。

検証で使用した環境は、「Docker で Elasticsearch5.1 と head を試す」で作成したElasticsearch5.1です。(Docker)


プラグインのインストール


File-Based Discovery Plugin を以下のようにしてインストールします。
root@c40d8d6e3c73:/usr/share/elasticsearch# bin/elasticsearch-plugin install discovery-file
-> Downloading discovery-file from elastic
[=================================================] 100%  
-> Installed discovery-file

1台でクラスタ


まず、1台でクラスタを起動してみます。
File-Based Discovery Plugin を使用するには、elasticsearch.yml に discovery.zen.hosts_provider を追加します。discovery.zen.ping.unicast.hosts を使用していた場合はコメントアウトします。
# クラスタのノードを指定
#discovery.zen.ping.unicast.hosts: ["elasticsearch_es51a_1","elasticsearch_es51b_1","elasticsearch_es51b_2"]
discovery.zen.hosts_provider: file
File-Based Discovery Plugin が参照するファイルは $CONFIG_DIR/discovery-file/unicast_hosts.txt です。
unicast_hosts.txt にホスト名(またはIPアドレス)を記載します。
9300ポート使用していれば、ポートは省略できます。ポートを指定したい場合は、"hostname:port" 形式で記述します。
# cat config/discovery-file/unicast_hosts.txt
elasticsearch_es51a_1
これで、Elasticsearch を起動して、head で見ると下図のとおり。


ログには以下のように表示されます。
[2017-03-05T02:41:56,219][INFO ][o.e.p.PluginsService     ] [c40d8d6e3c73] loaded plugin [discovery-file]
[2017-03-05T02:41:56,281][WARN ][o.e.d.d.f.FileBasedDiscoveryPlugin] Using discovery.type setting to set hosts provider is deprecated. Set "discovery.zen.hosts_provider: file" instead
[2017-03-05T02:41:56,682][WARN ][o.e.d.s.g.GroovyScriptEngineService] [groovy] scripts are deprecated, use [painless] scripts instead
[2017-03-05T02:42:01,025][INFO ][o.e.n.Node               ] [c40d8d6e3c73] initialized
[2017-03-05T02:42:01,026][INFO ][o.e.n.Node               ] [c40d8d6e3c73] starting ...
[2017-03-05T02:42:01,293][INFO ][o.e.t.TransportService   ] [c40d8d6e3c73] publish_address {172.18.0.3:9300}, bound_addresses {[::]:9300}
[2017-03-05T02:42:01,304][INFO ][o.e.b.BootstrapCheck     ] [c40d8d6e3c73] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks

クラスタ稼働中に2台目を追加


クラスタを起動したまま、1台目のunicast-hosts.txt にノードを追加します。
再起動はしません。
# cat config/discovery-file/unicast_hosts.txt
elasticsearch_es51a_1
elasticsearch_es51b_1
2台目のノードも、1台目と同じ設定にしてから起動します。
head で見ると、下図のように表示されます。