一、环境准备

7.1.1 安装Grafana

官网下载地址: https://grafana.com/grafana/download

由于官网下载很慢,所以可以配置一个阿里云的源

vi /etc/yum.repos.d/grafana.repo #内容如下

[grafana]
name=grafana
baseurl=https://mirrors.aliyun.com/grafana/yum/rpm
repo_gpgcheck=0
enabled=1
gpgcheck=0

用dnf安装grafana

dnf install -y grafana

启动服务

systemctl enable  grafana-server.service
systemctl start  grafana-server.service

配置grafana

浏览器访问 http://<your-monitor-server-ip>:3000

用户名和密码都是admin,第一次登录会让我们修改密码

改为中文

image/png

添加数据源

image/png

选择第一个: prometheus

image/png

导入模板

image/png

image/png

image/png

7.1.2 安装loki和promtail

下载包

官网下载地址: https://github.com/grafana/loki/releases

其中promtail为日志收集器,也需要一同安装

mkdir /opt/loki
cd /opt/loki
wget https://github.com/grafana/loki/releases/download/v3.5.8/loki-linux-amd64.zip
wget https://github.com/grafana/loki/releases/download/v3.5.8/promtail-linux-amd64.zip

解压

unzip loki-linux-amd64.zip
chmod +x loki-linux-amd64
unzip promtail-linux-amd64.zip
chmod +x promtail-linux-amd64

创建loki配置文件

cat > loki-config.yaml << EOF
# 全局配置
auth_enabled: false

# 服务器配置
server:
  http_listen_port: 3100

# Ingester 配置
ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 1h
  max_chunk_age: 1h
  chunk_target_size: 1048576
  chunk_retain_period: 30s
  wal:
    dir: /opt/loki/data/wal

# Schema 配置
schema_config:
  configs:
    - from: 2025-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

# 存储配置
storage_config:
  boltdb_shipper:
    active_index_directory: /opt/loki/data/boltdb-shipper-active
    cache_location: /opt/loki/data/boltdb-shipper-cache
  filesystem:
    directory: /opt/loki/data/chunks

# 限制配置
limits_config:
  reject_old_samples: true
  reject_old_samples_max_age: 168h
  allow_structured_metadata: false

# 表管理器配置
table_manager:
  retention_deletes_enabled: false
  retention_period: 0s
EOF

创建promtail配置文件

cat > promtail-config.yaml <<EOF
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: containers
  static_configs:
  - targets:
      - localhost
    labels:
      job: containerlogs
      __path__: /var/lib/docker/containers/*/*log

  pipeline_stages:
  - json:
      expressions:
        output: log
        stream: stream
        attrs:
  - json:
      expressions:
        tag:
      source: attrs
  - regex:
      expression: (?P<container_name>(?:[^|]*))\|
      source: tag
  - timestamp:
      format: RFC3339Nano
      source: time
  - labels:
      stream:
      container_name:
  - output:
      source: output

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

- job_name: sysmessage
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/messages
EOF

创建用户

id loki 2>/dev/null || useradd -s /sbin/nologin loki

创建数据目录,更改权限

mkdir -p /opt/loki/data/{wal,boltdb-shipper-active,boltdb-shipper-cache,chunks}
chown -R loki /opt/loki/data/

配置系统服务

## loki服务
cat > /etc/systemd/system/loki.service <<EOF
[Unit]
Description=Loki service
After=network.target

[Service]
Type=simple
User=loki
ExecStart=/opt/loki/loki-linux-amd64 --config.file=/opt/loki/loki-config.yaml

[Install]
WantedBy=multi-user.target
EOF

## promtail服务
cat >/etc/systemd/system/promtail.service  << EOF
[Unit]
Description=Promtail service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/opt/loki/promtail-linux-amd64 --config.file=/opt/loki/promtail-config.yaml

[Install]
WantedBy=multi-user.target
EOF

启动服务

systemctl daemon-reload
systemctl enable loki promtail
systemctl start loki promtail
systemctl status loki promtail # 检查状态

7.1.3 在Grafana中配置loki

浏览器访问grafana http://<your-monitor-server-ip>:3000/

连接 --> 数据源

image/png

搜索:loki

image/png

URL: http://<your-monitor-server-ip>:3100,这是Loki的服务地址

image/png

最下面点:“保存并测试”

image/png

点击“探索”

image/png

选择loki

image/png

image/png