Monitoramento Prometheus e Grafana

Índice

1. Introdução ao Prometeu

        1.O que é Prometeu?

2. Recursos do Prometheus 

Fácil de gerenciar:

Monitore o status de execução interno do serviço:

Modelo de dados poderoso:

Linguagem de consulta poderosa PromQL

Eficiente

Escalável

Fácil de integrar

Visualização

abertura

2.1 Arquitetura Prometheus

1.2.1 Componentes do ecossistema Prometheus

1.2.2 Compreensão da arquitetura

1. Camada de computação de armazenamento

2. Camada de coleção

3. Camada de aplicação

2. Instalação do Prometheus

2.1 Instalar o servidor Prometheus

1. Carregue o pacote de instalação

2. Descompacte o pacote de instalação

3. Modifique o nome do diretório

4. Modifique o arquivo de configuração prometheus.yml

2.2 Instale o Pushgateway

1. Faça upload do pacote de instalação do Pushgateway

2. Descompacte o pacote de instalação

2.3 Instalar o Node Exporter (instalação seletiva)

1. Carregue o pacote de instalação

2. Descompacte o pacote de instalação

 2.4 Inicie o servidor Prometheus, Pushgateway e Alertmanager

1. Execute o comando de inicialização no diretório do servidor Prometheus

2. Execute o comando de inicialização no diretório Pushgateway

3. Inicie no diretório Alertmanager

2.5 Abra a página da web para visualizar

3. Introdução ao PromQL

3.1 Consultar série temporal

4. Integração de Prometheus e Grafana

4.1 Carregar e descompactar Grafana (Método 1)

4.2 Instale o Grafana usando docker (método 2)

  1. Puxe a imagem

2. Inicie o contêiner

3. Visualize contêineres em execução

4.3 A conta e senha padrão para acesso ao grafana (porta 3000) é admin.

4.4 Adicionar fonte de dados Prometheus

4.5 Adicionar painel manualmente


1. Introdução ao Prometeu

1.O que é Prometeu?

        Prometheus foi inspirado no sistema de monitoramento Brogmon do Google (da mesma forma, o Kubernetes evoluiu do sistema Brog do Google). Foi desenvolvido como software de código aberto por ex-engenheiros do Google no Soundcloud em 2012 e foi lançado ao público no início de 2015. Versão. Em maio de 2016, tornou-se o segundo projeto a aderir oficialmente à Fundação CNCF depois do Kubernetes, e a versão 1.0 foi lançada oficialmente em junho do mesmo ano. No final de 2017, foi lançada a versão 2.0 baseada em uma nova camada de armazenamento, que pode cooperar melhor com plataformas de contêineres e plataformas de nuvem. Prometheus é uma nova geração de sistema de monitoramento nativo da nuvem.Atualmente, mais de 650 colaboradores participaram da pesquisa e desenvolvimento do Prometheus e há mais de 120 integrações de terceiros.

2. Recursos do Prometheus 

        Prometheus é uma solução de monitoramento completa de código aberto que subverte completamente os modelos de teste e alarmes dos sistemas de monitoramento tradicionais e forma um novo modelo baseado em cálculo centralizado de regras, análise unificada e alarmes. Comparado com os sistemas de monitoramento tradicionais, o Prometheus tem as seguintes vantagens:

  • Fácil de gerenciar:

  1. A parte central do Prometheus possui apenas um único arquivo binário e não possui dependências de terceiros (banco de dados, cache, etc.). A única coisa necessária é um disco local, portanto não há risco de possíveis falhas em cascata.
  2. O Prometheus é baseado na arquitetura do modelo Pull e pode construir nosso sistema de monitoramento em qualquer lugar (computador local, ambiente de desenvolvimento, ambiente de teste).
  3. Para algumas situações complexas, você também pode usar o recurso Prometheus Service Discovery para gerenciar dinamicamente os destinos de monitoramento.
  • Monitore o status de execução interno do serviço:

  1. Pometheus incentiva os usuários a monitorar o status interno dos serviços.Com base na rica biblioteca de clientes do Prometheus, os usuários podem facilmente adicionar suporte ao Prometheus aos seus aplicativos, para que os usuários possam obter o status real de execução dos serviços e aplicativos.
  • Modelo de dados poderoso:

  1. Todos os dados de monitoramento coletados são salvos no banco de dados de série temporal integrado (TSDB) na forma de indicadores . Além do nome básico do indicador, todas as amostras também contêm um conjunto de rótulos usados ​​para descrever as características da amostra. Do seguinte modo:
