AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-79286

Paul Haldane's questions

Martin Hope
Paul Haldane
Asked: 2015-08-03 12:33:17 +0800 CST

Logstash/elasticsearch 停止接受新数据

  • 4

我已经建立了一个新的概念证明 logstash 系统

CentOS 6.6 (on Vmware 5.5) - single CPU VM with 12G RAM allocated

从 RPM 安装的 Elasticsearch 和 Logstash……

# rpm -q elasticsearch logstash
elasticsearch-1.7.1-1.noarch
logstash-1.5.3-1.noarch

JVM: 1.8.0_51

我输入的数据是表单的简单记录……

M1234 z123 2015-01-31 23:28:09.417 8.55373

(字段是机器名称、用户 ID、日期、时间、登录时间 - 一切都是简单的 US-ASCII)

下面的 Logstash 配置(此数据来自 MSSQL 数据库,目前我正在导出到文本文件并将文件传输到 logstash 服务器)。

这对于一天的日志(11K 记录)来说效果很好,但是当我尝试处理这个日历年的积压工作时,它“挂起”。

这种情况的症状是

  • elasticsearch 仍然响应 - 搜索和访问配置仍然很好
  • 索引中的文档数量停止上升
  • 系统变得基本空闲 - 只有后台磁盘活动和最少的 CPU 使用率
  • 如果我尝试停止 logstash 进程(仍在运行),它只会以kill -9.

这似乎发生在大约 200K 文档中。它不受索引数量的影响——我从每日索引开始,然后改为每周索引——它仍然停止在 200K 文档左右。

因为这是在单台机器上运行的概念证明,所以我将副本计数降低到 0,分片降低到 1——我认为这不会对这个问题产生任何影响。

尽管在两者上都增加了详细程度,但我在 logstash 或 elasticsearch 日志中看不到任何错误。

我不认为系统内存、磁盘空间、文件描述符不足。

我不确定还能看什么。这感觉像是一个微不足道的问题(对于 ELK),我在处理我们的邮件日志的现有 ELK 设置上看不到这个问题(尽管它运行的是早期版本并且有多个弹性搜索存储节点)

尽管我确信输入文件中没有奇数字节序列,但我已charset => "US-ASCII"在file输入插件节中明确将输入声明为 US_ASCII 。我不希望这会产生任何影响(测试仍在运行)。

更新:虽然当导入停止时日志中没有什么有趣的东西,但当logstash被要求关闭时记录的行很有趣……

{:timestamp=>"2015-08-03T10:17:39.104000+0100", :message=>["INFLIGHT_EVENTS_REPORT", "2015-08-03T10:17:39+01:00", {"input_to_filter"=>20, "filter_to_output"=>0, "outputs"=>[]}], :level=>:warn}

对我来说意味着问题出在过滤阶段,而不是输出到elasticsearch. 我已经通过首先摆脱elasticsearch输出并仅拥有stdout. 这显示了相同的行为 - 导入在一段时间后停止。

放回elasticsearch输出但清除该filter部分中的所有内容给了我一个成功、完整的数据导入。

我现在已经解决了这个问题-答案中的详细信息。

input {
        file {
                path => "/var/lib/clusters/*"
                type => "clusterF"
                start_position => "beginning"
        }
}

filter {
        mutate {
                remove_field => [ "path", "host" ]
        }
        # 13COMP014   nabcteam    2015-07-29 11:09:21.353 153.493
        if [type] == "clusterF" {
                grok {
                        match => { "message" => "%{NOTSPACE:client} +%{WORD:userid} +%{TIMESTAMP_ISO8601:datestamp} +%{BASE10NUM:elapsed:float}" }
                }
        }
        if [elapsed] < 0 {
                drop {}
        }
        if [elapsed] > 1000.0 {
                drop {}
        }
        if [userid] =~ "[a-z][0-9]{7}" {
                mutate {
                        add_field => [ "userClass", "student" ]
                }
        } else if [userid] =~ "n[a-z].*" {
                mutate {
                        add_field => [ "userClass", "staff" ]
                }
        } else {
                mutate {
                        add_field => [ "userClass", "other" ]
                }
        }
        date {
                match => [ "datestamp", "ISO8601" ]
        }
        mutate {
                remove_field => [ "message" ]
        }
}

