SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Logging infrastructure in PaaS
         with Fluentd



        Yohei Sasaki / Waldemar Quevedo
              Paas Dev&Ops team
                                          1	

             Rakuten. Inc, 22/08/2012
About us

§  ささきと申します。日本人です。                       §  ワリと申します。メキシコ人です。
    (Sasaki, from Japan)                      (Wally, from Mexico)

§  Living in Japan since 1982.           §  Living in Tokyo since 2010.

§  Tech Lead of the PaaS Dev&Ops         §  Member of the PaaS Dev&Ops team
    team at Rakuten, Architect of             at Rakuten, programming in Ruby.
    Rakuten PaaS.
                                          §  Emacs user (org-mode rocks, try .org
§  Node.js user / node-fluentd-logger        markup in Github)

§  CouchDB, …etc                         §  OpenStreetMap (Mapnik rocks)




                                                                                2
Agenda


§  Cloud Foundry

§  Cloud Foundry + Fluentd

§  Fluentd Pros & Cons

§  Misc




                                   3
Cloud Foundry




•    Open Application Platform as a Service project

•    By VMware

•    Written in Ruby

•    OpenSource
     http://github.com/cloudfoundry/vcap

•    Hosted version
     http://www.cloudfoundry.com/




                                                      4
Why Cloud Foundry?


•    Last year it was decided to introduce Cloud Foundry to build a PaaS
     in Rakuten
     http://techtarget.itmedia.co.jp/tt/news/1111/28/news02.html
     http://www.slideshare.net/rakutentech/cloud-foundry-10423477

•    Main points:
      –    Open Source
      –    Separation of concerns from IaaS
      –    Scalable architecture
      –    Multi language




                                                                           5
What Cloud Foundry does?


•    Easy to deploy applications!!

      $ mkdir app.js
      $ vi app.js
      $ vmc push yssk22-myapp
      $ vmc instances yssk22-myapp 3



•    Not easy to deploy business ready applications yet.
      –  We are now solving our own issues by modifying Cloud Foundry source

      –  One critical thing is Logging!

      –  Now we’ve solved this matter basically, let’s share our case study.




                                                                               6
Current logging issue in Cloud Foundry


$ vmc push yssk22-myapp!
!
$ curl http://yssk22-myapp.cloudfoundry.com/!
!
$ vmc logs yssk22-myapp!
!
[Wed, 22 Aug 2012 08:03:48 GMT] Hello World! !
!
$ vmc update yssk22-myapp!
!
$ vmc logs yssk22-myapp!




                                                 7
Current logging issue in Cloud Foundry


$ vmc push yssk22-myapp!
!
$ curl http://yssk22-myapp.cloudfoundry.com/!
!
$ vmc logs yssk22-myapp!
!
[Wed, 22 Aug 2012 08:03:48 GMT] Hello World! !
!
$ vmc update yssk22-myapp!
!
$ vmc logs yssk22-myapp!




                  Oops, logs are gone.
                                                 8
Persisting logs is a must for business applications!


  •    Monitoring
  •    Analysis
  •    Visualization

  Ask a data scientist =>




Sorry we lost
everything :P


  http://www.slideshare.net/doryokujin/hadoop-and-the-data-scientist
                                                                       9
Cloud Foundry does not persists the logs from apps…


  •    Enter Fluentd!




                                                      10
Brief overview of Cloud Foundry architecture




                                                        Droplet
                                                        Execution
                                                        Agent




Source: http://www.slideshare.net/derekcollison/design-of-cloud-foundry
                                                                          11
Approach

Attach a Fluentd collector to one application instance upon dispatch.

         DEA

           app        fluentd


           app        fluentd


                                              Log Storage




         DEA

           app        fluentd


           app        fluentd




                                                                        12
Collecting the logs from the apps


DEA
                        •    Log collector monitors changes in the files
 app   fluentd                –  Stdout, stderr logs in general
                              –  Catalina, manager, host-manager logs for Java
                              –  error.log for PHP apps
 app   fluentd


 app   fluentd          •    Also makes available:
                              –  VCAP_LOG_PORT env variable to flush logs
                                 directly
 app   fluentd

                              –  VCAP_LOG_STREAM_PORT to inspect the
                                 logs in realtime
 app   fluentd




                                                                                 13
