小编Lav*_*air的帖子

如何使用 PromQL 的 hour() 函数?

我正在尝试在 Prometheus 的alert.rules 文件中设置一个警报,该警报仅在特定时间段内触发。我已经在 expr 标签内测试了下面的代码块,没有时间限制,并且它工作得非常好。
正如PromQL 文档:hour()所述,hour()根据当前 UTC 返回 0 到 23 之间的值。

- alert: test_down 
        expr: absent(container_memory_usage_bytes{name="test_ap"}) and hour() > 5 and hour() < 22
        for: 30s
        labels:
          severity: critical
        annotations:
          summary: "test_ap down"
          description: "test_ap is down for more than 30 seconds."
Run Code Online (Sandbox Code Playgroud)

但在这里,不会触发任何警报通知。有谁知道为什么没有任何东西被解雇以及我该如何解决这个问题?

编辑:我已经解决了。我不明白为什么我必须像我这样做的方式那样做,但以下方法有效:
替换and hour() > 5 and hour() < 22and ON() hour() > 5 < 22

prometheus promql prometheus-alertmanager

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

我是否必须担心"没有shell可用"来执行系统命令?

手册页"man system"包含以下部分:

  • 如果command为NULL,则在shell可用时为非零值,如果没有可用shell则为0.

这基本上表明我可以检查 if(system(NULL) != 0) {foo;}shell是否当前可用.

我何时必须考虑这样做?因为我从未遇到过与此特定案例相关的错误.

c

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

什么是 C 中的模块?

C++ 已经出现过一次类似的问题,但答案和问题本身并不令人满意。
我读过.c Filegithub 链接),其中包括<linux/module.h>并将其静态函数传递给module_init(foo)module_exit(foo)。那么模块的一般用途是什么,<linux/module.h> file在这种情况下,特别是这两种方法的用途是什么?

c linux-kernel

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

是否保证数组元素的地址增加

当我定义和初始化数组时a:

绝对是绝对安全的,如果(&(a[x]) > &(a[y]))持有,x > y是暗示吗?

我担心一些我不知道的奇怪的特殊内存地址.

c

4
推荐指数
2
解决办法
62
查看次数

如何将给定文件的整个内容读入字符串?

我的给定文件/path/file.txt包含例如以下内容:

你好,世界!
试着读我.

如何在代码中将整个内容读入单个字符串?
对于此特定示例,字符串应如下所示:

"Hello World!\nTry to read me."
Run Code Online (Sandbox Code Playgroud)

ocaml

3
推荐指数
2
解决办法
374
查看次数

memset 如何提供比 bzero 或explicit_bzero 更高的安全性?

手册页bzero状态,对于各种安全原因,已被废弃,memset应改为使用。
他们主要提到的问题是,bzero或者explicit_bzero无法找到给定数据的所有副本(尤其是小到足以放入寄存器的数据),并且可能没有按预期完全擦除或覆盖。
memset只接受一个指针地址。应该如何memset才能找到所有副本来关闭这种缺乏安全性?

c

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

有没有一种方法可以将空元素添加到OCaml中的列表?

考虑给定的列表[3;4;5]
现在,我要执行OCaml中x::[3;4;5];;
是否有一个可再次x导致结果[3;4;5]

ocaml

2
推荐指数
2
解决办法
88
查看次数

如何在OCaml中使用常规模运算

在OCaml -1 mod 3;;返回,-1但我希望2结果.是否有其他额外的模数指令或类似的?

ocaml modulo

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

有没有一种语法上短的方法可以在堆上初始化结构指针?

当我有:

typedef struct {
    int id;
    char* key;
} some_pthread_arg;
Run Code Online (Sandbox Code Playgroud)

我可以说:

some_pthread_arg spa1 = 
  {
   .id = 123456, 
   .key = "Hello World!" // is it a problem, that i don't predefine the input size?
  };
Run Code Online (Sandbox Code Playgroud)

如果我想在这样的结构上初始化一个指针,我可以简单地:

some_pthread_arg *spa2 = &spa1;
Run Code Online (Sandbox Code Playgroud)

代替:

some_pthread_arg *spa2;
spa2->id = 123456;
spa2->key = "Hello World!"; // is it a problem, that i don't predefine the input size?
Run Code Online (Sandbox Code Playgroud)

但是如果我使用这个:

some_pthread_arg *spa2 = &spa1;
Run Code Online (Sandbox Code Playgroud)

我没有机会在堆上分配结构,而使用其他选项,我可以:

some_pthread_arg *spa2 = (some_pthread_arg *) malloc (sizeof(some_pthread_arg));
spa2->id = 123456;
spa2->key = …
Run Code Online (Sandbox Code Playgroud)

c struct

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