小编Nik*_*s B的帖子

Google Cloud Container优化的操作系统主机记录到stackdriver

TL; DR
将容器优化的os 主机日志(ssh和执行的shell命令)发送到Stackdriver 的最佳做法是什么?

背景:
我正在使用Googles Container Optimized OS,效果很好.将容器日志发送到Stackdriver非常容易,但如何将主机日志发送到Stackdriver?

这是出于审计目的,我需要记录所有SSH连接(接受或拒绝)以及通过shell执行的所有命令.以前我只是通过stackdriver主机记录器包将rsyslogd(auth,authpriv)发送到stackdriver.

这适用于在托管实例组(mig)中运行的Container Optimized OS VM,而不是在Google Kubernetes Engine中运行.

它可能非常明显,但我似乎无法找到任何文档.

google-cloud-platform stackdriver

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

Google 部署管理器:MANIFEST_EXPANSION_USER_ERROR 多行变量

尝试使用带有多行变量的 YAML 和 Jinja 的 Google 部署管理器,例如:

startup_script_passed_as_variable: |
  line 1
  line 2
  line 3
Run Code Online (Sandbox Code Playgroud)

然后:

{% if 'startup_script_passed_as_variable' in properties %}
    - key: startup-script
      value: {{properties['startup_script_passed_as_variable'] }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

给出MANIFEST_EXPANSION_USER_ERROR

错误:(gcloud.deployment-manager.deployments.create) 操作错误 operation-1432566282260-52e8eed22aa20-e6892512-baf7134:

MANIFEST_EXPANSION_USER_ERROR
清单扩展遇到以下错误:扫描“”中的简单键时,在“”中找不到预期的“:”

尝试(但失败):

{% if 'startup_script' in properties %}
        - key: startup-script
          value: {{ startup_script_passed_as_variable }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

{% if 'startup_script' in properties %}
        - key: startup-script
          value: | 
            {{ startup_script_passed_as_variable }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

{% if 'startup_script' in properties …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine

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

从较大的jsonb字段中快速检索多个值(postgresql 9.4)

TL;博士

使用PSQL 9.4,有没有办法从jsonb字段中检索多个值,例如使用虚函数:

jsonb_extract_path(x, ARRAY['a_dictionary_key', 'a_second_dictionary_key', 'a_third_dictionary_key'])
Run Code Online (Sandbox Code Playgroud)

希望加快选择多个值所需的几乎线性时间(1值= 300ms,2值= 450ms,3值= 600ms)

背景

我有以下jsonb表:

CREATE TABLE "public"."analysis" (
  "date" date NOT NULL,
  "name" character varying (10) NOT NULL,
  "country" character (3) NOT NULL,
  "x" jsonb,
  PRIMARY KEY(date,name)
);
Run Code Online (Sandbox Code Playgroud)

大约有100 000行,每行有一个带有90多个键和相应值的jsonb字典.我正在尝试编写一个SQL查询,以相当快的方式选择一些(<10)键+值(<500 ms)

索引和查询:190ms

我开始添加一个索引:

CREATE INDEX ON analysis USING GIN (x);
Run Code Online (Sandbox Code Playgroud)

这使得基于"x"字典中的值快速查询,例如:

SELECT date, name, country FROM analysis where date > '2014-01-01' and date < '2014-05-01' and cast(x#>> '{a_dictionary_key}' as float) > 100;
Run Code Online (Sandbox Code Playgroud)

这需要大约190毫秒(我们可以接受)

检索字典值

但是,一旦我开始在SELECT部分​​中添加要返回的键,执行时间几乎呈线性增长:

1值:300ms

select jsonb_extract_path(x, 'a_dictionary_key') from analysis …
Run Code Online (Sandbox Code Playgroud)

postgresql hstore jsonb

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

Google Compute Engine根据队列长度自动缩放

我们将基础架构托管在Google Compute Engine上,并正在考虑对实例组进行自动缩放。我们对队列中的二进制数据进行了大量批处理。在我们的情况下,这意味着:

  1. 当工人正在处理数据时,CPU始终为100%
  2. 当队列为空时,我们要终止所有工作程序
  3. 根据队列的长度,我们需要一定数量的工人

但是,我发现很难找到一种在Google Compute Engine上自动缩放的方法,因为它们似乎可以在仅实例的指标(例如CPU)上进行缩放。从文档中

并非所有自定义指标都可以由自动缩放器使用。要选择有效的自定义指标,该指标必须具有以下所有属性:

  • 该指标必须是每个实例的指标。
  • 该指标必须是有效的利用率指标,这意味着该指标中的数据可用于按比例增加或减少虚拟机的数量。

如果我正确阅读了文档,这将使得很难在全局队列长度上使用自动缩放?

备份解决方案

  1. 使用Google Cloud API编写一个简单的自动缩放处理程序,以使用Instances API创建或销毁新工作线程
  2. 使用实例组编写一个简单的自动缩放处理程序,然后使用InstanceGroups手动插入/删除实例:insert
  3. 使用InstangeGroupManagers编写一个简单的自动缩放处理程序:resize
  4. 创建一个自定义的按实例度量标准,该度量标准适用len(queue)/len(workers)于所有工作人员

google-compute-engine google-cloud-platform

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

PyArrow:增量使用 ParquetWriter,无需将整个数据集保留在内存中(大于内存 parquet 文件)

我正在尝试将一个大的镶木地板文件写入磁盘(大于内存)。我天真地认为我可以聪明地使用 ParquetWriter 和 write_table 增量写入文件,如下所示(POC):

import pyarrow as pa
import pyarrow.parquet as pq
import pickle
import time

arrow_schema = pickle.load(open('schema.pickle', 'rb'))
rows_dataframe = pickle.load(open('rows.pickle', 'rb'))

output_file = 'test.parq'

with pq.ParquetWriter(
                output_file,
                arrow_schema,
                compression='snappy',
                allow_truncated_timestamps=True,
                version='2.0',  # Highest available schema
                data_page_version='2.0',  # Highest available schema
        ) as writer:
            for rows_dataframe in function_that_yields_data()
                writer.write_table(
                    pa.Table.from_pydict(
                            rows_dataframe,
                            arrow_schema
                    )
                )
Run Code Online (Sandbox Code Playgroud)

但即使我生成了块(比如我的例子中的 10000 行)并使用write_table它仍然将整个数据集保留在内存中。

事实证明,ParquetWriter 将整个数据集保留在内存中,同时增量写入磁盘

是否有办法强制 ParquetWriter 不将整个数据集保留在内存中,或者出于充分的原因根本不可能?

python parquet apache-arrow pyarrow

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

PyArrow 表:过滤行

我有一个RecordBatch来自 Plasma DataStore 的文件,我可以将其读入 apyarrow.RecordBatch或 a中pyarrow.Table。我现在尝试在将其转换为 pandas ( to_pandas) 之前过滤掉行。

有没有办法filter在 上使用新的 Dataset API(可以在 ParquetDataset 上使用)中的方法pyarrow.Table?这将使我能够使用这样的过滤器:

[[('date', '=', '2020-01-01')]]

查看源代码,pyarrow.Tablepyarrow.RecordBatch似乎都有一个过滤功能,但至少RecordBatch需要一个布尔掩码。

这可能吗?原因是数据集包含大量非零拷贝的字符串(和/或类别),因此运行to_pandas实际上会引入显着的延迟,而我每次只查找大约 20% 的数据集。

问候,
尼克拉斯

python pandas pyarrow

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

Google Deploy Manager(无效的配置文件:模板提取失败/找不到资源)

使用Google Deploy Manager时:

gcloud deployment-manager deployments create  my-environment --config my-environment.jinja
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ErrorsValueListEntry INVALID_CONFIG

无效的配置文件:模板获取失败:找不到资源

无论我的内容如何my-environment.jinja-即使复制文档中的样本

不知道我在做什么错吗?

google-compute-engine

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