http_request_status{code='200',content_path='/api/path',environment='produment'} => 
[value1@timestamp1,value2@timestamp2...] 

http_request_status{code='200',content_path='/api/path2',environment='produment'} => 
[value1@timestamp1,value2@timestamp2...]

 Cada série temporal é identificada exclusivamente por um nome de métrica (Metrics Name) e um conjunto de rótulos (Labels). Cada série temporal armazena uma série de valores de amostra em ordem cronológica.

  1. http_request_status: Nome da métrica
  2. {code='200',content_path='/api/path',environment='produment'}: rótulos que representam dimensões. Com base nesses rótulos, podemos facilmente agregar, filtrar e recortar dados de monitoramento.
  3. [value1@timestamp1,value2@timestamp2...]: Valores de amostra armazenados em ordem de tempo.
  • Linguagem de consulta poderosa PromQL

        O Prometheus possui uma poderosa linguagem de consulta de dados PromQL integrada. A consulta e agregação de dados de monitoramento podem ser realizadas por meio do PromQL. Ao mesmo tempo, PromQL também é usado na visualização de dados (como Grafana) e alertas. Perguntas semelhantes às seguintes podem ser facilmente respondidas com PromQL:

  1. Qual é a faixa de distribuição de 95% de latência do aplicativo no período anterior?
  2. Prever qual será o uso do espaço em disco após 4 horas?
  3. Quais são os 5 principais serviços com maior uso de CPU? (filtro)
  • Eficiente

        Para os sistemas de monitorização, um grande número de tarefas de monitorização conduzirá inevitavelmente à geração de uma grande quantidade de dados. O Prometheus pode processar esses dados com eficiência. Para uma única instância do Prometheus Server, ele pode processar:

  1. Milhões de indicadores de monitoramento
  2. Processe centenas de milhares de pontos de dados por segundo
  • Escalável

        Um Prometheus Sevrer independente pode ser executado em cada data center e em cada equipe. O suporte do Prometheus para clusters federados permite que várias instâncias do Prometheus gerem um cluster lógico.Quando a carga de trabalho de uma única instância do Prometheus Server é muito grande, ela pode ser expandida usando particionamento funcional (fragmentação) + cluster de federação (federação).

  • Fácil de integrar

        Os serviços de monitoramento podem ser criados rapidamente usando o Prometheus e podem ser facilmente integrados aos aplicativos. Atualmente suportado: SDKs clientes em Java, JMX, Python, Go, Ruby, .Net, Node.js e outras linguagens. Com base nesses SDKs, os aplicativos podem ser rapidamente incorporados ao monitoramento do Prometheus ou seus próprios programas de coleta de dados de monitoramento podem ser desenvolvidos . Ao mesmo tempo, os dados de monitoramento coletados por esses clientes não apenas oferecem suporte ao Prometheus, mas também a outras ferramentas de monitoramento, como o Graphite. Ao mesmo tempo, o Prometheus também suporta integração com outros sistemas de monitoramento: Graphite, Statsd, Collected, Scollector, muini, Nagios, etc. A comunidade Prometheus também fornece suporte para coleta de dados de monitoramento para um grande número de implementações de terceiros: JMX, CloudWatch, EC2, MySQL, PostgresSQL, Haskell, Bash, SNMP, Consul, Haproxy, Mesos, Bind, CouchDB, Django, Memcached, RabbitMQ , Redis, RethinkDB, Rsyslog, etc.

  • Visualização

  1. A UI do Prometheus que vem com o Prometheus Server pode facilmente consultar dados diretamente e oferece suporte à exibição direta de dados em formato gráfico. Ao mesmo tempo, a Prometheus também fornece uma solução independente de painel baseada em Ruby On Rails, Promdash.
  2. A mais recente ferramenta de visualização Grafana também oferece suporte completo ao Prometheus, e ícones de monitoramento mais bonitos podem ser criados com base no Grafana.
  3. Com base na API fornecida pelo Prometheus, você também pode implementar sua própria IU de visualização de monitoramento.
  • abertura

        De modo geral, quando precisamos monitorar um aplicativo, geralmente precisamos que o aplicativo forneça suporte para o protocolo do sistema de monitoramento correspondente, de modo que o aplicativo estará vinculado ao sistema de monitoramento selecionado. Para reduzir as restrições causadas por esta vinculação, para os tomadores de decisão, pode-se integrar diretamente o suporte do sistema de monitoramento na aplicação, ou criar um serviço separado externamente para se adaptar aos diferentes sistemas de monitoramento. Para o Prometheus, o formato de saída da biblioteca cliente usando o Prometheus não apenas suporta dados formatados do Prometheus, mas também pode gerar dados formatados que suportam outros sistemas de monitoramento, como o Graphite. Portanto, você pode até usar a biblioteca cliente do Prometheus para fazer com que seu aplicativo suporte a coleta de dados de monitoramento sem usar o Prometheus.

