Articles of logstash

stream畅的服务在启动后立即死亡

请原谅我这个问题的天真,但这不是我目前了解得多的话题。 我的公司目前正在运行kubernetes-managed fluentd进程将日志推送到logstash。 这些stream畅的进程在启动后立即启动并失败,然后再次启动等等。 stream利的进程在CoreOS AWS实例上的Docker容器中运行。 当我查看正在运行的15个fluentd节点的任何日志时,它们都显示相同的内容。 下面是这些日志的缩减版本,并删除了一些重复内容和时间戳: Connection opened to Elasticsearch cluster => {:host=>"elasticsearch-logging", :port=>9200, :scheme=>"http"} process finished code=9 fluentd main process died unexpectedly. restarting. starting fluentd-0.12.29 gem 'fluent-mixin-config-placeholders' version '0.4.0' gem 'fluent-mixin-plaintextformatter' version '0.2.6' gem 'fluent-plugin-docker_metadata_filter' version '0.1.3' gem 'fluent-plugin-elasticsearch' version '1.5.0' gem 'fluent-plugin-kafka' version '0.3.1' gem 'fluent-plugin-kubernetes_metadata_filter' version '0.24.0' gem 'fluent-plugin-mongo' version […]

作为服务运行时,Rsyslog不会转发

我有两台运行CentOS 7的本地虚拟机来模拟我们的生产环境。 1个代理服务器和1个集中式(ELK)服务器。 在ELK服务器上运行logstash从运行的实例中收集所有的syslog。 代理服务器通过Ansible提供Rsyslog(和logrotate)。 安装syslog和logrotate。 复制configuration。 重新启动服务。 真正的基本configuration,只是一个*.* @@IP.ADD.RE.SS:12345位于/etc/rsyslog.d/中的10-logstash.conf ,其余部分是标准configuration。 但是,它似乎没有发送日志到logstash。 当我尾巴/var/log/messages我看到在实例上运行的代理容器的输出。 但是没有一个被转发到日志服务器。 所以我GOOGLE了,并findDebuggingOnDemand选项。 当我停止rsyslogd服务,并手动运行sudo rsyslog -n它开始转发日志。 当我运行rsyslog -d (没有sudo),我得到通知它不能写入.pid文件。 所以我的猜测是,当它作为服务运行时,它没有足够的权利来正常工作? 我不能手动启动rsyslog没有sudo。 但我可以启动rsyslog作为服务( sudo service rsyslog start ),并确认它正在运行。 那么问题到底在哪里? 这是stream程本身吗? 它不能读取日志文件吗? 我无法想象我的configuration是错误的,因为rsyslog在手动运行时正确转发。 我不知道什么日志logging或输出提供,所以如果有需要请问,我会尽量提供。 rsyslogd -N 10输出(与另一个configuration文件,确认在生产中,相同的转发器,但有更多的选项定义) rsyslogd: version 7.4.7, config validation run (level 10), master config /etc/rsyslog.conf rsyslogd: module 'imuxsock' already in this config, […]

Logstash使用此filter从Winlogbeat中删除所有事件