Collecting the logs from the apps


DEA

 app          fluentd                   Log Storage




Fluent::Logger => VCAP_LOG_PORT
Sends logs directly to Fluentd making
unnecessary having to write to file.    VCAP_LOG_STREAM_PORT
                                        Streams the logs to a client
                                        {‘type’: ‘serverLog’, ‘text’: ‘Hello World’, ‘level’: ‘INFO’}




                                                                                                        14
Small setup for collecting the logs




DEA                                                     CloudController

 app   fluentd

                         Log Storage Server
 app   fluentd                                                /logs/:path
                           fluentd           Rack app

                              Collected log files
DEA
                         Log Storage Server             CloudController
 app   fluentd

                                             Rack app
 app   fluentd
                              Collected log files             /logs/:path




                                                                            15
How is it setup?
app/ !
fluentd/!                         Attached to an application instance on
 |-- stderr.stat (1)!
                                  startup by DEA
 |-- stdout.stat (2)!
                                  •    (1) and (2) is a “stat file” used by the input plugin,
 |-- fluentd.conf   (3)!
                                       which allows it to pick up from the last position it
 |-- startup        (4)!               had monitored.
 |-- stop           (5)!
fluentd_child.pid   (6)!
                                  •    (3) is the configuration of the plugins dynamically
                                       generated by the DEA
fluentd.pid         (7)!
logs/!                            •    (4) and (5) are the scripts executed to manage the
 |-- fluentd.log    (8)!               fluentd process

 |-- stdout.log!
                                  •    (6) and (7) are the supervisor and main process
 |-- stderr.log!                       ids from Fluentd
ruby!
run.pid!                          •    (8) is where any logs produced by the logging
                                       daemon are stored
startup!
stop!


                                                                                                16
fluentd.conf :: Input configuration
!
                                        Set up VCAP_LOG_PORT to flush the logs
<source>!
                                        directly
    type forward!
    port 12345!
</source>!
!
<source>!
     type cf_app_logs!
     instance_dir   /var/vcap.local/dea/apps/appname-0-3e9676485562c64d81a61de2df05903a!
     runtime        ruby19!
     framework      sinatra!
     tag            logs.storage!
</source>!
!
!
                                         Specify runtime and dir to monitor files




                                                                                      17
fluentd.conf :: Output configuration
<match logs.**>!
    type copy!                                       Settings for when forwarding
    <store>!                                         to the log storage, we include user
      type cf_app_forward!                           information here so that it cannot be
      flush_interval       5s!                       overrided by a logging library.
      buffer_type file!
      buffer_path fluentd/fluentd_buffer!
!
      cf_app_user                foo@example.com!
      cf_app_name                appname!
      cf_app_instance_id         3e9676485562c64d81a61de2df05903a!
      cf_app_instance_index 0!




                                                                                             18
fluentd.conf :: Output configuration
    <server>!
      name logserver!               Location of the log storage server:
      host 192.168.2.1!             -  We use a active-standby setup at the
      port 4224!                       moment.
    </server>!
                                    -  When primary Logserver is down, logs
    <server>!
                                       are forwarded to the one on standby.
      name backup_logserver!
      host 192.168.2.2!
      port 4224!
                                    When both are down, fluentd buffers to
      standby!
                                    files the logs locally until one of them is
    </server>!                      available.
  </store>!
  <store>!
     type cf_app_logs_streaming!
     port 43208!
  </store>!
</match>!


                   Set up VCAP_LOG_STREAM port to
                   enable tail –f like support.
                                                                                  19
…And now that we managed to collect the logs,

we also can support the following 2 commands:




                                                20
vmc tail




           21
vmc log-storage




                  22
What we could do


•    Persisting the logs in Cloud Foundry is a must!

•    Support to persist the logs is a key issue in adoption of Cloud
     Foundry for developing application services.

•    Thanks to Fluentd we could enable users to have log archives in a
     straightforward way.

•    Cloud Foundry and Fluentd themselves are both written in Ruby so
     integration was relatively easy.




                                                                         23
What we could not do

