Monitorando os arquivos de log usando o Prometeu

Monitorando os arquivos de log usando o Prometeu
Você pode usar o exportador de terceiros do Prometheus GROK_EXPORTER Para analisar arquivos de log e exportar métricas para Prometheus.

GROK_EXPORTER usa expressões regulares para analisar diferentes dados de arquivos de log. Os arquivos de log são correspondentes linha por linha usando uma expressão regular e os dados correspondentes são armazenados em diferentes variáveis. Então, os dados dessas variáveis ​​são exportados via GROK_EXPORTER.

Depois de adicionar o GROK_EXPORTER servidor para Prometeu como alvo, Prometeu pode monitorar os arquivos de log desejados via GROK_EXPORTER.

Neste artigo, mostrarei como instalar Grok_exporter no Linux (Ubuntu 20.04 LTS No meu caso), gerar arquivos de log dummy, configurar Grok_exporter para monitorar o arquivo de log dummy e monitor. Então vamos começar.

Índice:

  1. Coisas que você precisará
  2. Download e instalação de Grok_exporter
  3. Gerando um arquivo de log dummy com fakedata
  4. Configurando GROK_EXPORTER
  5. Adicionando Grok_exporter a Prometheus
  6. Métricas de raspagem de Grok_exporter com Prometheus
  7. Para onde ir a seguir?
  8. Conclusão
  9. Referências

Coisas que você precisará:

Você deve ter o Prometheus instalado no seu computador para poder monitorar arquivos de log com Prometheus.

Se você precisar de assistência para instalar o Prometeu no seu computador, leia o artigo como instalar o Prometeu no Ubuntu 20.04 LTS.

Baixando e instalando GROK_EXPORTER:

Nesta seção, mostrarei como baixar e instalar Grok_exporter no seu computador.

Primeiro, navegue para o ~/Downloads diretório da seguinte maneira:

$ CD ~/Downloads

Baixe a versão mais recente do GROK_EXPORTER Arquive com o seguinte comando:

$ wget https: // github.com/fstab/grok_exporter/liberações/download/v1.0.0.RC5/GROK_EXPORTER-1.0.0.RC5.Linux-AMD64.fecho eclair

GROK_EXPORTER Arquivo está sendo baixado. Pode demorar um pouco para completar.

Neste ponto, o GROK_EXPORTER Arquivo deve ser baixado.

Uma vez o GROK_EXPORTER O arquivo é baixado, você deve encontrar um novo arquivo GROK_EXPORTER-1.0.0.RC5.Linux-AMD64.fecho eclair no ~/Downloads diretório marcado na captura de tela abaixo.

$ ls -lh

Extraia o arquivo GROK_EXPORTER GROK_EXPORTER-1.0.0.RC5.Linux-AMD64.fecho eclair com o seguinte comando:

$ UNZIP GROK_EXPORTER-1.0.0.RC5.Linux-AMD64.fecho eclair

O arquivo Grok_exporter deve ser extraído.

Um novo diretório GROK_EXPORTER-1.0.0.RC5.Linux-amd64/ deve ser criado no ~/Downloads diretório.

$ ls -lh

Agora, renomeie o GROK_EXPORTER-1.0.0.RC5.Linux-amd64/ diretório para Grok-exporter/ e movê -lo no /optar diretório da seguinte maneira:

$ sudo mv -v Grok_exporter -1.0.0.RC5.Linux-AMD64 /Opt /Grok-Exporter

Agora, crie um arquivo de serviço Systemd Grok-exporter.serviço no /opt/grok-exporter diretório da seguinte maneira:

$ sudo nano/opt/grok-exporter/grok-exporter.serviço

Digite as seguintes linhas no Grok-exporter.serviço arquivo.

[Unidade]
Descrição = Prometheus Grok_exporter Server
[Serviço]
Reinicie = sempre
WorkingDirectory =/Opt/Grok-Exporter
Execstart =/opt/grok-exporter/grok_exporter--config =/opt/grok-exporter/config.yml
Execreload =/bin/kill -hup $ mainpid
Timeoutstopsec = 20s
Sendsigkill = não
[Instalar]
WantedBy = MultiUser.alvo

