小编isa*_*zan的帖子

在特定服务器组上运行Ansible Playbook

我有以下/ etc/ansible/hosts:

[ESNodes]
isk-vsrv643
isk-vsrv644
isk-vsrv645

[PerfSetup]
isk-dsrv613
isk-dsrv614
Run Code Online (Sandbox Code Playgroud)

我知道有一个选项可以使用-l在特定主机上运行一个剧本吗?有没有办法只在PerfSetup组上运行一个剧本?

ansible ansible-playbook

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

Ansible和Wget

我试图从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)

ansible

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

AmazonS3连接管理

在使用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

谢谢.

spring amazon-s3 amazon-web-services

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

Redshift:使用Timestamp列创建一个默认为Now()的表

有没有办法创建一个时间戳列默认为现在的表?

以下任何一项在创建时都会成功,但在插入时会失败.

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)尝试没有时区,创建成功,插入失败.

sql amazon-redshift

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

重新设置Logstash状态

我目前正在开发中并使用以下配置作为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状态?

谢谢

elasticsearch logstash

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

C#JsonConvert使用默认转换器而不是自定义转换器

我有一个具有自定义的类,如下所示JsonConverter

[JsonConverter(typeof(TheShapeSerializer))]
public class TheShape : IShape {
//....
}
Run Code Online (Sandbox Code Playgroud)

我不能改变班级。自定义序列化器的工作方式不适合我的需求。

有没有一种方法可以使用默认的序列化程序而不是TheShapeSerializer来序列化TheShape的实例?

同样,是否有一种方法可以让多个转换器根据给定条件在串行化时间选择?

c# json.net

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

Spring Tool Suite中maven使用的settings.xml在哪里?

我想设置用于从STS部署的ftp服务器,如下所述:http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ftp.html

它应该在settings.xml中.根据文档设置是2:

  • Maven安装:$ M2_HOME/conf/settings.xml
  • 用户的安装:$ {user.home} /.m2/settings.xml

$ M2_HOME在哪里?换句话说,在使用STS(Eclipse)工作时,maven的安装文件夹是什么.我在$ {user.home} /.m2 /中找不到settings.xml.我在Windows 7下工作

这2个线程是相关的,但没有提供一个至少对我有用的明确答案:

Thx提前

java eclipse spring maven

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

让Logstash读取JSON

我正在尝试使用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提前

json logstash

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

杰克逊为多态对象定制反序列化

我查看了许多与此相关的问题,但我找不到这个确切的用例.这里假设我正在使用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提前

java serialization json jackson

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

Kinesis分区键始终位于同一个分片中

我有一个带有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)

关于如何解决这个问题的任何想法?

amazon-kinesis

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