Sistema de registro ligero Loki: instalación y configuración

Siga la cuenta pública de WeChat "Así es como debe aprender computación en la nube" y busque "001" para obtener 154 páginas de notas de aprendizaje de Linux compiladas por Krypton Gan.

Loki apunta a EFK/ELK y es muy popular debido a su diseño liviano. En comparación con EFK/ELK, Loki no indexa el registro original, solo indexa las etiquetas del registro. El registro se almacena mediante compresión, generalmente como un archivo. almacenamiento del sistema, por lo que sus costos operativos son menores y órdenes de magnitud más eficientes.


Dado que el almacenamiento de Loki se basa en el sistema de archivos, su búsqueda de registros se basa en el contenido, es decir, el texto en la línea de registro, por lo que su consulta admite LogQL y las búsquedas y consultas se pueden realizar filtrando etiquetas en la ventana de búsqueda.


Loki se divide en dos partes: Loki es la parte del motor de registros y Promtail es el extremo de la recopilación de registros, que luego se muestra a través de Grafana.


 

1. Instalar grafana

wget https://dl.grafana.com/oss/release/grafana-8.2.5.linux-amd64.tar.gz
tar -zxvf grafana-8.2.5.linux-amd64.tar.gz
mv grafana-8.2.5 /usr/local/grafana

Crear servicio Systemd

cat>/usr/lib/systemd/system/grafana-server.service<<EOF
[Unit]
Description=Grafana Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/grafana
ExecStart=/usr/local/grafana/bin/grafana-server

Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

El servicio se inicia automáticamente después del encendido.

systemctl daemon-reload
systemctl enable grafana-server.service && systemctl start grafana-server.service

/usr/local/grafana/conf/defaults.ini es el
puerto de trabajo del archivo de configuración predeterminado, el valor predeterminado es 3000.

Documentación oficial de Loki
https://grafana.com/docs/loki/latest/installation
Loki·Instalación
De la documentación oficial, Loki admite la instalación del código fuente, Docker, Helm, Local y Tanka.
Elijo local, que es un binario compilado. ejecutable
Pasos de instalación del archivo:
URL espejo
https://hub.fastgit.org/grafana
1. Descargue el archivo ejecutable binario
https://hub.fastgit.org/grafana/loki/releases/download/v2.4.1/loki- linux- amd64.zip
descomprimir loki-linux-amd64.zip && mv loki-linux-amd64 /usr/bin/loki
chmod o+x /usr/bin/loki
Cree un directorio de trabajo y descargue el archivo de configuración
mkdir -p /data Configuración de referencia de /loki
El archivo
https://hub.fastgit.org/grafana/loki/blob/main/cmd/loki/loki-local-config.yaml
y el lok.yml final son los siguientes

vim /data/loki/lok.yml

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  path_prefix: /data/loki
  storage:
    filesystem:
      chunks_directory: /data/loki/chunks
      rules_directory: /data/loki/rules
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h
##报警地址
ruler:
  alertmanager_url: http://localhost:9093
  
#启用Redis缓存配置
auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  path_prefix: /data/loki
  storage:
    filesystem:
      chunks_directory: /data/loki/chunks
      rules_directory: /data/loki/rules
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

frontend:
  compress_responses: true

query_range:
  split_queries_by_interval: 24h
  results_cache:
    cache:
      redis:
        endpoint: 192.168.1.6:6379
        expiration: 10s
        db: 1
  cache_results: true

chunk_store_config:
  chunk_cache_config:
    redis:
      endpoint: 192.168.1.6:6379
      expiration: 10s
      db: 1
  write_dedupe_cache_config:
    redis:
      endpoint: 192.168.1.6:6379
      expiration: 1h
      db: 2

ruler:
  alertmanager_url: http://localhost:9093 

Cree directorios relacionados
mkdir -p /data/loki/{chunks, rules, logs}
para comenzar

nohup  loki  --config.file=/data/loki/loki.yml  > /data/loki/logs/loki.log 2>&1 &

guión de inicio

#!/bin/bash
CONFILE='/data/loki/loki.yml'
PIDFILE='/data/loki/loki.pid'
LOGFILE='/data/loki/loki.log'
OPTS='/usr/bin/loki --config.file='
PID=`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`
if [ ! ${PID}  ]; then
nohup ${OPTS}${CONFILE} >${LOGFILE} 2>&1 &  echo $! >${PIDFILE} &
sleep 3
echo "loki PID:`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`"
PID=`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`
if [ ! ${PID}  ] ; then  echo "loki config error, tail -f ${LOGFILE}!"
fi
else
echo "loki is running,PID:`cat ${PIDFILE}`"
fi

Instale Promtail para recopilar registros.
Promtail es el terminal de recopilación de registros
. Descargue e instale.

wget  https://hub.fastgit.org/grafana/loki/releases/download/v2.4.1/promtail-linux-amd64.zip
unzip promtail-linux-amd64.zip && mv promtail-linux-amd64 /usr/bin/promtail && chmod o+x /usr/bin/promtail

Archivo de referencia de configuración
Documento del archivo de configuración del sitio web oficial
https://grafana.com/docs/loki/latest/clients/promtail/configuration/

https://hub.fastgit.org/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://localhost:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*log

Descripción de parámetros

server部分定义监听端口,positions定义读取的文件偏移量存储位置,clients定义loki接口地址,最后一部分scrape_configs是重点部分
promtail通过scrape_configs部分配置收集日志的相关信息,以测试配置文件为例:
job_name 用来区分日志组
static_configs 收集日志的静态配置
targets 收集日志的节点,这个参数其实是在自动发现的时候使用的
labels 定义一个要收集的日志文件和一组可选的附加标签
job 标签名称,在grafana索引的时候用到的标签名称
__path__ 定义日志收集的文件或路径,支持正则
配置文件修改完成后,就可以启动promtail了,和loki启动方法一样,通过--config.file指定配置文件启动

Promtail, similar a tail, solo escucha nuevos registros y no lee todo el contenido del registro como filebeat. Esta es la diferencia con filebeat. La configuración final es habilitar el descubrimiento de archivos
estático y automático
mkdir -p /data/promtail
vim /datos/promtail/promtail.yml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://192.168.1.6:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*log
  file_sd_configs:
    - files:
      - /data/promtail/log_file/*.json
      refresh_interval: 1m

Comience
a crear archivos relacionados

mkdir -p /data/promtail/log_file/
文件自动发现配置
vim /data/promtail/log_file/mail.json
[
  {
    "targets": [ "localhost" ],
    "labels": {
      "__path__": "/var/log/maillog",
      "job": "mailserver"
    }
  }
]

Iniciar automáticamente al arrancar

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

Iniciar script
vim /data/promtail/start.sh

#!/bin/bash
CONFILE='/data/promtail/promtail.yml'
PIDFILE='/data/promtail/promtail.pid'
LOGFILE='/data/promtail/promtail.log'
OPTS='/usr/bin/promtail --config.file='
PID=`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`
if [ ! ${PID}  ]; then
nohup ${OPTS}${CONFILE} >${LOGFILE} 2>&1 &  echo $! >${PIDFILE} &
sleep 3
echo "promtail PID:`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`"
PID=`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`
if [ ! ${PID}  ] ; then  echo "promtail config error, tail -f ${LOGFILE}!"
fi
else
echo "promtail is running,PID:`cat ${PIDFILE}`"
fi

chmod o+x /data/promtail/start.sh

Comprueba si funciona

[root@openrestry promtail]# netstat -ntpl | grep loki
tcp6       0      0 :::9096                 :::*                    LISTEN      1721/loki
tcp6       0      0 :::3100                 :::*                    LISTEN      1721/loki
[root@openrestry promtail]# netstat -ntpl | grep promtail
tcp6       0      0 :::40210                :::*                    LISTEN      1833/promtail
tcp6       0      0 :::9080                 :::*                    LISTEN      1833/promtail

Agregue salida de visualización en Grafana.
Inicie sesión en http://Grafana:3000 y agregue la fuente de datos de loki.
 

Ver registro

Supongo que te gusta

Origin blog.csdn.net/weixin_41692221/article/details/131304818
Recomendado
Clasificación