Grafana连接Loki报错:数据源已连接但未收到标签的排查问询
问题
尝试通过Docker日志驱动将日志发送至Loki,并使用Grafana可视化,连接Loki时Grafana UI报错:
Data source connected, but no labels received. Verify that Loki and Promtail is configured properly.
未使用Promtail,依赖Loki Docker插件,各服务日志配置(compose.yml):
logging: driver: loki options: loki-url: 'http://loki:3100/loki/api/v1/push'
Loki容器定义:
loki: hostname: loki image: grafana/loki:2.8.3 ports: - "3100:3100" command: -config.file=/etc/loki/loki-config.yaml volumes: - ./volumes/loki/etc:/etc/loki
Loki配置文件(loki-config.yml):
auth_enabled: false server: http_listen_port: 3100 log_level: info ingester: lifecycler: address: 127.0.0.1 ring: kvstore: store: inmemory replication_factor: 1 final_sleep: 0s chunk_idle_period: 5m chunk_retain_period: 30s wal: dir: /tmp/loki/wal schema_config: configs: - from: 2018-04-15 store: boltdb object_store: filesystem schema: v9 index: prefix: index_ period: 168h storage_config: boltdb: directory: /tmp/loki/index filesystem: directory: /tmp/loki/chunks limits_config: enforce_metric_name: false reject_old_samples: true reject_old_samples_max_age: 168h chunk_store_config: max_look_back_period: 0 table_manager: chunk_tables_provisioning: inactive_read_throughput: 0 inactive_write_throughput: 0 provisioned_read_throughput: 0 provisioned_write_throughput: 0 index_tables_provisioning: inactive_read_throughput: 0 inactive_write_throughput: 0 provisioned_read_throughput: 0 provisioned_write_throughput: 0 retention_deletes_enabled: false retention_period: 0
疑问:是否是ingester的IP配置错误?产生日志的服务位于另一台虚拟机。
排查与解决
1. 修正Ingester监听地址
你的ingester.lifecycler.address配置为127.0.0.1,这会导致Loki的ingester仅监听容器内部回环地址,外部容器或跨虚拟机的服务无法与它通信。将其改为0.0.0.0,让ingester监听所有可用网络接口:
ingester: lifecycler: address: 0.0.0.0 # 其余配置保持不变
2. 调整跨虚拟机的Loki推送地址
产生日志的服务在另一台虚拟机,loki-url中的http://loki:3100仅能在同一Docker网络内解析,跨虚拟机时需要替换为Loki所在虚拟机的内网/公网IP或可访问的主机名:
logging: driver: loki options: loki-url: 'http://<LOKI_VM_IP>:3100/loki/api/v1/push'
将<LOKI_VM_IP>替换为Loki所在虚拟机的实际IP地址。
3. 验证网络连通性
- 确保Loki所在虚拟机的防火墙/安全组放行3100端口,允许日志来源虚拟机的IP访问。
- 在日志来源虚拟机上执行curl命令测试推送:
curl -X POST http://<LOKI_VM_IP>:3100/loki/api/v1/push \ -H "Content-Type: application/json" \ -d '{"streams":[{"stream":{"job":"test"},"values":[["'$(date +%s000)'","test log entry"]]}]}'
4. 检查Loki日志与数据
- 查看Loki容器日志,确认是否有接收日志的报错:
docker logs loki
- 在Grafana中尝试查询测试日志:输入
{job="test"},如果能看到数据,说明推送链路正常。
5. 确认Docker Loki插件安装
确保日志来源虚拟机上已正确安装Loki Docker插件:
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
内容的提问来源于stack exchange,提问作者paul445
相关产品推荐
相关产品推荐