Depois de terminar, pressione + X seguido pela Y e Para salvar o Grok-exporter.serviço arquivo.

Para instalar o Grok-exporter.serviço Arquivo de serviço Systemd no seu computador, crie um link simbólico do /opt/grok-exporter/grok-exporter.serviço arquivo no /etc/Systemd/System diretório da seguinte maneira:

$ sudo ln -s/opt/grok-exporter/grok-exporter.Serviço/etc/Systemd/System/Grok-Exporter.serviço

Copie o Config.yml arquivo do /opt/grok-exporter/exemplo diretório para o /opt/grok-exporter diretório da seguinte maneira:

$ sudo cp -v/opt/grok -exporter/exemplo/config.yml/opt/grok-exporter/

OBSERVAÇÃO: O Config.yml O arquivo é usado para configurar GROK_EXPORTER. O exemplo (padrão) Config.yml O arquivo é bom para testar se GROK_EXPORTER está funcionando. Vou mostrar como configurar GROK_EXPORTER em uma seção posterior deste artigo.

Para que as mudanças do Systemd entrem em vigor, execute o seguinte comando:

$ sudo systemctl daemon -load

Agora, comece o Grok-exporter Serviço Systemd com o seguinte comando:

$ sudo SystemCtl Start Grok-Exporter.serviço

O Grok-exporter O serviço Systemd deve ser ativo/em execução, Como você pode ver na captura de tela abaixo. Isso significa GROK_EXPORTER está funcionando muito bem.

$ sudo Systemctl Status Grok-Exporter.serviço

Gerando um arquivo de log dummy com Fakedata:

Para gerar arquivos de log falsos, usarei Lucapette/Fakedata neste artigo. Existem muitas outras ferramentas que você pode usar para gerar arquivos de log falsos. Você pode usar qualquer um deles se quiser.

Primeiro, navegue para o ~/Downloads diretório da seguinte maneira:

$ CD ~/Downloads

Baixar Fakedata, Execute o seguinte comando:

$ wget https: // github.com/lucapette/fakedata/liberações/download/v1.1.2/Fakedata_1.1.2_LINUX_AMD64.alcatrão.gz

Fakedata Archive deve ser baixado.

Uma vez que o arquivo Fakedata for baixado, você deverá ver um novo Fakedata_1.1.2_LINUX_AMD64.alcatrão.gz no ~/Downloads diretório.

$ ls -lh

Extraia o arquivo Fakedata Fakedata_1.1.2_LINUX_AMD64.alcatrão.gz com o seguinte comando:

$ tar xvzf fakedata_1.1.2_LINUX_AMD64.alcatrão.gz

Você deve encontrar um novo executável Fakedata no ~/Downloads diretório marcado na captura de tela abaixo.

$ ls -lh

Mova o Fakedata binário para /usr/local/bin diretório da seguinte maneira:

$ sudo mv -v fakedata/usr/local/bin/

Agora, você deve poder acessar Fakedata Da linha de comando.

$ fakedata -Versão

Crie um novo script de shell Hello-http no /usr/local/bin diretório da seguinte maneira:

$ sudo nano/usr/local/bin/hello-http

Digite as seguintes linhas de códigos no Hello-http roteiro.

#!/BIN/BASH
Logfile =/tmp/hello-http.registro
enquanto é verdade
fazer
Fakedata Nome de usuário http.método enum:/,/login,/logout,/mensagens ipv4 - -limit 1 >> $ logfile
sono 1
feito
saída 0

Depois de terminar, pressione + X seguido pela Y e Para salvar o script hello-http.

Adicionar permissão de execução ao script do shell /usr/local/bin/hello-http do seguinte modo:

$ sudo chmod +x/usr/local/bin/hello-http

Para testar o Hello-http Script, execute o seguinte:

$ hello-http

Um arquivo de log /tmp/hello-http.registro deve ser gerado. Uma nova entrada deve ser adicionada ao arquivo de log a cada segundo.

$ cauda -f /tmp /hello -http.registro

