Loki提供五种部署方式:二进制部署轻量无依赖;Docker Compose一键启停栈;systemd托管实现系统级持久化;Helm在K8s中云原生部署;源码构建支持定制化编译。

一、使用二进制方式部署Loki
Loki二进制部署方式轻量、无依赖,适用于无容器环境或需精细控制运行参数的场景。该方式直接运行预编译可执行文件,避免Docker守护进程或Kubernetes调度开销。
1、创建Loki专用安装目录:sudo mkdir -p /usr/local/bin /etc/loki /var/lib/loki/chunks /var/lib/loki/rules
2、下载并解压Loki二进制包(以v2.9.1为例):cd /usr/local/bin && wget https://github.akams.cn/https://github.com/grafana/loki/releases/download/v2.9.1/loki-linux-amd64.zip && unzip loki-linux-amd64.zip
3、重命名并赋权:mv loki-linux-amd64 loki && sudo chmod a+x loki
4、验证可执行性:./loki --version
二、基于Docker Compose快速启动Loki栈
Docker Compose方式将Loki、Promtail与Grafana封装为统一服务组,通过声明式配置实现一键拉起,适合开发测试及中小规模生产环境。
1、下载docker-compose.yaml配置文件:wget https://raw.githubusercontent.com/grafana/loki/master/production/docker-compose.yaml -O docker-compose.yaml
2、创建本地配置挂载目录:mkdir -p ./loki/etc ./loki/data ./promtail/etc ./grafana/grafana_data
3、启动服务栈:docker-compose -f docker-compose.yaml up -d
4、检查容器状态:docker ps | grep -E "(loki|promtail|grafana)"
三、通过systemd托管Loki服务实现系统级持久化
将Loki注册为systemd服务可确保其随系统启动、自动重启失败进程,并集成到Linux标准服务管理体系中,满足生产环境稳定性要求。
1、创建systemd服务单元文件:sudo tee /etc/systemd/system/loki.service <<'EOF' [Unit] Description=Loki Log Aggregation System After=network.target [Service] Type=simple User=root ExecStart=/usr/local/bin/loki -config.file=/etc/loki/loki-config.yaml Restart=always RestartSec=10 LimitNOFILE=65536 [Install] WantedBy=multi-user.target EOF
2、重载systemd配置并启用服务:sudo systemctl daemon-reload && sudo systemctl enable loki
3、启动并确认运行状态:sudo systemctl start loki && sudo systemctl status loki | grep "active (running)"
四、使用Helm在Kubernetes集群中部署Loki
Helm部署适用于已具备K8s基础设施的云原生环境,通过官方loki-stack Chart可同步部署Loki、Promtail DaemonSet、Grafana及配套RBAC资源,支持多租户与水平扩展。
1、添加Helm仓库:helm repo add grafana https://grafana.github.io/helm-charts && helm repo update
2、创建命名空间并安装loki-stack:kubectl create namespace loki && helm install loki grafana/loki-stack --namespace=loki --set grafana.enabled=true,prometheus.enabled=false,loki.securityContext.runAsNonRoot=false
3、验证Pod就绪状态:kubectl get pods -n loki -l app.kubernetes.io/name=loki
4、获取Grafana访问地址:kubectl get svc -n loki loki-grafana -o jsonpath='{.spec.clusterIP}':{.spec.ports[0].port}
五、通过源码构建Loki实现定制化编译
源码构建方式允许修改Loki内部行为(如自定义认证逻辑、协议适配器或存储后端),适用于有深度二次开发需求或需适配特殊硬件架构(如ARM64)的场景。
1、安装Go环境(≥v1.20):sudo yum install golang -y && go version
2、克隆并检出稳定版本源码:git clone https://github.com/grafana/loki.git && cd loki && git checkout v2.9.1
3、构建二进制文件:make build-loki && ls -l cmd/loki/loki
4、复制构建产物并配置运行路径:sudo cp cmd/loki/loki /usr/local/bin/loki-custom && sudo chmod a+x /usr/local/bin/loki-custom

















