Este documento descreve como configurar o serviço gerido do Google Cloud para Prometheus com a recolha implementada automaticamente. Uma aplicação de exemplo é implementada num cluster do Kubernetes e é monitorizada por um servidor Prometheus que armazena as métricas recolhidas no Monarch.
Este documento mostra como fazer o seguinte:
- Configure o seu ambiente e ferramentas de linha de comandos.
- Configure uma conta de serviço para a federação de identidades da carga de trabalho para clusters ativados para o GKE.
- Execute o binário do Prometheus de substituição no Kubernetes.
- Controle que métricas são carregadas no Managed Service for Prometheus.
- Integre o Managed Service for Prometheus com configurações do prometheus-operator.
- Compile e execute manualmente o ficheiro binário do Prometheus.
Com a recolha de dados implementada automaticamente, gere a sua instalação do Prometheus como sempre fez. A única diferença é que executa o ficheiro binário de substituição direta do Managed Service for Prometheus, gke.gcr.io/prometheus-engine/prometheus:v2.53.4-gmp.0-gke.1
, em vez do ficheiro binário do Prometheus a montante.
O ficheiro binário incorporado oferece opções de configuração adicionais com as flags --export.*
. Para mais
informações, consulte o resultado da opção
--help
. Este documento destaca as opções mais importantes.
O Managed Service for Prometheus não suporta a exportação de métricas de um servidor de federação nem de um servidor usado como recetor de gravação remota. Pode replicar todas as funcionalidades do servidor de federação, incluindo a redução do volume de carregamento agregando dados antes de os enviar para o Monarch, através de filtros e agregações locais.
O streaming de dados para o serviço gerido para Prometheus consome recursos adicionais. Se estiver a implementar coletores automaticamente, recomendamos que aumente os limites de CPU e memória 5 vezes e os ajuste com base na utilização real.
Para mais informações sobre a recolha de dados gerida e implementada automaticamente, consulte o artigo Recolha de dados com o serviço gerido para Prometheus.
Antes de começar
Esta secção descreve a configuração necessária para as tarefas descritas neste documento.
Configure projetos e ferramentas
Para usar o serviço gerido do Google Cloud para Prometheus, precisa dos seguintes recursos:
Um Google Cloud projeto com a API Cloud Monitoring ativada.
Se não tiver um Google Cloud projeto, faça o seguinte:
Na Google Cloud consola, aceda a Novo projeto:
No campo Nome do projeto, introduza um nome para o projeto e, de seguida, clique em Criar.
Aceda a Faturação:
Selecione o projeto que acabou de criar, se ainda não estiver selecionado na parte superior da página.
É-lhe pedido que escolha um perfil de pagamentos existente ou que crie um novo.
A API Monitoring está ativada por predefinição para novos projetos.
Se já tiver um Google Cloud projeto, certifique-se de que a API Monitoring está ativada:
Aceda a APIs e serviços:
Selecione o seu projeto.
Clique em Ativar APIs e serviços.
Pesquise "Monitorização".
Nos resultados da pesquisa, clique em "API Cloud Monitoring".
Se não for apresentado "API ativada", clique no botão Ativar.
Um cluster do Kubernetes. Se não tiver um cluster do Kubernetes, siga as instruções no guia de início rápido do GKE.
Também precisa das seguintes ferramentas de linha de comandos:
gcloud
kubectl
As ferramentas gcloud
e kubectl
fazem parte da
CLI gcloud do Google Cloud. Para obter informações sobre a instalação
destes componentes, consulte o artigo Faça a gestão dos componentes da CLI gcloud. Para ver os componentes da CLI gcloud que instalou, execute o seguinte comando:
gcloud components list
Configure o seu ambiente
Para evitar introduzir repetidamente o ID do projeto ou o nome do cluster, faça a seguinte configuração:
Configure as ferramentas de linha de comandos da seguinte forma:
Configure a CLI gcloud para fazer referência ao ID do seu Google Cloud projeto:
gcloud config set project PROJECT_ID
Configure a CLI
kubectl
para usar o seu cluster:kubectl config set-cluster CLUSTER_NAME
Para mais informações sobre estas ferramentas, consulte o seguinte:
Configure um espaço de nomes
Crie o espaço de nomes do Kubernetes NAMESPACE_NAME
para os recursos que criar
como parte da aplicação de exemplo:
kubectl create ns NAMESPACE_NAME
Valide as credenciais da conta de serviço
Se o seu cluster do Kubernetes tiver a federação de identidade da carga de trabalho para o GKE ativada, pode ignorar esta secção.
Quando executado no GKE, o Managed Service for Prometheus
obtém automaticamente as credenciais do ambiente com base na
conta de serviço predefinida do Compute Engine. A conta de serviço predefinida tem as autorizações necessárias, monitoring.metricWriter
e monitoring.viewer
, por predefinição. Se não usar a Workload Identity Federation para o GKE e tiver removido anteriormente uma dessas funções da conta de serviço do nó predefinida, tem de readicionar essas autorizações em falta antes de continuar.
Configure uma conta de serviço para a federação de identidades da carga de trabalho para o GKE
Se o seu cluster do Kubernetes não tiver a Workload Identity Federation para o GKE ativada, pode ignorar esta secção.
O Managed Service for Prometheus captura dados de métricas através da API Cloud Monitoring. Se o seu cluster estiver a usar a Workload Identity Federation para o GKE, tem de conceder autorização à sua conta de serviço do Kubernetes para a API Monitoring. Esta secção descreve o seguinte:
- Criar uma Google Cloud conta de serviço> dedicada,
gmp-test-sa
. - Associar a Google Cloud conta de serviço à conta de serviço do Kubernetes predefinida num espaço de nomes de teste,
NAMESPACE_NAME
. - Conceder a autorização necessária à Google Cloud conta de serviço.
Crie e associe a conta de serviço
Este passo aparece em vários locais na documentação do Managed Service for Prometheus. Se já realizou este passo como parte de uma tarefa anterior, não precisa de o repetir. Avance para a secção Autorize a conta de serviço.
A seguinte sequência de comandos cria a conta de serviço gmp-test-sa
e associa-a à conta de serviço Kubernetes predefinida no espaço de nomes NAMESPACE_NAME
:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create gmp-test-sa \ && gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \ gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ && kubectl annotate serviceaccount \ --namespace NAMESPACE_NAME \ default \ iam.gke.io/gcp-service-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Se estiver a usar um espaço de nomes ou uma conta de serviço do GKE diferente, ajuste os comandos adequadamente.
Autorize a conta de serviço
Os grupos de autorizações relacionadas são recolhidos em funções e concede as funções a um principal, neste exemplo, a Google Cloud conta de serviço. Para mais informações sobre as funções de monitorização, consulte o artigo Controlo de acesso.
O comando seguinte concede à Google Cloud conta de serviçogmp-test-sa
as funções da API Monitoring de que precisa para
escrever
dados de métricas.
Se já tiver concedido à Google Cloud conta de serviço uma função específica como parte de uma tarefa anterior, não tem de o fazer novamente.
gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Depure a configuração da federação de identidades de cargas de trabalho para o GKE
Se tiver problemas com a federação de identidade da carga de trabalho para o GKE, consulte a documentação para validar a configuração da federação de identidade da carga de trabalho para o GKE e o guia de resolução de problemas da federação de identidade da carga de trabalho para o GKE.
Uma vez que os erros ortográficos e as operações de copiar e colar parciais são as origens mais comuns de erros ao configurar a Workload Identity Federation para o GKE, recomendamos vivamente que use as variáveis editáveis e os ícones de copiar e colar clicáveis incorporados nos exemplos de código nestas instruções.
Workload Identity Federation para o GKE em ambientes de produção
O exemplo descrito neste documento associa a conta de serviço à conta de serviço predefinida do Kubernetes e concede à conta de serviço todas as autorizações necessárias para usar a API Monitoring. Google Cloud Google Cloud
Num ambiente de produção, pode querer usar uma abordagem mais detalhada, com uma conta de serviço para cada componente, cada uma com autorizações mínimas. Para mais informações sobre a configuração de contas de serviço para a gestão de identidades da carga de trabalho, consulte o artigo Usar a federação de identidades da carga de trabalho para o GKE.
Configure a recolha implementada autonomamente
Esta secção descreve como configurar e executar uma aplicação de exemplo que usa a recolha implementada automaticamente.
Implemente a aplicação de exemplo
A aplicação de exemplo emite a métrica de contador example_requests_total
e a métrica de histograma example_random_numbers
(entre outras) na porta metrics
. O manifesto
da aplicação define três réplicas.
Para implementar a aplicação de exemplo, execute o seguinte comando:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/examples/example-app.yaml
Execute o ficheiro binário do Prometheus de substituição
Para carregar os dados de métricas emitidos pela aplicação de exemplo, implementa a versão bifurcada do servidor Prometheus da Google, que está configurada para extrair as métricas da carga de trabalho, bem como o respetivo ponto final de métricas.
Para implementar o servidor bifurcado, execute o seguinte comando:
kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/examples/prometheus.yaml
Este servidor Prometheus implementado é uma ramificação simples do ficheiro binário Prometheus a montante. Comporta-se como um servidor Prometheus padrão, mas também introduz dados no serviço gerido para Prometheus.
O manifesto acima fornece um exemplo de funcionamento básico que envia dados para o armazenamento de dados global, o Monarch. Não armazena persistentemente uma cópia local dos dados. Para informações sobre como esta configuração predefinida funciona e como a expandir, consulte a documentação de configuração do Prometheus de código aberto.
A imagem pré-criada só funciona em nós Linux. Para extrair dados de destinos em execução em nós Windows, implemente o servidor num nó Linux e configure-o para extrair dados de pontos finais nos nós Windows ou crie o ficheiro binário para Windows.
Verifique se os pods do servidor Prometheus e da aplicação de exemplo foram implementados com êxito:
kubectl -n NAMESPACE_NAME get pod
Se a implementação tiver sido bem-sucedida, vê um resultado semelhante ao seguinte:
NAME READY STATUS RESTARTS AGE prom-example-84c6f547f5-fglbr 1/1 Running 0 5m prom-example-84c6f547f5-jnjp4 1/1 Running 0 5m prom-example-84c6f547f5-sqdww 1/1 Running 0 5m prometheus-test-0 2/2 Running 1 3m
Se estiver a usar o GKE, pode fazer o seguinte:
- Para consultar as métricas carregadas pela aplicação de exemplo, consulte Consultar com o Cloud Monitoring ou Consultar com o Grafana.
- Para saber como usar o prometheus-operator e o kube-prometheus com a recolha implementada automaticamente e ver como criar e executar o ficheiro binário para o serviço gerido, consulte Tópicos adicionais para a recolha implementada automaticamente.
Se estiver a executar fora do GKE, tem de criar uma conta de serviço e autorizá-la a escrever os dados das métricas, conforme descrito na secção seguinte.
Forneça credenciais explicitamente
Quando executado no GKE, o servidor Prometheus de recolha obtém automaticamente as credenciais do ambiente com base na conta de serviço do nó ou na federação de identidades da carga de trabalho para a configuração do GKE.
Em clusters Kubernetes não GKE, as credenciais têm de ser fornecidas explicitamente ao servidor Prometheus de recolha através de flags ou da variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
.
Defina o contexto para o projeto de destino:
gcloud config set project PROJECT_ID
Crie uma conta de serviço:
gcloud iam service-accounts create gmp-test-sa
Este passo cria a conta de serviço que pode já ter criado nas instruções da federação de identidades da carga de trabalho para o GKE.
Conceda as autorizações necessárias à conta de serviço:
gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Crie e transfira uma chave para a conta de serviço:
gcloud iam service-accounts keys create gmp-test-sa-key.json \ --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Adicione o ficheiro de chave como um segredo ao seu cluster não GKE:
kubectl -n NAMESPACE_NAME create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json
Abra o recurso StatefulSet do Prometheus para edição:
kubectl -n NAMESPACE_NAME edit statefulset prometheus-test
Adicione o texto apresentado em negrito ao recurso:
apiVersion: apps/v1 kind: StatefulSet metadata: namespace: NAMESPACE_NAME name: example spec: template containers: - name: prometheus args: - --export.credentials-file=/gmp/key.json ... volumeMounts: - name: gmp-sa mountPath: /gmp readOnly: true ... volumes: - name: gmp-sa secret: secretName: gmp-test-sa ...
Guarde o ficheiro e feche o editor. Após a aplicação da alteração, os pods são recriados e começam a autenticar-se no back-end de métricas com a conta de serviço fornecida.
GOOGLE_APPLICATION_CREDENTIALS
variável de ambiente.Tópicos adicionais para a recolha implementada autonomamente
Esta secção descreve como fazer o seguinte:
- Filtre os dados que exporta para o serviço gerido.
- Converta as suas configurações de implementação existentes.
- Execute o ficheiro binário do Prometheus no modo de alta disponibilidade.
- Crie e execute o ficheiro binário do Prometheus de substituição.
- Execute o Managed Service for Prometheus fora do Google Cloud.
Filtre métricas exportadas
Se recolher muitos dados, pode querer impedir que algumas séries cronológicas sejam enviadas para o Managed Service for Prometheus para manter os custos baixos.
Pode usar configurações de reetiquetagem de métricas normais na configuração de extração de dados do Prometheus. Com as configurações de reetiquetagem, pode eliminar métricas com base em correspondências de etiquetas no momento do carregamento.
Por vezes, pode querer carregar dados localmente, mas não exportá-los para o Managed Service for Prometheus. Para filtrar métricas exportadas, pode usar a flag
--export.match
.A flag especifica um ou mais seletores de séries PromQL e pode ser usada várias vezes. Uma série cronológica é exportada para o Managed Service for Prometheus se satisfizer todos os seletores em, pelo menos, uma das flags. Ou seja, ao determinar a elegibilidade, as condições numa única flag são unidas por um operador E, enquanto as condições em flags separadas são unidas por um operador OU. O exemplo seguinte usa duas instâncias da flag:
./prometheus \ --export.match='{job="prometheus"}' \ --export.match='{__name__=~"job:.+"}' \ ...
Esta alteração faz com que apenas as métricas para a tarefa "prometheus" e as métricas produzidas por regras de gravação que agregam ao nível da tarefa (quando seguem as práticas recomendadas de nomenclatura) sejam exportadas. As amostras de todas as outras séries são filtradas. Por predefinição, não são especificados seletores e todas as séries cronológicas são exportadas.
A flag
--export.match
tem a mesma semântica que o parâmetromatch[]
para a federação do Prometheus. Por conseguinte, pode migrar as configurações de federação para o Managed Service for Prometheus usando os seletores do servidor de federação diretamente como flags nos servidores Prometheus recolhidos pelo servidor Prometheus de federação. A exportação de métricas de um servidor de federação para o serviço gerido não é suportada.Para incluir métricas do tipo
histogram
num filtro, tem de especificar as métricas_count
,_sum
e_bucket
. Também pode fazê-lo com um correspondente de carateres universais, por exemplo, o seletor{__name__=~"histogram_metric_.+"}
.Se estiver a usar a biblioteca
prometheus-operator
, defina quaisquer flags--export.match
através da variável de ambienteEXTRA_ARGS
do contentor. Para mais informações, consulte o artigo Use com o prometheus-operator.Pode combinar flags de filtros com regras de gravação executadas localmente para "acumular" dados antes de os enviar para o Monarch, reduzindo a cardinalidade e o custo. Para mais informações, consulte o artigo Controlos de custos e atribuição.
A página Gestão de métricas do Cloud Monitoring fornece informações que podem ajudar a controlar o valor gasto em métricas faturáveis sem afetar a observabilidade. A página Gestão de métricas apresenta as seguintes informações:
- Volumes de carregamento para a faturação baseada em bytes e em amostras, em domínios de métricas e para métricas individuais.
- Dados sobre as etiquetas e a cardinalidade das métricas.
- Número de leituras para cada métrica.
- Utilização de métricas em políticas de alerta e painéis de controlo personalizados.
- Taxa de erros de escrita de métricas.
Também pode usar a página Gestão de métricas para excluir métricas desnecessárias, eliminando o custo da respetiva ingestão. Para mais informações sobre a página Gestão de métricas, consulte o artigo Veja e faça a gestão da utilização de métricas.
Use com o prometheus-operator
O binário do Prometheus do Managed Service for Prometheus também pode ser usado com uma implementação do Prometheus do GKE existente gerida pelo prometheus-operator.
Para usar o ficheiro binário do serviço gerido, substitua a especificação da imagem no recurso do Prometheus:
apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: NAMESPACE_NAME namespace: gmp-system spec: image: gke.gcr.io/prometheus-engine/prometheus:v2.53.4-gmp.0-gke.1 ... replicas: 1 serviceAccountName: default version: v2.35.0 ...
Se estiver numa federação de identidades da carga de trabalho para o cluster do GKE e o espaço de nomes ou a conta de serviço no seu recurso for diferente, repita as instruções da federação de identidades da carga de trabalho para o GKE para o espaço de nomes adicional e o par de contas de serviço do Kubernetes.
Quando executado num cluster do Kubernetes não GKE, tem de fornecer credenciais manualmente. Para fornecer credenciais, faça o seguinte:
Adicione um ficheiro de chave de conta de serviço adequado como segredo, conforme descrito em Forneça credenciais explicitamente.
Modifique o recurso Prometheus para adicionar o texto apresentado em negrito:
apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: namespace: NAMESPACE_NAME name: example spec: ... secrets: - gmp-test-sa containers: - name: prometheus env: - name: GOOGLE_APPLICATION_CREDENTIALS value: /gmp/key.json volumeMounts: - name: secret-gmp-test-sa mountPath: /gmp readOnly: true
Pode definir a variável de ambiente
EXTRA_ARGS
do contentor para adicionar flags adicionais, como as flags de filtragem de métricas. Isto é feito através de uma variável de ambiente, porque a secçãoargs
da especificação do contentor é gerida pelo operador do Prometheus.Use com o kube-prometheus
Pode configurar implementações criadas com a popular biblioteca kube-prometheus para usar o serviço gerido para Prometheus.
O Kube-prometheus tem algumas dependências internas rigorosas nos respetivos espaços de nomes e contas de serviço predefinidos, pelo que recomendamos que altere apenas o número mínimo de campos necessários para enviar dados para o Managed Service for Prometheus.
Em
manifests/prometheus-prometheus.yaml
, substitua a especificação da imagem e desative a recolha de alta disponibilidade reduzindoreplicas
para 1:apiVersion: monitoring.coreos.com/v1 kind: Prometheus ... spec: image: gke.gcr.io/prometheus-engine/prometheus:v2.53.4-gmp.0-gke.1 ... replicas: 1 version: v2.35.0 ...
Se estiver a executar o GKE e não tiver modificado a conta de serviço predefinida no nó, a aplicação dos manifestos modificados deve começar imediatamente a enviar dados para o Managed Service for Prometheus. Caso contrário, pode ter de configurar e aplicar uma conta de serviço. Quando executar o comando no GKE e usar a identidade da carga de trabalho, pode ter de criar e autorizar a conta de serviço
prometheus-k8s
no espaço de nomesmonitoring
. Quando executado num cluster do Kubernetes que não seja do GKE, siga as instruções na secção do operador do Prometheus.Tenha em atenção que o kube-prometheus recolhe muitas métricas por predefinição, a maioria das quais não são frequentemente necessárias num ambiente Kubernetes gerido, como o GKE. Para poupar nos custos de carregamento, pode personalizar o kube-prometheus para que extraia apenas as métricas que lhe interessam e filtre as métricas exportadas de forma agressiva.
Para mais sugestões, consulte o artigo Controlos de custos e atribuição.
Implementação de alta disponibilidade
O ficheiro binário do Prometheus de substituição inclui suporte incorporado para recolha de alta disponibilidade através da eleição de líder. Os servidores Prometheus replicados no modo de alta disponibilidade recolhem métricas e avaliam regras como habitualmente, mas apenas um deles envia dados para o Google Cloud Managed Service for Prometheus.
As réplicas do mesmo servidor Prometheus têm de ter sempre configurações idênticas, incluindo o mesmo
external_labels
. Este requisito difere de outros sistemas, que dependem de uma etiqueta externa especial, como__replica__
, para tornar as réplicas explicitamente diferentes.O servidor da API Kubernetes é um back-end de eleição de líder suportado e pode ser ativado definindo as seguintes flags:
./prometheus ... --export.ha.backend=kube \ --export.ha.kube.namespace=LEASE_NAMESPACE \ --export.ha.kube.name=LEASE_NAME
Os valores LEASE_NAMESPACE e LEASE_NAME identificam o recurso de concessão através do qual a eleição de líder tem lugar. Todos os servidores Prometheus que apontam para o mesmo recurso pertencem ao mesmo conjunto de réplicas. A conta de serviço do Kubernetes da implementação do Prometheus precisa de autorização para ler e escrever o recurso de concessão respetivo. Quando executa o servidor Prometheus fora de um cluster do Kubernetes, pode fornecer uma configuração explícita através da flag
--export.ha.kube.config
.Depois de o fazer, pode aumentar o valor
replicas
para 2 ou mais.Etiquetas reservadas
O serviço gerido para Prometheus usa seis etiquetas reservadas para identificar exclusivamente um recurso no Monarch:
project_id
: o identificador do projeto Google Cloud associado à sua métrica. Obrigatório.location
: a localização física (Google Cloud região) onde os dados são armazenados. Este valor é normalmente a região do seu cluster do GKE. Se os dados forem recolhidos a partir de uma implementação local ou da AWS, o valor pode ser a região Google Cloud mais próxima. Obrigatório.cluster
: o nome do cluster do Kubernetes associado à sua métrica. Se não estiver a ser executado no Kubernetes, pode ser usado como um nível de hierarquia arbitrário, como um grupo de instâncias. Opcional, mas vivamente recomendado.namespace
: o nome do espaço de nomes do Kubernetes associado à sua métrica. Se não estiver a ser executado no Kubernetes, pode ser usado como um nível de hierarquia arbitrário, como um subgrupo de instâncias. Opcional, mas vivamente recomendado.job
: a etiqueta de tarefa do destino do Prometheus, se for conhecida; pode estar vazia para resultados de avaliação de regras. Obrigatório e normalmente adicionado automaticamente pelo Prometheus.instance
: a etiqueta de instância do destino do Prometheus, se for conhecida; pode estar vazia para resultados de avaliação de regras. Obrigatório e normalmente adicionado automaticamente pelo Prometheus. Se forem definidos ou reetiquetados manualmente, não use valores codificados, comolocalhost
, uma vez que tal provoca colisões de séries cronológicas.
Quando executado no Google Cloud, as etiquetas
project_id
,location
ecluster
são adicionadas automaticamente a todas as métricas.Embora não seja recomendado quando executado no Google Cloud, pode substituir as etiquetas
project_id
,location
,cluster
enamespace
através da secçãoglobal.external_labels
da configuração do Prometheus. Para mais informações, consulte o artigo Execute a recolha implementada automaticamente fora do Google Cloud.Se usar quaisquer etiquetas reservadas como etiquetas de métricas, a recolha implementada automaticamente usa a etiqueta de métrica como o valor da etiqueta reservada. Isto pode oferecer alguma flexibilidade, mas também pode originar erros se, por exemplo, usar a etiqueta
location
para se referir a algo que não seja umaGoogle Cloud região.Configure o statsd_exporter e outros exportadores que comunicam métricas de forma centralizada
Se usar o statsd_exporter para o Prometheus, o Envoy para o Istio, o SNMP exporter, o Prometheus Pushgateway, o kube-state-metrics ou tiver um exportador semelhante que intermedeia e comunica métricas em nome de outros recursos em execução no seu ambiente, tem de fazer algumas pequenas alterações para que o exportador funcione com o Managed Service for Prometheus.
Para ver instruções sobre como configurar estes exportadores, consulte esta nota na secção Resolução de problemas.
Implementações binárias
Se quiser executar num ambiente não contentorizado, pode criar o ficheiro binário do Prometheus de substituição diretamente.
Criar a origem
Se tiver um processo existente para compilar o Prometheus, pode substituir de forma transparente o nosso repositório do GitHub no seu processo. O Managed Service for Prometheus tem a sua própria extensão de etiqueta de versão para distinguir os seus lançamentos dos lançamentos a montante.
Para criar o binário simples, a cadeia de ferramentas Go e as versões recentes do NPM/Yarn têm de estar instaladas no computador. Para mais informações, consulte as instruções de compilação a montante.
Clone o repositório:
git clone https://github.com/GoogleCloudPlatform/prometheus && cd prometheus
Verifique a etiqueta da versão pretendida:
git checkout v2.53.4-gmp.0
Para criar um ficheiro tar.gz do Managed Service for Prometheus, execute os seguintes comandos:
make build && make tarball
O ficheiro TAR.GZ e os binários resultantes são totalmente compatíveis com as respetivas variantes upstream em termos de estrutura de diretórios e funcionalidade.
Limites na criação e atualização de métricas e etiquetas
O Managed Service for Prometheus aplica um limite de taxa por minuto à criação de novas métricas e à adição de novas etiquetas de métricas a métricas existentes. Este limite de taxa é normalmente atingido apenas quando se faz a primeira integração com o Managed Service for Prometheus, por exemplo, quando migra uma implementação do Prometheus existente e desenvolvida para usar a recolha implementada automaticamente. Isto não é um limite de taxa para a introdução de pontos de dados. Este limite de taxa só se aplica quando cria métricas nunca antes vistas ou quando adiciona novas etiquetas a métricas existentes.
Esta quota é fixa, mas quaisquer problemas devem ser resolvidos automaticamente à medida que são criadas novas métricas e etiquetas de métricas até ao limite por minuto.
Para mais informações, consulte o artigo Resolução de problemas.
Execute a recolha implementada automaticamente fora do Google Cloud
Em ambientes do Compute Engine, ambientes do GKE ou numa máquina onde executou o
gcloud login
com uma conta suficientemente autorizada, pode executar a recolha implementada automaticamente sem configuração adicional. Fora do Google Cloud, tem de fornecer explicitamente credenciais, umproject_id
para conter as suas métricas e umalocation
(Google Cloud região) para armazenar as suas métricas. Também deve definir as etiquetascluster
enamespace
, mesmo que esteja a ser executado num ambiente não Kubernetes.Pode fornecer uma chave da conta de serviço através da flag
--export.credentials-file
ou da variável de ambienteGOOGLE_APPLICATION_CREDENTIALS
, conforme descrito no artigo Forneça credenciais explicitamente.Recomendamos que escolha
project_id
com base no modelo de arrendamento planeado para leituras. Escolha um projeto para armazenar métricas com base na forma como planeia organizar as leituras mais tarde com âmbitos de métricas. Se não se importar, pode colocar tudo num único projeto.Para
location
, recomendamos que escolha a região mais próxima da sua implementação Google Cloud . Quanto mais distante estiver a Google Cloud região escolhida da sua implementação,0x0A>maior será a latência de escrita e mais será afetado por potenciais problemas de rede. Recomendamos que consulte esta lista de regiões em várias nuvens. Se não tiver interesse, pode colocar tudo numa única Google Cloud região. Não pode usarglobal
como a sua localização.Se estiver a ser executado num ambiente do Kubernetes, defina os valores
cluster
enamespace
para o cluster e o espaço de nomes locais. Se estiver a executar fora do Kubernetes, defina-os para valores que façam sentido hierarquicamente. Por exemplo, num ambiente baseado em VM em execução no AWS, defina o valorcluster
como__aws__
e o valornamespace
como o ID da instância. Pode preencher dinamicamente o ID da instância através de uma regra de reetiquetagem que chama o servidor de metadados local.Para um exemplo de funcionamento mínimo, pode executar um ficheiro binário do Prometheus de monitorização automática local com o seguinte comando:
./prometheus \ --config.file=documentation/examples/prometheus.yaml \ --export.label.project-id=PROJECT_ID \ --export.label.location=REGION \ --export.label.cluster=CLUSTER_NAME \
Este exemplo pressupõe que definiu a variável
REGION
para um valor comous-central1
, por exemplo.No entanto, recomendamos que defina as
export
etiquetas de destino para o serviço gerido na secçãoglobal.external_labels
da configuração do Prometheus. Por exemplo, em ambientes do Kubernetes, pode usar a seguinte configuração:global: external_labels: project_id: PROJECT_ID location: REGION cluster: CLUSTER_NAME namespace: local-testing scrape_configs: ...
A execução do Managed Service for Prometheus fora do Google Cloud incorre em taxas de transferência de dados. Existem taxas para transferir dados para o Google Cloude pode incorrer em taxas para transferir dados de outra nuvem. Pode minimizar este custo ativando a compressão com a flag
--export.compression=gzip
.O que se segue?
- Use o PromQL no Cloud Monitoring para consultar métricas do Prometheus.
- Use o Grafana para consultar as métricas do Prometheus.
- Use alertas PromQL no Cloud Monitoring.
- Configure a avaliação de regras gerida.
- Configure a avaliação de regras implementadas automaticamente.
- Reduza a cardinalidade e o custo configurando agregações locais.