Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Enterprise Storage 7 / Guia de Operações e Administração / Operação do cluster / Monitoramento e alerta
Aplica-se a SUSE Enterprise Storage 7

16 Monitoramento e alerta

No SUSE Enterprise Storage 7, o cephadm implanta uma pilha de monitoramento e alerta. Os usuários precisam definir os serviços (como Prometheus, Alertmanager e Grafana) que desejam implantar com o cephadm em um arquivo de configuração YAML ou eles podem usar a CLI para implantá-los. Quando vários serviços do mesmo tipo são implantados, uma configuração altamente disponível é implantada. O exportador de nós é uma exceção a essa regra.

É possível usar o cephadm para implantar os seguintes serviços de monitoramento:

  • Prometheus é o kit de ferramentas de monitoramento e alerta. Ele coleta os dados fornecidos pelos exportadores do Prometheus e dispara alertas pré-configurados se os limites predefinidos forem atingidos.

  • O Alertmanager processa os alertas enviados pelo servidor Prometheus. Ele elimina a duplicação, agrupa e roteia os alertas para o receptor correto. Por padrão, o Ceph Dashboard será configurado automaticamente como o receptor.

  • Grafana é o software de visualização e alerta. A funcionalidade de alerta do Grafana não é usada por esta pilha de monitoramento. Para alertas, o Alertmanager é usado.

  • O exportador de nós do Prometheus é que fornece os dados sobre o nó em que ele está instalado. É recomendável instalar o exportador de nós em todos os nós.

O Módulo do Gerenciador do Prometheus inclui um exportador do Prometheus para transmitir os contadores de desempenho do Ceph do ponto de coleta no ceph-mgr.

A configuração do Prometheus, incluindo os destinos de scrape (daemons que extraem métricas), é definida automaticamente pelo cephadm. O cephadm também implanta uma lista de alertas padrão, por exemplo, erro de saúde, 10% dos OSDs inativos ou páginas inativas.

Por padrão, o tráfego para o Grafana é criptografado com TLS. Você pode fornecer seu próprio certificado TLS ou usar um certificado autoassinado. Se nenhum certificado personalizado foi configurado antes da implantação do Grafana, um certificado autoassinado é criado e configurado automaticamente para o Grafana.

É possível usar os seguintes comandos para configurar certificados personalizados para o Grafana:

cephuser@adm >  ceph config-key set mgr/cephadm/grafana_key -i $PWD/key.pem
cephuser@adm >  ceph config-key set mgr/cephadm/grafana_crt -i $PWD/certificate.pem

O Alertmanager processa os alertas enviados pelo servidor Prometheus. Ele cuida da eliminação de duplicação, do agrupamento e do processamento deles para o receptor correto. É possível usar o Alertmanager para silenciar os alertas, mas as configurações de silenciamento também podem ser gerenciadas no Ceph Dashboard.

Recomendamos que o Exportador de nós seja implantado em todos os nós. Isso pode ser feito usando o arquivo monitoring.yaml com o tipo de serviço node-exporter. Consulte o Seção 5.4.3.8, “Implantando a pilha de monitoramento” para obter mais informações sobre como implantar serviços.

16.1 Configurando imagens personalizadas ou locais

Dica
Dica

Esta seção descreve como mudar a configuração das imagens de container usadas quando os serviços são implantados ou atualizados. Ela não inclui os comandos necessários para implantar ou reimplantar os serviços.

O método recomendado para implantar a pilha de monitoramento é aplicando a respectiva especificação, conforme descrito no Seção 5.4.3.8, “Implantando a pilha de monitoramento”.

Para implantar imagens de container personalizadas ou locais, elas precisam ser definidas no cephadm. Para fazer isso, você precisa executar o seguinte comando:

cephuser@adm > ceph config set mgr mgr/cephadm/OPTION_NAME VALUE

Em que OPTION_NAME é qualquer um dos seguintes nomes:

  • container_image_prometheus

  • container_image_node_exporter

  • container_image_alertmanager

  • container_image_grafana

