ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Grafana Loki 安装全指南:Helm、Tanka、Docker 与源码本地部署实战

Grafana Loki 安装全指南:Helm、Tanka、Docker 与源码本地部署实战 Grafana Loki 安装全指南Helm、Tanka、Docker 与源码本地部署实战【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/lokiLoki 是一个类似 Prometheus 但面向日志的聚合系统本指南系统梳理当前仓库loki官方文档中给出的全部安装路径面向 Kubernetes 的 Helm推荐与 Tanka、面向快速评估的 Docker / Docker Compose、面向单机的 APT/RPM 与二进制安装以及从源码编译。读完本文你将掌握每种安装方式的适用场景、前置条件、核心配置参数与验证方法并能在本地真正把 Loki 与 Grafana Alloy 跑起来收集日志。安装方式总览官方文档docs/sources/setup/install/_index.md提供了以下安装途径按推荐优先级排列Helm推荐在 Kubernetes 集群内配置、安装和升级 Loki适合生产环境TankaGrafana Labs 生产环境自用的 Jsonnet 部署方式以微服务模式运行 Loki 集群Docker 或 Docker Compose用于评估、测试和开发Loki 以单二进制形式运行本地安装运行通过 APT/RPM 包管理器或直接下载二进制文件在单机运行源码编译克隆仓库后通过make从源码构建。日志采集方面官方推荐使用Grafana Alloy作为日志收集 Agent配合以上任意一种 Loki 安装方式使用。通用流程无论选择哪种安装方式要让日志真正流入 Loki都需要完成以下五个步骤见 install/_index.md下载并安装 Loki 与 Alloy下载两个程序的配置文件启动 Loki修改 Alloy 配置文件把采集到的日志发送到 Loki启动 Alloy。认证与安全前置须知官方文档在所有安装子页面中反复强调一条重要前提Grafana Loki 本身不附带任何认证层。必须在前端部署一个支持认证的反向代理例如 nginx来防止未授权访问可参考仓库中的 nginx 网关示例gateway 服务即用 nginx 实现读写路由与入口。方式一Helm 安装Kubernetes推荐Helm Chart 允许你在 Kubernetes 集群中配置、安装并升级 Loki详见 docs/sources/setup/install/helm/_index.md。部署模式选择Loki 设计上支持两种主要部署形态单二进制Monolithic模式推荐在小型元监控栈中使用所有组件运行在单个进程内微服务Microservices模式面向需要高可用与水平扩展的工作负载Grafana Labs 内部即采用此模式部署 Loki。此外还有Simple ScalableSSD模式但官方明确提示该模式将在 Loki 4.0 中被弃用并移除生产环境建议直接采用微服务模式。云端部署指南Helm 子文档针对三大公有云提供了逐步部署指南仓库内对应 helm/deployment-guides/ 下的 aws.md、azure.md、gcp.mdAmazon EKSAzure AKSGoogle GKE。参数参考Loki Helm Chart 的完整 values 参考见 helm/reference.md源文件为社区维护的values.yaml。安装时可通过--set或 values 文件覆盖副本数、存储后端、租户配置等关键参数。方式二Tanka 安装Jsonnet微服务模式Tanka 是 Grafana Labs 在 Ksonnet 被弃用后基于 Jsonnet 重新实现的部署工具Grafana Labs 使用它来在生产环境运行 Loki详见 docs/sources/setup/install/tanka.md。Tanka 安装方式以微服务模式运行 Loki 集群。前置条件安装 Tanka v0.31.0 或更新版本需要tk env命令安装jsonnet-bundlerjb。初始化 Tanka 应用与环境mkdir application name cd application name tk init tk env add environments/loki --namespaceloki --serverKubernetes API server部署步骤通过jb安装 Loki 的 Tanka 模块模块即仓库中的 production/ksonnet/lokijb init # 若已执行 tk init 则无需重复 jb install github.com/grafana/loki/production/ksonnet/lokimain随后修改environments/loki/main.jsonnet配置对象存储、schema 与副本等变量。仓库文档给出了完整示例tanka.md核心要点如下local gateway import loki/gateway.libsonnet; local loki import loki/loki.libsonnet; loki gateway { _config:: { namespace: loki, htpasswd_contents: loki:$apr1$H4yGiGNg$ssl5/NymaGFRUvxIV1Nyr., // 使用 TSDB shipper using_tsdb_shipper: true // 对象存储后端三选一s3、gcs 或 azure storage_backend: s3, // S3 变量当 storage_backend s3 时使用 s3_access_key: key, s3_secret_access_key: secret access key, s3_address: url, s3_bucket_name: loki-chunks, s3_bucket_region: us-east-1, s3_path_style: false, // GCS 变量当 storage_backend gcs 时使用 // gcs_bucket_name: loki-chunks, // Azure 变量当 storage_backend azure 时使用 // azure_container_name: loki-chunks, // azure_account_name: account, // azure_account_key: key, // TSDB 索引存储配置 loki: { schema_config: { configs: [{ from: YYYY-MM-DD, store: tsdb, object_store: $._config.storage_backend, schema: v13, index: { prefix: %s_index_ % $._config.table_prefix, period: %dh % $._config.index_period_hours, }, }], }, }, replication_factor: 3, memberlist_ring_enabled: true, }, }配置时有三个关键点对象存储三选一storage_backend必须是单一值s3/gcs/azure并为所选后端填写对应变量移除其余后端变量schemafrom日期应设为当前日期前 7 天以内如今天是2021-01-15则设为2021-01-08。原因在于 Loki 默认只接受最多 1 周168h之前的日志行该阈值由reject_old_samples_max_age配置项控制新建环境建议使用 TSDBstore: tsdbschema: v13。部署与验证命令tk show environments/loki # 预览将要部署的 manifest tk apply environments/loki # 部署到集群 tk delete environments/loki # 从集群删除环境方式三Docker / Docker Compose 安装如果你正处于评估、测试或开发阶段Docker 与 Docker Compose 是最快的方式详见 docs/sources/setup/install/docker.md。官方明确生产环境推荐使用 Helm 或 Tanka。这些安装方式对应的配置文件以单二进制形式运行 Loki。前置条件DockerDocker Compose仅 Docker Compose 方式需要可选。单容器方式Linux创建目录并下载官方本地配置文件 cmd/loki/loki-local-config.yamlmkdir loki cd loki wget https://raw.githubusercontent.com/grafana/loki/v3.6.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml启动容器请将版本号替换为你实际使用的 Loki 版本docker run --name loki -d -v $(pwd):/mnt/config -p 3100:3100 grafana/loki:3.6.0 -config.file/mnt/config/loki-config.yaml注意镜像默认以用户lokiUID 10001、GID 10001运行。如果使用 bind mount 挂载目录可以改用--userUID指定符合你需要的数字 UID。验证容器状态与 Loki 服务docker container ls输出类似CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cece1df84519 grafana/loki:3.6.0 /usr/bin/loki -conf… About a minute ago Up About a minute 0.0.0.0:3100-3100/tcp, :::3100-3100/tcp loki就绪状态检查http://localhost:3100/ready指标查看http://localhost:3100/metricsDocker Compose 方式含 Alloy、Grafana 与 MinIO官方在 examples/getting-started/docker-compose.yaml 中提供了一个完整的入门编排一次拉起 Loki 读写组件、nginx 网关、Grafana、MinIO对象存储、Alloy日志采集以及 flog模拟日志生成器mkdir loki cd loki wget https://raw.githubusercontent.com/grafana/loki/v3.6.0/examples/getting-started/docker-compose.yaml -O docker-compose.yaml wget https://raw.githubusercontent.com/grafana/loki/v3.6.0/examples/getting-started/alloy-local-config.yaml -O alloy-local-config.yaml wget https://raw.githubusercontent.com/grafana/loki/v3.6.0/examples/getting-started/loki-config.yaml -O loki-config.yaml docker-compose -f docker-compose.yaml up启动成功后可以看到如下容器✔ Container loki-loki-1 Started 0.0s ✔ Container loki-grafana-1 Started 0.0s ✔ Container loki-alloy-1 Started 0.0s该编排展示了生产部署的重要形态——读写分离 反向代理网关read/write/backend三个 Loki 进程通过-targetread、-targetwrite、-targetbackend拆分为独立目标共用 examples/getting-started/loki-config.yamlgatewaynginx在 3100 端口统一入口将/loki/api/v1/push路由到 write、/loki/api/v1/tail与其余/loki/api/*路由到 readminio充当 S3 兼容对象存储配置文件中的common.storage.s3.endpoint: minio:9000grafana自动配置 Loki 数据源指向http://gateway:3100并带X-Scope-OrgID: tenant1请求头flog以 JSON 格式每 200ms 生成一条模拟日志供 Alloy 采集。验证读写路径读路径就绪http://localhost:3101/ready读路径指标http://localhost:3101/metrics写路径就绪http://localhost:3102/ready写路径指标http://localhost:3102/metrics本地配置文件解读单机/单二进制场景使用的 cmd/loki/loki-local-config.yaml 完整展示了 Loki 的关键配置节auth_enabled: false server: http_listen_port: 3100 grpc_listen_port: 9096 log_level: debug grpc_server_max_concurrent_streams: 1000 common: instance_addr: 127.0.0.1 path_prefix: /tmp/loki storage: filesystem: chunks_directory: /tmp/loki/chunks rules_directory: /tmp/loki/rules replication_factor: 1 ring: kvstore: store: inmemory query_range: results_cache: cache: embedded_cache: enabled: true max_size_mb: 100 limits_config: metric_aggregation_enabled: true schema_config: configs: - from: 2020-10-24 store: tsdb object_store: filesystem schema: v13 index: prefix: index_ period: 24h pattern_ingester: enabled: true metric_aggregation: loki_address: localhost:3100 ruler: alertmanager_url: http://localhost:9093 frontend: encoding: protobuf要点说明common节统一配置实例地址、数据目录path_prefix: /tmp/loki与文件系统存储chunks 与 rules 目录单机演示无需外部对象存储schema_config使用 TSDB 索引store: tsdb、schema: v13index.period: 24h表示索引表按天轮转该配置默认会向 Grafana Labs 发送匿名但可唯一识别的使用与配置统计发送至 stats.grafana.org用于帮助官方改进 Loki若需关闭取消analytics.reporting_enabled: false的注释即可具体上报内容见 pkg/analytics/stats.go 中的buildReport方法。方式四本地安装运行APT / RPM 包管理器先按官方指引添加 Grafana 的 APT 或 RPM 软件仓库然后使用dnfRPM 系dnf update dnf install loki使用apt-getDebian/Ubuntu 系apt-get update apt-get install loki手动下载二进制前往 Loki 的 Release 页面在对应版本的Assets区下载与你系统匹配的 Loki 压缩包此时无需下载 LogCLI 或 Loki Canary——LogCLI 用于命令行执行 Loki 查询Loki Canary 用于审计 Loki 性能解压到 Loki 将要运行的目录下载通用配置文件注意 Git 引用要与 Loki 版本匹配例如 3.6.0 对应v3.6.0标签文件为 cmd/loki/loki-local-config.yamlwget https://raw.githubusercontent.com/grafana/loki/main/cmd/loki/loki-local-config.yaml启动 LokiWindows.\loki-windows-amd64.exe --config.fileloki-local-config.yamlLinux./loki-linux-amd64 -config.fileloki-local-config.yaml启动后 Loki 日志输出到命令行同时在 http://localhost:3100/metrics 暴露指标。openSUSE Linux社区为 openSUSE 提供了 Loki 软件包添加security:/logging仓库后如 Leap 15.1执行sudo zypper ar https://download.opensuse.org/repositories/security:/logging/openSUSE_Leap_15.1/security:logging.repo sudo zypper ref zypper in loki systemd start loki systemd enable loki随后按需修改/etc/loki/loki.yaml配置文件。方式五从源码编译安装如果你需要基于最新代码构建或希望自行定制可从源码编译详见 docs/sources/setup/install/install-from-source.md。前置条件Go 1.26 或更高版本准确最低版本以仓库 go.mod 中的go指令为准并设置好$GOPATHmakeDocker用于更新 protobuf 与 yacc 文件时。构建步骤git clone https://github.com/grafana/loki $GOPATH/src/github.com/grafana/loki cd $GOPATH/src/github.com/grafana/loki make loki查看仓库根目录 Makefile 可以发现该目标实际执行的是loki: cmd/loki/loki ## build loki executable cmd/loki/loki: CGO_ENABLED0 go build $(GO_FLAGS) -o $ ./$(D)即通过CGO_ENABLED0 go build产出静态二进制。构建完成后可执行文件位于$GOPATH/src/github.com/grafana/loki/cmd/loki/loki随后同样使用 cmd/loki/loki-local-config.yaml 启动。用 Alloy 把日志送入 Loki官方在所有安装路径中都推荐使用Grafana Alloy作为日志采集 Agent。入门 Compose 编排中的 examples/getting-started/alloy-local-config.yaml 给出了最简可用的 Alloy 配置discovery.docker flog_scrape { host unix:///var/run/docker.sock refresh_interval 5s } discovery.relabel flog_scrape { targets [] rule { source_labels [__meta_docker_container_name] regex /(.*) target_label container } } loki.source.docker flog_scrape { host unix:///var/run/docker.sock targets discovery.docker.flog_scrape.targets forward_to [loki.write.default.receiver] relabel_rules discovery.relabel.flog_scrape.rules refresh_interval 5s } loki.write default { endpoint { url http://gateway:3100/loki/api/v1/push tenant_id tenant1 } external_labels {} }这段配置展示了 Alloy 的核心数据流discovery.docker自动发现 Docker 容器 →loki.source.docker采集容器日志并应用 relabel将容器名写入container标签→loki.write将日志推送至 Loki 的/loki/api/v1/push接口并携带tenant_id tenant1。Alloy 的通用安装与接入方式可参考 docs/sources/send-data/alloy 下的文档。验证与后续步骤安装完成后按以下清单确认系统可用健康检查访问http://localhost:port/ready查看就绪状态访问/metrics查看指标日志查询在 Grafana入门编排中运行于 3000 端口中配置 Loki 数据源后执行 LogQL 查询确认 Alloy 采集的flog模拟日志已入库认证加固由于 Loki 不内置认证务必在生产环境前置 nginx 等反向代理。若需将配置从一种实现迁移到另一种或升级到新版本可继续阅读 docs/sources/setup/migrate 与 docs/sources/setup/upgrade 两篇文档若在 Kubernetes 中通过 Service Mesh 接入可参考 docs/sources/setup/install/istio.md。【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/loki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表