0

Hazelcast 製品から JMX メトリックを取得する必要があります。JMX ポートに接続する Logstash プロセスを作成しました。このプロセスでは、Hazelcast JMX のホスト名、ポート、クラスター、環境などの情報である json を読み取る必要があります。各 Hazelcast マシン/ポートの json ファイルを Logstash マシンにデプロイする必要があります。この場合、3 つの Hazelcast マシンと、異なるポートを持つ合計 6 つのプロセスがあります。

サンプルデータ:

Hazelcast ホスト名: hazelcast01、hazelcast02、hazelcast03 Hazelcast ポート: 6661、6662、6663、6664、6665 Logstash ホスト名: logstash01、logstash02、logstash03

Ansible の Hazelcast 情報の辞書:

logstash_hazelcast_jmx:
  - hazelcast_pre:
      name: hazelcast_pre
      port: 15554
      cluster: PRE
  - hazelcast_dev:
      name: hazelcast_dev
      port: 15555
      cluster: DEV

Ansible でのタスクの例:

- name: Deploy HAZELCAST JMX config
  template:
    src: "hazelcast_jmx.json.j2"
    dest: "{{ logstash_directory_jmx_hazelcast }}/hazelcast_jmx_{{ item }}_{{ item.value.cluster }}.json"
    owner: "{{ logstash_system_user }}"
    group: "{{ logstash_system_group }}"
    mode: 0640
  with_dict: 
    - "{{ groups['HAZELCAST'] }}"
    - logstash_hazelcast_jmx

最終結果は次のようになります。

/opt/logstash/jmx/hazelcast/hazelcast_jmx_hazelcast01_DEV.json
/opt/logstash/jmx/hazelcast/hazelcast_jmx_hazelcast01_PRE.json
/opt/logstash/jmx/hazelcast/hazelcast_jmx_hazelcast02_DEV.json
...

json コンテンツの例を次に示します。

{
  "host" : "{{ hostname of groups['HAZELCAST' }}",
  "port" : {{ item.value.port }},
  "alias" : "{{ hostname of groups['HAZELCAST' }}_{{ item.value.cluster }}",
  "queries" : [
  {
    "object_name" : "com.hazelcast:instance=_hz_{{ item.value.cluster }},type=XXX,name=YYY",
     "attributes" : [ "size", "localHits"  ],
    "object_alias" : "Hazelcast_map"
    }   ,{
    "object_name" : "com.hazelcast:instance=_hz_{{ item.value.cluster }},type=IMap,name=user",
     "attributes" : [ "size", "localHits"  ],
    "object_alias" : "Hazelcast_map"
    }
   ]
}

私が抱えている問題は、with_dict オプションでは、インベントリ ホストのリストと辞書を使用できないことだと思います。

各マシン/ポートのこの世代の json ファイルを取得するにはどうすればよいですか?

4

1 に答える 1