diff options
-rw-r--r-- | README.md | 78 | ||||
-rw-r--r-- | doc/INSTALL | 3 | ||||
-rw-r--r-- | doc/nginx.conf | 41 |
3 files changed, 119 insertions, 3 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..d4f3c52 --- /dev/null +++ b/README.md | |||
@@ -0,0 +1,78 @@ | |||
1 | Collectd Graph Panel (CGP) | ||
2 | ========================== | ||
3 | Collectd Graph Panel (CGP) is a graphical web-based front-end for visualizing | ||
4 | RRD collected by [collectd][collectd], written in the PHP language. | ||
5 | |||
6 | The latest version of CGP can be found on https://github.com/pommi/CGP. When you | ||
7 | have improvements or fixes, do not hesitate to send a pull request! | ||
8 | |||
9 | Requirements | ||
10 | ------------ | ||
11 | CGP has the following hard requirements: | ||
12 | |||
13 | - Web server with PHP 5.0 support. | ||
14 | - `rrdtool` program, expected at `/usr/bin/rrdtool` (can be changed in the | ||
15 | configuration file, `$CONFIG['rrdtool']`). | ||
16 | - `shell_exec` must not be disabled through the [`disable_functions` ini | ||
17 | directive][ini.disable_functions]. It must allow execution of the `rrdtool` | ||
18 | program. | ||
19 | |||
20 | The following software is optional, but nevertheless highly recommended: | ||
21 | |||
22 | - [PHP JSON extension][php-json]: for a finer representation of the data in the | ||
23 | graph. These representations can be found in the `plugins/` directory. | ||
24 | - Web browser with `canvas` support such as IE 9+, Firefox, Chrome, Opera 9+. | ||
25 | Optional unless you use `$CONFIG['graph_type'] = 'canvas'`. | ||
26 | |||
27 | Installation and configuration | ||
28 | ------------------------------ | ||
29 | CGP is designed to run out of the box. If you want to modify some configuration | ||
30 | settings, please create `conf/config.local.php` to overrule the settings from | ||
31 | `conf/config.php`. | ||
32 | |||
33 | In a default configuration, the server will execute `rrdtool` to draw PNG | ||
34 | graphs. These pictures are static and can put quite a burden on the server. For | ||
35 | more flexibility, set `$CONFIG['graph_type'] = 'canvas'`. This will make web | ||
36 | browsers download the RRD files and allows the user to zoom and move though the | ||
37 | history using their pointer device. | ||
38 | |||
39 | See [doc/nginx.conf](doc/nginx.conf) for an example configuration for the nginx | ||
40 | web server. The `.htaccess` file in the top-level directory can serve as a guide | ||
41 | for Apache configuration. | ||
42 | |||
43 | Performance tips | ||
44 | ---------------- | ||
45 | Although the default configuration "just works", you can further improve your | ||
46 | set up to reduce data usage and CPU time: | ||
47 | |||
48 | - Enable gzip compression and caching (for at least RRD data files, SVG | ||
49 | pictures and Javascript files. The canvas graph type downloads each RRD data | ||
50 | file which are quite large (considering their quantity). Savings of 70% - 80% | ||
51 | can be achieved for RRD data files. | ||
52 | - Set `$CONFIG['rrd_url']` to a directory directly accessible by the web server | ||
53 | such that it can provide better cache control than PHP. | ||
54 | - Instead of the default `png` graph type, consider `canvas` to relieve the web | ||
55 | server. This moves the image processing to the client that views the picture. | ||
56 | - Disable the `open_basedir` setting of PHP, or at least put the RRD data dir | ||
57 | in the beginning. When enabled, PHP (at least 5.5.14) scans though every | ||
58 | path component which is quite costly if you have over 100 RRD files and a | ||
59 | deep directory hierarchy. 17 seconds was observed for four path components | ||
60 | (with `.` at the end), this dropped down to 4.8 seconds when prepending the | ||
61 | RRD data directory to the beginning. When disabled, processing took less than | ||
62 | a second. | ||
63 | |||
64 | License | ||
65 | ------- | ||
66 | CGP is released under the terms of GPL version 3. See [doc/LICENSE](doc/LICENSE) | ||
67 | for the full license text. | ||
68 | |||
69 | Acknowledgements | ||
70 | ---------------- | ||
71 | CGP is authored by Pim van den Berg with contributions from many other people. | ||
72 | |||
73 | Canvas support depends on jsrrdgraph by Manuel Luis, | ||
74 | https://github.com/manuelluis/jsrrdgraph | ||
75 | |||
76 | [collectd]: http://collectd.org/ | ||
77 | [ini.disable_functions]: http://php.net/ini.core#ini.disable-functions | ||
78 | [php-json]: http://php.net/json | ||
diff --git a/doc/INSTALL b/doc/INSTALL deleted file mode 100644 index c0da959..0000000 --- a/doc/INSTALL +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | CGP is designed to run out of the box. If you want to modify some | ||
2 | configuration settings, please create conf/config.local.php to overrule | ||
3 | the settings from conf/config.php. | ||
diff --git a/doc/nginx.conf b/doc/nginx.conf new file mode 100644 index 0000000..d2efa46 --- /dev/null +++ b/doc/nginx.conf | |||
@@ -0,0 +1,41 @@ | |||
1 | server { | ||
2 | listen 80; | ||
3 | server_name localhost; | ||
4 | |||
5 | root /srv/http; | ||
6 | index index.php; | ||
7 | |||
8 | # This catches requests other than /CGP/rrd/ and PHP (see below) | ||
9 | location /CGP/ { | ||
10 | gzip on; | ||
11 | gzip_types "application/javascript text/css"; | ||
12 | # The static files do not change often, cache hint 1 month | ||
13 | expires 1M; | ||
14 | } | ||
15 | |||
16 | # Assume that CGP is located at /srv/http/CGP/, directly serve the RRD data | ||
17 | # files for use with the canvas graph type. Add compression to reduce data | ||
18 | # usage by 70% - 80%. | ||
19 | location /CGP/rrd/ { | ||
20 | alias /var/lib/collectd/rrd/; | ||
21 | gzip on; | ||
22 | gzip_types "*"; | ||
23 | # Cache hint: browser can recheck after 10 minutes | ||
24 | expires 10m; | ||
25 | #gzip_comp_level 3; | ||
26 | } | ||
27 | |||
28 | # Process PHP files through PHP-FPM | ||
29 | location ~ \.php$ { | ||
30 | try_files $uri =404; | ||
31 | fastcgi_pass unix:/run/php5-fpm.sock; | ||
32 | fastcgi_index index.php; | ||
33 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
34 | include fastcgi_params; | ||
35 | } | ||
36 | |||
37 | # Disallow access to hidden files and directories (such as .git/) | ||
38 | location ~ /\. { | ||
39 | deny all; | ||
40 | } | ||
41 | } | ||