首页 > 解决方案 > InfluxDB 2 入门示例不向桶中插入任何数据

问题描述

安装 InfluxDB 2 后,它会显示一个包含各种语言示例代码的网站。创建具有 RW 权限的存储桶和令牌并选择它们后,可以使用具有适当魔术字符串的代码片段。把它们放在一起我有这个:

using System;
using System.Threading.Tasks;
using InfluxDB.Client;
using InfluxDB.Client.Api.Domain;
using InfluxDB.Client.Writes;
namespace gen
{
  class Program
  {
    static async Task Main(string[] args)
    {
      // init
      const string token = "uaKktnduBm_ranBVaG3y8vU-AAN ... w==";
      const string bucket = "SystemMonitor";
      const string org = "pdconsec";

      var client = InfluxDBClientFactory.Create("http://10.1.1.182:8086", token.ToCharArray());
      // write using data point (doesn't require model class)
      var point = PointData
      .Measurement("mem")
      .Tag("host", "host1")
      .Field("used_percent", 23.43234543)
      .Timestamp(DateTime.UtcNow, WritePrecision.Ns);
      using (var writeApi = client.GetWriteApi())
      {
        writeApi.WritePoint(bucket, org, point);
      }
      // Flux query
      var query = $"from(bucket: \"{bucket}\") |> range(start: -1h)";
      var tables = await client.GetQueryApi().QueryAsync(query, org);
    }
  }
}

这些片段演示了编写相同数据的三种不同方法。这三个都没有意外地执行,但桶中没有出现数据,所以我将这里的代码简化为只有一种写入方法。它运行正常,但桶中没有任何内容。单步执行表明 Flux 查询执行返回一个空的表列表。

标签: c#influxdb-2

解决方案


在调试控制台上会出现一条错误消息。您必须向后滚动才能看到此消息。当应用程序加载时,它隐藏在通常雪崩的程序集加载信息中。

The batch item wasn't processed successfully because: InfluxDB.Client.Core.Exceptions.ForbiddenException: insufficient permissions for write
   at InfluxDB.Client.WriteApi.<>c__DisplayClass9_2.<.ctor>b__21(RetryAttempt attempt)
   at System.Reactive.Linq.ObservableImpl.SelectMany`2.ObservableSelector._.OnNext(TSource value) in /_/Rx.NET/Source/src/System.Reactive/Linq/Observable/SelectMany.cs:line 869

那么为什么我的令牌没有写权限呢?我以为我指定了 RW。重新访问令牌创建,似乎必须单击写入权限以突出显示它,以便将其分配给正在创建的令牌。

在这个例子中,

创建只写令牌

令牌将仅在 SystemMonitor 存储桶的写入权限下创建,因为该存储桶仅在写入列中突出显示。

这个 UI 的工作方式在你有多个存储桶之前并不是很清楚,然后更明显的是,在写入(或读取)列中突出显示的存储桶是令牌将具有写入(或读)许可。


推荐阅读