ARTICLE DETAIL

资讯详情

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

Grafana Loki 配置参数完全参考:从 loki.yaml 到运行时热加载

Grafana Loki 配置参数完全参考:从 loki.yaml 到运行时热加载 Grafana Loki 配置参数完全参考从 loki.yaml 到运行时热加载【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/lokiGrafana Loki 以 YAML 文件通常称为loki.yaml承载全部配置涵盖服务端信息与按启动模式区分的各组件参数。本指南以 Loki 官方配置参考为骨架结合当前仓库中的模板生成机制、CLI 标志定义与真实示例配置系统讲解配置文件的加载规则、运行时打印技巧、环境变量展开、loki.yaml顶层配置块与全部子配置块、Runtime Configuration 热加载机制以及乱序写入out-of-order策略帮助你在单体、微服务或 Helm 部署中正确编写、校验与调试 Loki 配置。配置参考的生成与维护机制Loki 的配置参考文档并非手工维护而是由一个统一的模板文件生成。仓库中的 docs/templates/configuration.template 定义了文档的完整骨架加载方式、环境变量、占位符、运行时配置、乱序写入等章节而具体的配置项定义则被展开为共享文件 docs/sources/shared/configuration.md本仓库中约 7700 行再由 docs/sources/reference/loki-config-ref.md 通过{{ docs/shared lookupconfiguration.md ... }}短代码引入。模板头部注释明确指出如需修改文档内容应修改模板文件并从仓库根目录执行make doc重新生成共享文件。这意味着你看到的每一个配置项、注释与默认值都与pkg下各模块的RegisterFlags实现一一对应是排查配置问题的第一手依据。打印 Loki 运行时配置快速定位配置问题Loki 提供了两个极其有用的调试标志可以在启动时把最终生效的完整配置对象打印出来-print-config-stderr将整个配置对象输出到 stderr适合直接运行./loki二进制时快速查看完整配置。-log-config-reverse-order以 Info 日志级别输出配置且条目顺序被反转使其在 Grafana Explore 中从上到下阅读时顺序正确——这是 Loki 官方在所有环境中运行时所使用的标志。其执行逻辑定义在 pkg/loki/config_wrapper.goLoki 在启动时会先用内置默认值构建配置对象再用配置文件中的值覆盖默认值最后用命令行标志覆盖配置文件的值。因此打印出来的是合并后的真实运行配置——所有配置项都有默认值无论你是否使用那些与你部署无关的存储配置也会出现这是正常现象。当怀疑配置文件或标志没有被正确读取时这个输出极具诊断价值。配置文件加载规则通过-config.file标志指定要加载的配置文件其值可以是逗号分隔的多个路径Loki 会使用第一个存在的文件。如果未指定-config.fileLoki 会在当前工作目录及config/子目录中查找config.yaml并使用之。配置文件使用 YAML 格式编写文档中以方括号[]表示参数为可选对非列表参数而言未设置时取默认值。在配置中使用环境变量该功能自 Loki 2.1 起可用。在启动命令中传入-config.expand-envtrue对应 pkg/loki/config_wrapper.go 中注册的-config.expand-env标志后即可在配置文件中使用${VAR}其中VAR为环境变量名。每个变量引用会在启动时、YAML 解析之前被环境变量值替换替换区分大小写。未定义的变量会被替换为空字符串除非你指定默认值或自定义错误文本${VAR:-default_value}default_value即环境变量未定义时使用的值。这一机制特别适合在部署时注入凭据、地址等需要按环境区分的值。通用占位符Generic placeholders配置参考中反复出现的类型占位符含义如下boolean布尔值可取true或falseint普通整数如0、1024、5000或带可选单位后缀的字节数如1024、256KB、64MB、4GB。支持单位B、KB、MB、GB、TB、PB、EBduration必须带单位后缀的时长。支持的单位取决于字段类型Prometheus 时长字段支持ms、s、m、h、d、w、y如30s、1m、1h、1d、1wGo 原生时长字段支持ns、us、µs、ms、s、m、h但不支持d、w、y。注意0允许不带单位labelname匹配正则[a-zA-Z_][a-zA-Z0-9_]*的字符串labelvalue任意 Unicode 字符串filename相对当前工作目录的有效路径或绝对路径host由主机名或 IP 加可选端口组成的合法字符串string字符串secret表示机密如密码的字符串loki.yaml顶层配置块总览loki.yaml的顶层结构默认值与 CLI 标志详见 docs/sources/shared/configuration.md 中### Supported contents and default values of loki.yaml一节包括配置块说明关键默认值target要运行的组件列表默认值all即单体模式可用-list-targets标志列出全部可用 targetallauth_enabled是否启用基于X-Scope-OrgID头的认证为false时 OrgID 恒为-auth.no-auth-tenant的值trueno_auth_tenant关闭认证时使用的租户 ID。默认fake为向后兼容仅在全新集群上才建议修改已有集群需先用cmd/migrate迁移旧租户路径下的数据fakeballast_bytes预留的虚拟内存字节数用于优化 GC。越大 GC 次数越少、CPU 开销越低但会扭曲内存指标不计物理内存因为从不读取0server所启动模块的服务端配置—distributor/querier分别配置 distributor 与 querierquerier 仅在运行全部模块或仅 querier 时适用—query_engine新一代查询引擎实验性enable、distributed、batch_size默认 100、prefetch_bytes默认 16KiB、worker_threads默认 0即 GOMAXPROCS等默认关闭query_scheduler/frontend/query_range配置查询调度器、查询前端及其查询拆分与缓存—ruler/ruler_storage配置 ruler 及其规则存储后端支持local、s3、gcs、azure、swift、filesystem、alibabacloud、bos默认filesystem—ingester/ingester_client配置 ingester 及其在 KV store 中的注册以及 distributor 连接 ingester 的方式—pattern_ingester模式提取器默认关闭包含metric_aggregation、pattern_persistence、tee_config等子块enabled: falseindex_gateway索引网关在无需频繁访问对象存储的前提下服务索引查询—bloom_build/bloom_gateway实验性布隆过滤器构建与网关—storage_config/chunk_store_config/schema_config配置索引与块存储后端、块缓存与落盘时机、块索引 schema 及其存放位置—compactor压缩组件用于合并索引分片—limits_config全局与按租户限制可在 runtime_config 文件的overrides中覆盖—frontend_worker运行在 querier 内的工作进程负责拾取并执行 query-frontend 入队的查询—memberlistmemberlist 客户端。只要配置了至少 1 个join_members所有需要 ring 的组件都会自动选用 memberlist 类型的 kvstore—kafka_configKafka 写入/消费后端配置topic、reader_config、writer_config、SASL 认证、consumer group、auto_create_topic_enabled默认true等—dataobj数据对象dataobj体系配置consumer、index、metastore、compaction等实验性enabled: falseingest_limits摄取限额服务active_window默认 2h、rate_window默认 5m、bucket_size默认 1m、Kafka topic 分区数默认 64等默认关闭runtime_config负责重载运行时配置文件的模块—operational_config控制运行层面的行为多用于调整日志冗长级别可在 runtime_config 的configs中覆盖—tracing/analytics/profiling分别配置追踪、匿名用量上报reporting_enabled默认true上报地址默认https://stats.grafana.org/loki-usage-report与性能分析—tenant_limits_allow_publish从租户限额端点发布的限额字段列表为空则返回全部使用 YAML 字段名如retention_period、max_query_series见配置文档默认列表common多个模块共享的公共配置若其他节给出更具体的配置本节的对应配置会被忽略—shutdown_delay收到 SIGTERM 与关停之间的等待时长期间/ready端点返回 5030smetrics_namespace指标命名空间早期版本使用 cortex 命名空间已弃用lokicommon配置块单体部署的推荐入口common用于在多个模块间共享配置避免重复声明。典型用法见仓库自带的 cmd/loki/loki-local-config.yamlauth_enabled: false server: http_listen_port: 3100 grpc_listen_port: 9096 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 schema_config: configs: - from: 2020-10-24 store: tsdb object_store: filesystem schema: v13 index: prefix: index_ period: 24hcommon下核心字段说明path_prefix路径前缀CLI 标志-common.path-prefix所有本地文件块、规则、WAL 等的相对基准storage统一的存储后端声明支持s3、gcs、azure、alibabacloud、bos、swift、cos、filesystem含chunks_directory与rules_directory及hedging重复请求优化at非零时在指定时长后发出第二个请求up_to默认 2max_per_second默认 5、congestion_control拥塞控制strategy可选aimd含start默认 2000、upper_bound默认 10000、backoff_factor默认 0.5、object_store基于 thanos-io/objstore 的客户端需配合-use-thanos-objstoretrue才生效ring统一的 ring 配置含kvstore.store可选consul、etcd、inmemory、memberlist、multi默认consul、heartbeat_period默认 15s、heartbeat_timeout默认 1m、replication_factor默认 3、num_tokens默认 128、instance_id默认主机名、instance_interface_names、instance_port、zone_awareness_enabled等compactor_address/compactor_grpc_addresscompactor 的 HTTP/gRPC 地址供其他组件发现 compactorscratch_path实验性临时数据路径对象存储后端从 S3 到文件系统Loki 支持多种对象存储后端均在 docs/sources/shared/configuration.md 中有独立配置块s3_storage_configbucketnames、endpoint、region、access_key_id、secret_access_key、insecure是否跳过 HTTPS 校验、sse服务端加密、http_config、backoff_config、max_retries等gcs_storage_configbucket_name、chunk_buffer_size、request_timeout等azure_storage_configenvironmentAzureGlobal、AzureChinaCloud、AzureGermanCloud、AzureUSGovernment、account_name、account_key、connection_string可配合 SAS token 或 Azurite 模拟器、container_name默认loki、use_managed_identity、use_service_principal、client_id/client_secret/tenant_id等alibabacloud_storage_configbucket、endpoint、region、access_key_id、secret_access_key、ram_role_nameECS RAM 角色认证需signature_versionv4、signature_version默认v1等bos_storage_config百度 BOS、swift_storage_configOpenStack Swift、cos_storage_configIBM Cloud COS以及**local_storage_config**本地文件系统thanos_object_store_config未来将作为对象存储客户端默认配置方式的统一入口当前需-use-thanos-objstoretrue启用存储后端与 schema 的衔接由schema_config完成每个configs条目声明from生效起始日期、store索引存储如tsdb、object_store块存储后端、schemaschema 版本、index的prefix与period。storage_config则配置具体索引与块存储的连接细节如tsdb_shipper的active_index_directory、cache_ttl、shared_store等。三者配合是 Loki 存储架构的核心修改 schema 时须严格遵循向后兼容规则。limits_config全局与按租户限制limits_config是运维中最重要的配置块之一涵盖摄取、查询、保留三大类限制常见参数包括摄取类ingestion_rate_mb每租户摄取速率、ingestion_burst_size_mb、max_streams_per_user、max_global_streams_per_user、per_stream_rate_limit、per_stream_rate_limit_burst查询类max_query_length、max_query_lookback、max_query_series、max_entries_limit_per_query、query_timeout、max_query_bytes_read、max_chunks_per_query保留与结构元数据retention_period、retention_stream、structured_metadata_retention_period、discover_log_levels、discover_service_name、log_level_fields、otlp_config、pattern_persistence_enabled、metric_aggregation_enabled、volume_enabled/volume_max_series这些值可通过 runtime config 文件的overrides按租户动态覆盖详见下节并可通过租户限额端点tenant_limits_allow_publish控制发布字段对外暴露。Runtime Configuration无需重启的热加载Loki 支持运行时配置文件在运行期间周期性重载使运维人员无需重启即可调整部分配置。通过-runtime-config.filefilename标志指定文件重载周期默认 10 秒可用-runtime-config.reload-periodduration修改。目前使用运行时配置的两个组件是limits限额与multi KV store。也可在 YAML 中直接配置# 需要周期性检查并重载的配置文件 [file: string: default empty] # 检查周期 [period: duration: default 10s]示例运行时配置文件注意multi_kv_config使用 kebab-case 键overrides: tenant1: ingestion_rate_mb: 10 max_streams_per_user: 100000 max_chunks_per_query: 100000 tenant2: max_streams_per_user: 1000000 max_chunks_per_query: 1000000 multi_kv_config: mirror-enabled: false primary: consuloverrides中的字段即覆盖limits_config中同名配置multi_kv_config则用于 multi 类型 kvstore 的主备切换primary/secondary/mirror-enabled。多租户场景下这是动态调整单个租户限额的标准手段。接受乱序写入Out-of-order writesLoki 允许同一流stream的日志条目按时间乱序到达。允许的乱序深度由max_chunk_age控制默认 2 小时官方不建议调大。Loki 按如下公式计算当前可接受的最早时间戳time_of_most_recent_line - (max_chunk_age/2)即允许的乱序窗口为max_chunk_age的一半。晚于该最早时间的条目被接受更早的条目返回too_far_behind错误。示例若max_chunk_age为 2 小时流{foobar}在8:00有一条记录则可接受的最早时间戳为8:00 - (2h / 2) 7:00若后续在10:00写入新行最早时间戳随之变为9:00窗口随最新行前移。理解此机制有助于在回填历史数据或客户端时间漂移时避免写入失败。实战结合示例配置快速起步仓库提供了多套可直接参考的配置示例是学习配置结构的活教材cmd/loki/loki-local-config.yaml单机/单体模式文件系统存储 inmemory ring TSDB schema v13 嵌入式结果缓存适合本地开发与快速验证cmd/loki/loki-docker-config.yamlDocker 部署场景配置cmd/loki/loki-local-multi-tenant-config.yaml多租户单机配置cmd/loki/loki-local-with-memcached.yaml引入 memcached 缓存的本地配置cmd/loki/loki-frontend.yaml、cmd/loki/loki-querier.yaml、cmd/loki/loki-index-gateway.yaml、cmd/loki/loki-bloom-gateway.yaml微服务模式下各组件独立配置cmd/loki/loki-overrides.yaml运行时 overrides 示例docs/sources/configure/ 目录下还包含大量分场景的配置示例YAML与说明文档覆盖告警、运维、发送数据等主题的配置实践结语Loki 的配置体系面广但规则统一所有参数都有默认值与对应 CLI 标志可通过-print-config-stderr验证最终生效值common块与schema_config/storage_config的配合决定了存储架构limits_config配合 runtime config 的overrides实现了限额的动态调整。掌握 docs/sources/shared/configuration.md 这份约 7700 行的完整参考其内容由 docs/templates/configuration.template 生成再结合仓库内示例配置对照修改即可从容应对从单体到微服务的各类部署与调优需求。【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/loki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表