2.1 Arquitetura Prometheus

1.2.1 Componentes do ecossistema Prometheus

  • Servidor Prometheus: o servidor principal, responsável por coletar e armazenar dados de séries temporais
  • Bibliotecas cliente: instrumentação de código de aplicativo, incorporando indicadores de monitoramento em aplicativos monitorados
  • Pushgateway: gateway push, fornece um gateway push para suportar trabalhos de curta duração
  • exportador: Um componente de ingestão de dados – exportador desenvolvido especialmente para algumas aplicações, como HAProxy, StatsD, Graphite, etc.
  •  Alertmanager: um componente projetado especificamente para lidar com alertas

1.2.2 Compreensão da arquitetura

Como o Prometheus é projetado como um modelo de armazenamento dimensional, ele pode ser entendido como um sistema OLAP

1. Camada de computação de armazenamento

  • Servidor Prometheus, que contém mecanismo de armazenamento e mecanismo de computação.
  • O componente Retrieval é um componente de busca que extrai ativamente dados do indicador do Pushgateway ou Exporter.
  • A descoberta de serviço pode descobrir dinamicamente alvos a serem monitorados.
  • TSDB, armazenamento e consulta de núcleo de dados.
  • O servidor HTTP fornece serviços HTTP para o mundo exterior.

2. Camada de coleção

A camada de coleta é dividida em duas categorias, uma é de empregos com ciclo de vida curto e a outra é de empregos com ciclo de vida longo.

  • Trabalho curto: Diretamente através da API, o indicador é enviado ao Pushgateway no momento da saída.
  • Trabalhos longos: o componente Recuperação extrai dados diretamente do Trabalho ou do Exportador.

3. Camada de aplicação

A camada de aplicação é dividida principalmente em dois tipos, um é AlertManager e o outro é visualização de dados.

  • AlertManager está conectado ao Pagerduty e é um sistema pago de monitoramento e alarme. Pode realizar alarme por SMS, notificação de chamada se não houver confirmação em 5 minutos, se ainda não houver confirmação, avisar o gerente de plantão... Emial, enviar e-mail...
  • Visualização de dados

        Prometeu

        WebUI integrada

        Grafana

                Outros clientes desenvolvidos com base em API

2. Instalação do Prometheus

Site oficial: https://prometheus.io/

Endereço para download: https://prometheus.io/download

2.1 Instalar o servidor Prometheus

        Prometheus é escrito com base em Golang. O pacote de software compilado não depende de nenhuma dependência de terceiros. Você só precisa baixar o pacote binário da plataforma correspondente, descompactá-lo e adicionar a configuração básica para iniciar o Prometheus Server normalmente.

1. Carregue o pacote de instalação

        Carregue prometheus-2.29.1.linux-amd64.tar.gz para o diretório /opt/software da máquina virtual

2. Descompacte o pacote de instalação

        Descompacte-o no diretório /opt/module

tar -zxvf prometheus-2.29.1.linux-amd64.tar.gz -C /opt/module

3. Modifique o nome do diretório

cd /opt/module

mv prometheus-2.29.1.linux-amd64 prometheus-2.29.1

4. Modifique o arquivo de configuração prometheus.yml

[root@VM-12-8-centos prometheus-2.29.1]#  vim prometheus.yml

Adicione configuração no item de configuração scrape_configs:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
     # 添加 PushGateway 监控配置
 # 添加 PushGateway 监控配置
  - job_name: 'pushgateway'
    static_configs:
    - targets: ['要监控的服务ip:端口']
      labels:
        instance: pushgateway
    # 添加 Node Exporter 监控配置
  - job_name: 'node exporter'
    static_configs:
    - targets: ['要监控的服务ip:端口']

