]> arthur.barton.de Git - netdata.git/commitdiff
update phpfpm chart suppport multi urls
authorsafeie <safeie@163.com>
Wed, 20 Apr 2016 10:18:12 +0000 (18:18 +0800)
committersafeie <safeie@163.com>
Wed, 20 Apr 2016 10:18:12 +0000 (18:18 +0800)
charts.d/phpfpm.chart.sh

index eaa20930ca4e26b5ee1786f8fec39f07cc46888c..4c54aa522e1983c03eab87b754b269eb80ae6835 100644 (file)
@@ -7,7 +7,7 @@
 # second, you need add status location in nginx.conf
 # you can see, https://easyengine.io/tutorials/php/fpm-status-page/
 
-phpfpm_url="http://localhost/status"
+declare -A phpfpm_urls=()
 
 # _update_every is a special variable - it holds the number of seconds
 # between the calls of the _update() function
@@ -29,7 +29,8 @@ phpfpm_max_active_processes=0
 phpfpm_max_children_reached=0
 phpfpm_slow_requests=0
 phpfpm_get() {
-       phpfpm_response=($(curl -s "${phpfpm_url}"))
+       url=$1
+       phpfpm_response=($(curl -s "${url}"))
        [ $? -ne 0 -o "${#phpfpm_response[@]}" -eq 0 ] && return 1
 
        if [[ "${phpfpm_response[0]}" != "pool:" \
@@ -86,9 +87,23 @@ phpfpm_get() {
 
 # _check is called once, to find out if this chart should be enabled or not
 phpfpm_check() {
-       phpfpm_get
-       if [ $? -ne 0 ]; then
-               echo >&2 "phpfpm: cannot find status on URL '${phpfpm_url}'. Please set phpfpm_url='http://nginx.server/php_status' in $confd/phpfpm.conf"
+       if [ ${#phpfpm_urls[@]} -eq 0 ]; then
+               phpfpm_urls[local]="http://localhost/status"
+       fi
+       
+       local m
+       for m in "${!phpfpm_urls[@]}"
+       do
+               phpfpm_get "${phpfpm_urls[$m]}"
+               if [ $? -ne 0 ]; then
+                       echo >&2 "phpfpm: cannot find status on URL '${phpfpm_url[$m]}'. Please set phpfpm_urls[$m]='http://localhost/status' in $confd/phpfpm.conf"
+                       unset phpfpm_urls[$m]
+                       continue
+               fi
+       done
+       
+       if [ ${#phpfpm_urls[@]} -eq 0 ]; then
+               echo >&2 "phpfpm: no phpfpm servers found. Please set phpfpm_urls[name]='url' to whatever needed to get status to the phpfpm server, in $confd/phpfpm.conf"
                return 1
        fi
        
@@ -101,20 +116,24 @@ phpfpm_check() {
 
 # _create is called once, to create the charts
 phpfpm_create() {
-       cat <<EOF
-CHART phpfpm.connections '' "PHP-FPM Active Connections" "connections" phpfpm phpfpm.connections line $[phpfpm_priority + 1] $phpfpm_update_every
+       local m
+       for m in "${!phpfpm_urls[@]}"
+       do
+               cat <<EOF
+CHART phpfpm_$m.connections '' "PHP-FPM Active Connections" "connections" phpfpm phpfpm.connections line $[phpfpm_priority + 1] $phpfpm_update_every
 DIMENSION active '' absolute 1 1
 DIMENSION maxActive 'max active' absolute 1 1
 DIMENSION idle '' absolute 1 1
 
-CHART phpfpm.requests '' "PHP-FPM Requests" "requests/s" phpfpm phpfpm.requests line $[phpfpm_priority + 2] $phpfpm_update_every
+CHART phpfpm_$m.requests '' "PHP-FPM Requests" "requests/s" phpfpm phpfpm.requests line $[phpfpm_priority + 2] $phpfpm_update_every
 DIMENSION requests '' incremental 1 1
 
-CHART phpfpm.performance '' "PHP-FPM Performance" "status" phpfpm phpfpm.performance line $[phpfpm_priority + 3] $phpfpm_update_every
+CHART phpfpm_$m.performance '' "PHP-FPM Performance" "status" phpfpm phpfpm.performance line $[phpfpm_priority + 3] $phpfpm_update_every
 DIMENSION reached 'max children reached' absolute 1 1
 DIMENSION slow 'slow requests' absolute 1 1
 EOF
-
+       done
+       
        return 0
 }
 
@@ -127,22 +146,30 @@ phpfpm_update() {
        # for each dimension
        # remember: KEEP IT SIMPLE AND SHORT
 
-       phpfpm_get || return 1
+       local m
+       for m in "${!phpfpm_urls[@]}"
+       do
+               phpfpm_get "${phpfpm_urls[$m]}"
+               if [ $? -ne 0 ]; then
+                       continue
+               fi
        
-       # write the result of the work.
-       cat <<EOF
-BEGIN phpfpm.connections $1
+               # write the result of the work.
+               cat <<EOF
+BEGIN phpfpm_$m.connections $1
 SET active = $[phpfpm_active_processes]
 SET maxActive = $[phpfpm_max_active_processes]
 SET idle = $[phpfpm_idle_processes]
 END
-BEGIN phpfpm.requests $1
+BEGIN phpfpm_$m.requests $1
 SET requests = $[phpfpm_accepted_conn]
 END
-BEGIN phpfpm.performance $1
+BEGIN phpfpm_$m.performance $1
 SET reached = $[phpfpm_max_children_reached]
 SET slow = $[phpfpm_slow_requests]
 END
 EOF
+       done
+       
        return 0
 }