Loki日志收集

1、Loki部署

  • 二进制文件下载解压
wget https://github.com/grafana/loki/releases/download/v2.8.4/loki-linux-amd64.zip
unzip loki-linux-amd64.zip
mkdir -p /usr/local/loki/{etc,logs,bin}
mv loki-linux-amd64 /usr/local/loki/bin/loki
  • loki配置文件
vim /usr/local/loki/etc/local-config.yaml

auth_enabled: false

server:
  http_listen_port: 3100

common:
  path_prefix: /loki
  storage:
    filesystem:
      chunks_directory: /loki/chunks
      rules_directory: /loki/rules
  replication_factor: 1
  ring:
    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
  • systemd文件
vim /usr/lib/systemd/system/loki.service

[Unit]
Description=Loki service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/loki/bin/loki -config.file /usr/local/loki/etc/local-config.yaml

[Install]
WantedBy=multi-user.target
  • 启动loki服务
systemctl start loki.service

2、Minio作为后端存储

3、Promtail作为收集agent

  • 二进制文件下载
wget https://github.com/grafana/loki/releases/download/v2.8.4/promtail-linux-amd64.zip
unzip promtail-linux-amd64.zip
mkdir -p /usr/local/promtail/{etc,logs,bin}
mv promtail-linux-amd64 /usr/local/promtail/bin/promtail
  • promtail配置文件
vim /usr/local/promtail/etc/config.yaml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

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

- job_name: system-message
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs-message
      __path__: /var/log/messages

- job_name: nginx
  pipeline_stages:
  - replace:
      expression: '(?:[0-9]{1,3}\.){3}([0-9]{1,3})'
      replace: '***'
  static_configs:
  - targets:
      - localhost
    labels:
      job: nginx_access_log
      host: localhost
      agent: promtail
      __path__: /var/log/nginx/*access.log
  • systemd文件
vim /usr/lib/systemd/system/promtail.service

[Unit]
Description=Promtail service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/promtail/bin/promtail -config.file /usr/local/promtail/etc/config.yaml

[Install]
WantedBy=multi-user.target
  • 启动promtail
systemctl start promtail
  • 验证数据
curl "127.0.0.1:9080/metrics"

4、Grafana可视化展示

  • docker部署grafana
cat docker-compose.yaml

version: "3"
services:
  grafana:
    image: grafana/grafana:10.0.4
    container_name: grafana
    restart: unless-stopped
    ports:
     - '3000:3000'
    environment:
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
docker-compose up -d 
  • 配置数据源

由于granfana是由docker部署,数据源的URL地址,需要填写服务器IP的地址

loki-2.png

loki-1.png