output {
        elasticsearch {
                bind_host => "clog01.ncl.ac.uk"
                protocol => "http"
                cluster => "elasticsearch"
                flush_size => 10
                index => "clusters-%{+xxxx.ww}"
        }
}
elasticsearch
  • 1 个回答
  • 1788 Views
Martin Hope
Paul Haldane
Asked: 2015-01-06 08:03:03 +0800 CST

年度翻转的logstash时间戳

  • 3

我们使用 logstash 来存储/搜索来自我们邮件服务器的日志。我今天注意到今年(2015 年)我们没有任何指数。快速调查显示当前日志存储为 2014.01.05(即同一天但去年),并且这些索引正在被查找旧索引的 cron 作业删除。

重新启动 logstash 修复了一些问题,所以我假设 logstash 正在根据它开始的时间填写年份信息。

我们使用 Elasticsearch 1.2.4 运行 Logstash 1.4.1。所以不是最新版本的 Elasticsearch,但我在 1.4.2 的更新日志中看不到任何相关内容。

使用下面的 syslog - config 将日志条目连同输入行和解析输出的示例一起发送到 logstash。

有没有比记得在元旦重新启动 Logstash 更好的解决方法?


输入线示例

Jan  5 15:03:35 cheviot22 exim[15034]: 1Y89Bv-0003uU-DD <= redmine@ncl.ac.uk H=adudeviis.ncl.ac.uk (campus) [10.8.232.56] P=esmtp S=2548 id=redmine.journal-1487.20150105150334@ncl.ac.uk

{
  "_index": "logstash-2014.01.05",
  "_type": "mails",
  "_id": "HO0TQs66SA-1QkQBYd9Jag",
  "_score": null,
  "_source": {
    "@version": "1",
    "@timestamp": "2014-01-05T15:03:35.000Z",
    "type": "mails",
    "priority": 22,
    "timestamp": "Jan  5 15:03:35",
    "logsource": "cheviot22",
    "program": "exim",
    "pid": "15034",
    "severity": 6,
    "facility": 2,
    "facility_label": "mail",
    "severity_label": "Informational",
    "msg": "1Y89Bv-0003uU-DD <= redmine@ncl.ac.uk H=adudeviis.ncl.ac.uk (campus) [10.8.232.56] P=esmtp S=2548 id=redmine.journal-1487.20150105150334@ncl.ac.uk",
    "tags": [
      "grokked",
      "exim_grokked",
      "dated"
    ],
    "xid": "1Y89Bv-0003uU",
    "exim_rcpt_kv": "redmine@ncl.ac.uk H=adudeviis.ncl.ac.uk (campus) [10.8.232.56] P=esmtp S=2548 id=redmine.journal-1487.20150105150334@ncl.ac.uk",
    "H": "adudeviis.ncl.ac.uk",
    "P": "esmtp",
    "S": "2548",
    "id": "redmine.journal-1487.20150105150334@ncl.ac.uk"
  },
  "sort": [
    1388934215000,
    1388934215000
  ]
}

Logstash 配置(删除了不相关的位)...

input {
    syslog {
        codec => "plain"
        debug => false
        port => 514
        type => "mails"
    }
}

filter {
    mutate {
        remove_field => [ "path", "host" ]
    }

    if [type] == "mails" {
        grok {
            patterns_dir => [ "/etc/logstash/patterns" ]
            match => [ "message",  "(?<msg>.*)" ]
            add_tag => [ "grokked" ]
            break_on_match => true
            remove_field => [ "message" ]
        }
    }

    date {
        match => [ "timestamp", "ISO8601", "MMM dd HH:mm:ss", "MMM  d HH:mm:ss"]
        add_tag => [ "dated" ]
    }
}

output {
        elasticsearch {
                cluster => "logstash"
        host => "iss-logstash01"
        flush_size => 1000
        index => "logstash-%{+YYYY.MM.dd}"
        }
}
logstash
  • 1 个回答
  • 708 Views
Martin Hope
Paul Haldane
Asked: 2014-03-10 05:52:46 +0800 CST

Windows DNS 服务器在收到 SERVFAIL 响应时重复请求区域中的记录

  • 2

我们看到从缓存 DNS 服务器到外部服务器的 DNS 查询量很高(超过 2000 个请求/秒)。这可能已经发生了很长时间 - 由于我们的防火墙的性能问题,最近才曝光。与其他机构的同事交谈,很明显我们提出的问题比他们多。

