最近我试图找到使用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
我们正在考虑在亚马逊上设置ELK堆栈,但我们并不知道我们需要什么样的机器来顺利处理它.现在我知道如果它没有顺利进行会变得明显,但我们仍希望了解我们对我们的情况需要什么.
所以我们4台服务器以自定义格式生成日志文件.每天大约有大约4500万行日志,产生大约4个文件600mb(gzip),所以每天约有24GB的日志.
现在我们正在研究ELK堆栈并希望Kibana的仪表板显示实时数据,因此我考虑使用syslog进行日志记录.
4台服务器 - > Rsyslog(在这4台服务器上) - > Logstash(AWS) - > ElasticSearch(AWS) - > Kibana(AWS)
所以现在我们需要弄清楚我们在AWS中需要什么样的硬件来处理这个问题.
我读了ElasticSearch的3个主人和最少2个数据节点.那么Kibana共有5台服务器+ 1台服务器,Logstash共有1台服务器?所以我需要总共7台服务器才能开始,但这有点像是有点过分了吗?我想保留我的数据1个月,所以最多31天,所以我在弹性搜索中会有大约1.4TB的原始日志数据(~45GB x 31)
但是,由于我并不知道最佳设置是什么,所以任何提示/提示/信息都是受欢迎的.
此外,为我处理此问题的系统或工具(节点故障等)可能很有用.
提前致谢,
darkownage
我正在尝试使用Kafka接收器将数据从Flume通道推送到Kafka集群,我可以将相关数据看到相关主题,但同时我在Kafka日志中过于频繁地观察下面提到的异常跟踪,
[2017-03-21 16:47:56,250] WARN Unexpected error from /10.X.X.X; closing connection (org.apache.kafka.common.network.Selector)
org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 30662099 larger than 30662028)
at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:91)
at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:153)
at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:134)
at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
at kafka.network.Processor.run(SocketServer.scala:413)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
初步分析让我看到我的Flume日志,并在其中观察到异常跟踪,
21 Mar 2017 16:25:32,560 ERROR [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.SinkRunner$PollingRunner.run:158) - Unable to deliver event. Exception follows.
org.apache.flume.EventDeliveryException: Failed to publish events
at org.apache.flume.sink.kafka.KafkaSink.process(KafkaSink.java:252)
at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:67)
at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:145)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.NetworkException: The server disconnected before a response was received.
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.valueOrError(FutureRecordMetadata.java:56)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:43)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:25) …Run Code Online (Sandbox Code Playgroud) 有没有办法通过环境变量选择是否有 logback 附加程序?
我有一个 dockerized spring boot 微服务,现在添加了 ELK 堆栈。
到目前为止效果很好。
但现在如果我想在没有 ELK 堆栈的情况下启动服务,应用程序会抛出一个错误,它不知道 Logstash 的主机:
app | 10:09:23,537 |-ERROR in ch.qos.logback.classic.net.SyslogAppender[SYSLOG] - Could not create SyslogWriter java.net.UnknownHostException: logstash: Name or service not known
app | at java.net.UnknownHostException: logstash: Name or service not known
Run Code Online (Sandbox Code Playgroud)
这是我的 logback.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>logstash</syslogHost>
<port>5000</port>
<facility>LOCAL1</facility>
<suffixPattern>[%thread] %logger %msg</suffixPattern>
</appender>
<root level="INFO">
<appender-ref ref="SYSLOG"/>
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我知道这是一个非常简单的版本,但我是使用 logback/ELK 堆栈进行日志记录的新手。
那么有没有一种方法可以像 yaml 文件一样使用环境变量注入一些东西,例如active=${LOGBACK_ACTIVE:false}我可以使用我的 prometheus 指标来做到这一点?
背景: 我正在尝试使用弹性堆栈(Elastic,Logstash和Kibana),但是我没有钱可支付。我不介意使用封闭源代码的部件,只要它们是免费的即可。在这方面,我试图了解弹性许可的工作原理。
我们打开X-Pack似乎建议在Elastic 6.3之后包含X-Pack代码(尽管使用不同的许可证)。我也了解X-Pack的某些部分是免费的,而其他部分则不是免费的。这有点令人困惑。
目标: 我想使用所有免费的东西,而不使用任何付费的东西来运行Elastic stack。
到目前为止,我已经完成的工作: 我正在Linux上,但是我选择不使用分发软件包存储库,即我想使用Elastic Co提供的下载。对于Elastic和Kibana,我已经下载并解压缩了tar.gz版本6.5.4 GA从https://www.elastic.co/downloads/elasticsearch和https://www.elastic.co/downloads/kibana发行大部分情况下,我没有设置任何选项,因此我假设设置为使用默认值。Elastic和Kibana均已启动,没有任何问题。我现在在命令行上运行它们。
从日志中,我注意到该安装已获得14天的试用版许可证。由于我不想使用许可证,因此我使用了删除许可证API,即我运行了
curl -X DELETE "localhost:9200/_xpack/license"
Run Code Online (Sandbox Code Playgroud)
从某种意义上说,这是可行的,即我得到了{“ acknowledged”:true}的答复。我认为这将摆脱不是免费的xpack内容,但不幸的是,事实并非如此。我仍然在启动中看到一些x-pack的东西。
然后,我尝试执行“ 卸载X-Pack”中提到的操作。我知道这是旧的,但是我不知道在新版本中该如何做。无论如何,如果我运行命令:
bin/elasticsearch-plugin remove x-pack
Run Code Online (Sandbox Code Playgroud)
我得到错误:
错误:找不到插件[x-pacl];运行“ elasticsearch-plugin list”以获取已安装插件的列表
而且 elasticsearch-plugin list不返回任何东西。如果我跑步
bin/kibana-plugin remove x-pack
Run Code Online (Sandbox Code Playgroud)
我得到:
由于出现以下错误,无法删除插件:“您使用的是kibana的标准发行版。请安装仅OSS发行版以删除X-Pack功能。”
现在我的Kibana无法运行,抱怨:
Elasticsearch集群未响应许可证信息。
即它确实启动了,但是当您转到网页时,它告诉我它无法连接到Elastic集群
问题:
我正在使用具有单个文档的单个索引的弹性搜索云。我正在使用@elastic/elasticsearch最新版本。我从 Firebase 云函数调用弹性搜索。
这是我的弹性客户端在云函数中的初始化方式
const { Client, errors } = require('@elastic/elasticsearch');
const elasticClient = new Client({
cloud: {
id: 'xxxxxxxx',
},
auth: {
username: 'xxxx',
password: 'xxxxxx'
},
maxRetries: 5,
requestTimeout: 60000,
});
Run Code Online (Sandbox Code Playgroud)
这是查询elasticsearch的云函数
exports.stickerSearch = functions.runWith(runtimeOpts).https.onRequest(async (req, res) => {
try {
const searchQuery = req.query.query;
const searchResult = await elasticClient.search(
{
index: "packs",
from: 0,
q: searchQuery,
size: 20,
sort: 'dataCreatedAt'
});
res.status(searchResult.statusCode).send(searchResult.body.hits);
}
catch (e) {
console.log("search error", e)
res.status(200).send({ "total": { "value": 0, "relation": …Run Code Online (Sandbox Code Playgroud) javascript elasticsearch elasticjs elastic-stack google-cloud-functions
我正在使用 filebeat 使用 Logstash 将日志推送到 elasticsearch,并且之前的设置对我来说工作正常。我Failed to publish events error现在正在得到。
filebeat | 2020-06-20T06:26:03.832969730Z 2020-06-20T06:26:03.832Z INFO log/harvester.go:254 Harvester started for file: /logs/app-service.log
filebeat | 2020-06-20T06:26:04.837664519Z 2020-06-20T06:26:04.837Z ERROR logstash/async.go:256 Failed to publish events caused by: write tcp YY.YY.YY.YY:40912->XX.XX.XX.XX:5044: write: connection reset by peer
filebeat | 2020-06-20T06:26:05.970506599Z 2020-06-20T06:26:05.970Z ERROR pipeline/output.go:121 Failed to publish events: write tcp YY.YY.YY.YY:40912->XX.XX.XX.XX:5044: write: connection reset by peer
filebeat | 2020-06-20T06:26:05.970749223Z 2020-06-20T06:26:05.970Z INFO pipeline/output.go:95 Connecting to backoff(async(tcp://xx.com:5044))
filebeat | 2020-06-20T06:26:05.972790871Z 2020-06-20T06:26:05.972Z INFO pipeline/output.go:105 Connection to backoff(async(tcp://xx.com:5044)) established …Run Code Online (Sandbox Code Playgroud) 我一直在研究ELK Stack,遇到了一个小问题。
我已经阅读了所有可能的文档,它非常强调分片和副本的重要性。但没有地方说如何配置每一个的数量。我读过一些网站说最好将其保留为自动,而其他网站则说如何在 5.8 版本中配置它,但不再有效。
因此,如果有人可以向我解释,我将非常感激。
cluster-computing elasticsearch elastic-stack elk elasticsearch-7
我正在尝试使用 update_by_query 更新文档的嵌套类型字段。我正在使用以下脚本查询:
POST test/_update_by_query
{
"script": {
"source": "ctx._source.address = params.address",
"params": {
"address": [{"city":"Mumbai"}]
}
},
"query": {
"bool": {
"must": [
{
"term": {
"uid": "b123"
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
version conflict, required seqNo [607], primary term [16]. current document has seqNo [608] and primary term [16]
Run Code Online (Sandbox Code Playgroud)
此问题的原因是什么以及如何解决此问题?我可以在这里使用任何其他查询来代替 _update_by_query 吗?请在这里帮助我
elastic-stack ×10
logstash ×2
lumberjack ×2
amazon-ec2 ×1
apache-kafka ×1
bigdata ×1
devops ×1
docker ×1
elasticjs ×1
elk ×1
filebeat ×1
flume-ng ×1
hardware ×1
javascript ×1
kibana ×1
logback ×1
logging ×1
rsyslog ×1
spring-boot ×1