Cada linha do /tmp/hello-http.registro O arquivo deve estar no seguinte formato,

Configurando GROK_EXPORTER:

Nesta seção, mostrarei como configurar GROK_EXPORTER Para monitorar o arquivo de log gerado /tmp/hello-http.registro.

Abra o GROK_EXPORTER arquivo de configuração /opt/grok-exporter/config.yml Com o editor de texto Nano da seguinte forma:

$ sudo nano/opt/grok-exporter/configuração.yml

O arquivo de configuração padrão deve parecer o seguinte.

No entrada Seção, você especifica o caminho do arquivo de log que você deseja monitorar.

Nesse caso, quero monitorar o arquivo de log /tmp/hello-http.registro.

Leia tudo deveria estar verdadeiro Se você deseja monitorar todo o arquivo de log e adicionar linhas recém -adicionadas do arquivo de log.

Leia tudo deveria estar falso Se você deseja monitorar apenas as linhas recém -adicionadas do arquivo de log.

Para extrair dados do arquivo de log /tmp/hello-http.registro, modificar a seção de métricas do Config.yml Arquivo o seguinte:

Aqui, o tipo métrico é contador. Grok_exporter suporta outros tipos métricos de Prometheus também. Se você deseja usar um tipo de métrica de Prometheus diferente, verifique a documentação oficial de Grok_exporter. Os links são dados abaixo.

GROK_EXPORTER - TIPO DE METRICA

Grok_exporter - tipo métrico de medidor

Grok_exporter - tipo métrico de histograma

GROK_EXPORTER - Tipo métrico de resumo

O nome da métrica será hello_http_total.

O ajuda Propriedade é uma breve descrição do que a métrica faz.

O corresponder A propriedade é usada para combinar dados diferentes de cada linha de arquivo de log e armazená -los em suas respectivas variáveis.

A primeira coluna do /tmp/hello-http.registro arquivo é o . O ; é da palavra do tipo padrão e os dados extraídos com este tipo serão armazenados na variável do usuário.

Da mesma maneira, a segunda coluna é e também é do tipo de padrão PALAVRA, e os dados extraídos serão armazenados no http_method variável.

A terceira coluna do arquivo de log é o caminho da URL. É do tipo de padrão Uripathparam, e será armazenado no http_path variável.

A quarta coluna do arquivo de log é o endereço IP. É do tipo de padrão IP, e será armazenado na variável ip_addr.

Existem muitos outros tipos de padrões que você pode usar para extrair dados do arquivo de log. Você pode encontrar todos os tipos de padrões suportados no /opt/Grok-Exporter/Patterns/Grok-Patterns arquivo.

$ sudo gato/opt/grok-exporter/padrões/grok-padrinhos

Depois que os dados são extraídos e armazenados em diferentes variáveis, você pode escolher as variáveis ​​que deseja exportar via GROK_EXPORTER.

As variáveis ​​que você deseja exportar via GROK_EXPORTER deve ser listado no Rótulos Seção marcada na captura de tela abaixo.

Você também pode criar novos tipos de padrões e combinar dados de cada linha de arquivo de log usando os tipos de padrões recém -criados.

Para criar novos tipos de padrões, você adiciona os tipos de padrões no Grok_patterns seção do Config.yml arquivo.

Por padrão, um tipo de padrão personalizado Exim_message é definido e pode ser usado para corresponder aos dados dos arquivos de log usando a expressão regular [A-ZA-Z]*.

Para corresponder ao status HTTP (i.e., Pegue, poste, coloque), você pode definir um novo tipo de padrão Http_status [a-z] 3,4 e use -o para corresponder aos dados do arquivo de log da seguinte forma. Espero que você tenha a idéia.

A versão final do Config.yml O arquivo é fornecido na captura de tela abaixo.

Depois de terminar de fazer alterações no Config.yml Arquivo, pressione + X seguido pela Y e para salvá -lo.

Para que as mudanças entrem em vigor, reinicie o Grok-exporter Serviço Systemd da seguinte maneira:

$ sudo systemctl reinicie.serviço

