Apache ActiveMQ

Neste documento, descrevemos como configurar a implantação do Google Kubernetes Engine para usar o Serviço Gerenciado do Google Cloud para Prometheus a fim de coletar métricas do Apache ActiveMQ. Esta página mostra como fazer o seguinte:

  • Configurar o exportador para o ActiveMQ para relatar as métricas.
  • Acessar um painel predefinido no Cloud Monitoring para ver as métricas.
  • Configurar regras de alertas para monitorar as métricas.

Estas instruções se aplicam somente ao usar a coleção gerenciada com o serviço gerenciado para Prometheus. Se você estiver usando a coleção autoimplantada, consulte o repositório de origem do exportador de JMX para ver informações da instalação.

Estas instruções são um exemplo e devem funcionar na maioria dos ambientes do Kubernetes. Se você estiver com problemas para instalar um aplicativo ou exportador devido a políticas restritivas de segurança ou da organização, recomendamos consultar a documentação de código aberto para receber suporte.

Para informações sobre o Apache ActiveMQ, consulte ActiveMQ.

Pré-requisitos

Para coletar métricas do ActiveMQ usando o Serviço gerenciado para o Prometheus e a coleta gerenciada, sua implantação precisa atender aos seguintes requisitos:

  • Seu cluster precisa executar a versão 1.28.15-gke.2475000 ou mais recente do Google Kubernetes Engine.
  • É necessário executar o Serviço Gerenciado para Prometheus com a coleta gerenciada ativada. Para mais informações, consulte Começar a usar a coleta gerenciada.

  • Para usar os painéis disponíveis no Cloud Monitoring para a integração do ActiveMQ, use a jmx-exporter versão 0.17.0 ou mais recente.

    Para mais informações sobre os painéis disponíveis, consulte Visualizar painéis.

Os agentes do ActiveMQ podem ser configurados para JMX configurando as variáveis de ambiente ACTIVEMQ_JMX e ACTIVEMQ_OPTS.

Instalar o exportador do ActiveMQ

Recomendamos que você instale o exportador do ActiveMQ, jmx-exporter, como um arquivo secundário para sua carga de trabalho do ActiveMQ. Para informações sobre o uso de arquivos secundários, consulte Aplicativos estendidos no Kubernetes com pods de múltiplos contêineres.

Para instalar jmx-exporter como um arquivo secundário para o ActiveMQ, modifique a configuração do ActiveMQ como mostrado no exemplo a seguir:

# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: v1
kind: ConfigMap
metadata:
  name: activemq-exporter
data:
  config.yaml: |
    hostPort: localhost:1099
    lowercaseOutputName: true
    lowercaseOutputLabelNames: true
    blacklistObjectNames:
      - "org.apache.activemq:clientId=*,*"
    whitelistObjectNames:
      - "org.apache.activemq:destinationType=Queue,*"
      - "org.apache.activemq:destinationType=Topic,*"
      - "org.apache.activemq:type=Broker,brokerName=*"
      - "org.apache.activemq:type=Topic,brokerName=*"

    rules:
    - pattern: org.apache.activemq<type=Broker, brokerName=(\S*), destinationType=Queue, destinationName=(\S*)><>(\w+)
      name: activemq_queue_$3
      attrNameSnakeCase: true
      labels:
        destination: $2

    - pattern: org.apache.activemq<type=Broker, brokerName=(\S*), destinationType=Topic, destinationName=(\S*)><>(\w+)
      name: activemq_topic_$3
      attrNameSnakeCase: true
      labels:
        destination: $2

    - pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>CurrentConnectionsCount
      name: activemq_connections
      type: GAUGE

    - pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>Total(.*)Count
      name: activemq_$2_total
      type: COUNTER

    - pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>(.*)PercentUsage
      name: activemq_$2_usage_ratio
      type: GAUGE
      valueFactor: 0.01
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: activemq
spec:
  selector:
    matchLabels:
+     app.kubernetes.io/name: activemq
  template:
    metadata:
      labels:
+       app.kubernetes.io/name: activemq
    spec:
      containers:
      - name: activemq
        image: rmohr/activemq:5.15.9-alpine
+       ports:
+         - containerPort: 1099
+           name: jmx
+       env:
+         - name: ACTIVEMQ_JMX
+           value: "1099"
+         - name: ACTIVEMQ_OPTS
+           value: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
+     - name: exporter
+       image: bitnami/jmx-exporter:0.17.0
+       command:
+         - java
+         - -jar
+         - jmx_prometheus_httpserver.jar
+       args:
+         - "9000"
+         - config.yaml
+       ports:
+       - containerPort: 9000
+         name: prometheus
+       volumeMounts:
+       - mountPath: /opt/bitnami/jmx-exporter/config.yaml
+         subPath: config.yaml
+         name: activemq-exporter
+     volumes:
+     - name: activemq-exporter
+       configMap:
+         name: activemq-exporter
+         items:
+         - key: config.yaml
+           path: config.yaml

