我有一组分散在多个服务器上的dockerized应用程序,并尝试使用ELK设置生产级集中式日志记录.我对ELK部件本身没问题,但我对如何将日志转发到我的logstashes有点困惑.我正在尝试使用Filebeat,因为它具有loadbalance功能.我还想避免将Filebeat(或其他任何东西)打包到我的所有码头工人中,并保持它分离,对接或不用.
我该怎么办?
我一直在尝试以下方面.我的Docker登录stdout所以配置了非dockerized Filebeat从stdin读取我做:
docker logs -f mycontainer | ./filebeat -e -c filebeat.yml
这似乎在开始时起作用.第一个日志将转发到我的logstash.我想是缓存的.但在某些时候它会卡住并继续发送相同的事件
这只是一个错误还是我朝错误的方向前进?你设置了什么解决方案?
我在我的系统上设置了Elasticsearch,Logstash,Kibana日志查看工具.我的配置现在有2台机器(Amazon EC2实例):
在logstash-server上,这是我的配置(在不同的文件中)的样子: -
input {
lumberjack {
port => 5000
type => "logs"
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
} …
Run Code Online (Sandbox Code Playgroud) elasticsearch logstash kibana logstash-grok logstash-forwarder
最近我试图找到使用ELK堆栈的最佳Docker日志记录机制.我对公司在生产中使用的最佳工作流程有一些疑问.我们的系统有典型的软件堆栈,包括Tomcat,PostgreSQL,MongoDB,Nginx,RabbitMQ,Couchbase等.截至目前,我们的堆栈在CoreOS集群中运行.请在下面找到我的问题
这是一个主观问题,但我确信这是人们很久以前解决的问题,我并不热衷于重新发明轮子.
我可能在这里要求太多,我认为它还没有实现,但我的ELK堆栈设置与本教程的工作方式类似(几乎相同):( https://www.digitalocean.com/community/tutorials/how -to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04)基本上,我在客户端计算机上安装了文件,并将文件夹中的所有日志文件发送到logstash on服务器电脑.
我想要做的是能够将gzip文件(包含文本文件)和文本文件放在目录中,并且能够将它们全部发送到带有filebeat的logstash.所以我需要filebeat发送一个unziped文件,或者logstash能够查看gzip文件并获取其中的文本文件.
我环顾网络,这似乎还没有实现,但我发现的大多数是日志转发器和logstash而不是filebeat,所以我只是希望有一种方法可以使用filebeat.
我可能只是在这里过于充满希望.如果您不知道这样做的方法,那么我也想知道.
elasticsearch logstash lumberjack logstash-forwarder elastic-stack
我有一个在Hadoop集群中运行的pyspark流应用程序.流应用程序每n秒从Kafka队列中读取一次并进行REST调用.
我有一个日志记录服务,提供一种简单的方法来收集和存储数据,将数据发送到Logstash并在Kibana中可视化数据.数据需要符合此服务提供的模板(具有特定密钥的JSON).
我想使用此服务将流媒体应用程序中的日志发送到Logstash.为此,我需要做两件事:
- Collect some data while the streaming app is reading from Kafka and making the REST call.
- Format it according to the logging service template.
- Forward the log to logstash host.
Run Code Online (Sandbox Code Playgroud)
任何与此相关的指导都会非常有帮助.
谢谢!
logging apache-spark spark-streaming logstash-forwarder pyspark
我有一个托管在azure平台上的Web应用程序和一个托管在虚拟机上的ELK堆栈也是天蓝色的(相同的订阅),我很难找到一种方法将日志从应用程序发送到logstash.
Web应用程序将其所有文件存储在只能通过FTP访问的存储上,而logstash没有输入插件.
人们用什么来从Web应用程序向ELK发送日志?如果它作为VM运行,我会使用NXlog,但这对于Web应用程序来说是不可能的.
我也使用Log4Net并尝试了一个UDP转发器,虽然我添加了公共UDP端点,但它在我的本地ELK堆栈上运行但不是天蓝色托管的.
我使用 logstash-forwarder 和 logstash 并使用以下配置创建带有标签的动态索引:
/etc/logstash/conf.d/10-output.conf
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "logstash-%{tags}-%{+YYYY.MM.dd}"
}
}
Run Code Online (Sandbox Code Playgroud)
/etc/logstash-forwarder.conf
"files": [
{
"paths": [
"/var/log/httpd/ssl_access_log",
"/var/log/httpd/ssl_error_log"
],
"fields": { "type": "apache", "tags": "mytag" }
},
Run Code Online (Sandbox Code Playgroud)
相关的 filebeat 配置是:
/etc/filebeat/filebeat.yml
filebeat:
prospectors:
-
paths:
- /var/log/httpd/access_log
input_type: log
document_type: apache
fields:
tags: mytag
Run Code Online (Sandbox Code Playgroud)
在 Kibana 中,mytag
我看到的不是我beats_input_codec_plain_applied
所有的索引。
我在理解如何正确执行此操作时遇到问题.
我有以下Logstash配置:
input {
lumberjack {
port => 5000
host => "127.0.0.1"
ssl_certificate => "/etc/ssl/star_server_com.crt"
ssl_key => "/etc/ssl/server.key"
type => "somelogs"
}
}
output {
elasticsearch {
protocol => "http"
host => "es01.server.com"
}
}
Run Code Online (Sandbox Code Playgroud)
使用logstash-forwarder,我将syslog生成的haproxy.log文件推送到logstash.然后Kibana向我展示了一个_source
如下所示:
{"message":"Dec 8 11:32:20 localhost haproxy[5543]: 217.116.219.53:47746 [08/Dec/2014:11:32:20.938] es_proxy es_proxy/es02.server.com 0/0/1/18/20 200 305 - - ---- 1/1/1/0/0 0/0 \"GET /_cluster/health HTTP/1.1\"","@version":"1","@timestamp":"2014-12-08T11:32:21.603Z","type":"syslog","file":"/var/log/haproxy.log","host":"haproxy.server.com","offset":"4728006"}
Run Code Online (Sandbox Code Playgroud)
现在,这必须被过滤(不知何故),我不得不承认我没有丝毫想法如何.
查看grok文档并摆弄grok调试器,我仍然没有从Logstash和Kibana中获得任何有用的东西.
我一直在扫描模式目录及其文件,我不能说我理解如何使用它们.我希望提供一个带有haproxy模式Logstash的过滤器可以匹配我的模式_source
但是没有任何运气.
我正在使用 logstash 进行集中式日志记录。我在托运人节点上使用 logstash-forwarder,在收集器节点上使用 ELK 堆栈。我想知道日志存储在 elasticsearch 中的位置,我没有看到在存储日志的位置创建了任何数据文件。有人知道吗?对这个?
elasticsearch logstash kibana logstash-forwarder elastic-stack
目前,我的日志和logstash运行在同一台计算机上,因此我使用此配置(使用拉模型)读取放置在本地计算机上的日志
input {
file {
path => "/home/Desktop/Logstash-Input/**/*_log"
start_position => "beginning"
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我们在另一台计算机上运行了logstash,并希望读取日志远程机器。
有没有一种方法可以在配置文件的文件输入中设置IP?
编辑: 我设法用logstash-forwarder来做到这一点,pushtash-forwarder是一个推模型(log shipper / logstash-forwarder会将日志发送到logstash索引服务器),但我仍在寻找没有shipper的pull模型,logstash索引服务器将进入直接与远程主机联系。
如何在我的logstash-forwarder配置文件中添加自定义字段,以便logstash可以访问它?