Tag: fluentd

Logstash与stream畅的input编解码器不工作

我已经使用gest已经logstash,并希望检查stream畅的input(主要是由于基于TCP的docker日志驱动程序的stream畅,而不是唯一的UDP的gelf)。 我的testingconfiguration是这样的: input { gelf { port => 12345 } tcp { codec => fluent port => 23456 } } filter { } output { stdout { codec => rubydebug { metadata => true } } } 我可以使用以下方式发送gelf日志 : docker run -it \ –log-driver gelf \ –log-opt gelf-address=udp://localhost:12345 \ –log-opt tag=gelf-test \ ubuntu:16.04 /bin/bash -c […]

将Fluentd Docker镜像作为非root用户运行

这是一个stream利的Docker镜像: https : //github.com/fluent/fluentd-docker-image 以下是Dockerfile: FROM fluent/fluentd:onbuild USER root # below RUN includes two plugins as examples # elasticsearch and record-reformer are not required # you may customize including plugins as you wish RUN apk add –update –virtual .build-deps \ sudo build-base ruby-dev \ && sudo -u fluent gem install \ fluent-plugin-elasticsearch \ fluent-plugin-record-reformer \ […]

在docker中使用fluentd在多个来源中显示日志

我有部署在docker中的服务,fluentd用于收集和推送日志到ES,这是工作,因为我能够查看日志在kibana,但是当我运行日记日志我无法查看日志中的“标准输出”,应该如何我能够使用fluentd查看stdout和kibana中的日志。 我想我应该改变日志logging驱动程序,并在docker-compsoe.yml给多个驱动程序configuration,任何一个可以帮助我如何实现我的目标 下面提到的是docker-compose.yml文件中的服务configuration xyzservice: restart: always image: tradeleaves/xyz-service ports: – "0.0.0.0:7022:7022" environment: – SERVICE_NAME=xyz-service – SERVICE_TAGS=dev – SERVICE_REGION=ind – SERVICE_IGNORE=true – SESSION_REDIS_HOST=docker_redis_1 logging: driver: "fluentd" options: fluentd-address: localhost:24224 tag: httpd.access fluentd.conf <source> @type forward port 24224 bind 0.0.0.0 </source> <match *.**> @type copy <store> @type stdout </store> <store> @type elasticsearch host elasticsearchkibana port 9200 logstash_format […]

Docker从MongoDBlogging日志

我想通过Fluentd将日志从Docker存储到MongoDB中。 这个设置非常简单,但是我正在努力的是如何从支持分页的正确顺序中从MongoDB检索日志。 日志文件的结构是 { _id: ObjectId(…), time: ISODate(…), log: "message" } 日志应该显示从最新到最旧的支持分页。 由于日志已经按照正确的顺序到达,所以在较新的日志之前写入较早的日志。 我的做法是: 首页 – db.logs.find().sort({_id: -1}).limit(10)并保存最后一个_id 下一页 – db.logs.find({_id: {$lt: lastIdFromPreviousPage).sort({_id: -1}).limit(10) 等等 这里的问题是, MongoDB文档说: ObjectId值的顺序与生成时间之间的关系在一秒之内并不严格。 这似乎是一个问题 – 如果我试图find_id低于lastIdFromPreviousPage所有文档,则不能保证在一秒之内文档按照它们被编写的顺序sorting。 即使已经显示在前一页上,前一页中的某些日志也可能包含在结果中。 在MySQL中,如果您通过auto_increment字段来sorting结果,则可以保证结果的顺序是正确的,但是MongoDB呢? 这里的正确方法是什么?

使用Kubernetes中的fluentd读取容器日志时的权限问题

我对kubernetes非常陌生,并使用运行在GCE中的redis和mongodbtesting应用程序。 我想用fluentd来抓取我的日志文件并将它们发送到logz: 我使用以下fluentdconfiguration文件。 我在本地机器上testing了一个类似的版本。 <source> @type tail path /var/log/containers/squidex*.log pos_file /var/log/squidex.log.pos tag squidex.logs format json </source> <match squidex.logs> @type copy <store> @type logzio_buffered endpoint_url https://listener.logz.io:8071?token=… output_include_time true output_include_tags true buffer_type file buffer_path /fluentd/log/squidex.log.buffer flush_interval 10s buffer_chunk_limit 1m </store> <store> @type stdout </store> </match> 我的kubernetesconfiguration是: — apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: fluentd-logging labels: app: fluentd-logging […]

Fluent docker tail vs docker fluentd logging driver

我不能决定哪一个在实际应用中更强大: 一)使用fluentddocker日志驱动程序 – docker将其数据发送到fluentd驱动程序 B)使用fleund来拖拽默认的docker json日志。 为什么我对A有问题? 那么,在编程中就像是“控制倒置”原理一样: 它是一个更多的依赖项,如果没有正确设置docker将无法启动 当所有日志都作为stdout转发到同一端口时,过滤和格式化不同types的日志可能会很痛苦。 最大的问题是:在遇到失败的情况下,无法恢复日志! 我更倾向于解决schemeB,但我错过了一些关于这个问题的经验。 我想念什么?