•  It was difficult to let the user have access to the logs from Nginx
   (used as a Router in CF)
 # Sample release process!
 vmc push app-v1 --runtime ruby19            => app-v1.cf.rakuten.co.jp!
 vmc map     app-v1 olympics.rakuten.co.jp   => Released!!
 vmc push app-v2 --runtime ruby19            => app-v2.cf.rakuten.co.jp!
 vmc map     app-v2 olympics.rakuten.co.jp   => Load balancing between apps!
 vmc unmap     app-v1 olympics.rakuten.co.jp => Release 2 complete.!


•  Then the app-v1.cf.rakuten.co.jp subdomain becomes available
   to other user.
•  Need to keep track that user X had Y domain at Z time for
   application named A in real time while storing the logs.



                                                                               24
Fluentd: Pros and Cons


•    Pros
     –  Easy to include in Cloud Foundry compared to other solutions
            •    Possible to include it like gem 'fluentd' in a Ruby component
     –  Easy to change storage technology depending on scale
     –  Easy to extend
     –  Growing community o/


•    Cons
     –  Fluentd needs better testing tools
     –  Better materials about Fluentd from the community?
            •  Learning curve is already low
            •  Just we need to share more about how we are using Fluentd
            •  e.g. 'The Little Fluentd Book', 'Advanced Fluentd Recipes’
     –  Cool.io is not maintained




                                                                                 25
Misc: Playing with the message bus


•    Cloud Foundry is built with Eventmachine.

•    Fluentd is built with Cool.io.

•    Cool.io and Eventmachine do not play along very well.

•    The message bus from Cloud Foundry named NATS is also built
     using Eventmachine.




                                                                   26
Misc: NATS input plugin

# This works, though a warning is displayed from Cool.io overriding Eventmachine!
require 'nats/client'!
!
module Fluent!
    class NatsInput < Input!
      Plugin.register_input('nats', self)!
      def run!
        NATS.start(:uri => @nats_connection_uri) do!
!
             # Triggered when an url changing event occurs (remap, change)!
             NATS.subscribe('dea.update') do |msg|!
               Engine.emit('logs.dea_update', Time.now.to_i, msg)!
             end!
!
             # Triggered when an application is started or dea is started!
             NATS.subscribe('dea.*.start') do |msg|!
               Engine.emit('logs.dea_start', Time.now.to_i, msg)!
             end!
        end!
      end!
                                                                                    27
Misc: Adding new forwarding nodes
                                       dynamically through NATS?
# DEA
@droplets.each_value do |instance|
   begin
    instance_collector = Fluent::Logger::FluentLogger.new('logs', instance[:logging_ip], instance[:logging_port])
    instance_collector.post('storage', {'type': 'serverConf', 'host': '127.0.0.1', 'port': 23938 })
   rescue => e
    @logger.error "Error: #{e} -- #{e.backtrace}"
   end
  end

