小编mar*_*lex的帖子

如何使用Grafana模板变量选择数据源

PrometheusInstance我有多个 Prometheus 实例,并且有一个值为 A、B、C 的自定义多值变量。

我有 3 个不同的数据源,其 URL 如下所示:
http://A.foo.com:9090 etc

我希望数据源根据变量的值进行更改,并且我的 19 个面板可以显示相应 Prometheus 实例的指标。

如何实现这一目标?在数据源 URL 或名称中使用$PrometheusInstance不起作用。

Grafana 版本 9.1.6

grafana grafana-variable

7
推荐指数
1
解决办法
6320
查看次数

使用 __getattr__ 方法作为组合模式是良好的 Python 实践吗?

首先 - 如果这是重复的,请接受我的道歉 - 我有一种感觉,我以前见过某种类似的讨论,但我真的找不到它。

我的问题是关于 Python 中的对象组合,它应该看起来像是从复合类的每个次要类中继承的。用例是多个对象实例共享属性及其值的公共核心(而不仅仅是公共结构,这将是经典的继承情况)。

我可以使用一个简单的属性来做到这一点,即只需让每个类都有一个名为“shared_attributes”的属性,该属性本身就是一个存储所有值的类:

class CoreClass(object):
    def __init__(self):
        self.attr = 'asdf'


class CompClass1(object):
    def __init__(self, core):
        self.core_attr = core


class CompClass2(object):
    def __init__(self, core):
        self.core_attr = core
Run Code Online (Sandbox Code Playgroud)

但这要求我通过属性访问每个共享属性class.core_attr,这是我不想要的(出于多种原因,其中之一是这需要对大段代码进行大量重写)。

因此,我想使用依赖于 Python 内置__getattr__对象方法的复合模式,如下所示:

class TestClass1(object):
    def __init__(self):
        self.attr1 = 1

    def func_a(self):
        return 'a'


class CompClassBase(object):
    def __init__(self, test_class):
        self.comp_obj = test_class

    def __getattr__(self, item):
        return getattr(self.comp_obj, item)


class CompClass1(CompClassBase):
    def __init__(self, test_class):
        CompClassBase.__init__(self, test_class)
        self.attr2 = 13

    def func_b(self):
        return '1b'


class …
Run Code Online (Sandbox Code Playgroud)

python object-composition

5
推荐指数
0
解决办法
1259
查看次数

如何创建森林图?

我想将不同的风险比合并到一个森林地块中。metamiss我希望输出与 STATA 或R 中的输出类似。metafor我如何在 Python 中执行此操作?

python-3.x forest-plots

5
推荐指数
1
解决办法
8743
查看次数

Prometheus 将数据聚合到更大的时间范围

我在普罗米修斯(维多利亚指标)中有一些计数器。

在 Grafana 中我这样显示它:

sum by (model_id) (increase(requests[$__interval]))
Run Code Online (Sandbox Code Playgroud)

我想在grafana中添加变量,称为下采样。我可以在哪里选择1h,或者6h什么的。我想查看根据这个时间聚合的数据。就像我说的那样1h,我希望我的图表每小时有 1 个点,其中包含该小时内每个模型的请求总数。

grafana似乎$__interval根据我的时间窗口进行了更改。但如果我尝试说出我的观点,1h我会得到一些完全不真实的东西。

grafana prometheus victoriametrics

5
推荐指数
1
解决办法
270
查看次数

使用 Loki + S3 配置存储保留的最佳方式

我正在使用 Loki v2.4.2 并将 S3 配置为索引和块的存储后端。

我想确保所有超过 90 天的日志都被删除,而不会有损坏的风险。关于保留的文档很混乱,步骤也不清楚。我是否应该在根前缀上的对象存储上设置 TTL,即/. 或者我应该配置类似的东西?我不想运行压实机。

table_manager:
  retention_deletes_enabled: true
  retention_period: 2160h
Run Code Online (Sandbox Code Playgroud)

这是我的 Loki 配置。请建议对此配置和相应的 S3 TTL 进行哪些更改。我不想运行压实机。

config:
  # existingSecret:
  auth_enabled: false
  ingester:
    chunk_idle_period: 3m
    chunk_block_size: 262144
    chunk_retain_period: 1m
    max_transfer_retries: 0
    wal:
      dir: /data/loki/wal
    lifecycler:
      ring:
        kvstore:
          store: inmemory
        replication_factor: 1

      ## Different ring configs can be used. E.g. Consul
      # ring:
      #   store: consul
      #   replication_factor: 1
      #   consul:
      #     host: "consul:8500"
      #     prefix: ""
      #     http_client_timeout: "20s"
      #     consistent_reads: true
  limits_config: …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 kubernetes grafana-loki

4
推荐指数
1
解决办法
7415
查看次数

python asyncio.gather 重试返回“无法重用已等待的协程”错误

我正在使用 asyncio.gather,并在出现异常时尝试重试。但它无法重试,并出现如下错误。我应该如何修复它以重试?

11 -- RETRY Server disconnected without sending a response.
11 -- RETRY cannot reuse already awaited coroutine
11 -- RETRY cannot reuse already awaited coroutine
Run Code Online (Sandbox Code Playgroud)