我最初的想法是问题在于缺少 SERVFAIL 响应的缓存。进行更多调查后,很明显问题是来自 Windows DNS 服务器的失败记录的高级别请求。似乎在我们的环境中,从返回 SERVFAIL 的区域向其中一个 Windows DNS 服务器查询记录会导致来自所有Windows DNS 服务器对该记录的请求流。直到我在其中一个 Bind 服务器上添加一个假的空区域,请求流才会停止。

我明天的计划是验证 Windows DNS 服务器的配置——它们应该只是转发到缓存绑定服务器。我认为我们一定有什么问题,因为如果不是配置错误,我无法相信没有其他人遇到过这个问题。之后我会更新这个问题(可能关闭这个问题并打开一个新的、更清晰的问题)。


我们的设置是一对运行 Bind 9.3.6 的缓存服务器,它们可以由客户端直接使用,也可以通过我们的 Windows 域控制器使用。缓存服务器将查询传递给我们运行 9.8.4-P2 的主要 DNS 服务器——这些服务器对我们的域具有权威性,并将对其他域的查询传递给外部服务器。

我们看到的行为是像下面这样的查询没有被缓存。我已经通过使用 tcpdump 查看来自 DNS 服务器的网络流量来验证这一点。

 [root@dns1 named]# dig ptr 119.49.194.173.in-addr.arpa.

 ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> ptr 119.49.194.173.in-addr.arpa.
 ;; global options:  printcmd
 ;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 8680
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

 ;; QUESTION SECTION:
 ;119.49.194.173.in-addr.arpa.   IN      PTR

 ;; Query time: 950 msec
 ;; SERVER: 127.0.0.1#53(127.0.0.1)
 ;; WHEN: Sun Mar  9 13:34:20 2014
 ;; MSG SIZE  rcvd: 45

直接查询 google 的服务器表明我们收到了 REFUSED 响应。

[root@dns1 named]# dig ptr 119.49.194.173.in-addr.arpa. @ns4.google.com.

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> ptr 119.49.194.173.in-addr.arpa. @ns4.google.com.
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 38825
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;119.49.194.173.in-addr.arpa.   IN      PTR

;; Query time: 91 msec
;; SERVER: 216.239.38.10#53(216.239.38.10)
;; WHEN: Sun Mar  9 13:36:38 2014
;; MSG SIZE  rcvd: 45

这不仅发生在谷歌地址或反向查找中,而且大部分查询都是针对这些范围的(我怀疑是因为 Sophos 报告功能)。

我们的 DNS 服务器是否应该缓存这些负面响应?我阅读了http://tools.ietf.org/rfcmarkup?doc=2308但没有看到任何关于 REFUSED 的信息。我们没有在配置文件中指定 lame-ttl,所以我希望它默认为 10 分钟。

我相信这(缺乏缓存)是预期的行为。我不明白为什么与我交谈过的其他网站没有看到相同的内容。我已经尝试过运行最新稳定版本的 Bind 的测试服务器,它显示了相同的行为。我也尝试了 Unbound 并且也没有缓存 SERVFAIL 。在 djbdns here中有一些关于这样做的讨论,但结论是该功能已被删除。

绑定配置中是否有我们可以更改以影响此行为的设置?lame-ttl 没有帮助(无论如何我们都在使用默认值运行)。

作为调查的一部分,我在缓存 DNS 服务器上添加了一些虚假的空白区域,以覆盖导致大多数请求的范围。这减少了对外部服务器的请求数量,但不可持续(并且感觉也是错误的)。与此同时,我请一位同事从 Windows DNS 服务器获取日志,以便我们可以识别发出原始请求的客户端。

domain-name-system
  • 2 个回答
  • 2058 Views
Martin Hope
Paul Haldane
Asked: 2014-02-16 08:40:08 +0800 CST

通过 TCP 从 rsyslog 转发到 syslog-ng 不起作用(尽管数据包正在到达服务器)

  • 2

我们在中央系统日志服务器上使用 syslog-ng(CentOS 5.9 上的 syslog-ng-2.1.4-9.el5)。我们很高兴地使用 syslogd 和 rsyslog 从 Linux 和 Solaris 主机的混合通过 UDP 发送日志,直到昨天我终于明白我们正在丢失大量条目(是的,我应该注意所有警告)。

我正在尝试更改为使用 TCP。我(目前)热衷于在中心使用 syslog-ng,在发件人上使用 rsyslog,我的理解是这应该可行。中央系统日志服务器有多个虚拟接口,用于按功能对日志集进行分段(这就是 udp() 和 tcp() 语句指定要绑定到的 IP 地址的原因)。

