我想监视来自非root用户(td-agent)和主机服务器上的docker容器日志,
sudo chmod o+rx /var/lib/docker
sudo find /var/lib/docker/containers/ -type d -exec chmod o+rx {} \;
sudo find /var/lib/docker/containers/ -type f -exec chmod o+r {} \;
Run Code Online (Sandbox Code Playgroud)
但容器目录回滚600和每个容器目录保持600.
# find /var/lib/docker/containers -ls
143142 4 drwx------ 4 root root 4096 Aug 14 12:01 /var/lib/docker/containers
146027 4 drwx------ 2 root root 4096 Aug 14 12:00 /var/lib/docker/containers/145efa73652aad14e1706e8fcd1597ccbbb49fd756047f3931270b46fe01945d
146031 4 -rw-r--r-- 1 root root 190 Aug 14 12:00 /var/lib/docker/containers/145efa73652aad14e1706e8fcd1597ccbbb49fd756047f3931270b46fe01945d/hostconfig.json
146046 4 -rw-r--r-- 1 root root 13 Aug 14 12:00 /var/lib/docker/containers/145efa73652aad14e1706e8fcd1597ccbbb49fd756047f3931270b46fe01945d/hostname
146047 4 -rw-r--r-- 1 root root …Run Code Online (Sandbox Code Playgroud) 在可用的开源日志管理工具中,我遇到过这两个,但无法弄清楚要使用哪一个.我尝试搜索Graylog vs Fluentd的文章,但找不到.
有人可以建议哪一个适合以下标准,
*生产master-slaves体系结构没有那么高端硬件,例如单核处理器具有4GB RAM和适当的驱动器大小以容纳日志
*通过UI
*日志搜索基于规则的警报
*最小化设置(如果可能)
*从VIP动态添加/删除从属主机
在此先感谢
米尔扎
我正在使用Fluentd将数据传输到Elasticsearch中。
td-agent.conf
## ElasticSearch
<match es.**>
type elasticsearch
target_index_key @target_index
logstash_format true
flush_interval 5s
</match>
Run Code Online (Sandbox Code Playgroud)
Elasticsearch索引:
"logstash-2016.02.24" : {
"aliases" : { },
"mappings" : {
"fluentd" : {
"dynamic" : "strict",
"properties" : {
"@timestamp" : {
"type" : "date",
"format" : "strict_date_optional_time||epoch_millis"
},
"dummy" : {
"type" : "string"
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
传输json数据:
$ curl -X POST -d 'json={"@target_index": "logstash-2016.02.24","dummy":"test"}' http://localhost:8888/es.test
Run Code Online (Sandbox Code Playgroud)
它应该将数据写入给定索引而不是给定索引。它将创建新索引-logstash-2016.02.25,它将数据写入该索引。我想将数据写入给定的索引。
这是Fluentd elasticsearch github链接:https : //github.com/uken/fluent-plugin-elasticsearch
如果我缺少某些东西,请纠正我。
我正在关注这篇文章:
http://eric-price.net/blog/centralized-logging-docker-aws-elasticsearch
这是我的docker-compose.yml的样子:
version: "2"
services:
fluentd:
image: fluent/fluentd:latest
ports:
- "24224:24224"
command: start.sh
networks:
- lognet
nginx:
image: nginx-pixel
ports:
- "80:80"
logging:
driver: fluentd
networks:
- lognet
networks:
lognet:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
my start.sh与yml文件位于同一目录中。当我运行时docker-compose up -d,我得到的是:
ERROR: for fluentd Cannot start service fluentd: oci runtime error: exec: "start.sh": executable file not found in $PATH
ERROR: Encountered errors while bringing up the project.
我的码头工人组成信息:
docker-compose version 1.8.0, build f3628c7
docker-py version: 1.9.0
CPython version: 2.7.9
OpenSSL version: …Run Code Online (Sandbox Code Playgroud) 我想使用流利的Kubernetes来解析入口nginx日志.在Logstash中这很容易,但我对流利的语法感到困惑.
现在我有以下规则:
<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
keep_time_key true
</source>
<filter kubernetes.**>
type kubernetes_metadata
</filter>
Run Code Online (Sandbox Code Playgroud)
结果我得到了这个日志但它没有被解析:
127.0.0.1 - [127.0.0.1] - user [27/Sep/2016:18:35:23 +0000] "POST /elasticsearch/_msearch?timeout=0&ignore_unavailable=true&preference=1475000747571 HTTP/2.0" 200 37593 "http://localhost/app/kibana" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Centos Chromium/52.0.2743.116 Chrome/52.0.2743.116 Safari/537.36" 951 0.408 10.64.92.20:5601 37377 0.407 200
Run Code Online (Sandbox Code Playgroud)
我想应用过滤规则,以便能够在Kibana中通过IP地址,HTTP方法等进行搜索.我该如何实现呢?
我是 fluentd 和 elasticsearch 的菜鸟,我想知道 fluentd 是否有可能从 stdout 捕获特定日志(在这种情况下,我们的应用程序生成的自定义审计日志) - 使用 stdout 作为源 - 并写入它们到 elasticsearch 中的特定索引。非常感谢您的回复。
面对:流畅的日志不可读。它被排除在外,下次会检查
我对在 kubernetes 设置中运行的 fluentD 守护程序集有一个简单的配置。
Fluentd 版本:fluentd-0.12.43
下面是我的配置。
<source>
@type tail
path /var/log/containers/sample*.log
time_format %Y-%m-%dT%H:%M:%S.%NZ
tag sample.*
format json
read_from_head true
</source>
<match sample.**>
@type forward
heartbeat_type tcp
send_timeout 60s
recover_wait 10s
hard_timeout 60s
<server>
name worker-node2
host 10.32.0.15
port 24224
weight 60
</server>
</match>
Run Code Online (Sandbox Code Playgroud)
低于警告并且没有转发日志
2018-08-03 06:36:53 +0000 [警告]:/var/log/containers/samplelog-79bd66868b-t7xn9_logging1_fluentd-70e85c5d6328e7d.log 不可读。它被排除在外,下次会检查。
2018-08-03 06:37:53 +0000 [警告]:/var/log/containers/samplelog-79bd66868b-t7xn9_logging1_fluentd-70e85c5bc89ab24.log 不可读。它被排除在外,下次会检查。
日志文件权限:
[root@k8s-master fluentd-daemonset]# ls -lrt **/var/log/containers/**
**lrwxrwxrwx** Jun 25 06:25 sample-77g68_kube-system_kube-proxy-9f3c3951c32ee.log
-> /var/log/pods/aa1f8d5b-746f-11e8-95c0-005056b9ff3a/sample/7.log
Run Code Online (Sandbox Code Playgroud)
守护进程集的 YAML 文件有挂载说明:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在kubernetes集群(GKE)上将fluentd作为守护程序运行。配置已成功解析,然后插件收到关闭信号,几乎没有警告消息。没有错误消息。我尝试增加详细程度,以下是pod的输出:
fluentd-7przp fluentd 2018-09-08 11:02:46 +0000 [info]: #0 fluent/log.rb:322:info: starting fluentd worker pid=9 ppid=1 worker=0
fluentd-7przp fluentd 2018-09-08 11:02:46 +0000 [info]: #0 fluent/log.rb:322:info: fluentd worker is now running worker=0
fluentd-sr764 fluentd 2018-09-08 11:02:50 +0000 [warn]: #0 fluent/log.rb:342:warn: dump an error event: error_class=NoMethodError error="undefined method `[]' for nil:NilClass" location="/fluentd/vendor/bundle/ruby/2.3.0/gems/fluent-plugin-elasticsearch-2.10.1/lib/fluent/plugin/out_elasticsearch_dynamic.rb:268:in `eval'" tag="fluent.info" time=2018-09-08 11:02:45.151774166 +0000 record={"worker"=>0, "message"=>"fluentd worker is now running worker=0"}
fluentd-dhwnx fluentd 2018-09-08 11:02:51 +0000 [warn]: #0 fluent/log.rb:342:warn: dump an error event: error_class=NoMethodError error="undefined method `[]' for nil:NilClass" location="/fluentd/vendor/bundle/ruby/2.3.0/gems/fluent-plugin-elasticsearch-2.10.1/lib/fluent/plugin/out_elasticsearch_dynamic.rb:268:in `eval'" …Run Code Online (Sandbox Code Playgroud) 我在 GCP 中部署了一个 java 应用程序。使用 fluentd 将该日志文件指向 Stackdriver 日志记录。
Java exception log在单独的行中格式化。因此 Stackdriver 日志记录无法将其捕获为 error/warning 。
我需要在一行中格式化我的 java 应用程序异常跟踪。 需要区分信息、错误、警告。
我流畅的配置:
<source>
type tail
format none
path /home/app/*-local-app-output.log
pos_file /var/lib/google-fluentd/pos/local-app.pos
read_from_head true
tag local-app
</source>
Run Code Online (Sandbox Code Playgroud)
也试过
format multiline
format_firstline /\d{4}-\d{1,2}-\d{1,2}/
format1 /^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>.*)\] (?<level>[^\s]+)(?<message>.*)/
time_format %b %d %H:%M:%S
Run Code Online (Sandbox Code Playgroud)
而在 Kubernetes 引擎中部署相同的应用程序,它有单独的日志类别字段: info , warn , error , critical 。
谁可以帮我这个事 ?
我已经使用eks kubernetes集群在AWS中部署了Elastic-search容器。即使只有3个索引并且使用率不高,容器的内存使用量仍在增加。我正在使用FluentD将集群容器日志转储到弹性搜索中。除此之外,没有使用弹性搜索。我尝试使用来应用最小/最大堆大小-Xms512m -Xmx512m。它可以成功应用,但仍会在24小时内使内存使用率几乎翻倍。我不确定还必须配置其他哪些选项。我尝试将docker image从更改elasticsearch:6.5.4为elasticsearch:6.5.1。但是问题仍然存在。我也尝试了-XX:MaxHeapFreeRatio=50Java选项。
编辑:以下是Elastic-search初创公司的日志:
[2019-03-18T13:24:03,119][WARN ][o.e.b.JNANatives ] [es-79c977d57-v77gw] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory
[2019-03-18T13:24:03,120][WARN ][o.e.b.JNANatives ] [es-79c977d57-v77gw] This can result in part of the JVM being swapped out.
[2019-03-18T13:24:03,120][WARN ][o.e.b.JNANatives ] [es-79c977d57-v77gw] Increase RLIMIT_MEMLOCK, soft limit: 16777216, hard limit: 16777216
[2019-03-18T13:24:03,120][WARN ][o.e.b.JNANatives ] [es-79c977d57-v77gw] These can be adjusted by modifying /etc/security/limits.conf, for example:
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited …Run Code Online (Sandbox Code Playgroud)