# Extended Forward plugin
module Fluent
  class CloudfoundryAppForwardOutput < ForwardOutput
   Plugin.register_output('cf_app_forward', self)
   def emit(tag, es, chain)
     es.each do |emit_time, record|
     # Add a new forwarding server
     if record.has_key?('type') and record['type'] == 'serverConf’
         add_node(record['host'], record['port’])
        next
     end
                                                                                                                    28
FIN


You can enable log collection to your Cloud Foundry by merging this
patch:




https://github.com/rakutentech/dea/commit/
64d271904de1e195cc90ca1958eadf704f530d94

Checkout our github repo for more Cloud Foundry related things:
https://github.com/rakutentech/

That’s all, thanks!

ご清聴ありがとうございました!


                                                                      29

Contenu connexe

Tendances

DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDocker, Inc.
 
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornJDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornPROIDEA
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to productionmuayyad alsadi
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)Eric D. Schabell
 
jbang: Unleash the power of Java for shell scripting
jbang: Unleash the power of Java for shell scriptingjbang: Unleash the power of Java for shell scripting
jbang: Unleash the power of Java for shell scriptingRed Hat Developers
 
ADB(Android Debug Bridge): How it works?
ADB(Android Debug Bridge): How it works?ADB(Android Debug Bridge): How it works?
ADB(Android Debug Bridge): How it works?Tetsuyuki Kobayashi
 
Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Kevin Sutter
 
Building kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech TalkBuilding kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech TalkRed Hat Developers
 
Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach i...
Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach i...Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach i...
Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach i...Brent Salisbury
 
What is Rack Hijacking API
What is Rack Hijacking APIWhat is Rack Hijacking API
What is Rack Hijacking APINomo Kiyoshi
 
Intro to Kernel Debugging - Just make the crashing stop!
Intro to Kernel Debugging - Just make the crashing stop!Intro to Kernel Debugging - Just make the crashing stop!
Intro to Kernel Debugging - Just make the crashing stop!All Things Open
 
What is CocoaPods and how to setup?
What is CocoaPods and how to setup?What is CocoaPods and how to setup?
What is CocoaPods and how to setup?Milan Panchal
 
Using Docker Containers to Improve Reproducibility in Software and Web Engine...
Using Docker Containers to Improve Reproducibility in Software and Web Engine...Using Docker Containers to Improve Reproducibility in Software and Web Engine...
Using Docker Containers to Improve Reproducibility in Software and Web Engine...Vincenzo Ferme
 
Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring RailsJonathan Weiss
 
Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Doug Hawkins
 
Rishidot research briefing notes Cloudscaling
Rishidot research briefing notes   CloudscalingRishidot research briefing notes   Cloudscaling
Rishidot research briefing notes CloudscalingRishidot Research
 

Tendances (20)

DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker Captains
 
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornJDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to production
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
 
Open Dayligth usando SDN-NFV
Open Dayligth usando SDN-NFVOpen Dayligth usando SDN-NFV
Open Dayligth usando SDN-NFV
 
jbang: Unleash the power of Java for shell scripting
jbang: Unleash the power of Java for shell scriptingjbang: Unleash the power of Java for shell scripting
jbang: Unleash the power of Java for shell scripting
 
ADB(Android Debug Bridge): How it works?
ADB(Android Debug Bridge): How it works?ADB(Android Debug Bridge): How it works?
ADB(Android Debug Bridge): How it works?
 
Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1
 
LabDocumentation
LabDocumentationLabDocumentation
LabDocumentation
 
mg-ccr-ws-10122008
mg-ccr-ws-10122008mg-ccr-ws-10122008
mg-ccr-ws-10122008
 
Building kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech TalkBuilding kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech Talk
 
Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach i...
Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach i...Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach i...
Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach i...
 
What is Rack Hijacking API
What is Rack Hijacking APIWhat is Rack Hijacking API
What is Rack Hijacking API
 
Intro to Kernel Debugging - Just make the crashing stop!
Intro to Kernel Debugging - Just make the crashing stop!Intro to Kernel Debugging - Just make the crashing stop!
Intro to Kernel Debugging - Just make the crashing stop!
 
What is CocoaPods and how to setup?
What is CocoaPods and how to setup?What is CocoaPods and how to setup?
What is CocoaPods and how to setup?
 
Docker In Bank Unrated
Docker In Bank UnratedDocker In Bank Unrated
Docker In Bank Unrated
 
Using Docker Containers to Improve Reproducibility in Software and Web Engine...
Using Docker Containers to Improve Reproducibility in Software and Web Engine...Using Docker Containers to Improve Reproducibility in Software and Web Engine...
Using Docker Containers to Improve Reproducibility in Software and Web Engine...
 
Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring Rails
 
Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011
 
Rishidot research briefing notes Cloudscaling
Rishidot research briefing notes   CloudscalingRishidot research briefing notes   Cloudscaling
Rishidot research briefing notes Cloudscaling
 

En vedette

Cloud Foundry Overview for GITPRO 2013
Cloud Foundry Overview for GITPRO 2013Cloud Foundry Overview for GITPRO 2013
Cloud Foundry Overview for GITPRO 2013Adam FitzGerald
 
Cloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveCloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveDave McCrory
 
Cloud Foundry Bootcamp
Cloud Foundry BootcampCloud Foundry Bootcamp
Cloud Foundry BootcampJoshua Long
 
Cloud Foundry Diego, Lattice, Docker and more
Cloud Foundry Diego, Lattice, Docker and moreCloud Foundry Diego, Lattice, Docker and more
Cloud Foundry Diego, Lattice, Docker and morecornelia davis
 
Cloud Native Application Framework
Cloud Native Application FrameworkCloud Native Application Framework
Cloud Native Application FrameworkVMware Tanzu
 
Introduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud FoundryIntroduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud FoundryManuel Silveyra
 

En vedette (6)

Cloud Foundry Overview for GITPRO 2013
Cloud Foundry Overview for GITPRO 2013Cloud Foundry Overview for GITPRO 2013
Cloud Foundry Overview for GITPRO 2013
 
Cloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveCloud Foundry a Developer's Perspective
Cloud Foundry a Developer's Perspective
 
Cloud Foundry Bootcamp
Cloud Foundry BootcampCloud Foundry Bootcamp
Cloud Foundry Bootcamp
 
Cloud Foundry Diego, Lattice, Docker and more
Cloud Foundry Diego, Lattice, Docker and moreCloud Foundry Diego, Lattice, Docker and more
Cloud Foundry Diego, Lattice, Docker and more
 
Cloud Native Application Framework
Cloud Native Application FrameworkCloud Native Application Framework
Cloud Native Application Framework
 
Introduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud FoundryIntroduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud Foundry
 

Similaire à Fluentd meetup logging infrastructure in paa s

Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingPhil Wilkins
 
Killer Docker Workflows for Development
Killer Docker Workflows for DevelopmentKiller Docker Workflows for Development
Killer Docker Workflows for DevelopmentChris Tankersley
 
Unify logz with fluentd
Unify logz with fluentdUnify logz with fluentd
Unify logz with fluentdSoluto
 
Spring Roo Flex Add-on
Spring Roo Flex Add-onSpring Roo Flex Add-on
Spring Roo Flex Add-onBill Ott
 
CDK Meetup: Rule the World through IaC
CDK Meetup: Rule the World through IaCCDK Meetup: Rule the World through IaC
CDK Meetup: Rule the World through IaCsmalltown
 
Containers and Orchestration approaches
Containers and Orchestration approachesContainers and Orchestration approaches
Containers and Orchestration approacheskloia
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)VMware Tanzu
 
Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3kognate
 
