Ich brauche JMX-Metriken aus dem Hazelcast-Produkt. Ich habe einen Logstash-Prozess erstellt, der eine Verbindung zum JMX-Port herstellt. Dieser Prozess muss einen JSON lesen, wo die Informationen des Hostnamens, Ports, Clusters, der Umgebung usw. von Hazelcast JMX sind. Ich muss auf den Logstash-Rechnern die JSON-Datei für jeden Hazelcast-Rechner/Port bereitstellen. In diesem Fall gibt es drei Hazelcast-Maschinen und insgesamt 6 Prozesse mit unterschiedlichen Ports.So generieren Sie JSON-Dateien in der gleichen Aufgabe mit Vorlagen in Ansible
Beispiel Daten:
Hazelcast Host-Name: hazelcast01, hazelcast02, hazelcast03 Hazelcast Ports: 6661, 6662, 6663, 6664, 6665 Logstash Host-Name: logstash01, logstash02, logstash03
Dictionary of Hazelcast Informationen in ansible:
logstash_hazelcast_jmx:
- hazelcast_pre:
name: hazelcast_pre
port: 15554
cluster: PRE
- hazelcast_dev:
name: hazelcast_dev
port: 15555
cluster: DEV
Beispiel Aufgabe in 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
Das Endergebnis sollte wie folgt lauten:
/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
...
Hier ein Beispiel für das json-Gehalt:
{
"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"
}
]
}
Ich denke, ich habe das Problem ist, dass die with_dict Option erlaubt es nicht, mit eine Liste der Inventar-Hosts und ein Wörterbuch.
Wie bekomme ich diese Generation von JSON-Dateien für jede Maschine/Port?