Primeiros passos com Grafana Loki
Publicados: 2021-05-01Vamos aprender os fundamentos do Grafana Loki, um sistema de agregação de log multilocatário.
Em um ambiente de produção, o tempo de inatividade é inaceitável. Isso pode levar a uma perda massiva de receita e reputação da empresa. Mas se você tiver um sistema de registro e monitoramento adequado, saberá como depurar esses cenários, que levam ao tempo de inatividade.
Isso ajuda a economizar custos e identificar problemas que podem ocorrer no futuro.
Hoje em dia, cada tamanho de organização está usando princípios e ferramentas DevOps. Contêineres e Kubernetes são os mais populares. E o monitoramento de tal sistema é feito de forma muito eficiente com o Prometheus. Mas onde Prometheus fica atrasado é a parte da exploração madeireira. Ele não fornece um sistema de registro centralizado, e é aí que Loki entra em cena.
O que é Grafana Loki?
Grafana Loki é um sistema de agregação de log multilocatário iniciado pela Grafana em 2018 e lançado sob a licença Apache 2.0. Este sistema foi desenvolvido inspirando-se em Prometheus. É usado principalmente com provedores de nuvem e com ferramentas como Prometheus e Grafana.
Loki é semelhante à pilha ELK / EFK, mas é mais fácil de configurar e operar com melhores funcionalidades. O Loki não indexa o conteúdo do log, em vez disso, indexa carimbos de data / hora e um conjunto de rótulos para um fluxo de log. Isso torna o índice menor, o que simplifica as operações e, eventualmente, reduz o custo.
Benefícios Loki
Abaixo estão os benefícios de usar Loki em sua pilha:
- Ao indexar apenas metadados, o Loki é muito econômico. A execução de índices para processamento de texto completo requer instâncias de RAM maiores, que são muito caras. Armazenar logs em armazenamento de objetos como S3 também o torna muito mais barato.
- Ele oferece suporte a multilocação usando tenantID, de forma que os inquilinos tenham seus dados armazenados separadamente.
- Você pode executar o Loki localmente para operações de pequena escala ou facilmente escaloná-lo horizontalmente para operações de grande escala.
- Ele usa o estilo dínamo para garantir a consistência do quorum para operações de leitura e gravação.
- Ele é configurado por padrão para ter 3 réplicas de logs para atender ao risco de travamentos do processo e saídas abruptas em que os logs são perdidos. Sim, haveria despesas extras, mas não tão altas, a integridade dos dados é mais crítica.
- Fácil de conectar com ferramentas populares como Kubernetes, Prometheus e visualização no Grafana.
Arquitetura Loki