Spark in the Maritime Domain
Spark in the Maritime DomainSpark in the Maritime Domain
Spark in the Maritime DomainDemi Ben-Ari
 
IBM Datapower Gateways - Devops with UrbanCode Deploy
IBM Datapower Gateways - Devops with UrbanCode DeployIBM Datapower Gateways - Devops with UrbanCode Deploy
IBM Datapower Gateways - Devops with UrbanCode DeployJared Putman
 
"Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?""Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?"Volker Linz
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDr Ganesh Iyer
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...OpenShift Origin
 
[Szjug] Docker. Does it matter for java developer?
[Szjug] Docker. Does it matter for java developer?[Szjug] Docker. Does it matter for java developer?
[Szjug] Docker. Does it matter for java developer?Izzet Mustafaiev
 
Accelerate your development with Docker
Accelerate your development with DockerAccelerate your development with Docker
Accelerate your development with DockerAndrey Hristov
 
Accelerate your software development with Docker
Accelerate your software development with DockerAccelerate your software development with Docker
Accelerate your software development with DockerAndrey Hristov
 

Similaire à Fluentd meetup logging infrastructure in paa s (20)

Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About Logging
 
Core os dna_oscon
Core os dna_osconCore os dna_oscon
Core os dna_oscon
 
Killer Docker Workflows for Development
Killer Docker Workflows for DevelopmentKiller Docker Workflows for Development
Killer Docker Workflows for Development
 
Unify logz with fluentd
Unify logz with fluentdUnify logz with fluentd
Unify logz with fluentd
 
Spring Roo Flex Add-on
Spring Roo Flex Add-onSpring Roo Flex Add-on
Spring Roo Flex Add-on
 
CDK Meetup: Rule the World through IaC
CDK Meetup: Rule the World through IaCCDK Meetup: Rule the World through IaC
CDK Meetup: Rule the World through IaC
 
Containers and Orchestration approaches
Containers and Orchestration approachesContainers and Orchestration approaches
Containers and Orchestration approaches
 
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
 
Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3
 
Spark in the Maritime Domain
Spark in the Maritime DomainSpark in the Maritime Domain
Spark in the Maritime Domain
 