Se nenhuma opção for definida ou se a configuração for removida, as seguintes imagens serão usadas como VALUE:

  • registry.suse.com/caasp/v4.5/prometheus-server:2.18.0

  • registry.suse.com/caasp/v4.5/prometheus-node-exporter:0.18.1

  • registry.suse.com/caasp/v4.5/prometheus-alertmanager:0.16.2

  • registry.suse.com/ses/7/ceph/grafana:7.0.3

Por exemplo:

cephuser@adm > ceph config set mgr mgr/cephadm/container_image_prometheus prom/prometheus:v1.4.1
Nota
Nota

Ao definir uma imagem personalizada, o valor padrão será anulado (mas não sobregravado). O valor padrão muda quando as atualizações ficam disponíveis. Ao definir uma imagem personalizada, você não poderá atualizar o componente para o qual definiu a imagem personalizada automaticamente. Você precisará atualizar manualmente a configuração (nome e tag da imagem) para poder instalar as atualizações.

Em vez disso, se você seguir as recomendações, poderá redefinir a imagem personalizada. Após esse procedimento, o valor padrão será usado novamente. Use ceph config rm para redefinir a opção de configuração:

cephuser@adm > ceph config rm mgr mgr/cephadm/OPTION_NAME

Por exemplo:

cephuser@adm > ceph config rm mgr mgr/cephadm/container_image_prometheus

16.2 Atualizando os serviços de monitoramento

Conforme mencionado na Seção 16.1, “Configurando imagens personalizadas ou locais”, o cephadm é fornecido com os URLs das imagens de container recomendadas e testadas, e eles são usados por padrão.

Quando há atualizações dos pacotes do Ceph, novas versões desses URLs podem ser fornecidas. Isso apenas atualiza o local de onde as imagens de container são extraídas, mas não atualiza os serviços.

Depois que os URLs para as novas imagens de container forem atualizados, seja manualmente (conforme descrito na Seção 16.1, “Configurando imagens personalizadas ou locais”) ou automaticamente por meio de uma atualização do pacote do Ceph, os serviços de monitoramento poderão ser atualizados.

Para fazer isso, use ceph orch redeploy da seguinte maneira:

cephuser@adm > ceph orch redeploy node-exporter
cephuser@adm > ceph orch redeploy prometheus
cephuser@adm > ceph orch redeploy alertmanager
cephuser@adm > ceph orch redeploy grafana

Atualmente, não existe um único comando para atualizar todos os serviços de monitoramento. A ordem em que esses serviços são atualizados não é importante.

Nota
Nota

Se você usar imagens de container personalizadas, os URLs especificados para os serviços de monitoramento não serão automaticamente modificados se os pacotes do Ceph forem atualizados. Se você especificou imagens de container personalizadas, precisa especificar os URLs das novas imagens de container manualmente. Esse poderá ser o caso se você usar um registro de container local.

Você encontra os URLs das imagens de container recomendadas para uso na seção Seção 16.1, “Configurando imagens personalizadas ou locais”.

16.3 Desabilitando o monitoramento

Para desabilitar a pilha de monitoramento, execute os seguintes comandos:

cephuser@adm > ceph orch rm grafana
cephuser@adm > ceph orch rm prometheus --force   # this will delete metrics data collected so far
cephuser@adm > ceph orch rm node-exporter
cephuser@adm > ceph orch rm alertmanager
cephuser@adm > ceph mgr module disable prometheus

16.4 Configurando o Grafana

O back end do Ceph Dashboard requer que o URL do Grafana possa verificar a existência de Grafana Dashboards antes mesmo de serem carregados pelo front end. Devido à natureza da implementação do Grafana no Ceph Dashboard, isso significa que duas conexões de trabalho são necessárias para poder ver os gráficos do Grafana no Ceph Dashboard:

  • O back end (módulo MGR do Ceph) precisa verificar a existência do gráfico solicitado. Se essa solicitação for bem-sucedida, ela informará ao front end que ele pode acessar o Grafana com segurança.

  • Em seguida, o front end solicita os gráficos do Grafana diretamente do browser do usuário usando um iframe. A instância do Grafana é acessada diretamente sem qualquer desvio pelo Ceph Dashboard.

Agora, talvez seja o caso de o seu ambiente dificultar o acesso direto do browser do usuário ao URL configurado no Ceph Dashboard. Para resolver esse problema, é possível configurar um URL separado que será usado exclusivamente para informar ao front end (o browser do usuário) qual URL ele deve usar para acessar o Grafana.

