@@ -18,18 +18,37 @@ import (
1818
1919func init () {
2020 pflag .StringP ("fpm" , "f" , "" , "path to php-fpm" )
21+ pflag .StringP ("fpm-config" , "y" , "/etc/php/php-fpm.conf" , "path to php-fpm config file" )
22+
2123 pflag .StringP ("wrapper-socket" , "s" , "/tmp/fpm-wrapper.sock" , "path to socket" )
2224
23- pflag .BoolP ("prometheus" , "p" , false , "enable prometheus statistic" )
24- pflag .String ("prometheus-addr" , ":8080" , "prometheus statistic addr" )
25- pflag .String ("prometheus-path" , "/metrics" , "prometheus statistic path" )
26- pflag .Duration ("fpm-statuses-update-interval" , 10 * time .Second , "fpm statuses update interval" )
27- pflag .String ("fpm-config" , "/etc/php/php-fpm.conf" , "path to php-fpm config file" )
25+ pflag .Bool ("scrape" , false , "Enable prometheus statistic" )
26+ pflag .Duration ("scrape-interval" , 10 * time .Second , "fpm statuses update interval" )
27+
28+ pflag .String ("listen" , ":8080" , "prometheus statistic addr" )
29+ pflag .String ("metrics-path" , "/metrics" , "prometheus statistic path" )
30+
2831 pflag .Parse ()
2932
3033 viper .BindPFlags (pflag .CommandLine )
3134}
3235
36+ func findFpmArgs () []string {
37+ doubleDashIndex := - 1
38+
39+ for i := range os .Args {
40+ if os .Args [i ] == "--" {
41+ doubleDashIndex = i
42+ break
43+ }
44+ }
45+ if doubleDashIndex == - 1 || doubleDashIndex + 1 == len (os .Args ) {
46+ return nil
47+ }
48+
49+ return os .Args [doubleDashIndex + 1 :]
50+ }
51+
3352func main () {
3453 if viper .GetString ("fpm" ) == "" {
3554 fmt .Println ("php-fpm path not set" )
@@ -46,6 +65,7 @@ func main() {
4665 cmd .Env = os .Environ ()
4766 cmd .Env = append (cmd .Env , fmt .Sprintf ("FPM_WRAPPER_SOCK=unix://%s" , viper .GetString ("wrapper-socket" )))
4867 cmd .Args = append (cmd .Args , "--nodaemonize" )
68+ cmd .Args = append (cmd .Args , "--fpm-config" , viper .GetString ("fpm-config" ))
4969 cmd .Args = append (cmd .Args , findFpmArgs ()... )
5070
5171 err := cmd .Start ()
@@ -61,14 +81,20 @@ func main() {
6181 procErrCh <- cmd .Wait ()
6282 }()
6383
64- dataChan := make (chan string , 1 )
6584 errCh := make (chan error , 1 )
85+
86+ dataChan := make (chan string , 1 )
6687 dataListener := NewDataListener (viper .GetString ("wrapper-socket" ), dataChan , errCh )
6788 dataListener .Start ()
6889 defer dataListener .Stop ()
6990
70- if viper .GetBool ("prometheus" ) {
71- go startPrometheus ()
91+ http .Handle (viper .GetString ("metrics-path" ), promhttp .Handler ())
92+ go func () {
93+ errCh <- http .ListenAndServe (viper .GetString ("listen" ), nil )
94+ }()
95+
96+ if viper .GetBool ("scrape" ) {
97+ fpmPrometeus .Register (viper .GetString ("fpm-config" ), viper .GetDuration ("scrape-interval" ))
7298 }
7399
74100 for {
@@ -83,8 +109,8 @@ func main() {
83109 if err == nil {
84110 os .Exit (0 )
85111 }
86- if exiterr , ok := err .(* exec.ExitError ); ok {
87- if status , ok := exiterr .Sys ().(syscall.WaitStatus ); ok {
112+ if exitErr , ok := err .(* exec.ExitError ); ok {
113+ if status , ok := exitErr .Sys ().(syscall.WaitStatus ); ok {
88114 os .Exit (status .ExitStatus ())
89115 }
90116 } else {
@@ -94,28 +120,6 @@ func main() {
94120 }
95121}
96122
97- func startPrometheus () {
98- fpmPrometeus .Register (viper .GetString ("fpm-config" ), viper .GetDuration ("fpm-statuses-update-interval" ))
99- http .Handle (viper .GetString ("prometheus-path" ), promhttp .Handler ())
100- http .ListenAndServe (viper .GetString ("prometheus-addr" ), nil )
101- }
102-
103- func findFpmArgs () []string {
104- doubleDashIndex := - 1
105-
106- for i := range os .Args {
107- if os .Args [i ] == "--" {
108- doubleDashIndex = i
109- break
110- }
111- }
112- if doubleDashIndex == - 1 || doubleDashIndex + 1 == len (os .Args ) {
113- return nil
114- }
115-
116- return os .Args [doubleDashIndex + 1 :]
117- }
118-
119123func handleSignals (cmd * exec.Cmd , signalCh chan os.Signal ) {
120124 for {
121125 err := cmd .Process .Signal (<- signalCh )
0 commit comments