A arquitetura Loki tem três componentes - Promtail , Loki e Grafana .
O Promtail é um agente que deve ser instalado em cada nó que executa seus aplicativos ou serviços. A principal responsabilidade do Promtail é descobrir o alvo, anexar os rótulos aos fluxos lo vindos dos pods e enviar esses registros para as instâncias Loki. O agente imediato rastreia os logs do sistema de arquivos local e envia os logs para o servidor central do Loki. Depois disso, você pode consultar seus logs usando o Grafana.
Casos de uso de Loki
Abaixo estão os casos de uso populares para usar um sistema de registro como o Loki.
- Business Intelligence: este é um caso de uso permanente, a criação de uma visão prática a partir de dados de log sempre pode ser muito útil. Loki pode ajudar a entender os dados de log e torná-lo capaz de criar novas estratégias para o crescimento do negócio. Por exemplo, por meio de dados de log de uma organização, pode ajudá-lo a saber as taxas de conversão de um canal de publicidade.
- Monitoramento: o Prometheus é muito utilizado na indústria para monitoramento. Mas você pode identificar muitas coisas monitorando seus registros com ferramentas como o Loki. Ele pode ajudá-lo a monitorar as taxas de erro em seu site, analisando os registros e enviando alertas assim que o limite for ultrapassado.
- Depuração e solução de problemas: Loki pode ajudar a equipe DevOps com algumas respostas rápidas, como quando o aplicativo travou, o motivo da falha, seu último status antes da falha etc.
- Segurança cibernética: nos últimos anos, os ataques cibernéticos a portais de comércio eletrônico aumentaram exponencialmente. Com a ajuda do Loki, você pode verificar os logs para identificar qualquer ameaça, problema ou atividade maliciosa que esteja acontecendo no sistema da sua organização. Se o hack fosse bem-sucedido, Loki ainda poderia ser útil para a equipe forense entender o que ocorria no sistema em detalhes. Isso os ajudará a rastrear os hackers.
- Conformidade: para cumprir as regulamentações do setor, as organizações devem manter seus registros de auditoria por até 7 anos. As autoridades locais podem auditar os logs a qualquer momento. Loki pode armazenar seus logs de auditoria com segurança.
Instalando Loki e Promtail
Vamos descobrir rapidamente como instalar e visualizar logs no Grafana. Nesta demonstração, usarei a configuração genérica que extrairá os logs de /var/log/*log
Vá para a página de lançamentos do Loki, role para baixo até Ativos, aqui você encontrará vários pacotes Loki e Promtail. Baixe o pacote Loki de acordo com o sistema que você está usando. Não baixe pacotes CLI ou canário Loki. Estou baixando loki-linux-amd64.zip e promtail-linux-amd64.zip para meu sistema Ubuntu.
Após a conclusão do download, extraia os arquivos do Loki e do Promtail e coloque-os em um único diretório.
[email protected]:~$ mkdir loki [email protected]:~$ mv loki-linux-amd64 promtail-linux-amd64 loki [email protected]:~$ cd loki/ [email protected]:~/loki$ ls loki-linux-amd64 promtail-linux-amd64Agora, baixe o arquivo de configuração genérico do Loki e Promtail.
[email protected]:~/loki$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml --2021-04-30 12:00:51-- https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ... Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1832 (1.8K) [text/plain] Saving to: 'loki-local-config.yaml' loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s in 0s 2021-04-30 12:00:51 (16.6 MB/s) - 'loki-local-config.yaml' saved [1832/1832] [email protected]:~/loki$ wget https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml --2021-04-30 12:05:07-- https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml Resolving github.com (github.com)... 13.234.210.38 Connecting to github.com (github.com)|13.234.210.38|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'promtail-local-config.yaml' promtail-local-config.yaml [ <=> ] 109.16K --.-KB/s in 0.002s 2021-04-30 12:05:08 (66.8 MB/s) - 'promtail-local-config.yaml' saved [111779] [email protected]:~/loki$ ls loki-linux-amd64 loki-local-config.yaml promtail-linux-amd64 promtail-local-config.yamlPara iniciar o Loki, execute o comando abaixo com o arquivo de configuração do Loki. Isso iniciará o Loki e exibirá os logs do Loki no terminal.

[email protected]:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Starting Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)" level=info ts=2021-04-30T16:08:37.990856871Z caller=server.go:229 http=[::]:3100 grpc=[::]:9096 msg="server listening on addresses" level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="starting boltdb shipper in 0 mode" level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="cleaning up mapped rules directory" path=/tmp/loki/rules-temp level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="unable to read rules directory" path=/tmp/loki/rules-temp err="open /tmp/loki/rules-temp: no such file or directory" level=info ts=2021-04-30T16:08:37.993520927Z caller=table_manager.go:171 msg="uploading tables" level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=initialising module=store level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=initialising module=memberlist-kv level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=initialising module=server level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=initialising module=ingester level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recovering from checkpoint"Para iniciar o Promtail, execute o comando abaixo com o arquivo de configuração do Promtail. O Promtail é necessário para obter os logs no Loki.
[email protected]:~/loki$ ./promtail-linux-amd64 -config.file=promtail-local-config.yaml level=info ts=2021-04-30T16:35:52.775998059Z caller=server.go:229 http=[::]:9080 grpc=[::]:42557 msg="server listening on addresses" level=info ts=2021-04-30T16:35:52.776283661Z caller=main.go:112 msg="Starting Promtail" version="(version=2.2.1, branch=HEAD, revision=babea82e)" level=info ts=2021-04-30T16:35:57.776226323Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}" ts=2021-04-30T16:35:57.776902427Z caller=log.go:124 level=info msg="Seeked /var/log/fontconfig.log - &{Offset:11055 Whence:0}" level=info ts=2021-04-30T16:35:57.776983546Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/auth.log level=info ts=2021-04-30T16:35:57.777009023Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/fontconfig.log ts=2021-04-30T16:35:57.777094698Z caller=log.go:124 level=info msg="Seeked /var/log/lastlog - &{Offset:0 Whence:0}" ts=2021-04-30T16:35:57.777712594Z caller=log.go:124 level=info msg="Seeked /var/log/apport.log - &{Offset:0 Whence:0}" ts=2021-04-30T16:35:57.778200383Z caller=log.go:124 level=info msg="Seeked /var/log/alternatives.log - &{Offset:456 Whence:0}" ts=2021-04-30T16:35:57.780467419Z caller=log.go:124 level=info msg="Seeked /var/log/syslog - &{Offset:56911 Whence:0}" level=info ts=2021-04-30T16:35:57.780646032Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/kern.log level=info ts=2021-04-30T16:35:57.781289004Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}" level=info ts=2021-04-30T16:35:57.787770104Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/grafana/grafana.log ts=2021-04-30T16:35:57.782276009Z caller=log.go:124 level=info msg="Seeked /var/log/grafana/grafana.log - &{Offset:0 Whence:0}"Visualize o registro usando Loki e Grafana
Grafana fornece suporte integrado para Loki. Loki já está presente nas fontes de dados da Grafana.
Passo 1: Acesse Grafana Configurations e clique em “Data Sources”.

Etapa 2: Em Fontes de dados, você pode pesquisar a fonte por nome ou tipo.

Etapa 3: Pesquise pelo nome Loki. Você pode ver que esta fonte de dados já está presente no Grafana. Clique em Selecionar.

Etapa 4: digite o nome que deseja dar à fonte de dados e coloque http://localhost:3100 (mude para IP do servidor se o Loki estiver rodando em um servidor diferente do Grafana) na URL porque iniciamos o Loki na porta 3100.

Clique no botão Testar e Salvar na parte inferior. Se você configurou o Loki corretamente, receberá a mensagem abaixo exibida em uma caixa verde.

Etapa 5: clique na guia Explorar no lado esquerdo. Selecione Loki na lista suspensa de seleção da fonte de dados. Agora, gostaria de visualizar a atividade dos logs do Grafana. Para fazer isso, você precisa adicionar a consulta {filename = ”/ var / log / grafana / grafana.log”} no navegador de registro. As barras verdes abaixo são entradas de eventos no arquivo de log.

Você pode selecionar o intervalo de tempo para o qual deseja que a visualização chegue no painel e também pode definir o intervalo de atualização da consulta, após o qual a consulta será executada novamente. Para ver mais detalhes dos logs, role para baixo e clique em uma das entradas de log, ele fornecerá todos os tipos de informações relacionadas ao log.

Está lindo, não é?
Então, tudo se resumia a começar. Eu recomendo fortemente que você dê uma olhada no vídeo do webinar abaixo explicando a capacidade de observação com Loki.
Conclusão
Um sistema distribuído é composto por muitos aplicativos ou microsserviços, cada um com toneladas de logs. Você precisaria de uma maneira econômica de coletar os logs, armazená-los e, em seguida, fazer uso deles. Loki é a solução perfeita para esses casos. Na verdade, você pode reduzir cerca de 75% dos custos de registro e monitoramento integrando o Loki ao seu ambiente de produção.
Loki também está disponível através do Grafana Cloud, seria bom experimentá-lo se você não quiser passar pelo processo de instalação.
A seguir, conheça a Grafana Tempo.
