小编jma*_*jma的帖子

grafana/influx 说“没有数据点”,但只是有时

我有一些带有图表的 grafana 仪表板,有时会显示“无数据点”。我知道有数据,因为有时我会在同一页面上看到图表和其他图表显示来自相同测量的其他结果。另外,我可以直接在influxdb中查询数据。

有趣的是,似乎较长的时间段比较短的时间段更有可能导致这种失败(即,30 天有时会失败,1 天很少会失败)。这是每隔几秒钟的数据,如系统统计信息。

我怀疑(数据不足)influxdb 有时响应时间太长,grafana 超时,或者由于相对于可用资源的数据过多,influxdb 彻底失败查询。OTOH,直接查询 influxdb 工作正常(见下文),尽管我一次只抛出一个查询。如果我在仪表板更新时查询,则查询需要更长的时间,就像我在等待工作线程来处理我的查询一样。

但在我开始发展硬件之前,我想拥有的不仅仅是一种预感。我没有那么多数据。然而 influx 和 grafana 日志并没有向我展示任何非常有趣的东西(例如 OOM、超时或查询失败)。

有什么建议?

顺便说一句,grafana 中的示例查询是这样的:

SELECT percentile("usage_system", 95) FROM "cpu"
WHERE "host" =~ /^$host$/ AND $timeFilter
GROUP BY time($__interval), "host"
Run Code Online (Sandbox Code Playgroud)

如果我直接查询 influxdb,查询结果几乎会立即返回,而在 grafana 中,我会等待很长时间并显示微调器。(如果我在更新仪表板的同时进行查询,则查询需要一些时间,这与等待工作线程处理我的查询一致。)

select percentile(usage_system, 95) from cpu
WHERE host = 'seine3'
AND time >= 1519216559000000000 AND time <= 1521808559000000000
GROUP BY time(1h), host
Run Code Online (Sandbox Code Playgroud)

或者

select percentile(usage_system, 95) from cpu
WHERE host = 'seine3'
AND time >= '2018-02-23T00:00:00Z' AND time <= …
Run Code Online (Sandbox Code Playgroud)

influxdb grafana grafana-templating

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

Django迁移陷入困境

我有一个新字段要添加到我的数据库中.所以我说

python manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)

正确创造kernel/migrations/0003_auto_20150726_1911.py.我检查内容,看起来都很好.

我说

python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

我不太开心 向表kernel/migrations/0002_auto_20150707_1459.py添加字段的文件失败.即使我非常确定应用了迁移.因此,永远不会应用迁移0003.date_of_birthuserprofile