我的代码:

        for i in range((len(tasks) // TASK_CHUNK_SIZE) + 1):
            while True:
                try:
                    res = await asyncio.gather(*tasks[TASK_CHUNK_SIZE * i:TASK_CHUNK_SIZE * (i + 1)])
                    for rows in res:
                        f.writelines([f'{row}\n' for row in rows])
                    await asyncio.sleep(1)
                    break
                except Exception as e:
                    print(f'{(i + 1) * TASK_CHUNK_SIZE} -- RETRY {e}')

                    await asyncio.sleep(10)
                    continue
Run Code Online (Sandbox Code Playgroud)

python coroutine python-asyncio

4
推荐指数
1
解决办法
6695
查看次数

如何用该单词的单一版本替换重复单词

我正在尝试使用 C# 处理似乎使用语音转文本的文字记录。我遇到的一个主要问题是重复单词和/或短语。我很想使用正则表达式来替换它们。这里有些例子:

我我我真的很想去,但是我不去,去不了。

我真的很想使用正则表达式替换,所以它会变成这样

我真的很想去,但我去不了。

看来我有多次单词重复,无论是否有逗号。如果我尝试替换寻找特定的,它将替换 3 个中的 2 个,但保留最后两个。因此,想出一种方法来查找多个重复并用该单词的单个版本替换它们,这已经成为一种巨大的痛苦,所以如果我有 I,I,I..... 它会被替换为 I 或 II它只用一个 I 代替。

另外,如果有这样的短语:

你知道,你知道,你知道

希望能够用一个代替三个

我已经尝试过这样的:\b(\w+)\s+\1\b,但它不适用于逗号

我已经看过了,但找不到任何寻找逗号分隔的内容。如果必须多次调用我也没关系,但只是想弄清楚。

任何帮助,将不胜感激!

c# regex regex-replace

3
推荐指数
1
解决办法
404
查看次数

使用 sed 或 awk 和 tcl regsub 函数从字符串中删除制表符

假设我有一个字符串, name = xyz 在名称后面有一个制表符,在“=”后面有随机数量的空格。

我需要一个输出作为 name=xyz

那么如何使用 sed 或 awk 和 tcl regsub 函数从上述字符串中删除制表符和随机数量的空格。非常感谢您的帮助。谢谢。

我试过

[regsub -all { +} $str ""]
Run Code Online (Sandbox Code Playgroud)

这会删除随机数量的空格,$str但制表符仍然存在。

awk sed tcl regsub

1
推荐指数
1
解决办法
227
查看次数

java.lang.AssertionError:预期状态:<200> 但实际为:<201>

您好,我正在尝试在我的控制器中实现 junit。但我得到的是 201 而不是 200。

下面是我的控制器

@RestController
@RequestMapping(value = "/treat")
public class TreatController {

  private final TreatService treatService;

@Autowired
  public TreatController(TreatService treatService){
    this.treatService = treatService;
  }

@PostMapping
  public ResponseEntity<CommonResponse> addNew(
      @RequestBody Treat treat) throws RecordNotFoundException{
    CommonResponse response = new CommonResponse();
    response.setStatus(CommonConstants.OK);
    response.setData(treatService.save(treat));
    return new ResponseEntity<>(response, HttpStatus.CREATED);
  }
}
Run Code Online (Sandbox Code Playgroud)

接下来是我的 Junit 测试:

@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(TreatController.class)
public class TreatControllerTest {

  private RecordNotFoundException recordException = new RecordNotFoundException("");

  private final String title = "{\"title\" : \"title\"}";

  @Autowired
  private MockMvc mockMvc;

  @MockBean
  private TreatService treatService;

@Test …
Run Code Online (Sandbox Code Playgroud)

java junit spring

0
推荐指数
1
解决办法
1万
查看次数

Golang regexp MatchString() isn't idempotent

I not sure what's happening. The same function with same input return different results when using regexp library of golang.

package main

import (
    "fmt"
    "regexp"
)

type PaymentNetworkData struct {
    Regex string
    Name  string
}

var PAYMENT_NETWORKS = map[string]PaymentNetworkData{
    "Mastercard": {
        Regex: "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[0-1]\\d|2720)[0-9]{12}$",
        Name:  "Mastercard",
    },
    "VisaMaster": {
        Regex: "^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$",
        Name:  "VisaMaster",
    },
}

func resolvePaymentNetwork(cardIn string) string {
    payNet := "Unknown"
    for _, v := range PAYMENT_NETWORKS {
        regex := regexp.MustCompile(v.Regex)

        if regex.MatchString(cardIn) {
            payNet = v.Name
        } …
Run Code Online (Sandbox Code Playgroud)

regex go idempotent

-1
推荐指数
1
解决办法
100
查看次数

如何在 C++ 中访问私有类型的私有成员?

我想在不修改 .h 文件的情况下访问私有成员。这是 .h 文件的示例

class X
{
private:
   class A
   {...};
   vector<A> arr;
}
Run Code Online (Sandbox Code Playgroud)

问:如何访问 X::arr ?

class X
{
private:
    int a;
};

template<typename Tag, typename Tag::type Member>
struct XAccessor 
{ 
    friend typename Tag::type get(Tag) 
    {
        return Member;
    } 
};

struct X_A
{ 
    typedef int X::* type;
    friend type get(X_A);
};;

template struct XAccessor<X_A, &X::a>;

...
auto x = new X;
x->*get(X_A())=11;
...
Run Code Online (Sandbox Code Playgroud)

我在网上找到了这种方法,但是当我更改typedef int X::* type为时typedef vector<X::A> X::* type,它给了我一个错误,说X::A无法访问。

c++ templates boost c++-loki

-1
推荐指数
1
解决办法
171
查看次数