Métricas de fluxo para um serviço Kafka

É possível usar o IBM Cloud® Monitoring para enviar por push um conjunto de métricas selecionadas para um serviço do Kafka como o Event Streams.

Você precisará configurar:

  • As métricas para exportar dentro de um escopo definido.

    Os nomes de métrica e o escopo são especificados no formato PromQL.

  • A granularidade dos dados.

    Por exemplo, 10 segundos (10s) ou 1 minuto (1m). A agregação recomendada é 1m.

  • O tópico Kafka para ser usado por IBM Cloud Monitoring para exportar os dados.

Pré-requisitos

Confira os pré-requisitos a seguir antes de gerenciar o fluxo:

  • Criar uma instância do Event Streams.

  • Verifique as limitações dos planos de serviço. Para obter mais informações, consulte Limites e cotas.

  • Certifique-se de ter as permissões apropriadas.

    • Deve-se ter a função gerente para configurar o fluxo.

    • Quando você configura o fluxo, a instância do IBM Cloud Monitoring e a instância do Event Streams devem ser provisionadas na mesma conta.

    • Para conectar a instância do IBM Cloud Monitoring à instância do Event Streams, são necesárias as seguintes informações:

      • É necessário ter a função de gerenciador para configurar o fluxo na instância do IBM Cloud Monitoring. Essa função inclui a função de ação sysdig-monitor.launch.admin Função de ação do IAM que permite que um usuário execute tarefas administrativas, como configurar o streaming.

      • Quando você configura o fluxo, a instância do Monitoring e a instância do Event Streams devem ser provisionadas na mesma conta.

      • Para conectar a instância do Monitoring à instância do Event Streams, são necesárias as seguintes informações:

        • URLs de terminal para chamar as APIs

        • Credenciais para autenticação

    • Para criar um tópico em Event Streams, é necessário ter a função de gerenciador. Esta função inclui a função de ação messagehub.topic.manage do IAM, que permite que um aplicativo ou um usuário crie ou exclua um tópico.

    • A credencial que o Monitoring usa para publicar dados em Event Streams deve ter a função de gravador. Esta função inclui a função de ação messagehub.topic.write do IAM, que permite que um aplicativo ou serviço grave dados em um ou mais tópicos.

  • Se você configurar a conta para restringir o acesso aos endereços IP configurados por meio das configurações do IAM ou se a conta limitar os locais de rede dos quais as conexões são aceitas por meio de regras de restrições baseadas em contexto (CBR) para o serviço Event Streams, deve-se incluir na lista de permissões os IPs do Monitoring na conta. Para obter mais informações, consulte Terminais Monitoring e Event Streams-Restringindo acesso à rede.

As instruções sobre esse tópico baseiam-se no uso de um plano da empresa.

Gerenciar o fluxo por meio da IU

Configurar fluxo

Conclua as etapas a seguir para configurar o fluxo por meio da IU:

Etapa 1. Criar um tópico em Event Streams

Conclua as etapas a seguir para criar um tópico de Fluxos de eventos:

  1. Faça login na sua conta IBM Cloud.

    Depois de efetuar login com seu ID do usuário e senha, o painel do IBM Cloud se abre.

  2. Clique no ícone Menu Ícone do menu > Lista de recursos.

  3. Procure a instância do Event Streams que você planeja usar e selecione-a.

  4. No console da instância do Event Streams, clique em Gerenciar > Painel de ativação.

  5. Clique em Criar um tópico.

    Criar um tópico
    Criar um tópico

  6. Insira um nome de tópico e clique em Avançar.

    Crie um tópico parte 2.
    Inserir nome do tópico

  7. Insira o número de partições e clique em Avançar.

    Uma ou mais partições compõem um tópico. Uma partição é uma lista ordenada de mensagens. As partições são distribuídas entre os brokers para aumentar a escalabilidade de seu tópico. Também é possível usá-las para distribuir mensagens entre os membros de um grupo de consumidores.

    Crie uma parte do tópico 3
    Insira o número de partições

  8. Selecione uma Retenção de mensagem e clique em Criar tópico.

    Retenção de mensagens define como as mensagens longas são retidas antes de serem excluídas. Se suas mensagens não forem lidas por um consumidor dentro deste tempo, elas serão perdidas.

Etapa 2. Criar credenciais para autenticar a instância de monitoramento com o Event Streams

As informações a seguir são necessárias para conectar a instância do Monitoring à instância do Event Streams:

  • URLs de terminal para chamar as APIs
  • Credenciais para autenticação

