目标:
我想在 docker 容器中运行 elk 堆栈。能够通过 nginx 代理访问 ELK Stack,以绕过服务的各个端口。
Kibana 服务(默认端口 5601)
http://<server>.com:5601
Run Code Online (Sandbox Code Playgroud)
应可通过以下地址访问:
http://<server>.com/kibana
Run Code Online (Sandbox Code Playgroud)
问题:
问题是,在我将 server.basePath 设置添加到配置后,无法访问 kibana 站点。只有将 Kibana 的每个基本 api 调用添加到 nginx 配置(/api、/ui、...)中,我才能启动该服务。
配置:
Kibana 的配置:
/opt/kibana/config/kibana.yml
Run Code Online (Sandbox Code Playgroud)
有以下条目:
server.host: "0.0.0.0"
server.basePath: "/kibana"
Run Code Online (Sandbox Code Playgroud)
其他一切都是默认的
多库server.basePath
Run Code Online (Sandbox Code Playgroud)# Enables you to specify a path to mount Kibana at if you are running behind a proxy. This only affects # the URLs generated by Kibana, your proxy is expected to remove the basePath value before forwarding requests # …
我正在尝试按照官方文档学习 Elastic Search 中的无痛脚本编写。(https://www.elastic.co/guide/en/elasticsearch/painless/6.0/painless-examples.html)
我正在使用的文档示例:
{
"uid" : "CT6716617",
"old_username" : "xyz",
"new_username" : "abc"
}
Run Code Online (Sandbox Code Playgroud)
使用 params._source 访问文档值的以下脚本字段查询有效:
{
"script_fields": {
"sales_price": {
"script": {
"lang": "painless",
"source": "(params._source.old_username != params._source.new_username) ? \"change\" : \"nochange\"",
"params": {
"change": "change"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
相同的查询但使用文档映射来访问值失败:
{
"script_fields": {
"sales_price": {
"script": {
"lang": "painless",
"source": "(doc['old_username'] != doc['new_username']) ? \"change\" : \"nochange\"",
"params": {
"change": "change"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息是:
"caused_by" : {
"type" : …Run Code Online (Sandbox Code Playgroud) 100k我正在从一个索引中获取多个文档searchScroll,并在所有文档中再添加一个字段100K。然后再次将这些文档插入到另一个新索引中。
我正在使用SearchScrollapi 也正在设置大小,searchSourceBuilder.size(100)我已将大小增加到searchSourceBuilder.size(1000)。在这两种情况下,处理18100文档(当 searchSourceBuilder.size(100) 时)和21098文档(当 searchSourceBuilder.size(1000) 时)后都会出现以下错误。
search_context_missing_exception","reason":"No search context found for id
并且,错误抛出在这一行searchResponse = SearchEngineClient.getInstance().searchScroll(scrollRequest);
请找到我完整的错误堆栈
Exception in thread "main" ElasticsearchStatusException[Elasticsearch exception
[type=search_phase_execution_exception, reason=all shards failed]]; nested: Elas
ticsearchException[Elasticsearch exception [type=search_context_missing_exceptio
n, reason=No search context found for id [388]]];
at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestR
esponse.java:177)
at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLeve
lClient.java:573)
at org.elasticsearch.client.RestHighLevelClient.parseResponseException(R
estHighLevelClient.java:549)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighL
evelClient.java:456)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEn
tity(RestHighLevelClient.java:429)
at org.elasticsearch.client.RestHighLevelClient.searchScroll(RestHighLev
elClient.java:387)
at com.es.utility.DocumentIndex.main(DocumentIndex.java:101)
Suppressed: org.elasticsearch.client.ResponseException: method [GET], …Run Code Online (Sandbox Code Playgroud) 我正在寻找 Logstash RAM 问题的答案,因为它几乎 100%。我进行了很多搜索,但它们并不适合我。下面的代码是我的logstash.conf 文件。我认为这需要一些小改动。
Logstash.conf:
input {
file {
path => ["c:/mylogs/*.txt"]
start_position => "beginning"
discover_interval => 10
stat_interval => 10
sincedb_write_interval => 10
close_older => 10
codec => "json"
}
}
filter {
date {
match => ["mydate","yyyy-MM-dd HH:mm:ss.SSSS" ]
timezone => "UTC"
}
date {
match => ["TimeStamp", "ISO8601"]
}
json {
source => "request"
target => "parsedJson"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => [ "http://localhost:9200" ]
index …Run Code Online (Sandbox Code Playgroud) 我有一个 Logstash 的基本 HA 设置 - 两个不同的 AWS 可用区中有两个相同的节点。每个节点都运行一个管道,从数据库集群中提取数据集,然后将其输出到下游的 ELasticSearch 集群进行索引。这对于一个 Logstash 节点来说效果很好,但是由于每个节点单独跟踪,所以并行运行的两个节点将相同的数据发送两次到 ES 进行索引:sql_last_value。由于我在两个节点上使用与文档 ID 相同的 ID,因此所有重复数据都会被简单更新,而不是被插入两次。换句话说,每个数据集有 1 次插入和 1 次更新。显然,这效率不高,并且会给 ELK 资源带来不必要的负载。随着额外 Logstash 节点的添加,情况会变得更糟。
有谁知道应该如何设置并行 Logstash 节点的更好方法,因此如果每个节点已被另一个先前节点提取,则每个节点都不会提取相同的数据集 xe2x80x99?一个可怜的 man\xe2\x80\x99s 解决方案可能是在 Logstash 节点之间创建一个共享 NFS 文件夹并让每个节点写入:sql_last_value其中,但我不确定此设置可能会遇到什么样的副作用,尤其是在较高负载下。谢谢你!
我创建了一个自定义舵图作为elastic-stack具有以下配置的子图。
# requirements.yaml
dependencies:
- name: elastic-stack
version: 1.5.0
repository: '@stable'
Run Code Online (Sandbox Code Playgroud)
# values.yaml
elastic-stack:
kibana:
# at this level enabled is not recognized (does not work)
# enabled: true
# configs like env, only work at this level
env:
ELASTICSEARCH_URL: http://foo-elasticsearch-client.default.svc.cluster.local:9200
service:
externalPort: 80
# enabled only works at root level
elasticsearch:
enabled: true
kibana:
enabled: true
logstash:
enabled: false
Run Code Online (Sandbox Code Playgroud)
我不明白的是为什么我必须enabled在外部定义标签elasatic-stack:并在内部定义所有其他配置?
这是正常的舵行为还是弹性堆栈图表中的某些配置错误?
我对使用 Elastic Stack 还很陌生,所以请原谅我缺乏这方面的知识。我在 Windows 10 公司工作计算机上运行 Elastic Stack。我已经为 bash cli 安装了 Git Bash,并且可以成功启动整个 Elastic Stack。我的任务是获取存储在我们的数据库之一中的日志数据并将其显示在 Kibana 仪表板上。
根据我和我的团队的推理,我不需要使用 Logstash,因为日志发送到的数据库实际上是我们的“日志存储”,因此使用 Logstash 服务将是多余的。我发现了这个漂亮的图表
在 freecodecamp 上,据我所知,Logstash 只是日志检索不同服务的中介。因此,我可以不使用 Logstash,因为日志数据已经在数据库中,我可以这样做
USER ---> KIBANA <---> ELASTICSEARCH <--- My Python Script <--- [DATABASE]
Run Code Online (Sandbox Code Playgroud)
我的 python 脚本成功调用我们的数据库并检索数据,以及将数据塑造成 dict 对象的函数(据我所知,Elasticsearch 以 JSON 格式获取数据)。
现在我想将所有这些数据插入 Elasticsearch - 我一直在阅读 Elastic 文档,并且有很多关于索引的讨论,但并不是真正的索引,而且我还没有找到任何可以用来插入的 API 调用将数据直接导入 Elasticsearch。到目前为止我找到的所有文档都涉及 Logstash 的使用,但由于我没有使用 Logstash,所以我在这里有点不知所措。
如果有人可以帮助我并指出正确的方向,我将不胜感激。谢谢
-担
我遇到 APM 服务器和 APM 代理 (Elastic Stack) 的兼容性问题。
"elastic-apm-node": "^3.0.0"
Run Code Online (Sandbox Code Playgroud)
配置:
var apm = require('elastic-apm-node').start({
serviceName: "******-dev",
captureBody: 'all',
stackTraceLimit: 10,
transactionMaxSpans:10,
serverUrl: "http://localhost:5601"
}).addErrorFilter(function (payload) {
if(payload.context.response && payload.context.response.status_code === 429){
return false;
}
return payload;
})
Run Code Online (Sandbox Code Playgroud)
APM服务器版本: 7.4.0
错误:
APM Server responded with "404 Not Found". This might be because you're running an incompatible version of the APM Server. This agent only supports APM Server v6.5 and above. If you're using an older version of the APM Server, …Run Code Online (Sandbox Code Playgroud) 为了日志文件聚合的目的,我希望在本地(普通)Kubernetes 集群上设置一个生产 Elasticsearch 实例。
部署似乎有两个主要选项:
我已经成功使用了旧的(即将被弃用的)舵图,但刚刚发现了 ECK。
这两种选择的优点和缺点是什么?有任何可能影响长期使用的约束或限制吗?
elastic-stack ×10
logstash ×3
kibana ×2
kibana-5 ×2
kubernetes ×2
apm ×1
docker ×1
java ×1
kubeconfig ×1
nginx ×1
node.js ×1
plot ×1
proxy ×1
python ×1