我在 syslog-ng 端启用了 TCP 侦听器(请参阅下面的配置文件摘录)- netstat -l 显示端口 514 上的侦听器。作为测试,我更改了一台主机上的转发子句(CentOS 6.4 和 rsyslog-5.8.10-6 .el6.x86_64) 从@unixlog 到@@unixlog。我看到到达中央服务器的数据包和返回的数据包(在 unixlog 上使用 tcpdump 查看)所以我认为我已经消除了 iptables 的问题,但是输出文件中没有出现任何内容。我只是尝试关闭 iptables 一段时间来检查这一点——同样的事情。

我没有尝试打开 syslog-ng 的调试,因为这是一个繁忙的服务器 - 我的下一步可能是设置一个测试 syslog-ng 服务器并将单个主机指向它。在我这样做之前还有什么我应该看的吗?我需要更改转发消息的格式吗?我对 Syslog-ng 2.x 文档的阅读表明,这应该可以在没有任何更改的情况下工作。我尝试更改调用 rsyslog 的兼容级别选项。最初设置为 5,我尝试了 0 .. 4 并完全删除了参数 - 行为没有区别。

发件人上的 Rsyslog.conf(已删除评论和本地文件)……

$ModLoad imuxsock
$ModLoad imklog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
*.err;kern.debug;daemon.notice;mail.crit                @unixlog.ncl.ac.uk
local3.debug                                            @cmdloghost.ncl.ac.uk

从 unixlog 上的 rsyslog.conf 中提取

options {
  long_hostnames(off);
  sync(0);
  create_dirs(yes);
};

destination d_syslog {
  file("/var/log/incoming/syslogs/$HOST/syslog.$YEAR$MONTH$DAY.log");
};

# unixlog is 10.8.232.202
source unixlog_net { udp(ip(10.8.232.202)); tcp(ip(10.8.232.202)); };

log {
  source(unixlog_net);
  destination(d_syslog);
};
rsyslog
  • 1 个回答
  • 4062 Views
Martin Hope
Paul Haldane
Asked: 2012-10-29 02:31:42 +0800 CST

为什么我们不能通过 VPN 连接访问某些(但不是全部)外部 Web 服务?

  • 0

在工作中(英国大学),我们使用一组运行 WS2008R2 和 RRAS 的 Windows 服务器,为我们住宿的学生提供 VPN 服务。我们这样做是为了将网络连接与个人相关联。在他们连接到 VPN 之前,他们所能交谈的只是设置 VPN 所需的内容和一个包含有关如何连接的文档的本地网站。中期我们可能会替换它,但这是我们目前正在使用的。2008 服务器上的 VPN 为客户端分配一个私有 (10.x) 地址。访问外部站点是通过校园路由器上的 NAT(与私有地址上的任何其他直接连接的客户端相同)。非 VPN 连接不会出现此问题。

较旧的服务器运行 WS 2003 和 ISA2004。该设置有效,但在负载下变得不可靠。最大的区别是我们将非 RFC1918 地址分配给客户端(因此不需要 NAT)。我们看到的行为是,一旦连接到 VPN,客户端就可以访问本地网站(即校园网络上的网站),但只能访问一些外部网站。似乎(但这可能是偶然的)我们可以访问的网站是谷歌的网站(包括 YouTube)。我们当然无法访问 Microsoft 的 Office 365 服务(这很痛苦,因为这是我们大多数学生的邮件所在的地方)。

一个奇怪的行为是客户端可以获取(在 Windows 7 客户端上使用 wget)http://www.oracle.com/(获得 301 重定向)但在被要求获取http://www.oracle 时挂起。 com/index.html(这是第一个 URL 重定向到的地方)。如果我们将客户端配置为使用我们的本地 Web 代理 (Squid),访问就可以可靠地工作。

我的直觉告诉我,这很可能是链中的某些东西根据 HTTP 检查或回复中的 IP 地址丢弃回复。但是,我对为什么我们会在 VPN 客户端看到这种情况感到困惑。

明天(当我回到办公室时)的计划是在外部连接上设置一个 Web 服务器,以便我们可以监视对话两端的行为(希望问题在我们的测试服务器上表现出来)。对我们应该关注的事情有什么建议吗?

windows-server-2008
  • 1 个回答
  • 624 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve