StatsD Client Bundle
This bundle helps you to monitor your application.
It uses statsd-php-client as Client for the etsy/Statsd API.
It Includes
- a Service, a Factory and an Entity callable by the DIC
- a Monolog Handler
- a series of Collectors in order to aggregate your personal data.
Check out the documentation
Articles
- Article: ServerGrove - Interesting Symfony Bundles: StatsDClientBundle
- Article : Install Stats.d / Graphite on a debian server in order to monitor a Symfony2 application (1/2)
- Article : Monitor your Symfony2 application via Stats.d and Graphite (2/2)
- Slide : Building OpenSky with Symfony2 by Jonathan H. Wage
Abstract
Monitoring what is happening in your production Symfony2 application, with StatsD and Graphite.
Within this bundle you could use ready-to-go monitor for
Monolog
Amount of visitor
Logged vs Anonymous user
SQL: Verbs used (amount of select/set/update/upgrade/delete) (this feature is not suggested, please use a server monitor tool eg. nagios, munin)
Amount of PHP ram used
You could create your own using the Factory and the Service.
On dev env the data are not pushed to the socket but to syslog.
If debug mode is enabled no packet are sent over the udp socket, and you could see what's going on reading the syslog with tail -f /var/log/syslog
Mar 19 00:48:11 liuggio nginx: statsd-open
Mar 19 00:48:11 liuggio nginx: statsd-write "tvision.visitor:1|tvision.memory:43520|tvision.user.anonymous:1|tvision.query.start:1|tvision.query.insert:1|c" 118 Bytes
Mar 19 00:48:11 liuggio nginx: statsd-close
Note: by default in dev environment debug is true.
One UDP packet to rule them all
With a proper config file, your StatsD server will receive in a single upd packet:
prefix.visitor:1|c # Increment visitor
prefix.user.anonymous:1|c # The visitor is not logged
prefix.log.app.error.user_action:1 # Stats by monolog with $this->get('logger')->error('user_action')
prefix.memory:4480|g # The php memory peak was 4480 MB
prefix.exception.exception.500:1|c # Exception occurred, the Exception code was 500
prefix.query.insert:1|c # Query Insert
prefix.query.select:1|c # Query Select
Short Theory and links
Vagrant StatSD and Graphite
see this blog post to install Easy install statsd graphite with vagrant.
StatsD
StatsD is a simple daemon for easy stats aggregation
Graphite
Graphite is a Scalable Realtime Graphing
The Client send data with UDP (faster)
https://www.google.com/search?q=tcp+vs+udp
Contribution
Active contribution and patches are very welcome.
To keep things in shape we have quite a bunch of unit tests. If you're submitting pull requests please
make sure that they are still passing and if you add functionality please
take a look at the coverage as well it should be pretty high :)
- First fork or clone the repository
git clone git://github.com/liuggio/StatsDClientBundle.git
cd StatsDClientBundle
- Install vendors:
php composer.phar install --dev
- This will give you proper results:
phpunit --coverage-html reports
Contributors
https://github.com/liuggio/StatsDClientBundle/graphs/contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
liuggio_stats_d_client:
enable_collector: false
connection:
class: Liuggio\StatsdClient\Sender\SocketSender
debug_class: Liuggio\StatsdClient\Sender\SysLogSender
debug: ~
port: 8125
host: localhost
reduce_packet: true
protocol: udp
fail_silently: true
collectors:
# Prototype
name: []
monolog:
enable: false
prefix: log
level: warning
formatter:
class: Liuggio\StatsdClient\Monolog\Formatter\StatsDFormatter
format: ~
context_logging: false
extra_logging: false
words: 2
-
fixed orig dirty files
By liuggio, 27 days ago
-
merged
By liuggio, 27 days ago
-
removed monolog classes, added formatter dependency
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago
-
added license
By liuggio, 27 days ago

