O Prometheus é um sistema de monitoramento de sistemas e serviços. Ele coleta métricas de destinos configurados em determinados intervalos, avalia expressões de regra, exibe os resultados e pode acionar alertas se alguma condição for observada como verdadeira. O Alertmanager trata os alertas gerados pelo Prometheus e os encaminha para os endpoints de recebimento. Implante o Tanzu Packages for Prometheus para coletar e visualizar métricas para clusters do TKG 2.
Requisitos do pacote
Obedeça aos seguintes requisitos para implantar a Tanzu Extension for Contour Ingress.
- Provisione um cluster TKG 2 com uma classe de armazenamento padrão. Consulte Provisionando clusters do TKG 2 em Supervisor.
Observação: O Prometheus requer uma classe de armazenamento persistente padrão. Se você tiver um cluster TKG 2 sem uma classe de armazenamento padrão, poderá corrigi-lo. Consulte Requisitos de armazenamento persistente para pacotes Tanzu.
- Conecte-se ao cluster do TKG 2. Consulte Gerenciando identidade e acesso para clusters TKG 2 em Supervisor.
- Instale os pré-requisitos do pacote Tanzu. Consulte Instalar os pré-requisitos do pacote Tanzu usando o Kubectl
Componentes do pacote Prometheus
O Pacote Tanzu para Prometheus instala vários contêineres. Para obter mais informações, consulte
https://prometheus.io/. O pacote extrai os contêineres do registro público VMware especificado no Repositório de Pacotes.
Contêiner | Tipo de recurso | Réplicas | Descrição |
---|---|---|---|
prometheus-alertmanager |
Implantação | 1 | Manipula alertas enviados por aplicativos cliente, como o servidor Prometheus. |
prometheus-cadvisor |
DaemonSet | 5 | Analisa e expõe o uso de recursos e os dados de desempenho de contêineres em execução |
prometheus-kube-state-metrics |
Implantação | 1 | Monitora o status e a capacidade do nó, a conformidade do conjunto de réplicas, o status do pod, do trabalho e do cronjob, as solicitações de recursos e os limites. |
prometheus-node-exporter |
DaemonSet | 5 | Exportador para métricas de hardware e SO expostas por kernels. |
prometheus-pushgateway |
Implantação | 1 | Serviço que permite que você envie métricas de trabalhos que não podem ser raspados. |
prometheus-server |
Implantação | 1 | Fornece a funcionalidade principal, incluindo raspagem, processamento de regras e alertas. |
Instalar o pacote do Prometheus
Instale o pacote do Prometheus.
- Crie a especificação
prometheus.yaml
.apiVersion: v1 kind: ServiceAccount metadata: name: prometheus-sa namespace: tkg-system --- # temp apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: prometheus-sa namespace: tkg-system --- apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageInstall metadata: name: prometheus namespace: tkg-system spec: serviceAccountName: prometheus-sa packageRef: refName: prometheus.tanzu.vmware.com versionSelection: constraints: 1.20.2+vmware.1-tkg.1-rc.2 values: - secretRef: name: prometheus-data-values --- apiVersion: v1 kind: Secret metadata: name: prometheus-data-values namespace: tkg-system stringData: values.yml: | --- prometheus: pspNames: "vmware-system-restricted"
- Instale o pacote do Prometheus.
kubectl apply -f prometheus.yaml
Parâmetros de configuração do Prometheus
A configuração do Prometheus é definida em
prometheus-data-values.yaml
. A tabela lista e descreve os parâmetros disponíveis.
Parâmetro | Descrição | Tipo | Padrão |
---|---|---|---|
Monitoring.namespace | Namespace em que o Prometheus será implantado | seqüência de caracteres | tanzu-system-monitoring |
Monitoring.create_namespace | O sinalizador indica se o namespace especificado por monitoring.namespace deve ser criado | booliano | falso |
Monitoring.prometheus_server.config.prometheus_yaml | Detalhes de configuração do monitor de cluster Kubernetes a serem passados para o Prometheus | arquivo yaml | prometheus.yaml |
Monitoring.prometheus_server.config.alerting_rules_yaml | Regras de alerta detalhadas definidas no Prometheus | arquivo yaml | alerting_rules.yaml |
Monitoring.prometheus_server.config.recording_rules_yaml | Regras de registro detalhadas definidas no Prometheus | arquivo yaml | gravação_rules.yaml |
Monitoring.prometheus_server.service.type | Tipo de serviço para expor o Prometheus. Valores com suporte: ClusterIP | seqüência de caracteres | ClusterIP |
Monitoring.prometheus_server.enable_alerts.kubernetes_api | Habilitar alertas de SLO para a API Kubernetes no Prometheus | booliano | verdadeiro |
Monitoring.prometheus_server.sc.aws_type | Tipo de AWS definido para storageclass na AWS | seqüência de caracteres | gp2 |
Monitoring.prometheus_server.sc.aws_fsType | Tipo de sistema de arquivos da AWS definido para storageclass na AWS | seqüência de caracteres | ramal 4 |
Monitoring.prometheus_server.sc.allowVolumeExpansion | Definir se a expansão de volume é permitida para storageclass na AWS | booliano | verdadeiro |
Monitoring.prometheus_server.pvc.annotations | Anotações de classe de armazenamento | mapa | {} |
Monitoring.prometheus_server.pvc.storage_class | Classe de armazenamento a ser usada para a declaração de volume persistente. Por padrão, isso é nulo e o provisionador padrão é usado | seqüência de caracteres | null |
Monitoring.prometheus_server.pvc.accessMode | Defina o modo de acesso para a declaração de volume persistente. Valores com suporte: ReadWriteOnce, ReadOnlyMany, ReadWriteMany | seqüência de caracteres | ReadWriteOnce |
Monitoring.prometheus_server.pvc.storage | Definir o tamanho do armazenamento para a declaração de volume persistente | seqüência de caracteres | 8 Gi |
Monitoring.prometheus_server.deployment.replicas | Número de réplicas do Prometheus | inteiro | 1 |
Monitoring.prometheus_server.image.repository | Localização do repositório com a imagem do Prometheus. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente air-gapped). | seqüência de caracteres | projects.registry.vmware.com/tkg/prometheus |
Monitoring.prometheus_server.image.name | Nome da imagem do Prometheus | seqüência de caracteres | prometheus |
Monitoring.prometheus_server.image.tag | Tag de imagem do Prometheus. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. | seqüência de caracteres | v2.17.1_vmware.1 |
Monitoring.prometheus_server.image.pullPolicy | Política de extração de imagem do Prometheus | seqüência de caracteres | IfNotPresent |
Monitoring.alertmanager.config.slack_demo | Configuração de notificação do Slack para o Alertmanager | seqüência de caracteres | slack_demo: name: slack_demo slack_configs: - api_url: https://hooks.slack.com channel: '#alertmanager-test' |
Monitoring.alertmanager.config.email_receiver | Configuração de notificação por e-mail para o Alertmanager | seqüência de caracteres | email_receiver: name: email-receiver email_configs: - to: [email protected] send_resolved: false from: [email protected] smarthost: smtp.eample.com:25 require_tls: false |
Monitoring.alertmanager.service.type | Tipo de serviço para expor o Alertmanager. Valores com suporte: ClusterIP | seqüência de caracteres | ClusterIP |
Monitoring.alertmanager.image.repository | Localização do repositório com a imagem Alertmanager. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente air-gapped). | seqüência de caracteres | projects.registry.vmware.com/tkg/prometheus |
Monitoring.alertmanager.image.name | Nome da imagem do Alertmanager | seqüência de caracteres | alertmanager |
Monitoring.alertmanager.image.tag | Tag de imagem do Alertmanager. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. | seqüência de caracteres | v0.20.0_vmware.1 |
Monitoring.alertmanager.image.pullPolicy | Política de extração de imagem do Alertmanager | seqüência de caracteres | IfNotPresent |
Monitoring.alertmanager.pvc.annotations | Anotações de classe de armazenamento | mapa | {} |
Monitoring.alertmanager.pvc.storage_class | Classe de armazenamento a ser usada para a declaração de volume persistente. Por padrão, isso é nulo e o provisionador padrão é usado. | seqüência de caracteres | null |
Monitoring.alertmanager.pvc.accessMode | Defina o modo de acesso para a declaração de volume persistente. Valores com suporte: ReadWriteOnce, ReadOnlyMany, ReadWriteMany | seqüência de caracteres | ReadWriteOnce |
Monitoring.alertmanager.pvc.storage | Definir o tamanho do armazenamento para a declaração de volume persistente | seqüência de caracteres | 2Gi |
Monitoring.alertmanager.deployment.replicas | Número de réplicas do alertmanager | inteiro | 1 |
Monitoring.kube_state_metrics.image.repository | Repositório que contém a imagem kube-state-metircs. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente air-gapped). | seqüência de caracteres | projects.registry.vmware.com/tkg/prometheus |
Monitoring.kube_state_metrics.image.name | Nome da imagem kube-state-metircs | seqüência de caracteres | kube-state-metrics |
Monitoring.kube_state_metrics.image.tag | tag de imagem kube-state-metircs. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. | seqüência de caracteres | v1.9.5_vmware.1 |
Monitoring.kube_state_metrics.image.pullPolicy | política de extração de imagem kube-state-metircs | seqüência de caracteres | IfNotPresent |
Monitoring.kube_state_metrics.deployment.replicas | Número de réplicas de métricas de estado de kube | inteiro | 1 |
Monitoring.node_exporter.image.repository | Repositório que contém a imagem do exportador de nó. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente air-gapped). | seqüência de caracteres | projects.registry.vmware.com/tkg/prometheus |
Monitoring.node_exporter.image.name | Nome da imagem do exportador de nó | seqüência de caracteres | exportador de nó |
Monitoring.node_exporter.image.tag | tag de imagem do exportador de nó. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. | seqüência de caracteres | v0.18.1_vmware.1 |
Monitoring.node_exporter.image.pullPolicy | política de pull de imagem do exportador de nó | seqüência de caracteres | IfNotPresent |
Monitoring.node_exporter.hostNetwork | Se definido como hostNetwork: true , o pod poderá usar o namespace de rede e os recursos de rede do nó. |
booliano | falso |
Monitoring.node_exporter.deployment.replicas | Número de réplicas do exportador de nós | inteiro | 1 |
Monitoring.pushgateway.image.repository | Repositório que contém a imagem do pushgateway. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente air-gapped). | seqüência de caracteres | projects.registry.vmware.com/tkg/prometheus |
Monitoring.pushgateway.image.name | Nome da imagem do pushgateway | seqüência de caracteres | pushgateway |
Monitoring.pushgateway.image.tag | tag de imagem pushgateway. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. | seqüência de caracteres | v1.2.0_vmware.1 |
Monitoring.pushgateway.image.pullPolicy | política de pull de imagem pushgateway | seqüência de caracteres | IfNotPresent |
Monitoring.pushgateway.deployment.replicas | Número de réplicas de pushgateway | inteiro | 1 |
Monitoring.cadvisor.image.repository | Repositório que contém a imagem do cadvisor. O padrão é o registro público VMware. Altere esse valor se você estiver usando um repositório privado (por exemplo, ambiente air-gapped). | seqüência de caracteres | projects.registry.vmware.com/tkg/prometheus |
Monitoring.cadvisor.image.name | Nome da imagem do cadvisor | seqüência de caracteres | cadvisor |
Monitoring.cadvisor.image.tag | tag de imagem cadvisor. Esse valor pode precisar ser atualizado se você estiver atualizando a versão. | seqüência de caracteres | v0.36.0_vmware.1 |
Monitoring.cadvisor.image.pullPolicy | política de pull de imagem do cadvisor | seqüência de caracteres | IfNotPresent |
Monitoring.cadvisor.deployment.replicas | Número de réplicas do cadvisor | inteiro | 1 |
Monitoring.ingress.enabled | Ativar/desativar a entrada para o prometheus e o alertmanager | booliano | falso Para usar a entrada, defina esse campo como |
Monitoring.ingress.virtual_host_fqdn | Nome do host para acessar o Prometheus e o Alertmanager | seqüência de caracteres | prometheus.system.tanzu |
Monitoring.ingress.prometheus_prefix | Prefixo de caminho para o Prometheus | seqüência de caracteres | / |
Monitoring.ingress.alertmanager_prefix | Prefixo do caminho para o alertmanager | seqüência de caracteres | /alertmanager/ |
Monitoring.ingress.tlsCertificate.tls.crt | Certificado opcional para entrada se você quiser usar seu próprio certificado TLS. Um certificado autoassinado é gerado por padrão | seqüência de caracteres | Certificado gerado |
Monitoring.ingress.tlsCertificate.tls.key | Chave privada de certificado opcional para entrada se você quiser usar seu próprio certificado TLS. | seqüência de caracteres | Chave de certificado gerada |
Parâmetro | Descrição | Tipo | Padrão |
---|---|---|---|
assessment_interval | frequência para avaliar regras | duração | 1m |
scrape_interval | frequência para raspar alvos | duração | 1m |
scrape_timeout | Quanto tempo leva para expirar o tempo limite de uma solicitação de raspagem | duração | 10s |
rule_files | Arquivos de regra especifica uma lista de globs. As regras e os alertas são lidos de todos os arquivos correspondentes | arquivo yaml | |
scrape_configs | Uma lista de configurações de raspagem. | listar | |
job_name | O nome do job atribuído às métricas extraídas por padrão | seqüência de caracteres | |
kubernetes_sd_configs | Lista de configurações de descoberta de serviço do Kubernetes. | listar | |
relabel_configs | Lista de configurações de renomeação de destino. | listar | |
ação | Ação a ser executada com base na correspondência de regex. | seqüência de caracteres | |
regex | Expressão regular com a qual o valor extraído é correspondido. | seqüência de caracteres | |
source_labels | Os rótulos de origem selecionam valores de rótulos existentes. | seqüência de caracteres | |
esquema | Configura o esquema de protocolo usado para solicitações. | seqüência de caracteres | |
tls_config | Define as configurações de TLS da solicitação de raspagem. | seqüência de caracteres | |
ca_file | Certificado de CA para validar o certificado do servidor de API com. | nome do arquivo | |
insecure_skip_verify | Desabilite a validação do certificado do servidor. | booliano | |
bearer_token_file | Informações opcionais de autenticação do arquivo de token de portador. | nome do arquivo | |
substituição | Valor de substituição no qual uma substituição de regex é executada se a expressão regular corresponder. | seqüência de caracteres | |
target_label | Rótulo no qual o valor resultante é gravado em uma ação de substituição. | seqüência de caracteres |
Parâmetro | Descrição | Tipo | Padrão |
---|---|---|---|
resolve_timeout | ResolveTimeout é o valor padrão usado pelo alertmanager se o alerta não incluir EndsAt | duração | 5m |
smtp_smarthost | O host SMTP por meio do qual os e-mails são enviados. | duração | 1m |
slack_api_url | A URL do webhook do Slack. | seqüência de caracteres | global.slack_api_url |
pagerduty_url | A URL pagerduty para a qual enviar solicitações de API. | seqüência de caracteres | global.pagerduty_url |
modelos | Arquivos dos quais as definições de modelo de notificação personalizado são lidas | caminho do arquivo | |
group_by | agrupar os alertas por rótulo | seqüência de caracteres | |
group_interval | definir o tempo de espera antes de enviar uma notificação sobre novos alertas adicionados a um grupo | duração | 5m |
group_wait | Quanto tempo esperar inicialmente para enviar uma notificação para um grupo de alertas | duração | 30s |
repeat_interval | Quanto tempo esperar antes de enviar uma notificação novamente se ela já tiver sido enviada com êxito para um alerta | duração | 4h |
receptores | Uma lista de receptores de notificação. | listar | |
gravidade | Gravidade do incidente. | seqüência de caracteres | |
canal | O canal ou usuário para o qual enviar notificações. | seqüência de caracteres | |
html | O corpo HTML da notificação por e-mail. | seqüência de caracteres | |
texto | O corpo do texto da notificação por e-mail. | seqüência de caracteres | |
send_resolved | Se deve ou não notificar sobre alertas resolvidos. | nome do arquivo | |
email_configs | Configurações para integração de e-mail | booliano |
As anotações nos pods permitem um controle preciso do processo de raspagem. Essas anotações devem fazer parte dos metadados do pod. Eles não terão efeito se definidos em outros objetos, como Services ou DaemonSets.
Anotação do pod | Descrição |
---|---|
prometheus.io/scrape |
A configuração padrão raspará todos os pods e, se definida como false, essa anotação excluirá o pod do processo de raspagem. |
prometheus.io/path |
Se o caminho das métricas não for /metrics, defina-o com esta anotação. |
prometheus.io/port |
Raspe o pod na porta indicada em vez das portas declaradas do pod (o padrão é um destino sem porta se nenhuma for declarada). |
O manifesto do DaemonSet abaixo instruirá o Prometheus a raspar todos os seus pods na porta 9102.
apiVersion: apps/v1beta2 # for versions before 1.8.0 use extensions/v1beta1 kind: DaemonSet metadata: name: fluentd-elasticsearch namespace: weave labels: app: fluentd-logging spec: selector: matchLabels: name: fluentd-elasticsearch template: metadata: labels: name: fluentd-elasticsearch annotations: prometheus.io/scrape: 'true' prometheus.io/port: '9102' spec: containers: - name: fluentd-elasticsearch image: gcr.io/google-containers/fluentd-elasticsearch:1.20