Conclua as etapas a seguir para criar credenciais de serviço que a instância do Monitoring precisa para comunicar-se com a instância do Event Streams:

  1. Na IBM Cloud, clique no ícone Menu Ícone do menu > Lista de recursos.

  2. Procure a instância do Event Streams que você planeja usar e selecione-a.

  3. No console do Event Streams, clique em credenciais do serviço.

  4. Selecione Nova credencial.

  5. Insira um nome e selecione a função gravador.

    Criar uma credencial
    Criar uma credencial

  6. Clique em Incluir.

Para restringir o acesso ao tópico 1, conclua as seguintes etapas:

  1. Na barra de menus, clique em Gerenciar > Acesso (IAM) e selecione IDs de serviço.

    IDs de serviço
    Selecionar IDs do serviço
    ..

  2. Selecione o ID do serviço.

  3. Selecione Políticas de acesso.

  4. Selecione a política e modifique-a para especificar o tópico.

    Editar política
    Editar política

    Modificar Política
    Modificar Política

  5. Obtenha credenciais usando a CLI do IBM Cloud e anote os valores da chave de API e da URL do broker.

Etapa 3. Configure a conexão em Monitoring para o Event Streams

Para configurar o fluxo de dados de métrica do IBM Cloud Monitoring, faça o seguinte:

  1. Ative a IU da web como um usuário com autoridade de administrador. Para obter mais informações sobre como ativar a IU da web, consulte Navegando para a IU da web.

  2. Clique no ícone Usuário. Este é o ícone com as iniciais do usuário conectado. Em seguida, clique em Configurações.

  3. Selecione Fluxo de dados de métrica.

  4. Clique em ** Incluir integração **. O painel Nova integração de fluxo de métrica é exibido.

    Painel Integração de Fluxo de Métricas
    Painel Integração de Fluxo de Métricas

  5. Especifique as informações a seguir:

    Nome da integração
    O nome da configuração do fluxo.
    Tópico
    O nome do tópico do Kafka para receber as métricas.
    Intermediários
    Uma lista de brokers do Kafka separada por vírgulas, por exemplo kafka-2.mh-svc.eu-de.containers.appdomain.cloud:9093,kafka-1.mh-svc.eu-de.containers.appdomain.cloud:9093,kafka-0.mh-svc.eu-de.containers.appdomain.cloud:9093. Observe que as URLs não devem ser colocadas entre ".
    TLS
    O método de Segurança da Camada de Transporte (TLS). Ative o TLS para criptografar e proteger a transferência de dados.
    Credenciais
    As credenciais usadas por Monitoring para exportar os dados da instância do Monitoring para o servidor Kafka. É possível escolher usuário e senha, ou um certificado codificado em Base64.

    Opções de Credencial
    Opções de Credencial

    Compactação
    Escolha o tipo de compactação. As opções válidas são: LZ4, Snappy, Gzip e Zstandard. Para obter mais informações, veja Compressão de mensagens em Apache Kafka.
  6. Clique em Conexão de teste para verificar se a conexão entre o IBM Cloud Monitoring e o Kafka foi configurada com sucesso.

    Deve-se testar a conexão antes de salvar e ativar a configuração.

  7. Selecione o Escopo e defina as Métricas a serem exportadas.

    Para Escopo, selecione um ou mais rótulos para filtrar as métricas definidas.

    As métricas devem especificar o nome completo da métrica usando PromQL.

  8. Clique em Salvar.

Depois de salvar a configuração, deve-se esperar pelo menos 30 minutos antes de o fluxo estar ativo.

Ative ou interrompa o fluxo por meio da IU

É possível iniciar e parar o fluxo de métricas na página Fluxo de dados de métrica:

  1. Ative a IU da web como um usuário com autoridade de administrador. Para obter mais informações sobre como ativar a IU da web, consulte Navegando para a IU da web.

  2. Clique no ícone Usuário. Este é o ícone com as iniciais do usuário conectado. Em seguida, clique em Configurações.

  3. Selecione Fluxo de dados de métrica. A lista de configurações de fluxo é exibida.

    Lista de configurações de fluxo
    Configurações de fluxo de fluxo

  4. Ative ou desative uma configuração de fluxo por meio de alternância.

Gerenciar o fluxo usando a API

Conclua as etapas a seguir para gerenciar o fluxo por meio da IU:

Listar as configurações de fluxo