Certifique-se de prestar atenção ao formato yml! ! Como estou testando em uma única máquina, os alvos são preenchidos com IP local: 9090 (9090 é a porta padrão do prometheus)

Instruções de configuração:

1. Bloco de configuração global : controla a configuração global do servidor Prometheus

  • scrape_interval: Configure o intervalo de tempo para extração de dados, o padrão é 1 minuto.
  • Assessment_interval: Intervalo de tempo para verificação da regra (geração de alerta), o padrão é 1 minuto.

2. Bloco de configuração Rule_files: arquivo de configuração de regras

3. scrape_configs: bloco de configuração: configure o alvo da coleção relacionado e o alvo monitorado pelo prometheus. As próprias informações de execução do Prometheus podem ser acessadas por meio de HTTP, para que o Prometheus possa monitorar seus próprios dados de execução.

  • job_name: nome do trabalho de monitoramento
  • static_configs: Indica configuração de destino estático, que serve para extrair dados de um determinado destino.
  • Alvos: Especifique o alvo de monitoramento, que é realmente onde extrair os dados. O Prometheus extrairá dados de http://hadoop202:9090/metrics. O Prometheus pode carregar configurações automaticamente em tempo de execução. Precisa adicionar ao iniciar: --web.enable-lifecycle

2.2 Instale o Pushgateway

        Em circunstâncias normais, o Prometheus usa o modo pull para extrair dados de monitoramento de trabalhos ou exportadores que geram métricas (como NodeExporter, especializado em monitoramento de hosts). Mas o que queremos monitorar é o trabalho Flink no YARN. Obviamente, é difícil para o Prometheus descobrir automaticamente o envio e a conclusão do trabalho e extrair automaticamente os dados. PushGateway é um componente de trânsito. Ao configurar o trabalho Flink no YARN, envie a métrica para o PushGateway e o Prometheus a extrai do PushGateway.

1. Faça upload do pacote de instalação do Pushgateway

        Carregue pushgateway-1.4.1.linux-amd64.tar.gz para o diretório /opt/software da máquina virtual

2. Descompacte o pacote de instalação

        Descompacte-o no diretório /opt/module

tar -zxvf pushgateway-1.4.1.linux-amd64.tar.gz -C /opt/module

        Modificar nome do diretório

cd /opt/module

mv pushgateway-1.4.1.linux-amd64 pushgateway-1.4.1

2.3 Instalar o Node Exporter (instalação seletiva)

        No projeto arquitetônico do Prometheus, o Prometheus Server é o principal responsável pela coleta de dados, armazenamento e suporte a consultas externas de dados, enquanto a coleta real de dados de amostra de monitoramento é concluída pelo Exportador. Portanto, para podermos monitorar algo, como o uso da CPU do host, precisamos usar o Exporter. O Prometheus extrai periodicamente dados de amostra de monitoramento do endereço de serviço HTTP exposto pelo Exportador (geralmente /metrics).

         O exportador pode ser um conceito relativamente aberto, pode ser um programa executado de forma independente, independente da meta de monitoramento, ou pode ser diretamente incorporado à meta de monitoramento. Contanto que você possa fornecer dados de amostra de monitoramento em um formato padrão para o Prometheus. Para coletar os indicadores operacionais do host, como CPU, memória, disco e outras informações. Podemos usar o Node Exporter. O Node Exporter também é escrito em Golang e não possui dependências de terceiros. Ele só precisa ser baixado e descompactado para ser executado. A versão mais recente do exportador de nó do pacote binário pode ser obtida em https://prometheus.io/download/.

1. Carregue o pacote de instalação

        Carregue node_exporter-1.2.2.linux-amd64.tar.gz para o diretório /opt/software da máquina virtual

2. Descompacte o pacote de instalação

        Descompacte-o no diretório /opt/module

tar -zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /opt/module

        Modificar nome do diretório

cd /opt/module

mv node_exporter-1.2.2.linux-amd64 node_exporter-1.2.2

        Inicie e verifique se foi bem-sucedido na página

        Execute ./node_exporter em /opt/module/node_exporter-1.2.2

        Entrada do navegador: http://xxx.xxx.xxx.xxx:9100/metrics, você pode ver todos os dados de monitoramento do host atual obtidos pelo exportador do nó atual

 2.4 Inicie o servidor Prometheus, Pushgateway e Alertmanager

1. Execute o comando de inicialização no diretório do servidor Prometheus

