Criar o Arquivo Básico loki-config.yaml
Nesta etapa, você criará um arquivo de configuração mínimo para o Loki. Este arquivo, loki-config.yaml, instrui o Loki sobre como executar, onde armazenar dados e qual esquema (schema) usar. Para este laboratório, configuraremos o Loki para usar o sistema de arquivos local (local filesystem) para armazenamento.
Usaremos o editor de texto nano para criar o arquivo. Execute o seguinte comando para abrir um novo arquivo chamado loki-config.yaml:
nano loki-config.yaml
Agora, copie e cole o seguinte conteúdo YAML no editor nano:
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /tmp/loki/index
cache_location: /tmp/loki/cache
filesystem:
directory: /tmp/loki/chunks
ruler:
alertmanager_url: http://localhost:9093
limits_config:
allow_structured_metadata: false
Esta configuração mantém tudo o que o Loki precisa sob /tmp/loki dentro do contêiner, o que evita problemas de permissão e mantém a configuração fácil de entender. Ela desativa a autenticação, habilita um ring em memória (in-memory ring) para uso em nó único (single-node) e armazena blocos (blocks) e índices no sistema de arquivos local.
Veja o que cada seção do arquivo faz:
auth_enabled: false: Desliga a autenticação para que você possa interagir com o Loki sem credenciais extras. Isso simplifica os testes locais; em produção, você habilitaria a autenticação.
server.http_listen_port: 3100: Diz ao Loki para escutar requisições HTTP na porta 3100. Quando você usa curl localhost:3100, você está acessando esta porta.
common.path_prefix: Define a pasta base onde o Loki armazena dados temporários dentro do contêiner. Todos os outros caminhos neste arquivo são construídos a partir de /tmp/loki, mantendo tudo em um só lugar.
common.storage.filesystem: Aponta o Loki para duas pastas para armazenar chunks de dados de log e arquivos de regras. Como não montamos nada especial no contêiner, usar /tmp/loki evita dores de cabeça com permissões.
common.ring.kvstore.store: inmemory: Mantém as informações de pertencimento (membership) na memória. Para um laboratório de nó único, isso é perfeito; um cluster real usaria um armazenamento compartilhado como Consul ou etcd.
schema_config: Define como o Loki deve organizar o índice para os dados de log. Definimos uma data de início, escolhemos o armazenamento boltdb-shipper e mantemos o índice no sistema de arquivos. O prefix e o period controlam como os arquivos são nomeados e com que frequência um novo arquivo de índice é criado (a cada 24 horas).
storage_config: Fornece as pastas exatas para o índice do boltdb-shipper (active_index_directory e cache_location) e para o armazenamento de chunks brutos. Todos os caminhos novamente residem sob /tmp/loki para manter a organização.
ruler.alertmanager_url: Prepara o componente ruler do Loki para enviar alertas para um Alertmanager em http://localhost:9093. Nada falhará se o Alertmanager não estiver rodando; o Loki simplesmente registrará um aviso ao tentar enviar um alerta.
limits_config.allow_structured_metadata: false: Desabilita um recurso avançado para que o Loki se atenha aos metadados de log de texto simples mais simples que os iniciantes esperam.
Pressione Ctrl+X para sair, depois Y para confirmar o salvamento e, finalmente, Enter para salvar o arquivo com o nome loki-config.yaml.