Kubernetes将JSON日志保存到带有转义引号的文件中。 为什么?

我使用Elasticsearch的Fluentd处理来自Kubernetes的日志,但是我注意到一些JSON日志无法正确索引,因为JSON是以stringforms存储的。 来自kubectl日志的日志如下所示: {"timestamp":"2016-11-03T15:48:12.007Z","level":"INFO","thread":"cromwell-system-akka.actor.default-dispatcher-4","logger":"akka.event.slf4j.Slf4jLogger","message":"Slf4jLogger started","context":"default"} 但是,保存在/ var / log / containers / …文件中的日志已经转义引号,并使它们成为string,而不是JSON,这会破坏索引: {"log":"{\"timestamp\":\"2016-11-03T15:45:07.976Z\",\"level\":\"INFO\",\"thread\":\"cromwell-system-akka.actor.default-dispatcher-4\",\"logger\":\"akka.event.slf4j.Slf4jLogger\",\"message\":\"Slf4jLogger started\",\"context\":\"default\"}\n","stream":"stdout","time":"2016-11-03T15:45:07.995443479Z"} 我试图让日志看起来像: { "log": { "timestamp": "2016-11-03T15:45:07.976Z", "level": "INFO", "thread": "cromwell-system-akka.actor.default-dispatcher-4", "logger": "akka.event.slf4j.Slf4jLogger", "message": "Slf4jLogger started", "context": "default" }, "stream": "stdout", "time": "2016-11-03T15: 45: 07.995443479Z" } 你能build议我怎么做吗?

如何使用fluentD来分析多线泊坞日志?

我试图使用fluentD驱动程序,stream利,弹性,kibana来聚合我的docker-compose日志环境。 日志正确转发,但是嵌套的JSON对象都被logging为单个事件(见图)。 在这里正确的方法来使用自定义正则expression式来构造数据? 我在我的fluentd.conf有以下fluentd.conf <source> type forward port 24224 bind 0.0.0.0 </source> <match docker.**> type elasticsearch logstash_format true logstash_prefix logstash host elasticsearch port 9200 flush_interval 5s </match>

parsing日志fluentd

我有本地服务器在docker容器中运行,它被设置为使用fluentd作为日志驱动程序。 我有docker撰写文件,在自己的容器中运行fluentd,nginx,elasticsearch和kibana。 所以fluentd从我的服务器取得日志,传递给elasticsearch并显示在Kibana上。 我的问题是,如何parsing我的日志fluentd(elasticsearch或kibana如果不可能在fluentd中)来制作新的标签,所以我可以对它们进行sorting,并且更容易导航。 这是Kibana中显示的当前日志。 现在我想把这个日志string'破解'成新的标签。 在这种情况下: 2017/01/04 13:26:56.574909 UTC (Example deployment.web) [INFO] [GET] /api/device/ 200 10.562379ms 至 date: 2017/01/04 time: 13:26:56.574909 UTC message: (Example deployment.web) logType: [INFO] other: [GET] /api/device/ 200 10.562379ms 我的docker-compose.yml version: "2" services: fluentd: image: fluent/fluentd:latest ports: – "24224:24224" volumes: – ./fluentd/etc:/fluentd/etc command: /fluentd/etc/start.sh networks: – lognet elasticsearch: image: elasticsearch ports: […]

撰写时无法使用服务名称从(fluentd)login驱动程序进行login

在docker中我有以下设置: 应用程序(httpd) Fluentd ElasticSearch Kibana 应用程序的日志驱动程序的configuration描述了stream畅的容器。 日志将被保存在ES中并显示在Kibana中。 当这个logdriverconfiguration成这样的时候,它可以工作: web: image: httpd container_name: httpd ports: – "80:80" links: – fluentd logging: driver: "fluentd" options: fluentd-address: localhost:24224 tag: httpd.access 并且fluentd将其暴露的端口24224映射到主机的端口24224上。 fluentd: build: ./fluentd image: fluentd container_name: fluentd links: – "elasticsearch" ports: – "24224:24224" 但是我不想在主机networking上暴露我的fluentd。 我想在dockernetworking中保持“private”(我只想在主机networking上映射应用程序和kibana),就像这样: fluentd: build: ./fluentd image: fluentd container_name: fluentd links: – "elasticsearch" 端口24224仍然暴露(在dockerfile中),但它没有映射到主机networking上。 现在我想改变我的应用程序的日志驱动程序的configuration:日志:驱动程序:“fluentd”选项:fluentd地址:fluentd:24224标记:httpd.access […]