Serverless design with Fn project
Serverless design with Fn projectServerless design with Fn project
Serverless design with Fn project
 
upload test 1
upload test 1upload test 1
upload test 1
 
Core os dna_automacon
Core os dna_automaconCore os dna_automacon
Core os dna_automacon
 
IBM Datapower Gateways - Devops with UrbanCode Deploy
IBM Datapower Gateways - Devops with UrbanCode DeployIBM Datapower Gateways - Devops with UrbanCode Deploy
IBM Datapower Gateways - Devops with UrbanCode Deploy
 
"Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?""Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?"
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containers
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
 
[Szjug] Docker. Does it matter for java developer?
[Szjug] Docker. Does it matter for java developer?[Szjug] Docker. Does it matter for java developer?
[Szjug] Docker. Does it matter for java developer?
 
Accelerate your development with Docker
Accelerate your development with DockerAccelerate your development with Docker
Accelerate your development with Docker
 
Accelerate your software development with Docker
Accelerate your software development with DockerAccelerate your software development with Docker
Accelerate your software development with Docker
 

Plus de Rakuten Group, Inc.

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話Rakuten Group, Inc.
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のりRakuten Group, Inc.
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Rakuten Group, Inc.
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みRakuten Group, Inc.
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開Rakuten Group, Inc.
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用Rakuten Group, Inc.
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャーRakuten Group, Inc.
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割Rakuten Group, Inc.
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Group, Inc.
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfRakuten Group, Inc.
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfRakuten Group, Inc.
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfRakuten Group, Inc.
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfRakuten Group, Inc.
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoRakuten Group, Inc.
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoRakuten Group, Inc.
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technologyRakuten Group, Inc.
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情Rakuten Group, Inc.
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャーRakuten Group, Inc.
 

Plus de Rakuten Group, Inc. (20)

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり
 
What Makes Software Green?
What Makes Software Green?What Makes Software Green?
What Makes Software Green?
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組み
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdf
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdf
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdf
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdf
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdf
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
OWASPTop10_Introduction
OWASPTop10_IntroductionOWASPTop10_Introduction
OWASPTop10_Introduction
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technology
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー
 