Use este método para obter os detalhes para todas as configurações de fluxo existentes.

curl --request GET https://<ENDPOINT>/api/v1/dataStream/configs
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"

em que

  • <ENDPOINT>indica o terminal de destino pela chamada de API de REST. Para obter mais informações, consulte Monitorando terminais da API de REST. Por exemplo, o terminal público para uma instância que está disponível em us-south é o seguinte: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> Token de API que você usa para autenticar com o serviço Monitoring. Deve-se incluir Bearer com o token. Para obter mais informações, consulte Trabalhando com tokens de API do Monitoring.

A resposta será semelhante à seguinte:

{"dataStreamConfigs":[{"uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","enabled":true,"name":"Streaming metrics - demo","type":"kafka"}]}

Obter detalhes para uma configuração de fluxo

Use este método para obter os detalhes para uma configuração de fluxo.

curl --request GET https://<ENDPOINT>/api/v1/dataStream/configs/<STREAMING_CONFIG_ID>
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"

em que

  • <ENDPOINT> representa o terminal que é destinado pela chamada da API de REST. Para obter mais informações, consulte Monitorando terminais da API de REST. Por exemplo, o terminal público para uma instância que está disponível em us-south é o seguinte: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> Token de API que você usa para autenticar com o serviço Monitoring. Deve-se incluir Bearer com o token. Para obter mais informações, consulte Trabalhando com tokens de API do Monitoring.
  • <STREAMING_CONFIG_ID> representa o UUID da configuração de fluxo para a qual você deseja obter detalhes.

A resposta será semelhante à seguinte:

{
    "dataStreamConfig": {
        "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "enabled": true,
        "name": "Streaming metrics - demo",
        "emitterType": "kafka",
        "emitterProperties": {
            "bootstrap.servers": "kafka-0.mh-svc1.eu-de.containers.appdomain.cloud:9093, kafka-2.mh-svc2-0000.eu-de.containers.appdomain.cloud:9093,kafka-1.mh-svc3.eu-de.containers.appdomain.cloud:9093",
            "topic.name": "my-monitoring-topic",
            "compression.type": "lz4",
            "security.protocol": "SASL_SSL",
            "sasl.mechanism": "PLAIN",
            "sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"token\" password=\"xxxxxxxxxxxxx\";","ssl.truststore.base64.content":""}},"dataStreamRules":[{"uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","enabled":true,"metrics":["kube_daemonset_labels","kube_node_status_condition"],"aggregation":"avg","aggregationSec":10,"scope":"kubernetes.cluster.name = \"mycluster\"",
            "dataStreamConfigUuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }
    ]
}

Criar uma configuração de fluxo

Use este método para definir uma configuração de fluxo que encaminha um conjunto de métricas para Event Streams.

curl --request POST https://<ENDPOINT>/api/v1/dataStream/configs
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"
 -d @streaming-config.json

em que

  • <ENDPOINT> representa o terminal que é destinado pela chamada da API de REST. Para obter mais informações, consulte Monitorando terminais da API de REST. Por exemplo, o terminal público para uma instância que está disponível em us-south é o seguinte: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> Token de API que você usa para autenticar com o serviço Monitoring. Deve-se incluir Bearer com o token. Para obter mais informações, consulte Trabalhando com tokens de API do Monitoring.

Um arquivo de amostra streaming-config.json se parece com o seguinte:

{
    "dataStreamConfig": {
        "enabled": true,
        "name": "Streaming metrics config",
        "emitterType": "kafka",
        "emitterProperties": {
            "bootstrap.servers": "kafka-0.mh-svc1.eu-de.containers.appdomain.cloud:9093,kafka-2.mh-svc2.eu-de.containers.appdomain.cloud:9093,kafka-1.mh-svc3.eu-de.containers.appdomain.cloud:9093",
            "topic.name": "my-monitoring-topic",
            "compression.type": "lz4",
            "security.protocol": "SASL_SSL",
            "sasl.mechanism": "PLAIN",
            "sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"token\" password=\"xxxxxxxxxx\";",
            "ssl.truststore.base64.content": ""
        }
    },
    "dataStreamRules": [
        {
            "enabled": true,
            "metrics": [
                "kube_daemonset_labels",
                "kube_node_status_condition"
            ],
            "aggregation": "avg",
            "aggregationSec": 10,
            "scope": "kubernetes.cluster.name = \"mycluster\""
        }
    ]
}

Atualizar uma configuração de fluxo

Atualize uma configuração de fluxo em qualquer uma das situações a seguir:

  • A chave de API para autenticar com Event Streams foi girada, comprometida ou precisa de alteração.
  • Quando você deseja mudar as métricas do fluxo por meio da inclusão de novas métricas ou da remoção de métricas.
  • Quando você deve mudar o escopo.
  • Para ativar ou desativar o fluxo de dados para a configuração.

Use este método para atualizar uma configuração de fluxo que encaminha um conjunto de métricas para Event Streams.

curl --request PUT https://<ENDPOINT>/api/v1/dataStream/configs/<STREAMING_CONFIG_ID>
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"
 -d @streaming-config.json

em que

  • <ENDPOINT> representa o terminal que é destinado pela chamada da API de REST. Para obter mais informações, consulte Monitorando terminais da API de REST. Por exemplo, o terminal público para uma instância que está disponível em us-south é o seguinte: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> Token de API que você usa para autenticar com o serviço Monitoring. Deve-se incluir Bearer com o token. Para obter mais informações, consulte Trabalhando com tokens de API do Monitoring.
  • <STREAMING_CONFIG_ID> representa o UUID da configuração de fluxo.

Um arquivo de amostra streaming-config.json se parece com o seguinte:

{
    "dataStreamConfig": {
        "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "enabled": true,
        "name": "Streaming metrics - demo",
        "emitterType": "kafka",
        "emitterProperties": {
            "bootstrap.servers": "kafka-0.mh-svc1.eu-de.containers.appdomain.cloud:9093, kafka-2.mh-svc2-0000.eu-de.containers.appdomain.cloud:9093,kafka-1.mh-svc3.eu-de.containers.appdomain.cloud:9093",
            "topic.name": "my-monitoring-topic",
            "compression.type": "lz4",
            "security.protocol": "SASL_SSL",
            "sasl.mechanism": "PLAIN",
            "sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"token\" password=\"xxxxxxxxxxxxx\";","ssl.truststore.base64.content":""}},"dataStreamRules":[{"uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","enabled":true,"metrics":["kube_daemonset_labels","kube_node_status_condition"],"aggregation":"avg","aggregationSec":10,"scope":"kubernetes.cluster.name = \"mycluster\"",
            "dataStreamConfigUuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }
    ]
}

Excluir uma configuração de fluxo

Use este método para excluir uma configuração de fluxo que encaminha um conjunto de métricas para Event Streams.

curl --request DELETE https://<ENDPOINT>/api/v1/dataStream/configs/<STREAMING_CONFIG_ID>
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"

em que

  • <ENDPOINT> representa o terminal que é destinado pela chamada da API de REST. Para obter mais informações, consulte Monitorando terminais da API de REST. Por exemplo, o terminal público para uma instância que está disponível em us-south é o seguinte: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> Token de API que você usa para autenticar com o serviço Monitoring. Deve-se incluir Bearer com o token. Para obter mais informações, consulte Trabalhando com tokens de API do Monitoring.
  • <STREAMING_CONFIG_ID> representa o UUID da configuração de fluxo.

Monitorando o fluxo usando IBM Cloud Monitoring

O Event Streams é integrado ao serviço Monitoring. O Monitoring fornece um modelo padrão que pode ser customizado para monitorar a instância do Event Streams, como os dados são transmitidos de Monitoring e consumidos por qualquer aplicativo ou serviço que esteja inscrito no Event Streams.

Conclua as seguintes etapas para monitorar a instância do Event Streams:

  1. Verifique se você tem uma instância do Monitoring na mesma região que a sua instância Event Streams . Esta instância deve ser configurada para coletar métricas de plataforma. Para obter mais informações, consulte Ativando métricas de plataforma.

  2. Inicie a Monitoring IU.

  3. Na seção Painéis, acesse Modelos de painel e selecione o modelo IBM Event Streams (Enterprise).

  4. Crie uma cópia do modelo clicando em Criar painel customizado.

    É possível usar a métrica Bytes de tópico por segundo para visualizar como os dados são enviados por Monitoring para Event Streams.

    É possível usar a métrica Bytes de tópico fora por segundo para ver como os dados são consumidos por qualquer aplicativo ou serviço que é inscrito para Event Streams.

  5. (Opcional) Edite o painel Bytes de tópico por segundo.

    Painel de edição
    Painel de edição

    Em seguida, customize a métrica para ver dados por tópico.

    Customizar Métrica
    Customizar Métrica

    Verifique se a resolução está definida como 10M.