Adicione à sua configuração todas as linhas precedidas pelo símbolo +.

Para aplicar as alterações de configuração de um arquivo local, execute o seguinte comando:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Também é possível usar o Terraform para gerenciar as configurações.

Definir um recurso do PodMonitoring

Para descobrir o destino, o operador do Serviço Gerenciado para Prometheus, é necessário um recurso PodMonitoring que corresponde ao exportador de JMX no mesmo namespace.

É possível usar a seguinte configuração do PodMonitoring:

# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: activemq
  labels:
    app.kubernetes.io/name: activemq
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  endpoints:
  - port: prometheus
    scheme: http
    interval: 30s
    path: /metrics
  selector:
    matchLabels:
      app.kubernetes.io/name: activemq

Verifique se os seletores do identificador e a porta correspondem aos seletores e à porta usados em Instalar o exportador do ActiveMQ.

Para aplicar as alterações de configuração de um arquivo local, execute o seguinte comando:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Também é possível usar o Terraform para gerenciar as configurações.

Definir regras e alertas

Use a configuração Rules a seguir para definir alertas nas suas métricas do ActiveMQ:

# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
  name: activemq-rules
  labels:
    app.kubernetes.io/component: rules
    app.kubernetes.io/name: activemq-rules
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  groups:
  - name: activemq
    interval: 30s
    rules:
    - alert: ActiveMQNoConnections
      annotations:
        description: |-
          ActiveMQ no connections
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: ActiveMQ down (instance {{ $labels.instance }})
      expr: activemq_connections_total{job="activemq"} == 0
      for: 5m
      labels:
        severity: warning
    - alert: ActiveMQHighStoreUsage
      annotations:
        description: |-
          ActiveMQ high store usage
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: ActiveMQ high store usage (instance {{ $labels.instance }})
      expr: activemq_store_usage_ratio{job="activemq"} > 0.9
      for: 5m
      labels:
        severity: warning
    - alert: ActiveMQHighTempStoreUsage
      annotations:
        description: |-
          ActiveMQ high temp store usage
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: ActiveMQ high temp store usage (instance {{ $labels.instance }})
      expr: activemq_temp_usage_ratio{job="activemq"} > 0.9
      for: 5m
      labels:
        severity: warning

Para aplicar as alterações de configuração de um arquivo local, execute o seguinte comando:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Também é possível usar o Terraform para gerenciar as configurações.

Para mais informações sobre como aplicar regras ao cluster, consulte Avaliação e alerta de regras gerenciadas.

Verificar a configuração

Use o Metrics Explorer para verificar se você configurou corretamente o exportador de JMX. Pode levar um ou dois minutos para que o Cloud Monitoring ingira as métricas.

Para verificar se as métricas foram transferidas, faça o seguinte:

  1. No Google Cloud console, acesse a  página Metrics Explorer:

    Acesse o Metrics Explorer

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  2. Na barra de ferramentas do painel do criador de consultas, selecione o botão cujo nome é  PromQL.
  3. Digite e execute a seguinte consulta:
    up{job="activemq", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}

Ver painéis

A integração do Cloud Monitoring inclui o painel Visão geral do Prometheus no ActiveMQ. Os painéis são instalados automaticamente ao configurar a integração. Também é possível visualizar visualizações estáticas de painéis sem instalar a integração.

Para visualizar um painel instalado, faça o seguinte:

  1. No Google Cloud console, acesse a página  Painéis:

    Acesse Painéis

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  2. Selecione a guia Lista de painéis.
  3. Escolha a categoria Integrações.
  4. Clique no nome do painel, por exemplo, Visão geral do ActiveMQ Prometheus.

Para visualizar uma prévia estática do painel, faça o seguinte:

  1. No Google Cloud console, acesse a página  Integrações:

    Acesse Integrações

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  2. Clique no filtro de plataforma de implantação do Kubernetes Engine.
  3. Localize a integração do Apache ActiveMQ e clique em Visualizar detalhes.
  4. Selecione a guia Painéis.

Solução de problemas

Para resolver problemas de transferências de métricas, consulte Problemas com a coleta de exportadores em Resolver problemas no processamento.