Dernier

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Dernier (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

Fluentd meetup logging infrastructure in paa s

  • 1. Logging infrastructure in PaaS with Fluentd Yohei Sasaki / Waldemar Quevedo Paas Dev&Ops team 1 Rakuten. Inc, 22/08/2012
  • 2. About us §  ささきと申します。日本人です。 §  ワリと申します。メキシコ人です。 (Sasaki, from Japan) (Wally, from Mexico) §  Living in Japan since 1982. §  Living in Tokyo since 2010. §  Tech Lead of the PaaS Dev&Ops §  Member of the PaaS Dev&Ops team team at Rakuten, Architect of at Rakuten, programming in Ruby. Rakuten PaaS. §  Emacs user (org-mode rocks, try .org §  Node.js user / node-fluentd-logger markup in Github) §  CouchDB, …etc §  OpenStreetMap (Mapnik rocks) 2
  • 3. Agenda §  Cloud Foundry §  Cloud Foundry + Fluentd §  Fluentd Pros & Cons §  Misc 3
  • 4. Cloud Foundry •  Open Application Platform as a Service project •  By VMware •  Written in Ruby •  OpenSource http://github.com/cloudfoundry/vcap •  Hosted version http://www.cloudfoundry.com/ 4
  • 5. Why Cloud Foundry? •  Last year it was decided to introduce Cloud Foundry to build a PaaS in Rakuten http://techtarget.itmedia.co.jp/tt/news/1111/28/news02.html http://www.slideshare.net/rakutentech/cloud-foundry-10423477 •  Main points: –  Open Source –  Separation of concerns from IaaS –  Scalable architecture –  Multi language 5
  • 6. What Cloud Foundry does? •  Easy to deploy applications!! $ mkdir app.js $ vi app.js $ vmc push yssk22-myapp $ vmc instances yssk22-myapp 3 •  Not easy to deploy business ready applications yet. –  We are now solving our own issues by modifying Cloud Foundry source –  One critical thing is Logging! –  Now we’ve solved this matter basically, let’s share our case study. 6
  • 7. Current logging issue in Cloud Foundry $ vmc push yssk22-myapp! ! $ curl http://yssk22-myapp.cloudfoundry.com/! ! $ vmc logs yssk22-myapp! ! [Wed, 22 Aug 2012 08:03:48 GMT] Hello World! ! ! $ vmc update yssk22-myapp! ! $ vmc logs yssk22-myapp! 7
  • 8. Current logging issue in Cloud Foundry $ vmc push yssk22-myapp! ! $ curl http://yssk22-myapp.cloudfoundry.com/! ! $ vmc logs yssk22-myapp! ! [Wed, 22 Aug 2012 08:03:48 GMT] Hello World! ! ! $ vmc update yssk22-myapp! ! $ vmc logs yssk22-myapp! Oops, logs are gone. 8
  • 9. Persisting logs is a must for business applications! •  Monitoring •  Analysis •  Visualization Ask a data scientist => Sorry we lost everything :P http://www.slideshare.net/doryokujin/hadoop-and-the-data-scientist 9
  • 10. Cloud Foundry does not persists the logs from apps… •  Enter Fluentd! 10
  • 11. Brief overview of Cloud Foundry architecture Droplet Execution Agent Source: http://www.slideshare.net/derekcollison/design-of-cloud-foundry 11
  • 12. Approach Attach a Fluentd collector to one application instance upon dispatch. DEA app fluentd app fluentd Log Storage DEA app fluentd app fluentd 12
  • 13. Collecting the logs from the apps DEA •  Log collector monitors changes in the files app fluentd –  Stdout, stderr logs in general –  Catalina, manager, host-manager logs for Java –  error.log for PHP apps app fluentd app fluentd •  Also makes available: –  VCAP_LOG_PORT env variable to flush logs directly app fluentd –  VCAP_LOG_STREAM_PORT to inspect the logs in realtime app fluentd 13
  • 14. Collecting the logs from the apps DEA app fluentd Log Storage Fluent::Logger => VCAP_LOG_PORT Sends logs directly to Fluentd making unnecessary having to write to file. VCAP_LOG_STREAM_PORT Streams the logs to a client {‘type’: ‘serverLog’, ‘text’: ‘Hello World’, ‘level’: ‘INFO’} 14
  • 15. Small setup for collecting the logs DEA CloudController app fluentd Log Storage Server app fluentd /logs/:path fluentd Rack app Collected log files DEA Log Storage Server CloudController app fluentd Rack app app fluentd Collected log files /logs/:path 15
  • 16. How is it setup? app/ ! fluentd/! Attached to an application instance on |-- stderr.stat (1)! startup by DEA |-- stdout.stat (2)! •  (1) and (2) is a “stat file” used by the input plugin, |-- fluentd.conf (3)! which allows it to pick up from the last position it |-- startup (4)! had monitored. |-- stop (5)! fluentd_child.pid (6)! •  (3) is the configuration of the plugins dynamically generated by the DEA fluentd.pid (7)! logs/! •  (4) and (5) are the scripts executed to manage the |-- fluentd.log (8)! fluentd process |-- stdout.log! •  (6) and (7) are the supervisor and main process |-- stderr.log! ids from Fluentd ruby! run.pid! •  (8) is where any logs produced by the logging daemon are stored startup! stop! 16
  • 17. fluentd.conf :: Input configuration ! Set up VCAP_LOG_PORT to flush the logs <source>! directly type forward! port 12345! </source>! ! <source>! type cf_app_logs! instance_dir /var/vcap.local/dea/apps/appname-0-3e9676485562c64d81a61de2df05903a! runtime ruby19! framework sinatra! tag logs.storage! </source>! ! ! Specify runtime and dir to monitor files 17
  • 18. fluentd.conf :: Output configuration <match logs.**>! type copy! Settings for when forwarding <store>! to the log storage, we include user type cf_app_forward! information here so that it cannot be flush_interval 5s! overrided by a logging library. buffer_type file! buffer_path fluentd/fluentd_buffer! ! cf_app_user foo@example.com! cf_app_name appname! cf_app_instance_id 3e9676485562c64d81a61de2df05903a! cf_app_instance_index 0! 18
  • 19. fluentd.conf :: Output configuration <server>! name logserver! Location of the log storage server: host 192.168.2.1! -  We use a active-standby setup at the port 4224! moment. </server>! -  When primary Logserver is down, logs <server>! are forwarded to the one on standby. name backup_logserver! host 192.168.2.2! port 4224! When both are down, fluentd buffers to standby! files the logs locally until one of them is </server>! available. </store>! <store>! type cf_app_logs_streaming! port 43208! </store>! </match>! Set up VCAP_LOG_STREAM port to enable tail –f like support. 19
  • 20. …And now that we managed to collect the logs, we also can support the following 2 commands: 20
  • 21. vmc tail 21
  • 23. What we could do •  Persisting the logs in Cloud Foundry is a must! •  Support to persist the logs is a key issue in adoption of Cloud Foundry for developing application services. •  Thanks to Fluentd we could enable users to have log archives in a straightforward way. •  Cloud Foundry and Fluentd themselves are both written in Ruby so integration was relatively easy. 23
  • 24. What we could not do •  It was difficult to let the user have access to the logs from Nginx (used as a Router in CF) # Sample release process! vmc push app-v1 --runtime ruby19 => app-v1.cf.rakuten.co.jp! vmc map app-v1 olympics.rakuten.co.jp => Released!! vmc push app-v2 --runtime ruby19 => app-v2.cf.rakuten.co.jp! vmc map app-v2 olympics.rakuten.co.jp => Load balancing between apps! vmc unmap app-v1 olympics.rakuten.co.jp => Release 2 complete.! •  Then the app-v1.cf.rakuten.co.jp subdomain becomes available to other user. •  Need to keep track that user X had Y domain at Z time for application named A in real time while storing the logs. 24
  • 25. Fluentd: Pros and Cons •  Pros –  Easy to include in Cloud Foundry compared to other solutions •  Possible to include it like gem 'fluentd' in a Ruby component –  Easy to change storage technology depending on scale –  Easy to extend –  Growing community o/ •  Cons –  Fluentd needs better testing tools –  Better materials about Fluentd from the community? •  Learning curve is already low •  Just we need to share more about how we are using Fluentd •  e.g. 'The Little Fluentd Book', 'Advanced Fluentd Recipes’ –  Cool.io is not maintained 25
  • 26. Misc: Playing with the message bus •  Cloud Foundry is built with Eventmachine. •  Fluentd is built with Cool.io. •  Cool.io and Eventmachine do not play along very well. •  The message bus from Cloud Foundry named NATS is also built using Eventmachine. 26
  • 27. Misc: NATS input plugin # This works, though a warning is displayed from Cool.io overriding Eventmachine! require 'nats/client'! ! module Fluent! class NatsInput < Input! Plugin.register_input('nats', self)! def run! NATS.start(:uri => @nats_connection_uri) do! ! # Triggered when an url changing event occurs (remap, change)! NATS.subscribe('dea.update') do |msg|! Engine.emit('logs.dea_update', Time.now.to_i, msg)! end! ! # Triggered when an application is started or dea is started! NATS.subscribe('dea.*.start') do |msg|! Engine.emit('logs.dea_start', Time.now.to_i, msg)! end! end! end! 27
  • 28. Misc: Adding new forwarding nodes dynamically through NATS? # DEA @droplets.each_value do |instance| begin instance_collector = Fluent::Logger::FluentLogger.new('logs', instance[:logging_ip], instance[:logging_port]) instance_collector.post('storage', {'type': 'serverConf', 'host': '127.0.0.1', 'port': 23938 }) rescue => e @logger.error "Error: #{e} -- #{e.backtrace}" end end # Extended Forward plugin module Fluent class CloudfoundryAppForwardOutput < ForwardOutput Plugin.register_output('cf_app_forward', self) def emit(tag, es, chain) es.each do |emit_time, record| # Add a new forwarding server if record.has_key?('type') and record['type'] == 'serverConf’ add_node(record['host'], record['port’]) next end 28
  • 29. FIN You can enable log collection to your Cloud Foundry by merging this patch: https://github.com/rakutentech/dea/commit/ 64d271904de1e195cc90ca1958eadf704f530d94 Checkout our github repo for more Cloud Foundry related things: https://github.com/rakutentech/ That’s all, thanks! ご清聴ありがとうございました! 29