我有以下/ etc/ansible/hosts:
[ESNodes]
isk-vsrv643
isk-vsrv644
isk-vsrv645
[PerfSetup]
isk-dsrv613
isk-dsrv614
Run Code Online (Sandbox Code Playgroud)
我知道有一个选项可以使用-l在特定主机上运行一个剧本吗?有没有办法只在PerfSetup组上运行一个剧本?
我试图从Ansible playbook中的Web服务器中获取文件.
这是Ansible片段:
---
- hosts: all
sudo: true
tasks:
- name: Prepare Install folder
sudo: true
action: shell sudo mkdir -p /tmp/my_install/mysql/ && cd /tmp/my_install/mysql/
- name: Download MySql
sudo: true
action: shell sudo wget http://{{ repo_host }}/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar
Run Code Online (Sandbox Code Playgroud)
通过以下方式调用它:
ansible-playbook my_3rparties.yml -l vsrv644 --extra-vars "repo_host=vsrv656" -K -f 10
Run Code Online (Sandbox Code Playgroud)
它失败了以下内容:
Cannot write to `MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar' (Permission denied).
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/usr2/ihazan/vufroria_3rparties.retry
vsrv644 : ok=2 changed=1 unreachable=0 failed=1
Run Code Online (Sandbox Code Playgroud)
当尝试通过常规远程ssh执行失败的命令以模仿ansible将执行的操作时,它不会按以下方式工作:
-bash-4.1$ …Run Code Online (Sandbox Code Playgroud) 在使用AWS时,是否有推荐的方法来管理与AmazonS3的连接?
典型的Amazon S3代码(取自亚马逊官方样本)通常看起来像这样?
AmazonS3 s3 = new AmazonS3Client(...);
...
s3.putObject(new PutObjectRequest(bucketName, project.getName() + "/" + imageFile.getName(), imageFile));
Run Code Online (Sandbox Code Playgroud)
以下是问题:
这是一个好主意维护代码中每个人使用的单个AmazonS3Client,还是最好在每次调用时创建一个?
例如,在使用MySQL时是否存在连接池的概念?
像断开连接(MySQL类比:MySQL重启)这样的问题是否相关,以致AmazonS3Client变得无效并需要重新创建?如果是这样,处理断开连接的正确方法是什么?
有谁知道spring与spring集成提供的功能:https://github.com/spring-projects/spring-integration-extensions/tree/master/spring-integration-aws
谢谢.
有没有办法创建一个时间戳列默认为现在的表?
以下任何一项在创建时都会成功,但在插入时会失败.
CREATE TABLE MyTable
(
device_id VARCHAR(64) NOT NULL encode lzo,
app_id VARCHAR(150) NOT NULL distkey encode lzo,
retrieval_date TIMESTAMP without time zone default (now() at time zone 'utc') encode lzo
)
diststyle key
compound sortkey(app_id,device_id);
Run Code Online (Sandbox Code Playgroud)
然后插入:
insert into MyTable (device_id,app_id) values('a','b');
INFO: Function "timezone(text,timestamp with time zone)" not supported.
INFO: Function "now()" not supported.
ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables.
Run Code Online (Sandbox Code Playgroud)
我尝试了以下其他口味,但都失败了.
a)现在用单引号'now'试过,创建成功但失败了另一个错误
b)尝试没有时区,创建成功,插入失败.
我目前正在开发中并使用以下配置作为logstash代理:
input {
file {
type => "access_log"
# Wildcards work, here :)
path => [ "/root/isaac/vuforia_logs/access_logs/gw_access_log.2014-02-19.00.log"]
start_position => "beginning"
}
}
filter {
if [type] == "access_log" {
grok {
pattern => "\[%{DATA:my_timestamp}\] %{IP:client} %{WORD:method} %{URIPATHPARAM:request} \[%{DATA:auth_data}\] \[%{DATA:another_timstamp}\] %{NUMBER:result_code} %{NUMBER:duration} %{NUMBER:bytes}"
}
}
}
output {
stdout { debug => true }
elasticsearch_http {
host => "192.168.79.128"
}
Run Code Online (Sandbox Code Playgroud)
它第一次读取文件时,会处理它并登录到stdout和elasticsearch.问题是,当我重新启动logstash时,它没有做任何我认为是因为它保持上次停止logstash的最后位置.我很有兴趣重置logstash,以便从头开始重新处理文件.这是出于开发和测试的目的,有没有办法重置/清除logstash状态?
谢谢
我有一个具有自定义的类,如下所示JsonConverter:
[JsonConverter(typeof(TheShapeSerializer))]
public class TheShape : IShape {
//....
}
Run Code Online (Sandbox Code Playgroud)
我不能改变班级。自定义序列化器的工作方式不适合我的需求。
有没有一种方法可以使用默认的序列化程序而不是TheShapeSerializer来序列化TheShape的实例?
同样,是否有一种方法可以让多个转换器根据给定条件在串行化时间选择?
我想设置用于从STS部署的ftp服务器,如下所述:http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ftp.html
它应该在settings.xml中.根据文档设置是2:
$ M2_HOME在哪里?换句话说,在使用STS(Eclipse)工作时,maven的安装文件夹是什么.我在$ {user.home} /.m2 /中找不到settings.xml.我在Windows 7下工作
这2个线程是相关的,但没有提供一个至少对我有用的明确答案:
Thx提前
我正在尝试使用logstash来分析包含JSON对象的文件,如下所示:
{"Query":{"project_id":"a7565b911f324a9199a91854ea18de7e","timestamp":1392076800,"tx_id":"2e20a255448742cebdd2ccf5c207cd4e","token":"3F23A788D06DD5FE9745D140C264C2A4D7A8C0E6acf4a4e01ba39c66c7c9cbd6a123588b22dc3a24"}}
{"Response":{"result_code":"Success","project_id":"a7565b911f324a9199a91854ea18de7e","timestamp":1392076801,"http_status_code":200,"tx_id":"2e20a255448742cebdd2ccf5c207cd4e","token":"3F23A788D06DD5FE9745D140C264C2A4D7A8C0E6acf4a4e01ba39c66c7c9cbd6a123588b22dc3a24","targets":[]}}
{"Query":{"project_id":"a7565b911f324a9199a91854ea18de7e","timestamp":1392076801,"tx_id":"f7f68c7fb14f4959a1db1a206c88a5b7","token":"3F23A788D06DD5FE9745D140C264C2A4D7A8C0E6acf4a4e01ba39c66c7c9cbd6a123588b22dc3a24"}}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望Logstash能够理解JSON.我使用了以下配置:
input {
file {
type => "recolog"
format => json_event
# Wildcards work, here :)
path => [ "/root/isaac/DailyLog/reco.log" ]
}
}
output {
stdout { debug => true }
elasticsearch { embedded => true }
}
Run Code Online (Sandbox Code Playgroud)
我基于这个Apache配方构建了这个文件
当使用debug = true运行logstash时,它会读取如下对象:我如何根据我的JSON文件查看kibana GUI中的统计信息,例如Query对象的数量,甚至是基于时间戳的查询.现在看起来它理解数据的非常基本版本而不是它的结构.
Thx提前
我查看了许多与此相关的问题,但我找不到这个确切的用例.这里假设我正在使用Java Jackson库.
我有以下类层次结构:
public class Event {
@JsonProperty("si")
String sessionId;
@JsonProperty("eventType")
String eventType;
...
}
@JsonSerialize(include= JsonSerialize.Inclusion.NON_NULL)
public class InitEvent extends Event
{
@JsonProperty("pm")
Params params;
public Params getParams()
{
return params;
}
.....
}
@JsonSerialize(include= JsonSerialize.Inclusion.NON_NULL)
public class RecoEvent extends Event
{
@JsonProperty("ti")
String targetId;
@JsonProperty("tt")
int targetType;
public String getTargetId()
{
return targetId;
}
....
}
Run Code Online (Sandbox Code Playgroud)
反序列化的规则是:
如果eventType == 0则反序列化为InitEvent
如果eventType == 0则反序列化为RecoEvent
开箱即用杰克逊反序列化将不起作用,因为它不知道要反序列化的类.处理它的一种方法是在基类上执行以下操作:
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
@JsonSerialize(include= JsonSerialize.Inclusion.NON_NULL)
public class Event
Run Code Online (Sandbox Code Playgroud)
此解决方案的问题是假设客户端将使用相同的映射器进行序列化,因为@class元素现在需要存在于JSON中.
我的客户端不会在传入的JSON中发送额外的@class元素.
什么是必需的解决方案?
我如何编写一个自定义反序列化器,根据eventType值选择正确的派生类?
Thx提前
我有一个带有2个分片的kinesis流,如下所示:
{
"StreamDescription": {
"StreamStatus": "ACTIVE",
"StreamName": "my-stream",
"Shards": [
{
"ShardId": "shardId-000000000001",
"HashKeyRange": {
"EndingHashKey": "17014118346046923173168730371587",
"StartingHashKey": "0"
},
{
"ShardId": "shardId-000000000002",
"HashKeyRange": {
"EndingHashKey": "340282366920938463463374607431768211455",
"StartingHashKey": "17014118346046923173168730371588"
},
]
}
}
Run Code Online (Sandbox Code Playgroud)
发送方设置通常为UUID的分区.它总是落在shard-002之上,这使得系统不能进行负载平衡,因此无法扩展.
作为旁注,kinesis使用md5sum分配记录,然后将其发送到包含其范围内的结果哈希的分片.事实上,当我在我使用的UUId上测试它时,它们总是落在同一个碎片中.
echo -n 80f6302fca1e48e590b09af84f3150d3 | md5sum
4527063413b015ade5c01d88595eec11
17014118346046923173168730371588 < 4527063413b015ade5c01d88595eec11 < 340282366920938463463374607431768211455
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?