Para mudar o URL que é retornado ao front end, execute o seguinte comando:

cephuser@adm > ceph dashboard set-grafana-frontend-api-url GRAFANA-SERVER-URL

Se nenhum valor for definido para essa opção, ela simplesmente retornará para o valor da opção GRAFANA_API_URL, que é definida automaticamente e atualizada com frequência pelo cephadm. Se definida, ela instruirá o browser a usar esse URL para acessar o Grafana.

16.5 Configurando o módulo do gerenciador do Prometheus

O Módulo do Gerenciador do Prometheus é um módulo do Ceph que estende a funcionalidade do Ceph. O módulo lê os (meta)dados do Ceph sobre seu estado e saúde, fornecendo os dados (extraídos) em um formato consumível pelo Prometheus.

Nota
Nota

O Módulo do Gerenciador do Prometheus precisa ser reiniciado para que as mudanças de configuração sejam aplicadas.

16.5.1 Configurando a interface de rede

Por padrão, o Módulo do Gerenciador do Prometheus aceita solicitações HTTP na porta 9283 em todos os endereços IPv4 e IPv6 no host. A porta e o endereço de escuta podem ser configurados usando o ceph config-key set, com as chaves mgr/prometheus/server_addr e mgr/prometheus/server_port. Essa porta está registrada no registro do Prometheus.

Para atualizar o server_addr, execute o seguinte comando:

cephuser@adm > ceph config set mgr mgr/prometheus/server_addr 0.0.0.0

Para atualizar o server_port, execute o seguinte comando:

cephuser@adm > ceph config set mgr mgr/prometheus/server_port 9283

16.5.2 Configurando o scrape_interval

Por padrão, o Módulo do Gerenciador do Prometheus está configurado com um intervalo de extração de 15 segundos. Não é recomendável usar um intervalo de extração abaixo de 10 segundos. Para definir um intervalo de extração diferente no módulo do Prometheus, defina scrape_interval com o valor desejado:

Importante
Importante

Para funcionar corretamente e não causar problemas, o scrape_interval desse módulo deve ser definido sempre com o mesmo valor do intervalo de extração do Prometheus.

cephuser@adm > ceph config set mgr mgr/prometheus/scrape_interval 15

16.5.3 Configurando o cache

Em clusters grandes (mais de 1.000 OSDs), o tempo para buscar as métricas pode aumentar significativamente. Sem o cache, o Módulo do Gerenciador do Prometheus pode sobrecarregar o gerenciador e fazer com que as instâncias do Ceph Manager não respondam ou travem. Como resultado, o cache é habilitado por padrão e não pode ser desabilitado, mas isso significa que o cache pode se tornar obsoleto. O cache é considerado obsoleto quando o tempo para buscar as métricas do Ceph excede o scrape_interval configurado.

Se esse for o caso, um aviso será registrado e o módulo:

  • Responderá com um código de status HTTP 503 (serviço não disponível).

  • Retornará o conteúdo do cache, mesmo que ele seja obsoleto.

Esse comportamento pode ser configurado usando os comandos ceph config set.

Para instruir o módulo a responder com dados possivelmente obsoletos, defina-o como return:

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy return

Para instruir o módulo a responder com serviço não disponível, defina-o como fail:

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy fail

16.5.4 Habilitando o monitoramento de imagens RBD

O Módulo do Gerenciador do Prometheus pode coletar estatísticas de E/S por imagem RBD habilitando contadores de desempenho OSD dinâmicos. As estatísticas são coletadas de todas as imagens nos pools especificados no parâmetro de configuração mgr/prometheus/rbd_stats_pools.

O parâmetro é uma lista separada por vírgulas ou espaços de entradas pool[/namespace]. Se o namespace não for especificado, as estatísticas serão coletadas para todos os namespaces no pool.

Por exemplo:

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools "pool1,pool2,poolN"

O módulo explora os pools e namespaces especificados, cria uma lista de todas as imagens disponíveis e a atualiza periodicamente. É possível configurar o intervalo usando o parâmetro mgr/prometheus/rbd_stats_pools_refresh_interval (em segundos). O padrão é 300 segundos (cinco minutos).