Se tudo estiver bem (você não cometeu nenhum erro no arquivo de configuração Config.yml), o Grok-exporter O serviço Systemd deve ser ativo/em execução.

$ sudo Systemctl Status Grok-Exporter.serviço

Adicionando Grok_exporter a Prometheus:

Agora, você tem que adicionar GROK_EXPORTER Prometheus como um alvo.

Primeiro, você precisa saber o endereço IP do computador onde você instalou GROK_EXPORTER.

No meu caso, o endereço IP é 192.168.3.149. Vai ser diferente para você. Então, certifique -se de substituí -lo por seu a partir de agora.

$ hostname -i

Em seguida, abra o arquivo de configuração do Prometheus Prometeu.yml Com o editor de texto Nano da seguinte forma:

$ sudo nano/opt/prometheus/prometheus.yml

No scrape_configs seção do Prometeu.yml Arquivo, adicione as linhas marcadas na captura de tela abaixo.

OBSERVAÇÃO: Não se esqueça de substituir o endereço IP alvo do Grok-exporter trabalho com o endereço IP do computador onde você tem GROK_EXPORTER instalado.

Para que as mudanças entrem em vigor, reinicie o Prometeu Serviço Systemd da seguinte maneira:

$ sudo systemctl reinicie prometeus.serviço

OBSERVAÇÃO: Eu instalei Prometeu no mesmo computador que GROK_EXPORTER. Portanto, o endereço IP do computador onde eu instalei o PromeTheus é o mesmo que Grok_exporter. No meu caso, é 192.168.3.149. Certifique -se de substituí -lo por seu a partir de agora.

Agora, visite a página de alvos de Prometheus no URL http: // 192.168.3.149: 9090/alvos, e você deve ver que o Grok-exporter O alvo está no ACIMA estado.

Métricas de raspagem de Grok_exporter com Prometheus:

Antes de começar a raspar métricas de GROK_EXPORTER Com Prometheus, inicie o gerador de arquivos de log dummy Hello-http com o seguinte comando:

$ hello-http

Agora, visite a página do gráfico de Prometheus em http: // 192.168.3.149: 9090/gráfico e execute a expressão hello_http_total.

Como você pode ver, os dados são extraídos do arquivo de log /tmp/hello-http.registro. Cada linha do arquivo de log é uma entrada separada em Prometheus.

Você pode filtrar os dados também. Por exemplo, digamos que você queira listar apenas as entradas onde o http_method é Get. Para fazer isso, execute a expressão hello_http_total http_method = "get".

Você também pode contar o número de entradas que correspondem a determinados critérios. Por exemplo, para contar o número de solicitações HTTP, você pode executar a expressão count (hello_http_total http_method = "get".

Como você pode ver, o número de solicitações HTTP é 30.

Se você executar a mesma expressão após alguns segundos, o número de solicitações HTTP GET deve aumentar.

Para onde ir a seguir?

Para saber mais sobre como configurar GROK_EXPORTER, Leia a página oficial de documentação de configuração GROK_EXPORTER.

Conclusão:

Neste artigo, mostrei como instalar Grok_exporter no Ubuntu 20.04 LTS. Eu também mostrei como gerar arquivos de log dummy com Fakedata e configurar GROK_EXPORTER para monitorar o arquivo de log gerado. Eu mostrei como adicionar Grok_exporter como um alvo no Prometheus e monitorar arquivos de log com Prometheus também.

Referências:

  1. FSTAB/GROK_EXPORTER: exportar métricas de Prometheus de dados de log não estruturados arbitrários.
  2. Lucapette/Fakedata: Utilitário da CLI para geração de dados falsos
  3. Plugin de filtro GROK | Referência de Logstash [7.15] | Elástico
  4. Logstash-Patterns/Grok-Patterns em Master · Hpcugent/Logstash-Patterns
  5. https: // github.com/Logstash-Plugins/Logstash-Patterns-Core/Tree/Master/Patterns/ECS-V1
  6. Logstash: coletar, analisar, transformar logs | Elástico
  7. GROK_EXPORTER/CONFIG.MD em mestre · fstab/Grok_exporter