我的最终目标是通过Logstash和Winlogbeat将最终用户join域的Windows计算机的相关用户login/注销数据导入ElasticSearch。 Windowslogging了大量我不感兴趣的事件,所以我正在尝试使用Logstashfilter来删除我不关心的事件。 如果我不使用filter,并重新启动我的电脑,然后login,我收到了数百个事件。 有了这个Logstashfilter,当我重新启动计算机时,我不会收到任何事件,但至less应该有几个。 filter { if "winclient" in [tags] { if [event_data][TargetUserSid] = "S-1-5-18" { drop { } } # Event for user SYSTEM if [event_data][TargetUserName] =~ /^.*\$$/ { drop { } } # Event for computer account } } Winlogbeat被configuration为转发多个事件ID: winlogbeat.event_logs: – name: Security event_id: 4608, 4609, 4624, 4634, 4778, 4779, 4800, 4801, […]

如何使用logstash从IIS日志中提取文件扩展名

这是我的grok grok { match => ["message", [ "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:siteName} %{IP:serverIP} %{WORD:method} %{URIPATH:uriStem} %{NOTSPACE:uriQuery} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clientIP} %{NOTSPACE:protocolVersion} %{NOTSPACE:userAgent} %{NOTSPACE:referer} %{NOTSPACE:requestHost} %{NUMBER:statusCode} %{NUMBER:subStatusCode} %{NUMBER:win32Status} %{NUMBER:bytesSent:int} %{NUMBER:bytesReceived:int} %{NUMBER:timeTaken:int}" ] ] } 我想从uriStem字段中提取扩展名,如果没有扩展名,请将其保留为空。

Logstash找不到logstash.yml,尽pipe它存在

按照这里的指示testinglogstash。 这是我执行的命令(如果没有–path.settings也不行): /usr/share/logstash/bin/logstash -f logstash-simple.conf –path.settings /etc/logstash/logstash.yml 但是我得到这个警告: WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using –path.settings. 权限应该可以让大家阅读logstash.yml: ls -lsah /etc/ 4.0K drwxrwxr-x 4 root root 4.0K Sep 15 16:35 logstash ls -lsah /etc/logstash/ 8.0K -rw-r–r– 1 root root 5.7K Sep 15 16:26 logstash.yml […]

将logstash日志位置从控制台更改为文件

我已经使用logstash安装了logstash 。 它运行良好。 在Docker安装中,默认情况下,日志输出转到控制台。 我希望日志输出也应该与控制台一起去文件。 为此,我将下面的configuration项添加到我的logstash log4j.properties文件中 appender.file.type = File appender.file.name = LOGFILE appender.file.fileName = /usr/share/logstash/logs/logstash.log appender.file.layout.type = PatternLayout appender.file.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %m%n 之后,我使用下面的命令重新启动docker容器托pipelogstash docker restart logstash 但是日志不会写入日志文件。 它仍然要安慰。 还有什么我错过了。 另外,如何识别控制台日志文件 任何帮助将不胜感激

logstash:如何监视和检测TCP监听器何时死亡?

Logstash 5.6.4,在CentOS上 我们正在探索logstash监控系统。 具体来说,我们可以看到logstash运行良好,但是随后停止监听TCP,并且logstash日志(/var/log/logstash/logstash-plain.log)将填充: [2017-11-17T00:05:44,321][ERROR][logstash.outputs.elasticsearch] Encountered a retryable error. Will Retry with exponential backoff {:code=>400, :url=>"http://<IP of ES server>:9200/_bulk"} 到目前为止,我们没有看到任何监视器标签告诉我们错误正在发生,或者tcp监听器被挂起。 我们查看了一些监视器统计信息,当系统挂起(输出在这里: https : //pastebin.com/Aysn229G ),并没有发现一个监视器,提醒我们这个问题。 我们缺less什么?

logstash:如何诊断何时tcp侦听器挂起并停止监听?

嗯。 我们正在运行logstash 5.6.1,并且我们注意到它停止了在IP上的监听。 所以我们把它升级到了logstash 5.6.4 几天之后,我在这里,logstash再次停止在IP上收听。 客户端无法连接到推送日志消息。 logstash日志每隔几秒就会得到这个条目: [2017-11-17T13:57:44,949][ERROR][logstash.outputs.elasticsearch] Encountered a retryable error. Will Retry with exponential backoff {:code=>400, :url=>"http://<IP of ES endpoint>:9200/_bulk"} Logstash守护进程正在运行,并且logstash监视端点正在侦听(我可以对端口9600正常运行命令),但是我的configuration文件端点不接受新连接(客户端无法连接到它应该监听的套接字)。 最后,我不得不停下来启动logstash守护进程,这样做(这显然不是很棒!)。 请注意,我只有循环logstash,所以它不会出现在ES中的问题。 这是什么意思? 接下来我该做什么? 一堆monitor api命令的输出在这里: https : //pastebin.com/Aysn229G 。 这些都是在logstash处于问题状态时完成的。

LogStash如何处理Redisinput重启?

我将Redis v2.4.5configuration为LogStash v1.2.1的input 当Redis重新启动时, LogStash继续保持打开连接(根据netstat ),但不再从列表中读取消息。 重新启动LogStash将解决这个问题,但这在生产场景中显然不被接受。 这是一个预期的行为? 我期待LogStash自动恢复。

使用“文件”插件在Logstash中input批量日志(存储在不同的文件夹中),无需指定单独的filter

所以我有一个关于logstash的基本function的问题。 我有很多不同的.L01文件,我已经导出到日志文件。 每个.L01文件代表一个主机,导出function将其转储到文件夹树中。 我需要从这些单独的“主机文件夹”中读取日志,包括所有不同的子文件夹。 手动添加每个input日志的path显然是不可行的。 这些文件都是不同types的日志,所以我不能为它们定义一个标准的filter。 如果我只运行logstash而没有定义任何filter,它只是将整个日志转储到@message字段中,如下所示: "message" => "6.703: Destination:C:\\WINDOWS\\INF\\inetres.adm \r", "@version" => "1", "@timestamp" => "2014-07-18T00:42:32.544Z", "tags" => [ [0] "host_1" ], "host" => "<hostname>", "path" => "<whatever the path is>" 那么,如果我本质上需要读取计算机(自然不同types的日志)上生成的所有日志,而是从文件夹(因此不能像syslog那样使用input插件),我该如何configurationlogstash。 我是否需要为每种日志写入单独的filter? 这将需要我手动parsing所有的文件夹和子文件夹,然后在检查内容后为每个日志写一个filter。 我不认为我可以这样做,因为我需要为大约20个主机做这个。 我将不胜感激任何帮助。 谢谢