我正在尝试在 Windows 机器中使用 docker 运行 metricbeat,并且我已根据我的要求更改了 metricbeat.yml。
docker run -v /c/Users/someuser/docker/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml docker.elastic.co/beats/metricbeat:5.6.0
Run Code Online (Sandbox Code Playgroud)
但出现这些错误
metricbeat2017/09/17 10:13:19.285547beat.go:346:CRIT退出:加载配置文件时出错:配置文件(“metricbeat.yml”)只能由所有者写入,但权限为“-rwxrwxrwx”(至修复权限使用:'chmod go-w /usr/share/metricbeat/metricbeat.yml')退出:加载配置文件时出错:配置文件(“metricbeat.yml”)只能由所有者写入,但权限为“ -rwxrwxrwx”(要修复权限,请使用:'chmod go-w /usr/share/metricbeat/metricbeat.yml')
为什么我会得到这个?
在docker容器中永久更改文件内容的正确方法是什么(因为我不想每次容器启动时都更改配置文件)
编辑:容器不应该被编辑/更改。如有必要,docker 卷管理可用于外部化所有配置相关的工作。谢谢
我有带有类别字段的产品。使用聚合,我可以获得包含所有子类别的完整类别。我想限制方面的水平。
例如我有这样的方面:
auto, tools & travel (115)
auto, tools & travel > luggage tags (90)
auto, tools & travel > luggage tags > luggage spotters (40)
auto, tools & travel > luggage tags > something else (50)
auto, tools & travel > car organizers (25)
Run Code Online (Sandbox Code Playgroud)
使用像这样的聚合
"aggs": {
"cat_groups": {
"terms": {
"field": "categories.keyword",
"size": 10,
"include": "auto, tools & travel > .*"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到像这样的水桶
"buckets": [
{
"auto, tools & travel > luggage tags",
"doc_count": 90
}, …Run Code Online (Sandbox Code Playgroud) 我使用默认的 nginx 镜像和 Filebeat 来读取日志并将其发送到 ELK。两个容器(nginx 容器和 Filebeat 容器)都位于同一主机上。
这是 nginx 镜像的 Dockerfile
FROM nginx
COPY . /usr/share/nginx/html/
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)
在我的 nginx 容器中,访问日志转到STDOUT,错误日志转到STDERR。
当我从主机提示时,docker logs <nginx-containter-id>我可以看到来自 nginx 容器的日志。但主机上容器的文件夹中没有任何内容 ( /var/lib/docker/containers/nginx-container-id)
如何设置filebeat读取日志?
我已经配置了如下的logstash配置来读取spring boot生成的日志以推送到弹性搜索中,但是即使logstash成功启动,索引也没有创建,
配置文件:
input {
file {
path => "C:\workspace\app\logback\applogs.log"
codec => "json"
type => "logback"
}
}
output {
if [type]=="logback" {
elasticsearch {
hosts => [ "localhost:9200" ]
index => "logback-test"
}
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我有一个日志文件,其中并非所有行都采用相同的格式。如何找到此类文件的正确 grok 模式。
[15:37:20:030|1] [TdmUtil.c: 1534:fnTDM_LoadLocalFoo] F_LAA : 1
[15:37:20:032|1] [TdmUtil.c: 1281:fnTDM_GetPreDef] pdeGetData : MAX_IRAT_NBR_PER_SERVED_CELL_SYS = 256
[15:37:20:091|1] [TdmUtil.c: 293:fnTDM_PrtIndexKey] fnTDM_GetIndexKeyNum Error!!
Run Code Online (Sandbox Code Playgroud)
这样,很少有行采用 line1 的格式,少数行采用 line2 的格式,依此类推。我可以为每一行编写一个 grok 模式,但我不知道如何组合它们。有什么办法可以解决这个问题吗?
我需要一些关于应该采用哪种方法来进行日志分析解决方案的生产部署的建议。
我有一个本地 Elasticsearch 集群,我正在将其迁移到云(AWS 上的 EKS)。我是一个致力于此工作的人,因此我需要一些能够以最少的努力为我提供生产级部署的东西。
我已经能够部署bitnami/elasticsearch helm 图表,但不幸的是,它使用 OSS 版本,这意味着我必须自己添加很多其他功能。
官方弹性头盔图表是我尚未尝试过但应该可行的第二个选项。然而,在存储库中提到ECK是首选。
ECK 是最后一个选项,但我还没有看到任何可用于生产的示例部署文件。最好的可用方法是这需要一些工作。
那么,考虑到现在和将来最小的痛苦,我应该选择哪种最佳选择呢?另一个需要考虑的方面是许可。如果我们想将日志分析解决方案作为我们主要产品的附加组件提供,Elastic 基本许可证会妨碍我们吗?谢谢。
你好,我想在docker上安装elk,所以我遵循了官方文档https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
因此,当我想在 Docker 中启动 Elasticsearch 来获取为弹性用户生成的密码以及用于注册 Kibana 的注册令牌时,请执行以下命令:
docker run --name es01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.1.2
我收到此错误:
错误:[1] 引导检查失败。在启动 Elasticsearch 之前,您必须解决以下 [1] 行中描述的要点。[1] 的引导检查失败 [1]:最大虚拟内存区域 vm.max_map_count [65530] 太低,增加到至少 [262144] 错误:Elasticsearch 未正常退出 - 检查 /usr/share/Elasticsearch 中的日志/logs/docker-cluster.log {"@timestamp":"2022-04-14T12:39:58.449Z", "log.level": "INFO", "message":"停止...", "ecs .version": "1.2.0","service.name":"ES_ECS","event.dataset":"Elasticsearch.server","process.thread.name":"Thread-2","log.logger ":"org.Elasticsearch.node.Node","Elasticsearch.node.name":"50af9edc5c7d","Elasticsearch.cluster.name":"docker-cluster"} {"@timestamp":"2022-04-14T12 :39:58.512Z", "log.level": "INFO", "message":"已停止", "ecs.version": "1.2.0","service.name":"ES_ECS","事件。数据集":"Elasticsearch.server","process.thread.name":"Thread-2","log.logger":"org.Elasticsearch.node.Node","Elasticsearch.node.name":"50af9edc5c7d" ,"Elasticsearch.cluster.name":"docker-cluster"} {"@timestamp":"2022-04-14T12:39:58.513Z", "log.level": "INFO", "message":"关闭...", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"Elasticsearch.server","process.thread.name":"线程- 2","log.logger":"org.Elasticsearch.node.Node","Elasticsearch.node.name":"50af9edc5c7d","Elasticsearch.cluster.name":"docker-cluster"} {"@timestamp" :"2022-04-14T12:39:58.531Z", "log.level": "INFO", "message":"已关闭", "ecs.version": "1.2.0","service.name": "ES_ECS","event.dataset":"Elasticsearch.server","process.thread.name":"Thread-2","log.logger":"org.Elasticsearch.node.Node","Elasticsearch.node .name":"50af9edc5c7d","Elasticsearch.cluster.name":"docker-cluster"} {"@timestamp":"2022-04-14T12:39:58.535Z", "log.level": "INFO" , "message":"本机控制器进程已停止 - 无法启动新的本机进程", "ecs.version": …
我已经设置了一个版本5 ELK堆栈(使用X-Pack),我使用以下logstash conf文件,它似乎正确解析访问日志(正如我在输出中看到的那样):
input {
file {
path => ["/path/to/access_log"]
start_position => "beginning"
}
}
filter {
mutate { replace => { "type" => "apache_access" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
user => "elastic"
password => "*****"
}
stdout { codec => rubydebug }
}
Run Code Online (Sandbox Code Playgroud)
但是, 除了我尝试使用以下curl命令手动创建索引时,elasticsearch输出返回404("没有这样的索引")错误.
curl -XPUT 'elastic:******@localhost:9200/logstash-2016.09.28
Run Code Online (Sandbox Code Playgroud)
[2016-11-02T17:30:09,535] [警告] …
我有一种ELK堆栈,使用Fluentd而不是logstash,在Kubernetes集群上作为DaemonSet运行,并将所有容器中的所有日志以Logstash格式发送到Elasticsearch服务器。
在Kubernetes集群上运行的许多容器中,有些是nginx容器,它们输出以下格式的日志:
121.29.251.188 - [16/Feb/2017:09:31:35 +0000] host="subdomain.site.com" req="GET /data/schedule/update?date=2017-03-01&type=monthly&blocked=0 HTTP/1.1" status=200 body_bytes=4433 referer="https://subdomain.site.com/schedule/2589959/edit?location=23092&return=monthly" user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0" time=0.130 hostname=webapp-3188232752-ly36o
Run Code Online (Sandbox Code Playgroud)
在Kibana中可见的字段如下图所示:
在对这种类型的日志建立索引之后,是否可以从中提取字段?
流利的收集器配置有以下可处理所有容器的源,因此由于来自不同容器的输出差异很大,因此在此阶段无法强制执行格式:
<source>
type tail
path /var/log/containers/*.log
pos_file /var/log/es-containers.log.pos
time_format %Y-%m-%dT%H:%M:%S.%NZ
tag kubernetes.*
format json
read_from_head true
</source>
Run Code Online (Sandbox Code Playgroud)
在理想情况下,我想用“ log”字段中的元字段来丰富上面屏幕快照中的可见字段,例如“ host”,“ req”,“ status”等。
我正在使用nginx模块进行文件拍,以将日志数据发送到elasticsearch。这是我的文件拍配置:
output:
logstash:
enabled: true
hosts:
- logstash:5044
timeout: 15
filebeat.modules:
- module: nginx
access:
enabled: true
var.paths: ["/var/log/nginx/access.log"]
error:
enabled: true
var.paths: ["/var/log/nginx/error.log"]
Run Code Online (Sandbox Code Playgroud)
问题是未解析日志。这是我在Kibana中看到的:
{ "_index": "filebeat-2017.07.18", "_type": "log", "_id": "AV1VLXEbhj7uWd8Fgz6M", "_version": 1, "_score": null, "_source": {
"@timestamp": "2017-07-18T10:10:24.791Z",
"offset": 65136,
"@version": "1",
"beat": {
"hostname": "06d09033fb23",
"name": "06d09033fb23",
"version": "5.5.0"
},
"input_type": "log",
"host": "06d09033fb23",
"source": "/var/log/nginx/access.log",
"message": "10.15.129.226 - - [18/Jul/2017:12:10:21 +0200] \"POST /orders-service/orders/v1/sessions/update/FUEL_DISPENSER?api_key=vgxt5u24uqyyyd9gmxzpu9n7 HTTP/1.1\" 200 5 \"-\" \"Mashery Proxy\"",
"type": "log",
"tags": [
"beats_input_codec_plain_applied"
] }, …Run Code Online (Sandbox Code Playgroud) elastic-stack ×10
docker ×3
kibana ×3
logstash ×3
filebeat ×2
nginx ×2
fluentd ×1
kubernetes ×1
logging ×1
metricbeat ×1
spring-boot ×1