Servidor da Web Apache (httpd)

Neste documento, descrevemos como configurar a implantação do Google Kubernetes Engine para usar o Google Cloud Managed Service para Prometheus a fim de coletar métricas do Apache Web Server (httpd). Esta página mostra como fazer o seguinte:

  • Configure o exportador do Apache Web Server para gerar relatórios de métricas.
  • Configurar um recurso PodMonitoring para o serviço gerenciado para Prometheus a fim de coletar as métricas exportadas.
  • Instalar um painel no Cloud Monitoring para ver as métricas.

Estas instruções se aplicam somente ao usar a coleção gerenciada com o serviço gerenciado para Prometheus. Se você estiver usando a coleção autoimplantada, consulte o repositório de origem do exportador do Apache HTTP para ver informações da instalação.

Estas instruções são um exemplo e devem funcionar na maioria dos ambientes do Kubernetes. Se você estiver com problemas para instalar um aplicativo ou exportador devido a políticas restritivas de segurança ou da organização, recomendamos consultar a documentação de código aberto para receber suporte.

Para informações sobre o Apache Web Server, consulte Apache HTTP.

Pré-requisitos

Para coletar métricas do Apache Web Server usando o Managed Service para Prometheus e a coleção gerenciada, sua implantação precisa atender aos seguintes requisitos:

  • Seu cluster precisa executar a versão 1.21.4-gke.300 ou posterior do Google Kubernetes Engine.
  • É necessário executar o Managed Service para Prometheus com a coleta gerenciada ativada. Para mais informações, consulte Começar a usar a coleta gerenciada.

  • Para usar os painéis disponíveis no Cloud Monitoring com relação à integração do servidor da Web Apache, use a versão v1.0.0 ou posterior do httpd_exporter.

    Para mais informações sobre os painéis disponíveis, consulte Visualizar painéis.

Instalar o exportador do servidor da Web do Apache

Recomendamos que você instale o exportador do Apache Web Server, httpd_exporter, como um arquivo secundário para sua carga de trabalho do servidor da Web do Apache. Para informações sobre o uso de arquivos secundários, consulte Aplicativos estendidos no Kubernetes com pods de múltiplos contêineres.

Para instalar httpd_exporter como um arquivo secundário para o Apache Web Server, modifique a configuração do servidor da Web do Apache, conforme mostrado no exemplo a seguir:

# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: v1
kind: ConfigMap
metadata:
  name: httpd
data:
  httpd.conf: |
    ...
+   <Location "/server-status">
+       SetHandler server-status
+   </Location>
+   LoadModule status_module modules/mod_status.so
    ...
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd
spec:
  replicas: 1
  selector:
    matchLabels:
+     app.kubernetes.io/name: httpd
  template:
    metadata:
      labels:
+       app.kubernetes.io/name: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4
        ports:
        - containerPort: 80
          name: httpd
+       volumeMounts:
+       - mountPath: /usr/local/apache2/conf/httpd.conf
+         subPath: httpd.conf
+         name: httpd
+     - name: httpd-exporter
+       image: lusotycoon/apache-exporter:v1.0.0
+       ports:
+       - containerPort: 9117
+         name: prometheus
+       command: ["/bin/apache_exporter"]
+       args: ["--scrape_uri=http://localhost/server-status?auto", "--web.listen-address=:9117", "--telemetry.endpoint=/metrics"]
+     volumes:
+     - name: httpd
+       configMap:
+         name: httpd
+         items:
+         - key: httpd.conf
+           path: httpd.conf

Adicione à sua configuração todas as linhas precedidas pelo símbolo +.

Estas instruções pressupõem que você já tenha uma instalação do Apache Web Server em funcionamento e queira modificá-la para incluir um exportador. É possível configurar o servidor HTTP Apache para exibir métricas em /server-status. Para isso, modifique a configuração com uma nova diretiva Location e carregue o status_module.

Para aplicar as alterações de configuração de um arquivo local, execute o seguinte comando:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Também é possível usar o Terraform para gerenciar as configurações.

Definir um recurso do PodMonitoring

Para a descoberta de destino, o Operador de serviço gerenciado para Prometheus requer um recurso PodMonitoring que corresponde ao exportador do Apache Web Server no mesmo namespace.

É possível usar a seguinte configuração do PodMonitoring:

# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: httpd
  labels:
    app.kubernetes.io/name: httpd
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  endpoints:
  - port: prometheus
    scheme: http
    interval: 30s
    path: /metrics
  selector:
    matchLabels:
      app.kubernetes.io/name: httpd

Verifique se os seletores de rótulo e a porta correspondem aos seletores e à porta usados em Instalar o exportador do Apache Web Server.

Para aplicar as alterações de configuração de um arquivo local, execute o seguinte comando:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Também é possível usar o Terraform para gerenciar as configurações.

Verificar a configuração

Você pode usar o Metrics Explorer para verificar se configurou corretamente o exportador do Apache Web Server. Pode levar um ou dois minutos para que o Cloud Monitoring ingira as métricas.

Para verificar se as métricas foram transferidas, faça o seguinte:

  1. No Console do Google Cloud, acesse a página do  Metrics Explorer:

    Acesse o Metrics explorer

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  2. Na barra de ferramentas do painel do criador de consultas, selecione o botão  MQL ou  PromQL.
  3. Verifique se PromQL está selecionado na opção de ativar/desativar PromQL. A alternância de idiomas está na mesma barra de ferramentas que permite formatar sua consulta.
  4. Digite e execute a seguinte consulta:
    up{job="httpd", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}

Ver painéis

A integração do Cloud Monitoring inclui o painel Visão geral do Apache Prometheus. Os painéis são instalados automaticamente ao configurar a integração. Também é possível visualizar visualizações estáticas de painéis sem instalar a integração.

Para ver um painel instalado, faça o seguinte:

  1. No console do Google Cloud, acesse a página  Painéis:

    Ir para Painéis

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  2. Selecione a guia Lista de painéis.
  3. Escolha a categoria Integrações.
  4. Clique no nome do painel, por exemplo, Visão geral do Apache Prometheus.

Para acessar uma visualização estática do painel, faça o seguinte:

  1. No console do Google Cloud, acesse a página  Integrações:

    Acessar Integrações

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  2. Clique no filtro de plataforma de implantação do Kubernetes Engine.
  3. Localize a integração com o Apache Web Server (httpd) e clique em Ver detalhes.
  4. Selecione a guia Painéis.

Solução de problemas

Para resolver problemas de transferências de métricas, consulte Problemas com a coleta de exportadores em Resolver problemas no processamento.