[root@loki118 log]# cat /etc/os-release 
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Halberd)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"
ANSI_COLOR="0;31"

[root@loki118 log]# uname -a
Linux loki118 4.19.90-89.11.v2401.ky10.x86_64 #1 SMP Tue May 7 18:33:01 CST 2024 x86_64 x86_64 x86_64 GNU/Linux

一、整体架构
+-------------------+
|   Grafana         |
| 日志查询/告警      |
+---------+---------+
          |
          v
+-------------------+
|      Loki         |
| 日志存储引擎       |
+---------+---------+
          ^
          |
+-------------------+
|    Promtail       |
| 日志采集器         |
+-------------------+

采集:
- Oracle alert.log
- PostgreSQL 日志
- Linux /var/log
- 应用日志

二、版本推荐(兼容 Kylin V10)

建议固定稳定版本:
组件版本
Grafana 10.4.2
Loki 2.9.8
Promtail 2.7.5

原因:
对 kernel 4.x 兼容较好、稳定、社区验证多、不依赖新 glibc 特性

三、服务器规划
日志中心服务器(单机)
hostname:loki118
IP:192.192.103.118
配置:
CPU    8 Core
内存    16G
磁盘    200G
文件系统    XFS

四、离线安装包下载
1. Grafana 下载
官方:
https://grafana.com/grafana/download/10.4.2?edition=oss&utm_source=chatgpt.com
2. Loki 下载
官方下载:
https://github.com/grafana/loki/releases/tag/v2.9.8?utm_source=chatgpt.com
3. Promtail 下载
官方下载:
https://github.com/grafana/loki/releases/tag/v2.7.5?utm_source=chatgpt.com
#解压需要unzip,如果系统不自带,需要安装unzip包

安装包汇总如下:
[root@loki118 soft]# ll
总用量 166868
-rw-r--r-- 1 root root 125801637  5月 26 16:22 grafana-enterprise-10.4.2.linux-amd64.tar.gz
-rw-r--r-- 1 root root  20489270  5月 26 16:22 loki-linux-amd64.zip
-rw-r--r-- 1 root root  24573797  5月 27 09:39 promtail-linux-amd64.zip

五、Kylin V10 系统准备
1.创建目录
mkdir -p /data/log-platform/{grafana,loki,promtail}
mkdir -p /data/loki/{chunks,index}
mkdir -p /data/logs

六、安装grafana
1. 解压
cd /data/log-platform/grafana
tar -zxvf /soft/grafana-10.4.2.linux-amd64.tar.gz
重命名:
mv grafana-v10.4.2 grafana
2. 创建数据目录
mkdir -p /data/grafana/{data,logs}
3. 修改配置
编辑:
vi /data/log-platform/grafana/grafana/conf/custom.ini
添加:
[server]
http_port = 3000

[paths]
data = /data/grafana/data
logs = /data/grafana/logs

七、安装 Loki
1. 解压
cd /data/log-platform/loki
unzip /soft/loki-linux-amd64.zip
重命名:
mv loki-linux-amd64 loki
chmod +x loki
2. 创建配置
vi /data/log-platform/loki/loki.yaml
内容:
auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9095

common:
  instance_addr: 127.0.0.1
  path_prefix: /tmp/loki
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2024-01-01
      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
    shared_store: filesystem

  filesystem:
    directory: /tmp/loki/chunks

limits_config:
  retention_period: 168h

chunk_store_config:
  max_look_back_period: 168h

table_manager:
  retention_deletes_enabled: true
  retention_period: 168h

analytics:
  reporting_enabled: false
  
