JMX | JVM (Jolokia)
O agent Jolokia e os plugins de entrada de proxy coletam métricas JMX de um endpoint HTTP usando o protocolo JSON-over-HTTP da Jolokia.
Configuração
Plugin Base
Jolokia2 Proxy Input
# Read JMX metrics from a Jolokia REST proxy endpoint
[[inputs.jolokia2_proxy]]
# default_tag_prefix = ""
# default_field_prefix = ""
# default_field_separator = "."
## Proxy agent
url = "http://localhost:8080/jolokia"
# username = ""
# password = ""
# response_timeout = "5s"
## Optional TLS config
# tls_ca = "/var/private/ca.pem"
# tls_cert = "/var/private/client.pem"
# tls_key = "/var/private/client-key.pem"
# insecure_skip_verify = false
## Add proxy targets to query
# default_target_username = ""
# default_target_password = ""
[[inputs.jolokia2_proxy.target]]
url = "service:jmx:rmi:///jndi/rmi://targethost:9999/jmxrmi"
# username = ""
# password = ""
## Add metrics to read
[[inputs.jolokia2_proxy.metric]]
name = "java_runtime"
mbean = "java.lang:type=Runtime"
paths = ["Uptime"]Jolokia2 Agent
# Read JMX metrics from a Jolokia REST agent endpoint
[[inputs.jolokia2_agent]]
# default_tag_prefix = ""
# default_field_prefix = ""
# default_field_separator = "."
# Add agents URLs to query
urls = ["http://localhost:8080/jolokia"]
# username = ""
# password = ""
# response_timeout = "5s"
## Optional TLS config
# tls_ca = "/var/private/ca.pem"
# tls_cert = "/var/private/client.pem"
# tls_key = "/var/private/client-key.pem"
# insecure_skip_verify = false
## Add metrics to read
[[inputs.jolokia2_agent.metric]]
name = "java_runtime"
mbean = "java.lang:type=Runtime"
paths = ["Uptime"]Métricas
Cada declaração gera uma request Jolokia para buscar a métrica.
Chave | Requerido | Descrição |
|---|---|---|
mbean | Sim | O nome do objeto de um JMX MBean. Os valores de chave de propriedade do MBean podem conter um wildcard (*), permitindo que você busque vários MBeans. |
paths | Não | Uma lista de atributos MBean a serem lidos. |
tag_keys | Não | Uma lista de nomes de chave de propriedade MBean para converter em tags. O nome da chave da propriedade se torna o nome da tag, enquanto o valor da chave da propriedade se torna o valor da tag. |
tag_prefix | Não | Uma string para preceder os nomes de tag produzidos por esta declaração de métrica. |
field_name | Não | Uma string a ser definida como o nome do campo produzido por esta métrica. |
field_prefix | Não | Uma string para preceder os nomes de campo produzidos por esta declaração de métrica. |
Use paths para refinar quais campos coletar.
[[inputs.jolokia2_agent.metric]]
name = "jvm_memory"
mbean = "java.lang:type=Memory"
paths = ["HeapMemoryUsage", "NonHeapMemoryUsage", "ObjectPendingFinalizationCount"]A declaração de métrica jvm_memory anterior produz a seguinte saída:
jvm_memory HeapMemoryUsage.committed=4294967296,HeapMemoryUsage.init=4294967296,HeapMemoryUsage.max=4294967296,HeapMemoryUsage.used=1750658992,NonHeapMemoryUsage.committed=67350528,NonHeapMemoryUsage.init=2555904,NonHeapMemoryUsage.max=-1,NonHeapMemoryUsage.used=65821352,ObjectPendingFinalizationCount=0 1503762436000000000Use wildcards (*) em valores de chave de propriedade mbean para criar séries distintas capturando valores em tag_keys.
[[inputs.jolokia2_agent.metric]]
name = "jvm_garbage_collector"
mbean = "java.lang:name=*,type=GarbageCollector"
paths = ["CollectionTime", "CollectionCount"]
tag_keys = ["name"]Como name=* corresponde a G1 Old Generation e G1 Young Generation, e name é usado como uma tag, a declaração de métrica jvm_garbage_collector anterior produz duas métricas.
jvm_garbage_collector,name=G1\ Old\ Generation CollectionCount=0,CollectionTime=0 1503762520000000000
jvm_garbage_collector,name=G1\ Young\ Generation CollectionTime=32,CollectionCount=2 1503762520000000000Para exemplos de configuração baseadas em Servlets produtivos, acesse: