Système de journalisation léger Loki - installation et configuration

Suivez le compte public WeChat « Voici comment apprendre le cloud computing » et recherchez « 001 » pour obtenir 154 pages de notes d'apprentissage Linux compilées par Krypton Gan.

Loki se compare à EFK/ELK et est très populaire en raison de sa conception légère. Par rapport à EFK/ELK, Loki n'indexe pas le journal d'origine, mais indexe uniquement les balises du journal. Le journal est stocké par compression, généralement sous forme de fichier. .le stockage du système, de sorte que ses coûts d'exploitation sont inférieurs et ses ordres de grandeur plus efficaces.


Étant donné que le stockage de Loki est basé sur le système de fichiers, sa recherche de journal est basée sur le contenu, c'est-à-dire le texte de la ligne de journal, donc sa requête prend en charge LogQL, et les recherches et requêtes peuvent être effectuées en filtrant les balises dans la fenêtre de recherche.


Loki est divisé en deux parties : Loki est la partie du moteur de journalisation et Promtail est la fin de la collecte de journaux, qui est ensuite affichée via Grafana.


 

1. Installez 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

Créer un service 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

Le service démarre automatiquement après la mise sous tension

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

/usr/local/grafana/conf/defaults.ini est le
port de travail du fichier de configuration par défaut, la valeur par défaut est 3000.

Documentation officielle de Loki
https://grafana.com/docs/loki/latest/installation
Loki·Installation
À partir de la documentation officielle, Loki prend en charge l'installation du code source, Docker, Helm, Local et Tanka.
Je choisis local, qui est un binaire compilé Étapes d'installation du fichier
 :
URL miroir
https://hub.fastgit.org/grafana
1. Téléchargez le fichier exécutable binaire
https://hub.fastgit.org/grafana/loki/releases/download/v2.4.1/loki- linux- amd64.zip
décompressez loki-linux-amd64.zip && mv loki-linux-amd64 /usr/bin/loki
chmod o+x /usr/bin/loki
Créez un répertoire de travail et téléchargez le fichier de configuration
mkdir -p /data /loki
configuration de référence Le fichier
https://hub.fastgit.org/grafana/loki/blob/main/cmd/loki/loki-local-config.yaml
et le lok.yml final sont les suivants

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 

Créez les répertoires associés
mkdir -p /data/loki/{chunks, Rules, logs}
pour démarrer

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

script de démarrage

#!/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

Installez Promtail pour collecter les journaux.
Promtail est le terminal de collecte de journaux
. Téléchargez et installez.

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

Fichier de référence de configuration
Document du fichier de configuration du site officiel
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

Description du paramètre

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

promtail, similaire à tail, écoute uniquement les nouveaux journaux et ne lit pas tout le contenu du journal comme filebeat. C'est une différence avec filebeat. La configuration finale consiste à
activer la découverte de fichiers statique et automatique
mkdir -p /data/promtail
vim /data/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

Commencez
à créer des fichiers associés

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

Démarrer automatiquement au démarrage

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

Démarrer le 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

Vérifiez si cela fonctionne

[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

Ajoutez une sortie d'affichage dans Grafana.
Connectez-vous à http://Grafana:3000 et ajoutez la source de données Loki.
 

Afficher le journal

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41692221/article/details/131304818
conseillé
Classement