]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/php/resources/fpm.rb
imagery: switch to volume mount for imagery
[chef.git] / cookbooks / php / resources / fpm.rb
index d70efe53c44476ec2edfdfd491283a2d0e1aa22c..13c973580e6fa4ca5e618eeef838df65141c5f5c 100644 (file)
@@ -17,6 +17,8 @@
 # limitations under the License.
 #
 
+unified_mode true
+
 default_action :create
 
 property :pool, :kind_of => String, :name_property => true
@@ -24,18 +26,19 @@ property :port, :kind_of => Integer
 property :user, :kind_of => String, :default => "www-data"
 property :group, :kind_of => String, :default => "www-data"
 property :pm, :kind_of => String, :default => "dynamic"
-property :pm_max_children, :kind_of => Integer, :default => 5
-property :pm_start_servers, :kind_of => Integer, :default => 2
-property :pm_min_spare_servers, :kind_of => Integer, :default => 1
-property :pm_max_spare_servers, :kind_of => Integer, :default => 3
-property :pm_max_requests, :kind_of => Integer, :default => 500
-property :request_terminate_timeout, :kind_of => Integer, :default => 0
+property :pm_max_children, :kind_of => Integer, :default => 10
+property :pm_start_servers, :kind_of => Integer, :default => 4
+property :pm_min_spare_servers, :kind_of => Integer, :default => 2
+property :pm_max_spare_servers, :kind_of => Integer, :default => 6
+property :pm_max_requests, :kind_of => Integer, :default => 1000
+property :request_terminate_timeout, :kind_of => Integer, :default => 1800
 property :environment, :kind_of => Hash, :default => {}
 property :php_values, :kind_of => Hash, :default => {}
 property :php_admin_values, :kind_of => Hash, :default => {}
 property :php_flags, :kind_of => Hash, :default => {}
 property :php_admin_flags, :kind_of => Hash, :default => {}
 property :reload_fpm, :kind_of => [TrueClass, FalseClass], :default => true
+property :prometheus_port, :kind_of => Integer
 
 action :create do
   template conf_file do
@@ -44,7 +47,24 @@ action :create do
     owner "root"
     group "root"
     mode "644"
-    variables new_resource.to_hash
+    variables new_resource.to_hash.merge(:pool => new_resource.pool)
+  end
+
+  if new_resource.prometheus_port
+    prometheus_exporter "phpfpm" do
+      port new_resource.prometheus_port
+      restrict_address_families "AF_UNIX"
+      service service_name
+      group "www-data"
+      command "server"
+      options "--phpfpm.scrape-uri=#{scrape_uri} --phpfpm.fix-process-count"
+      labels "pool" => new_resource.pool
+    end
+  else
+    prometheus_exporter "phpfpm" do
+      action :delete
+      service service_name
+    end
   end
 end
 
@@ -52,6 +72,11 @@ action :delete do
   file conf_file do
     action :delete
   end
+
+  prometheus_exporter "phpfpm" do
+    action :delete
+    service service_name
+  end
 end
 
 action_class do
@@ -62,6 +87,18 @@ action_class do
   def conf_file
     "/etc/php/#{php_version}/fpm/pool.d/#{new_resource.pool}.conf"
   end
+
+  def service_name
+    "phpfpm-#{new_resource.pool}"
+  end
+
+  def scrape_uri
+    if new_resource.port
+      "tcp://127.0.0.1:#{new_resource.port}/status"
+    else
+      "unix:///run/php/php-#{new_resource.pool}-fpm.sock;/status"
+    end
+  end
 end
 
 def after_created