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

  1. Loki 下载

官方下载:

https://github.com/grafana/loki/releases/tag/v2.9.8?utm_source=chatgpt.com

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

  1. 创建数据目录

mkdir -p /data/grafana/{data,logs}

  1. 修改配置

编辑:

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

  1. 创建配置

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

  1. 创建配置

vi /data/log-platform/promtail/promtail.yaml

内容:

server:

http_listen_port: 9080

grpc_listen_port: 0

positions:

filename: /tmp/positions.yaml

clients:

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

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

  1. 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-server36604: 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-server36604: 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-server36604: 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-server36604: 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-server36604: 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-server36604: 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-server36604: 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-server36604: 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-server36604: 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-server36604: 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 loki37058: 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 loki37058: 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 loki37058: 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 loki37058: 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 loki37058: 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 loki37058: 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 loki37058: 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 loki37058: 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 loki37058: 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 loki37058: 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 promtail43243: 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 promtail43243: 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 promtail43243: 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 promtail43243: 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 promtail43243: 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 promtail43243: 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 promtail43243: 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 promtail43243: 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 promtail43243: 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 promtail43243: 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:

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 promtail26489: 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 promtail26489: 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 promtail26489: 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 promtail26489: 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 promtail26489: 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 promtail26489: 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 promtail26489: 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 promtail26489: 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 promtail26489: 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 promtail26489: 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"}

相关推荐
暮云星影2 天前
个人总结 搭建Docker监控
docker·容器·grafana·prometheus
Junsir大斗师5 天前
rocky9.7搭建grafana+loki+prometheus+alloy+node_exporter运维监控平台
linux·运维·grafana·prometheus
青皮桔6 天前
Prometheus + Grafana实现服务器监控
服务器·grafana·prometheus
1candobetter7 天前
文件下载接口从预热到正式性能测试实践(JMeter + Prometheus + Grafana)
jmeter·grafana·prometheus
文青小兵9 天前
Linux云计算——docker 监控(五)
linux·docker·云计算·grafana·prometheus
codeejun11 天前
每日一Go-70、Prometheus + Grafana 从采集到告警的完整实战(Go + Kind)
golang·grafana·prometheus
zhojiew14 天前
在Ray集群中使用vLLM部署LLM模型并集成Prometheus和Grafana进行指标观测的实践
grafana·prometheus·vllm