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.pemcephuser@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 #
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
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-exportercephuser@adm >
ceph orch redeploy prometheuscephuser@adm >
ceph orch redeploy alertmanagercephuser@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.
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 grafanacephuser@adm >
ceph orch rm prometheus --force # this will delete metrics data collected so farcephuser@adm >
ceph orch rm node-exportercephuser@adm >
ceph orch rm alertmanagercephuser@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.
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:
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:
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:
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