nohup ./prometheus --config.file=prometheus.yml > ./prometheus.log 2>&1 &

2. Execute o comando de inicialização no diretório Pushgateway

nohup ./pushgateway 
--web.listen-address :9091 > ./pushgateway.log 2>&1 &

3. Inicie no diretório Alertmanager

nohup ./alertmanager --config.file=alertmanager.yml > ./alertmanager.log 2>&1 &

2.5 Abra a página da web para visualizar

  • Entrada do navegador: http://xxx.xxx.xxx.xxx:9090/
  • Clique em Status e selecione Destinos:

  •  prometheus, pushgateway e node exporter estão todos ativos, indicando que a instalação foi iniciada com sucesso:

3. Introdução ao PromQL

O Prometheus define exclusivamente uma série temporal por meio de um nome de métrica e um conjunto correspondente de rótulos. O nome do indicador reflete a identificação básica da amostra de monitoramento, e o rótulo fornece múltiplas dimensões de características para os dados coletados com base nesta característica básica. Os usuários podem filtrar, agregar e contar com base nessas dimensões de recursos para gerar uma nova série temporal calculada. PromQL é a linguagem de consulta de dados integrada do Prometheus , que fornece suporte para recursos avançados de consulta, agregação e operação lógica de dados de série temporal. E é amplamente utilizado em aplicações diárias do Prometheus, incluindo consulta de dados, visualização e processamento de alarmes. Pode-se dizer que o PromQL é a base de todos os cenários de aplicação do Prometheus. Compreender e dominar o PromQL é a primeira lição para começar a usar o Prometheus.

3.1  Consultar série temporal

        Depois que o Prometheus coletar os dados de amostra do indicador de monitoramento correspondente por meio do Exportador, podemos consultar os dados de amostra de monitoramento por meio do PromQL. Quando consultamos diretamente usando o nome do indicador de monitoramento, podemos consultar todas as séries temporais do indicador. como:

Equivalente a:

Esta expressão retornará todas as séries temporais com o nome de métrica prometheus_http_requests_total

Use  prometheus_http_requests_total{}[5m] para retornar todos os dados de amostra dos últimos cinco minutos na série temporal consultada.

PromQL não será descrito em detalhes aqui.

4. Integração de Prometheus e Grafana

        Grafana é um aplicativo de código aberto escrito em linguagem Go. É usado principalmente para exibição visual de dados de indicadores em grande escala. É a ferramenta de exibição de dados de série temporal mais popular em arquitetura de rede e análise de aplicativos. Atualmente, suporta séries temporais mais comumente usadas. bancos de dados. Endereço para download: https://grafana.com/grafana/download

4.1 Carregar e descompactar Grafana (Método 1)

        Carregue grafana-8.1.2.linux-amd64.tar.gz para o diretório /opt/software/ e descompacte:

 tar -zxvf grafana-enterprise-8.1.2.linux-amd64.tar.gz -C /opt/module/

        Abra a web: http://xxx.xxx.xxx:3000, nome de usuário e senha padrão: admin

4.2 Instale o Grafana usando docker (método 2)

  1. Puxe a imagem

[root@VM-12-8-centos ~]# docker pull grafana/grafana

2. Inicie o contêiner

docker run -d -p 3000:3000 --name=grafana -v /data/docker/grafana:/var/lib/grafana grafana/grafana

3. Visualize contêineres em execução

[root@VM-12-8-centos ~]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
6f766b468f19   grafana/grafana   "/run.sh"                3 minutes ago   Up 3 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp              grafana
1f205439cb44   mysql:5.7         "docker-entrypoint.s…"   3 weeks ago     Up 3 weeks     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
122ba76732eb   redis             "docker-entrypoint.s…"   3 weeks ago     Up 3 weeks     0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis

4.3 A conta e senha padrão para acesso ao grafana (porta 3000) é admin.

4.4 Adicionar fonte de dados Prometheus

Clique em Configuração, clique em Fontes de dados:

Configurar porta de endereço do prometheus

Clique em Salvar e testar para salvar o teste

4.5 Adicionar painel manualmente

Clique no sinal "+" na coluna da esquerda e selecione Painel

Para adicionar um novo painel, clique em Adicionar um painel vazio

 

Efeito: 

O texto acima é um resumo do aprendizado de Shang Silicon Valley 

Acho que você gosta

Origin blog.csdn.net/weixin_53922163/article/details/126911141
Recomendado
Clasificación