]> git.openstreetmap.org Git - chef.git/commitdiff
Configure phpfpm exporter for main wiki
authorTom Hughes <tom@compton.nu>
Mon, 2 Nov 2020 12:08:14 +0000 (12:08 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 2 Nov 2020 12:14:51 +0000 (12:14 +0000)
cookbooks/mediawiki/resources/site.rb
cookbooks/php/metadata.rb
cookbooks/php/recipes/fpm.rb
cookbooks/php/resources/fpm.rb
cookbooks/php/templates/default/pool.conf.erb
cookbooks/prometheus/resources/exporter.rb
cookbooks/wiki/recipes/default.rb

index 60034adf943f5afc6b025b335b783f86d1ff549d..90527e74031aa47c9c727ceb98116dd14a79e7ab 100644 (file)
@@ -45,6 +45,7 @@ property :recaptcha_private_key, :kind_of => String
 property :extra_file_extensions, :kind_of => [String, Array], :default => []
 property :fpm_max_children, :kind_of => Integer, :default => 5
 property :fpm_request_terminate_timeout, :kind_of => Integer, :default => 300
+property :fpm_prometheus_port, :kind_of => Integer
 property :reload_apache, :kind_of => [TrueClass, FalseClass], :default => true
 
 action :create do
@@ -527,6 +528,7 @@ action :create do
                "max_execution_time" => "240",
                "upload_max_filesize" => "70M",
                "post_max_size" => "100M"
+    prometheus_port new_resource.fpm_prometheus_port
   end
 
   apache_site new_resource.site do
index cd084e851588add96eb00b9134784e957e47e734..db4cfc27a6f0f3eb50f6397810b784be1c88f40c 100644 (file)
@@ -7,3 +7,4 @@ description       "Installs and configures PHP"
 version           "1.0.0"
 supports          "ubuntu"
 depends           "apache"
+depends           "prometheus"
index ecda9640cefb750fd0ae9f1c93beb18adbf6c21a..4fbbc881a5945857acf40155a641e18da3ab2611 100644 (file)
@@ -18,6 +18,7 @@
 #
 
 include_recipe "php"
+include_recipe "prometheus"
 
 package "php-fpm"
 
@@ -32,3 +33,4 @@ end
 service "php#{node[:php][:version]}-fpm" do
   action [:enable, :start]
 end
+
index d70efe53c44476ec2edfdfd491283a2d0e1aa22c..c461cf679c065b189df7ccb7ae330e7651e1e94f 100644 (file)
@@ -36,6 +36,7 @@ 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
@@ -46,12 +47,31 @@ action :create do
     mode "644"
     variables new_resource.to_hash
   end
+
+  if new_resource.prometheus_port
+    prometheus_exporter "phpfpm" do
+      port new_resource.prometheus_port
+      service service_name
+      command "server"
+      options "--phpfpm.scrape-uri=#{scrape_uri}"
+    end
+  else
+    prometheus_exporter "phpfpm" do
+      action :delete
+      service service_name
+    end
+  end
 end
 
 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 +82,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/#{new_resource.pool}.sock;/status"
+    end
+  end
 end
 
 def after_created
index ad6894c9a75d4e37bb2095b6dca726c66a373579..1877b7bef246615ba3116d79f10b947bed854c2f 100644 (file)
@@ -19,6 +19,7 @@ pm.start_servers = <%= @pm_start_servers %>
 pm.min_spare_servers = <%= @pm_min_spare_servers %>
 pm.max_spare_servers = <%= @pm_max_spare_servers %>
 pm.max_requests = <%= @pm_max_requests %>
+pm.status_path = /status
 
 request_terminate_timeout = <%= @request_terminate_timeout %>
 
index 82c2957c020a6235e76885380802c75c423169c5..826c1c1f71cd4ea359c0ce8f36040b4cd920d5fe 100644 (file)
@@ -24,8 +24,10 @@ property :port, :kind_of => Integer, :required => [:create]
 property :listen_switch, :kind_of => String, :default => "web.listen-address"
 property :listen_type, :kind_of => String, :default => "address"
 property :user, :kind_of => String, :default => "root"
+property :command, :kind_of => String
 property :options, :kind_of => [String, Array]
 property :environment, :kind_of => Hash, :default => {}
+property :service, :kind_of => String
 
 action :create do
   systemd_service service_name do
@@ -33,7 +35,7 @@ action :create do
     type "simple"
     user new_resource.user
     environment new_resource.environment
-    exec_start "#{executable_path} #{executable_options}"
+    exec_start "#{executable_path} #{new_resource.command} #{executable_options}"
     private_tmp true
     protect_system "strict"
     protect_home true
@@ -75,7 +77,11 @@ end
 
 action_class do
   def service_name
-    "prometheus-#{new_resource.exporter}-exporter"
+    if new_resource.service
+      "prometheus-#{new_resource.service}-exporter"
+    else
+      "prometheus-#{new_resource.exporter}-exporter"
+    end
   end
 
   def executable_path
index 064f686cf9454de1919eb42b76dbbb5c9846bbaa..e75763af10971ef6715f9157a9db731796732c2b 100644 (file)
@@ -34,6 +34,7 @@ mediawiki_site "wiki.openstreetmap.org" do
   directory "/srv/wiki.openstreetmap.org"
 
   fpm_max_children 25
+  fpm_prometheus_port 9253
 
   database_name "wiki"
   database_user "wiki-user"