八、安装 Promtail
1. 解压
cd /data/log-platform/promtail
unzip /soft/promtail-linux-amd64.zip
重命名:
mv promtail-linux-amd64 promtail
chmod +x promtail
2. 创建配置
vi /data/log-platform/promtail/promtail.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: linux
  static_configs:
  - targets:
      - localhost
    labels:
      job: linux
      host: log-center
      __path__: /var/log/*.log
      
九、systemd 服务配置
1. Loki 服务
vi /usr/lib/systemd/system/loki.service
内容:
[Unit]
Description=Loki
After=network.target

[Service]
Type=simple
ExecStart=/data/log-platform/loki/loki \
-config.file=/data/log-platform/loki/loki.yaml

Restart=always

[Install]
WantedBy=multi-user.target

2. Promtail 服务
vi /usr/lib/systemd/system/promtail.service

内容:
[Unit]
Description=Promtail
After=network.target

[Service]
Type=simple
ExecStart=/data/log-platform/promtail/promtail \
-config.file=/data/log-platform/promtail/promtail.yaml

Restart=always

[Install]
WantedBy=multi-user.target

3. Grafana 服务
vi /usr/lib/systemd/system/grafana.service

内容:
[Unit]
Description=Grafana
After=network.target

[Service]
Type=simple

ExecStart=/data/log-platform/grafana/grafana/bin/grafana-server \
--homepath=/data/log-platform/grafana/grafana

Restart=always

[Install]
WantedBy=multi-user.target

十、启动服务
systemctl daemon-reload

systemctl enable loki
systemctl enable promtail
systemctl enable grafana

systemctl start loki
systemctl start promtail
systemctl start grafana
#如果服务启动失败,可以手工启动服务测试,查看具体报错,比如查看promtail具体报错,如果启动后无报错不退出则正常:
/data/log-platform/promtail/promtail \
-config.file=/data/log-platform/promtail/promtail.yaml

十一、检查服务
[root@loki118 promtail]# systemctl status grafana
● grafana.service - Grafana
   Loaded: loaded (/usr/lib/systemd/system/grafana.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2026-05-26 16:43:25 CST; 17h ago
 Main PID: 36604 (grafana)
    Tasks: 17
   Memory: 75.5M
   CGroup: /system.slice/grafana.service
           └─36604 grafana server --homepath=/data/log-platform/grafana/grafana

5月 27 10:16:03 loki118 grafana-server[36604]: logger=tsdb.loki endpoint=queryData pluginId=loki dsName=loki dsUID=dfna6ymn03sowb uname=admin fromAlert=false t=2026-05-27T10:16:03.435210071+08:00 level=info msg="Response parsed from loki" duration=115.753µs metricDat>5月 27 10:16:37 loki118 grafana-server[36604]: logger=infra.usagestats t=2026-05-27T10:16:37.460551425+08:00 level=info msg="Usage stats are ready to report"
5月 27 10:18:07 loki118 grafana-server[36604]: logger=tsdb.loki endpoint=queryData pluginId=loki dsName=loki dsUID=dfna6ymn03sowb uname=admin fromAlert=false t=2026-05-27T10:18:07.839514581+08:00 level=info msg="Prepared request to Loki" duration=23.084µs queriesLeng>5月 27 10:18:07 loki118 grafana-server[36604]: logger=tsdb.loki endpoint=queryData pluginId=loki dsName=loki dsUID=dfna6ymn03sowb uname=admin fromAlert=false t=2026-05-27T10:18:07.857391583+08:00 level=info msg="Response received from loki" duration=17.771393ms stage>5月 27 10:18:07 loki118 grafana-server[36604]: logger=tsdb.loki endpoint=queryData pluginId=loki dsName=loki dsUID=dfna6ymn03sowb uname=admin fromAlert=false t=2026-05-27T10:18:07.857815204+08:00 level=info msg="Response parsed from loki" duration=336.627µs metricDat>5月 27 10:18:07 loki118 grafana-server[36604]: logger=tsdb.loki endpoint=queryData pluginId=loki dsName=loki dsUID=dfna6ymn03sowb uname=admin fromAlert=false t=2026-05-27T10:18:07.862043701+08:00 level=info msg="Prepared request to Loki" duration=85.725µs queriesLeng>5月 27 10:18:07 loki118 grafana-server[36604]: logger=tsdb.loki endpoint=queryData pluginId=loki dsName=loki dsUID=dfna6ymn03sowb uname=admin fromAlert=false t=2026-05-27T10:18:07.876097506+08:00 level=info msg="Response received from loki" duration=13.963566ms stage>5月 27 10:18:07 loki118 grafana-server[36604]: logger=tsdb.loki endpoint=queryData pluginId=loki dsName=loki dsUID=dfna6ymn03sowb uname=admin fromAlert=false t=2026-05-27T10:18:07.876292781+08:00 level=info msg="Response parsed from loki" duration=112.565µs metricDat>5月 27 10:25:05 loki118 grafana-server[36604]: logger=cleanup t=2026-05-27T10:25:05.48315317+08:00 level=info msg="Completed cleanup jobs" duration=42.756129ms
5月 27 10:35:06 loki118 grafana-server[36604]: logger=cleanup t=2026-05-27T10:35:06.786158661+08:00 level=info msg="Completed cleanup jobs" duration=1.345561517s
[root@loki118 promtail]# systemctl status loki
● loki.service - Loki
   Loaded: loaded (/usr/lib/systemd/system/loki.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2026-05-26 16:51:47 CST; 17h ago
 Main PID: 37058 (loki)
    Tasks: 14
   Memory: 92.8M
   CGroup: /system.slice/loki.service
           └─37058 /data/log-platform/loki/loki -config.file=/data/log-platform/loki/loki.yaml

5月 27 10:36:47 loki118 loki[37058]: level=info ts=2026-05-27T02:36:47.128630138Z caller=checkpoint.go:336 msg="attempting checkpoint for" dir=/tmp/loki/wal/checkpoint.000213
5月 27 10:36:47 loki118 loki[37058]: level=info ts=2026-05-27T02:36:47.128764536Z caller=util.go:94 table-name=index_20600 file-name=loki118-1779785481716547054-1779848169.gz size="45 kB" msg="downloaded file" total_time=5.968322ms
5月 27 10:36:47 loki118 loki[37058]: level=info ts=2026-05-27T02:36:47.128990557Z caller=table_manager.go:271 index-store=boltdb-shipper-2024-01-01 msg="query readiness setup completed" duration=2.86µs distinct_users_len=0 distinct_users=
5月 27 10:37:47 loki118 loki[37058]: level=info ts=2026-05-27T02:37:47.121649342Z caller=table_manager.go:171 index-store=boltdb-shipper-2024-01-01 msg="handing over indexes to shipper"
5月 27 10:37:47 loki118 loki[37058]: level=info ts=2026-05-27T02:37:47.121707634Z caller=table.go:318 msg="handing over indexes to shipper index_20600"
5月 27 10:37:47 loki118 loki[37058]: level=info ts=2026-05-27T02:37:47.121693846Z caller=table_manager.go:136 index-store=boltdb-shipper-2024-01-01 msg="uploading tables"
5月 27 10:37:47 loki118 loki[37058]: level=info ts=2026-05-27T02:37:47.121720593Z caller=table.go:334 msg="finished handing over table index_20600"
5月 27 10:37:47 loki118 loki[37058]: level=info ts=2026-05-27T02:37:47.121726235Z caller=index_set.go:86 msg="uploading table index_20600"
5月 27 10:37:47 loki118 loki[37058]: level=info ts=2026-05-27T02:37:47.121735228Z caller=index_set.go:107 msg="finished uploading table index_20600"
5月 27 10:37:47 loki118 loki[37058]: level=info ts=2026-05-27T02:37:47.12174187Z caller=index_set.go:185 msg="cleaning up unwanted indexes from table index_20600"
[root@loki118 promtail]# systemctl status promtail
● promtail.service - Promtail
   Loaded: loaded (/usr/lib/systemd/system/promtail.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2026-05-27 09:46:05 CST; 52min ago
 Main PID: 43243 (promtail)
    Tasks: 11
   Memory: 27.7M
   CGroup: /system.slice/promtail.service
           └─43243 /data/log-platform/promtail/promtail -config.file=/data/log-platform/promtail/promtail.yaml

5月 27 09:46:10 loki118 promtail[43243]: ts=2026-05-27T01:46:10.512737533Z caller=log.go:168 level=info msg="Seeked /var/log/activation.log - &{Offset:45 Whence:0}"
5月 27 09:46:10 loki118 promtail[43243]: level=info ts=2026-05-27T01:46:10.512751343Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/var/log/activation.log
5月 27 09:46:10 loki118 promtail[43243]: ts=2026-05-27T01:46:10.512772625Z caller=log.go:168 level=info msg="Seeked /var/log/dnf.log - &{Offset:31337 Whence:0}"
5月 27 09:46:10 loki118 promtail[43243]: ts=2026-05-27T01:46:10.512771249Z caller=log.go:168 level=info msg="Seeked /var/log/dnf.librepo.log - &{Offset:9494 Whence:0}"
5月 27 09:46:10 loki118 promtail[43243]: level=info ts=2026-05-27T01:46:10.512776133Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/var/log/dnf.librepo.log
5月 27 09:46:10 loki118 promtail[43243]: level=info ts=2026-05-27T01:46:10.512785788Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/var/log/dnf.log
5月 27 09:46:10 loki118 promtail[43243]: ts=2026-05-27T01:46:10.512798574Z caller=log.go:168 level=info msg="Seeked /var/log/dnf.rpm.log - &{Offset:1425 Whence:0}"
5月 27 09:46:10 loki118 promtail[43243]: ts=2026-05-27T01:46:10.512807089Z caller=log.go:168 level=info msg="Seeked /var/log/hawkey.log - &{Offset:572 Whence:0}"
5月 27 09:46:10 loki118 promtail[43243]: level=info ts=2026-05-27T01:46:10.512800447Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/var/log/hawkey.log
5月 27 09:46:10 loki118 promtail[43243]: level=info ts=2026-05-27T01:46:10.512819107Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/var/log/dnf.rpm.log

十二、检查端口
ss -lntp | grep -E '3000|3100|9080'
[root@loki118 /]# ss -lntp | grep -E '3000|3100|9080'
LISTEN    0         512                      *:9080                   *:*        users:(("promtail",pid=43243,fd=14)) LISTEN    0         512                      *:3000                   *:*        users:(("grafana",pid=36604,fd=14)) LISTEN    0         512                      *:3100                   *:*        users:(("loki",pid=37058,fd=8))         正常:
3000 -> grafana
3100 -> loki
9080 -> promtail

十三、访问 Grafana
浏览器:
http://192.192.103.118:3000
默认账号:
admin/admin

十四、配置 Loki 数据源
Grafana:
Connections
  -> Data Sources
      -> Loki
URL:
http://127.0.0.1:3100

十五、测试日志查询
Linux日志(本机)
{job="linux"}

十六、测试postgresql日志查询
#如果是client采集日志,client上需要安装配置promtail
postgresql日志(client:192.192.103.117)
1.安装promtail
mkdir /promtail
cd /promtail
unzip /soft/promtail-linux-amd64.zip
重命名:
mv promtail-linux-amd64 promtail
chmod +x promtail
2.配置promtail.yaml
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

scrape_configs:

- job_name: postgres

  static_configs:
  - targets:
      - localhost

    labels:
      job: postgres14
      host: pg117
      env: prod
      __path__: /postgresql/pgdata2/log/*.csv
3.Promtail 服务
vi /usr/lib/systemd/system/promtail.service
内容:
[Unit]
Description=Promtail
After=network.target

[Service]
Type=simple
ExecStart=/promtail/promtail -config.file=/promtail/promtail.yaml
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
4.启动服务
systemctl daemon-reload
systemctl enable promtail
systemctl start promtail
[root@pg117 promtail]# systemctl status promtail
● promtail.service - Promtail
   Loaded: loaded (/usr/lib/systemd/system/promtail.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2026-05-27 10:17:39 CST; 33min ago
 Main PID: 26489 (promtail)
    Tasks: 14
   CGroup: /system.slice/promtail.service
           └─26489 /promtail/promtail -config.file=/promtail/promtail.yaml

May 27 10:17:44 pg117 promtail[26489]: level=info ts=2026-05-27T02:17:44.576310709Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/postgresql/pgdata2/log/postgresql-2026-05-24_000000.csv
May 27 10:17:44 pg117 promtail[26489]: level=info ts=2026-05-27T02:17:44.576503714Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/postgresql/pgdata2/log/postgresql-2026-05-26_000000.csv
May 27 10:17:44 pg117 promtail[26489]: ts=2026-05-27T02:17:44.576589228Z caller=log.go:168 level=info msg="Seeked /postgresql/pgdata2/log/postgresql-2026-05-24_000000.csv - &{Offset:0 Whence:0}"
May 27 10:17:44 pg117 promtail[26489]: ts=2026-05-27T02:17:44.576613584Z caller=log.go:168 level=info msg="Seeked /postgresql/pgdata2/log/postgresql-2026-05-23_000000.csv - &{Offset:0 Whence:0}"
May 27 10:17:44 pg117 promtail[26489]: ts=2026-05-27T02:17:44.576656338Z caller=log.go:168 level=info msg="Seeked /postgresql/pgdata2/log/postgresql-2026-05-27_000000.csv - &{Offset:0 Whence:0}"
May 27 10:17:44 pg117 promtail[26489]: ts=2026-05-27T02:17:44.576651156Z caller=log.go:168 level=info msg="Seeked /postgresql/pgdata2/log/postgresql-2026-05-22_145739.csv - &{Offset:0 Whence:0}"
May 27 10:17:44 pg117 promtail[26489]: level=info ts=2026-05-27T02:17:44.576688777Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/postgresql/pgdata2/log/postgresql-2026-05-25_000000.csv
May 27 10:17:44 pg117 promtail[26489]: level=info ts=2026-05-27T02:17:44.576702218Z caller=tailer.go:143 component=tailer msg="tail routine: started" path=/postgresql/pgdata2/log/postgresql-2026-05-27_000000.csv
May 27 10:17:44 pg117 promtail[26489]: ts=2026-05-27T02:17:44.576678159Z caller=log.go:168 level=info msg="Seeked /postgresql/pgdata2/log/postgresql-2026-05-26_000000.csv - &{Offset:0 Whence:0}"
May 27 10:17:44 pg117 promtail[26489]: ts=2026-05-27T02:17:44.576663539Z caller=log.go:168 level=info msg="Seeked /postgresql/pgdata2/log/postgresql-2026-05-25_000000.csv - &{Offset:0 Whence:0}"
4.验证远程采集是否成功
Grafana Explore:
PostgreSQL
{job="postgres14"}

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