Por exemplo, se você mudou o intervalo de sincronização para 10 minutos:

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools_refresh_interval 600

16.6 Modelo de segurança do Prometheus

O modelo de segurança do Prometheus presume que os usuários não confiáveis têm acesso ao endpoint HTTP e aos registros do Prometheus. Os usuários não confiáveis têm acesso a todos os (meta)dados que o Prometheus coleta que estão contidos no banco de dados, além de uma variedade de informações operacionais e de depuração.

No entanto, a API HTTP do Prometheus é limitada a operações apenas leitura. As configurações não podem ser mudadas usando a API, e os segredos não são expostos. Além disso, o Prometheus tem algumas medidas incorporadas para mitigar o impacto dos ataques de negação de serviço.

16.7 Webhook SNMP do Alertmanager do Prometheus

Para ser notificado sobre alertas do Prometheus por meio de detecções de SNMP, você pode instalar o webhook SNMP do Alertmanager do Prometheus por meio do cephadm. Para fazer isso, você precisa criar um arquivo de especificação de serviço e posicionamento com o seguinte conteúdo:

Nota
Nota

Para obter mais informações sobre arquivos de serviço e posicionamento, consulte o Seção 5.4.2, “Especificação de serviço e posicionamento”.

service_type: container
service_id: prometheus-webhook-snmp
placement:
    ADD_PLACEMENT_HERE
image: registry.suse.com/ses/7/prometheus-webhook-snmp:latest
args:
    - "--publish 9099:9099"
envs:
    - ARGS="--debug --snmp-host=ADD_HOST_GATEWAY_HERE"
    - RUN_ARGS="--metrics"
EOF

Use essa especificação de serviço para executar o serviço com as configurações padrão.

Você precisa publicar a porta de escuta do receptor do Prometheus usando o argumento de linha de comando --publish HOST_PORT:CONTAINER_PORT ao executar o serviço, porque o container não a expõe automaticamente. Para fazer isso, adicione as seguintes linhas à especificação:

args:
    - "--publish 9099:9099"

Se preferir, conecte o container à rede do host usando o argumento da linha de comando ‑‑network=host.

args:
    - "--network=host"

Se o receptor de detecção de SNMP não estiver instalado no mesmo host que o container, você também deverá especificar o FQDN do host SNMP. Use o gateway de rede do container para receber detecções de SNMP fora do container/host:

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"

16.7.1 Configurando o serviço prometheus-webhook-snmp

É possível configurar o container usando variáveis de ambiente ou um arquivo de configuração.

No caso das variáveis de ambiente, use ARGS para definir as opções globais e RUN_ARGS para as opções do comando run. Você precisa adaptar a especificação de serviço da seguinte maneira:

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"
    - RUN_ARGS="--metrics --port=9101"

Para usar um arquivo de configuração, a especificação de serviço deve ser adaptada da seguinte maneira:

files:
    etc/prometheus-webhook-snmp.conf:
        - "debug: True"
        - "snmp_host: ADD_HOST_GATEWAY_HERE"
        - "metrics: True"
volume_mounts:
    etc/prometheus-webhook-snmp.conf: /etc/prometheus-webhook-snmp.conf

Para implantação, execute o seguinte comando:

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE

Consulte o Seção 5.4.3, “Implantar serviços do Ceph” para obter mais informações.

16.7.2 Configurando o Alertmanager do Prometheus para SNMP

Por fim, o Alertmanager do Prometheus precisa ser configurado especificamente para as detecções de SNMP. Se esse serviço ainda não foi implantado, crie um arquivo de especificação de serviço. Você precisa substituir IP_OR_FQDN pelo endereço IP ou FQDN do host em que o webhook SNMP do Alertmanager do Prometheus foi instalado. Por exemplo:

Nota
Nota

Se você já implantou esse serviço, para garantir que o Alertmanager esteja configurado corretamente para SNMP, reimplante-o com as configurações a seguir.

  service_type: alertmanager
  placement:
    hosts:
    - HOSTNAME
  webhook_configs:
    - 'http://IP_OR_FQDN:9099/'

Aplique a especificação de serviço com o seguinte comando:

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE