小编Spa*_*nky的帖子

ElasticSearch:未分配的碎片,如何解决?

我有一个包含4个节点的ES集群:

number_of_replicas: 1
search01 - master: false, data: false
search02 - master: true, data: true
search03 - master: false, data: true
search04 - master: false, data: true
Run Code Online (Sandbox Code Playgroud)

我不得不重新启动search03,当它返回时,它重新加入群集没有问题,但留下了7个未分配的分片.

{
  "cluster_name" : "tweedle",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 4,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 15,
  "active_shards" : 23,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 7
}
Run Code Online (Sandbox Code Playgroud)

现在我的群集处于黄色状态.解决此问题的最佳方法是什么?

  • 删除(取消)分片?
  • 将分片移动到另一个节点?
  • 将分片分配给节点?
  • 将'number_of_replicas'更新为2?
  • 还有别的吗?

有趣的是,当添加一个新索引时,该节点开始处理它并与群集的其余部分一起玩得很好,它只是留下未分配的分片.

关注问题:我是否做错了导致这种情况发生在一开始?对重新启动节点时以这种方式运行的集群,我没有多少信心.

注意:如果由于某种原因运行单个节点群集,则可能只需执行以下操作:

curl -XPUT 'localhost:9200/_settings' -d '
{
    "index" : {
        "number_of_replicas" …
Run Code Online (Sandbox Code Playgroud)

sharding master elasticsearch

152
推荐指数
11
解决办法
20万
查看次数

如何处理不匹配的Logstash grok过滤器

我想知道使用Logstash Grok过滤器的最佳方法是什么.我有一些特定日志条目的过滤器,不适用于所有条目.那些不适用的标签始终生成_grokparsefailure标签.例如,我有一个grok过滤器,用于每个日志条目,它工作正常.然后我有另一个过滤器,用于带有回溯的错误消息.回溯过滤器为每个没有回溯的日志条目抛出grokparsefailure.

如果没有匹配而不是添加parsefailure标记,我宁愿让它只是通过规则.我使用parsefailure标签来查找未正确解析的内容,而不是与特定过滤器不匹配的内容.也许只是命名"解析失败"才能得到我.对我而言,这意味着过滤器出现了问题(例如格式错误),而不是它不匹配.

所以问题是,我该如何处理?

  • 使用过滤器模式可选吗?

  • (ab)使用tag_on_failure选项将其设置为空[]

  • 使用诸如"if ifback in message"之类的东西使过滤器有条件

  • 还有别的什么我不考虑?

提前致谢.

编辑

我采取了在过滤器周围添加条件的路径:

    if [message] =~ /took\s\d+/ {
        grok {
            patterns_dir => "/etc/logstash/patterns"
            match => ["message", "took\s+(?<servicetime>[\d\.]+)"]
            add_tag => [ "stats", "servicetime" ]
        }
    }
Run Code Online (Sandbox Code Playgroud)

仍然对反馈感兴趣.什么被认为是"最佳实践"?

filter logstash logstash-grok

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

为什么"&reg"在没有边界分号的情况下呈现为"®"

我一直在遇到一个问题,这个问题是通过谷歌adwords推动的营销活动揭示出来的.使用的标准参数之一是"区域".当用户搜索并点击赞助商链接时,Google会生成一个长URL来跟踪点击,并在引荐来源中发送大量内容.我们捕获了这些记录,我们注意到"Region"参数输入错误.应该是什么

http://ravercats.com/meow?foo=bar&region=catnip
Run Code Online (Sandbox Code Playgroud)

而是通过以下方式:

http://ravercats.com/meow?foo=bar®ion=catnip
Run Code Online (Sandbox Code Playgroud)

我已经证实这种情况发生在所有浏览器中.我的理解是HTML实体语法定义如下:

&VALUE;
Run Code Online (Sandbox Code Playgroud)

其中前导边界是&符号,闭合边界是分号.看起来很简单.问题是,这个实体并没有得到尊重,而且它在整个系统中造成了各种各样的破坏.

有谁知道为什么会这样?这是DTD中的错误吗?(我正在寻找当前的HTML DTD以确定我是否可以理解它)我正在试图找出跨浏览器的常见情况,以便实现这一点,因此我在寻找DTD.

这是您可以使用的证明.获取此代码,从中制作HTML文件并在浏览器中呈现它:

<html>
<a href="http://foo.com/bar?foo=bar&region=US&register=lowpass&reg_test=fail&trademark=correct">http://foo.com/bar?foo=bar&region=US&register=lowpass&reg_test=fail&trademark=correct</a>
</html>
Run Code Online (Sandbox Code Playgroud)

编辑:对于那些建议我需要转义整个网址的人来说,上面的示例网址就是这样的例子.真正的网址直接来自Google,我无法控制它的构建方式.这些建议虽然有效,却没有回答这个问题:"为什么会这样?"

html query-string

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

如何判断OS X上安装了哪个版本的libxml2和libxslt?

我正在试图找出我目前安装的版本.OS X Mountain Lion(10.8.2)

提前致谢!

macos libxml2 libxslt

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

如何获取GCE实例的内部IP地址列表

我有一堆在GCE中运行的实例.我想以编程方式获取它们的内部IP地址列表,而无需登录实例(本地).

我知道我可以跑:

gcloud compute instances list
Run Code Online (Sandbox Code Playgroud)

但是有没有我可以通过的标志来获取我想要的信息?例如

gcloud compute instances list --internal-ips
Run Code Online (Sandbox Code Playgroud)

或者类似的?或者我将不得不掸掉我的sed/awk大脑并解析输出?

我也知道我可以使用--format = json在JSON中获取输出,但我正在尝试在bash脚本中执行此操作.

awk google-compute-engine gcloud

8
推荐指数
3
解决办法
9166
查看次数

jQuery验证:使用AJAX的自定义验证器

好的,我放弃了.在尝试了内联函数,回调,返回参数的无穷无尽的排列之后,我仍然无法按照我的意愿行事.任何帮助,将不胜感激.

当前状态:除"checkEmail"错误消息外,一切正常.javascript弹出窗口向用户传达正确的消息,但该字段不会显示任何错误消息,处理程序返回true或false.

期望的结果是,如果来自AJAX调用的JSON有效负载不是200,则弹出Javascript警报并使用相应的错误消息将该字段突出显示为无效.目前,它会弹出警报,但不会将该字段标记为无效.

(对不起,这是jQuery 1.7 + jquery.validation插件)

JSON响应:

我们的JSON响应有效负载如下所示:

{"message": "Email is not in use.", "code": 200, "email": "test-39485787@mailinator.com"}
Run Code Online (Sandbox Code Playgroud)

要么

{"message": "Duplicate email address detected", "code": 401}
Run Code Online (Sandbox Code Playgroud)

代码

<html>

<head>
<script>

// You'd think this should be false, but no
// Also it apparently needs to be a quoted 
// string: http://stackoverflow.com/a/11496502/814669
var checkEmailStatus = "true";

// Success Handling
checkEmailSuccess = function(data, textStatus, jqXHR) {
    checkEmailStatus = "true";
    switch (data.code) {
        case 200:
            checkEmailStatus = "false"; // Nothing set here …
Run Code Online (Sandbox Code Playgroud)

validation ajax jquery

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

在Apache中设置多个cookie

我正在尝试使用mod_header在Apache(2.2)中设置两个cookie,如下所示:

Header set Set-Cookie "poodle=noodle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"
Header set Set-Cookie "tweedle=puddle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"
Run Code Online (Sandbox Code Playgroud)

但只有最后一个cookie被发送到浏览器.我已经做了一些搜索,但只发现有这个问题的人没有解决方案.我尝试将它们组合成一个:

Header set Set-Cookie "poodle=noodle;tweedle=puddle;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT"
Run Code Online (Sandbox Code Playgroud)

同样的问题.我需要使用"Header append"吗?任何例子将不胜感激.

apache cookies mod-headers

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

粘贴预先格式化的JSON块

我有一个很长的JSON块我想粘贴到正文中.我看到我可以导入文件或将其粘贴到文本区域.是否可以将此粘贴的文本转换为JSON,以便我可以使用漂亮的JSON编辑器?当我将其粘贴到文本区域然后切换JSON时,它会覆盖正文(带有警告).

我想这里的最终问题是,如何在Paw的JSON编辑器中获得预构建的JSON?

我要粘贴的文字样本是:

    {
  "type": "user",
  "id": "530370b477ad7120001d",
  "user_id": "25",
  "email": "wash@serenity.io",
  "name": "Hoban Washburne",
  "remote_created_at": 1392731331,
  "updated_at": 1392734388,
  "session_count": 0,
  "last_seen_ip" : "1.2.3.4",
  "unsubscribed_from_emails": false,
  "last_request_at": 1397574667,
  "remote_created_at": 1392734387,
  "created_at": 1392734388,
  "updated_at": 1398269574,
  "session_count": 179,
  "user_agent_data": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9",
  "custom_attributes": {
    "paid_subscriber" : true,
    "monthly_spend": 155.5,
    "team_mates": 1
  }
Run Code Online (Sandbox Code Playgroud)

json paw-app

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

将 MFA 与 EKS kubectl 和 aws-iam-authenticator 结合使用

我一直在尝试让 MFA 与 kubectl 一起工作,以保护对 AWS 中 EKS 主节点的访问。文档似乎暗示这是可能的,但我遇到了问题,我无法弄清楚。

没有什么特别的,我可以连接到我的 EKS 集群:

kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   172.20.0.1   <none>        443/TCP   2d
Run Code Online (Sandbox Code Playgroud)

如果我将 MFA 添加到 AWS CLI,请遵循以下帖子:

如何将 MFA 与 AWS CLI 结合使用?

https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html

我像这样设置我的本地凭据:

[default]
aws_access_key_id = **********************
aws_secret_access_key = **********************
region = us-west-2

[default_role]
mfa_serial = arn:aws:iam::1234567890:mfa/spanktar
role_arn = arn:aws:iam::1234567890:role/test_assumeRole
source_profile = default
Run Code Online (Sandbox Code Playgroud)

...然后我可以看到 AWS CLI 具有 MFA:

aws sts get-caller-identity --profile default_role
Enter MFA code for arn:aws:iam::1234567890:mfa/spanktar: 123456
{
    "UserId": "**********************:botocore-session-1234567890",
    "Account": …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl aws-iam multi-factor-authentication amazon-eks

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

奇数Logstash日期解析错误

我从Logstash收到以下错误:

{:timestamp =>"2013-12-30T17:05:01.968000-0800",:message =>"无法从字段中解析日期",:field =>"message",:value =>"2013-12-30 17 :04:59,539.539 INFO 14282:140418951137024 [foo.lib.base.onResults:152] - /1.12/media - \"getMediaStoreUrl \":,10.101.AA.BB,10.101.19.254取0.170675992966,返回https:// foo.s3.amazonaws.com/foo/customerMedia/1009238911/23883995/image?Signature=%2BfXqEdNWtWdhwzi%&*YEGJSDDdDFF%3D&Expires = 1388455499&AWSAccessKeyId = NOIMNOTTHATSTUPID> ,, >>>",:exception => java.lang.IllegalArgumentException:格式无效:"2013-12-30 17:04:59,539.539 INFO 14282:140418951137024 ..."格式错误为".539 INFO 14282:140418951137024 ...",:level =>:warn}

错误显然是关于日期格式,这对我来说是:

2013-12-30 17:04:59,539.539 INFO 14282:140418951137024...
Run Code Online (Sandbox Code Playgroud)

我的模式如下:

    date {
        match => ["message", "yyyy-MM-dd HH:mm:ss,SSS"]
    }
Run Code Online (Sandbox Code Playgroud)

我读了Joda-Time Library,我想我的格式是正确的.我很奇怪,错误消息包含加倍的SSS(毫秒)部分:",539.539"(由于某种原因,我们的日志以这种方式输出).我故意没有将第二部分".539"放在我的模式中,因为我希望它被忽略.

我也成功在另一个过滤器中使用以下模式:

(?<pylonsdate>%{DATESTAMP}\.[0-9]+)
Run Code Online (Sandbox Code Playgroud)

我只是不确定这个错误来自哪里.有什么想法我需要做些什么才能纠正这个问题?我是否需要改变@timestamp?任何帮助表示赞赏!

date filter logstash

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