Kylinv10下日志收集系统 Loki + Promtail + Grafana(二进制离线部署)
[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"}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)