这是生产.:(我不知道该怎么办才能申请0003而不是软管django.建议?

其余部分是支持文档:

迁移

?? (master=) [virt]??
? [T] django@beta13:migrations $ cat 0002_auto_20150707_1459.py 
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

dependencies = [
    ('kernel', '0001_initial'),
]

operations = [
    migrations.AlterField(
    model_name='userprofile',
    name='date_of_birth',
    field=models.DateField(null=True, blank=True),
    ),
]
?? (master=) [virt]??
? [T] django@beta13:migrations $ cat 0003_auto_20150726_1911.py 
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from …
Run Code Online (Sandbox Code Playgroud)

django postgresql django-models django-south

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

C/C++时区正确的时间转换(自纪元以来的秒数)

我想知道自纪元以来的几秒钟.值得注意的是,我不喜欢转换机器的位置,时区字符串应该足够了.

我有这个测试程序,pt.cc:

#include <assert.h>
#include <errno.h>
#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE
#endif
#include <time.h>

using namespace std;  // To be brief, don't do this in real life.

int main(int argc, char* argv[]) {
    (void)argc; (void)argv;   // Skip compile warning.

    // I expect both of these to transform to 1440671500.
    cout << "1440671500 expected" << endl;
    const char utc_example[] = "2015-08-27T11:31:40+0100";
    struct tm tm;
    memset(&tm, 0, sizeof(struct tm));
    char* end = strptime(utc_example, "%Y-%m-%dT%H:%M:%S%z", &tm); …
Run Code Online (Sandbox Code Playgroud)

c++ time

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

std :: bind分配给std :: function

我想要一个类型的变量std::function<void(char**)>.这是一个未能做到这一点的简单例子.

我想要了解的是:

  • 当我打电话时,编译器不会抱怨什么是自动执行jj_2a(5, 6)?该函数的所有参数都绑定了.
  • 但是,如果我不使用auto,我会得到我期望的行为(使用参数编译错误).所以显然function<void(void)>根本不是汽车决定的.
  • 如果我绑定第一个参数而不是第二个(jj_3),那么使用两个参数调用(但根据我的心智模型删除错误的参数),而使用一个参数调用(我认为应该工作)不会编译.
  • 使用std::functionalfor jj_3_f表示"没有可行的转换",虽然错误信息对我没有帮助.

请参阅下面的编译器和特定错误.这是linux,clang 3.8.0,ubuntu 16.04.1.

#include <functional>
#include <iostream>

void jj_1(int x, int y) { std::cout << x << ' ' << y << std::endl; }

int main() {
  using namespace std::placeholders; // for _1, _2, _3...

  auto jj_2a = std::bind(jj_1, 3, 2);
  jj_2a(5, 6);  // This works, prints "3 2", no compiler warning, is auto drunk?
  jj_2a();      // This also …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11 c++14

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

C ++,函数表和模板

我有一张函数表。看起来像这样:

struct AnimalFunction {
    void (*Walk)(int a);
    void (*Sing)(int a, int b);
    void (*Dance)(int a, int b, int c);
};
using AnimalFunctionTable = map<string, AnimalFunction>;
Run Code Online (Sandbox Code Playgroud)

换句话说,我有行AnimalFunction的和从我知道的某种字符串到本质上是类型的映射。为简单起见,也许我包括一些额外的参数,以便它们都具有相同的签名,而忽略它们不需要的内容:WalkDog(int a, int, int) { ... }

现在,我必须这样定义功能WalkDog()SingDog()DanceDog(),然后WalkGiraffe()SingGiraffe()(但我们的长颈鹿不跳舞,使他们获得了一些默认的功能,也许我有名字至少)。

我的目标是简化维护。我想写一些模板函数,例如

template<typename AnimalT>
void WalkAnimal(int a) { ... }
Run Code Online (Sandbox Code Playgroud)

这样表就可以只是字符串到类型的映射。(有时我可以编写这样一个通用函数,有时我需要编写一个专门的函数,但是至少我要让编译器来维护我的表。)但是我不相信C ++(在我的情况下为14),尽管可能是升级到17的论点)支持这样的事情。

以字符串开头的原因是由于网络上可访问的API。不能期望其他客户端使用与我的系统相同的C ++类型,因此它们告诉我类似的信息{action: "walk", animal: "dog"}。(这是一个protobuf,不是JSON,但这个问题是文本。)

// What I want to say, in my dreams:
actions[action_string][animal_string](arg1, arg2, arg3);
Run Code Online (Sandbox Code Playgroud)

尽管精确的运算符并不重要,但这里仅作说明。

除了明确编写整个表外,还有其他建议吗?

c++ polymorphism c++14 c++17

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

C ++:减去无符号值是无符号的

在C ++中,编译器提醒我减去无符号值是无符号的,因此调用abs()是没有意义的:

uint64_t a, b;
if (std::abs(a - b) > 10) {
    std::cout << "Divergence achieved!" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

好的,我知道减法是加法,在我的实例中我知道数字将小于2 ^ 63,所以我static_cast去了int64_t。但是打电话的目的abs是避免写作

if (a - b > 10 || b - a > 10) {
    std::cout << "Divergence achieved!" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

有没有更惯用的方法来做到这一点?

c++ c++14

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

带有{%url ...%}和关键字args的NoReverseMatch

我遇到此错误的问题:

Caught NoReverseMatch while rendering: Reverse for ''pennies.views.seed_preview''
with arguments '()' and
keyword arguments '{'sa': 1724158887L, 'sh': 31L}' not found.
Run Code Online (Sandbox Code Playgroud)

这是由这个模板产生的:

<a href="{% url 'pennies.views.seed_preview' sh=seed.id sa=seed.salt %}">
Preview</a>
Run Code Online (Sandbox Code Playgroud)

这一点 url.py

url(r'^seedpreview/sh=(?P<shareable_id>\d+)/sa=(?P<salt>\d+)$', \
    'pennies.views.seed_preview'),
Run Code Online (Sandbox Code Playgroud)

和这个功能签名

def seed_preview(request, shareable_id, salt):
Run Code Online (Sandbox Code Playgroud)

(当然还有来自未来的网址).而错误告诉我,django已经捕获了正确的字典以找到我的功能.阅读templatetags/future.py也让我觉得我做得对,但显然我没有.

有什么指针吗?

django django-templates

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

C++:引用和工厂

我有这样的事情:

struct D {
    virtual void operator() {...};
}
struct D1 : public D {
    virtual void operator() {...};
}
struct D2 : public D {
    virtual void operator() {...};
}

void foo(D &d) {...};
Run Code Online (Sandbox Code Playgroud)

所以这很好,很好地控制了我的D的生命周期:

foo(D());
foo(D1());
foo(D2());
Run Code Online (Sandbox Code Playgroud)

但我在多个地方选择我的D变种,所以我想要一个简单的工厂:

const D& make_D()
{
    // BAD, returning reference to temporary
    if(is_tuesday())
        return D1();
    return D2();
}
Run Code Online (Sandbox Code Playgroud)

我可以返回一个对象,而不是返回对临时的引用,然后切换到基类.或者,我可以从我的工厂返回一个指针,但客户端必须删除它.其他更复杂的解决方案也会给客户带来更多负担.

有没有办法写出类似的东西

D& d = make_D();
foo(d);
Run Code Online (Sandbox Code Playgroud)

(甚至foo(make_D()))?目标是将复杂性包含在各种D定义中,make_D()以便函数foo()和调用这些函数的函数不必担心它.

c++ c++11

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

用不同的名称恢复mongodb数据库

我一直在定期(每 24 小时)备份我的 mongodb 实例。这很好用,我可以在我的登台服务器上毫无问题地恢复它们:

time mongorestore  --ssl --gzip --authenticationDatabase=admin \
    --host=fra-mongo-staging-1.example.com --port=27017        \
    --username=restore --password=secret --archive="$snapshot_name"
Run Code Online (Sandbox Code Playgroud)

但是生产中的 dbname 是 example_prod,而在登台服务器上,我想恢复到 example_staging。所以我输入这个:

time mongorestore  --ssl --gzip --db "$dbname" --authenticationDatabase=admin \
    --host=fra-mongo-staging-1.example.com --port=27017                       \
    --username=restore --password=secret --archive="$snapshot_name"
Run Code Online (Sandbox Code Playgroud)

唯一的区别是 --db "$dbname"(其中 $dbname 是 example_staging)。这不起作用:我看到关于准备的行,然后它说完成,但没有恢复。

2019-02-07T11:16:36.743+0000    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2019-02-07T11:16:36.772+0000    archive prelude example_prod.surveys
2019-02-07T11:16:36.773+0000    archive prelude example_prod.settings …
Run Code Online (Sandbox Code Playgroud)

mongodb mongorestore

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

提高日志和严重性/本地属性

我是Boost日志的新手。我有一些简单的东西可以工作,但是我一直坚持要使用宏来简化指定文件名和行号的工作。看起来好难,我想我已经错过了一些东西。

我编写此代码是为了在最后使用演示日志初始化日志记录。请注意,我正在登录控制台和旋转文件。

logging::add_console_log(std::clog, keywords::format = "%TimeStamp%: %_%",
                         keywords::auto_flush = true);
typedef sinks::synchronous_sink<sinks::text_file_backend> file_sink;
shared_ptr<file_sink> sink(new file_sink(
    keywords::file_name = "%Y%m%d_%H%M%S_%5N.log",
    keywords::rotation_size = 16384, keywords::auto_flush = true));

sink->locked_backend()->set_file_collector(sinks::file::make_collector(
    keywords::target = "logs",
    keywords::max_size = 16 * 1024 * 1024,
    keywords::min_free_space = 100 * 1024 * 1024));

sink->locked_backend()->scan_for_files();
sink->set_formatter(expr::stream
                    << expr::attr<boost::posix_time::ptime>("TimeStamp")
                    << " " << logging::trivial::severity << "["
                    << expr::attr<string>("FileName") << ":"
                    << expr::attr<unsigned int>("LineNumber") << "] "
                    << expr::smessage);
logging::core::get()->add_sink(sink);
logging::add_common_attributes();
logging::core::get()->add_global_attribute("TimeStamp",
                                           attrs::local_clock());

src::severity_logger<logging::trivial::severity_level> slg;
lg.add_attribute("LineNumber", attrs::constant<unsigned int>(__LINE__));
lg.add_attribute("FileName", attrs::constant<string>(__FILE__));
for (unsigned int …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-log

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