如何在linux设置快捷路径 如何在linux系统安装windows系统
0
2026-05-22
docker-compose是首选,因此将Loki、Promtail、Grafana进程隔离、网络互通、卷挂载全部固化于YAML,避免二进制安装常见的权限、路径、配置加载顺序问题。

直接用docker-compose启动最省事,别碰二进制安装——90%的失败都卡在权限、路径、配置加载顺序上。为什么docker-compose 是首选
它把Loki、Promtail、Grafana三者进程隔离、网络互通、卷挂载全写死在YAML里,改端口、换日志路径、加标签只动几行。而二进制方式要手动chmod + chown + systemd单元文件+配置文件硬编码路径,loki-linux-amd64默认不读/etc/loki/config.yaml,显得传--config.file 参数,稍一漏就静默退出。
常见错误现象:docker logs loki 显示 failed to load config 或权限被拒绝;systemctl status loki active (exited)但没日志;promtail Container里curl http://localhost:9080/metrics 返回空或404。loki Container内路径必须可写:比如storage_config.filesystem.directory: /tmp/loki/chunks,对应volumes 必须挂载机真实目录(如 ./loki-data:/tmp/loki)promtail 日志路径映射必须存在且有读权限:- /var/log/myapp:/var/log/myapp,若另外机该路径不存在或属主不是 root:adm,容器会跳过采集且不报错grafana 的 GF_SECURITY_ADMIN_PASSWORD 显必须式设置,否则 v1 版本首次登录卡死,UI 里也无法重新设置loki-local-config.yaml三个必填项
很多人配配启动完成不了,问题常出在这三处没填或错:Docker Desktop(linux)
当前Docker最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化AI开发支持、容器日志管理以及Docker Engine的安全能力,对Windows/macOS/Linux平台兼容性进行了进一步优化。
下载 server.http_listen_port:默认 3100,若一台机被占用,必须同步改 docker-compose.yml 的 ports 映射(如 "3101:3100"),否则 Grafana 连不上storage_config.filesystem.directory:必须是容器内绝对路径,如 /tmp/loki/chunks;若指向 /opt/loki/chunks 但没挂载卷,Loki 直接启动报权限 Deniedlimits_config.ingestion_rate_mb 和 ingestion_burst_size_mb:默认 4MB / 6MB,Nginx 或 Java 应用几秒触发就限,promtail 日志里反复出现率受限,建议调成 30 和 15promtail-config.yaml 的标签和 pipeline_stages 容易漏
Promtail 不是“装上就收日志”,靠 scrape_configs.static_configs.labels 打流标识,靠 pipeline_stages 解析内容。漏掉任一环节,Grafana 里就查不到或查不准。labels 至少得有 job 和 host,例如 {job="nginx", host="web01"};若只写 job: "nginx",Grafana 查询 {job="nginx"} 就匹配不到__path__ 值必须用双参数:如 "__path__: /var/log/nginx/*.log",单引号或不加引号会导致 glob 不生效想按主机名打标?别硬写 IP,用 host: ${HOSTNAME} 并在命令加 --config.expand-env=true日志文件属主是 root:adm,而 promtail 容器默认以非 root 用户运行 → 报权限被拒绝;或者改机器权限,或者在服务中加用户: "root"Grafana 添加 Loki 数据源后查不到日志
90%是因为Loki没有收到日志,不是Grafana配错了。
先确认三件事:在 Grafana Explore 页面输入 {job="your-job-name"},点 Run query:右上角显示 No logs found → Loki 收到了但没匹配到;显示 Error: context dead period超过 → 网络不通或认证失败进 promtail 容器执行curl -s http://localhost:9080/metrics | grep 'promtail_targets_up{.*job="your-job-name".*}',返回 1 表示目标已激活,0 表示未加载成功Loki 数据源 URL 必须填写容器内可解析的地址,比如 http://loki:3100(docker-compose 同网络下),不是 http://localhost:3100 或一台机器 IP
最容易被忽略的是:promtail 的 client.url 必须和 Loki容器名、端口、路径一致;http://host.docker.internal:3100/loki/api/v1/push在Linux上不生效,得用服务名http://loki:3100/loki/api/v1/push。