开源软件名称(OpenSource Name): antonioribeiro/tracker开源软件地址(OpenSource Url): https://github.com/antonioribeiro/tracker开源编程语言(OpenSource Language):
PHP
88.7%
开源软件介绍(OpenSource Introduction): Laravel Stats Tracker
Tracker gathers a lot of information from your requests to identify and store:
Sessions
Page Views (hits on routes)
Users (logged users)
Devices (computer, smartphone, tablet...)
Languages (preference, language range)
User Devices (by, yeah, storing a cookie on each device)
Browsers (Chrome, Mozilla Firefox, Safari, Internet Explorer...)
Operating Systems (iOS, Mac OS, Linux, Windows...)
Geo Location Data (Latitute, Longitude, Country and City)
Routes and all its parameters
Events
Referers (url, medium, source, search term...)
Exceptions/Errors
Sql queries and all its bindings
Url queries and all its arguments
Database connections
Index
Why?
Storing user tracking information, on indexed and normalized database tables, wastes less disk space and ease the extract of valuable information about your application and business.
Usage
As soon as you install and enable it, Tracker will start storing all information you tell it to, then you can in your application use the Tracker Facade to access everything. Here are some of the methods and relationships available:
Current Session/Visitor
$ visitor = Tracker ::currentSession ();
Most of those methods return an Eloquent model or collection, so you can use not only its attributes, but also relational data:
var_dump( $ visitor ->client_ip );
var_dump( $ visitor ->device ->is_mobile );
var_dump( $ visitor ->device ->platform );
var_dump( $ visitor ->geoIp ->city );
var_dump( $ visitor ->language ->preference );
Sessions (visits)
$ sessions = Tracker ::sessions (60 * 24 ); // get sessions (visits) from the past day
foreach ($ sessions as $ session )
{
var_dump( $ session ->user ->email );
var_dump( $ session ->device ->kind . ' - ' . $ session ->device ->platform );
var_dump( $ session ->agent ->browser . ' - ' . $ session ->agent ->browser_version );
var_dump( $ session ->geoIp ->country_name );
foreach ($ session ->session ->log as $ log )
{
var_dump( $ log ->path );
}
}
Online Users
Brings all online sessions (logged and unlogged users)
$ users = Tracker ::onlineUsers (); // defaults to 3 minutes
Users
$ users = Tracker ::users (60 * 24 );
User Devices
$ users = Tracker ::userDevices (60 * 24 , $ user ->id );
Events
$ events = Tracker ::events (60 * 24 );
Errors
$ errors = Tracker ::errors (60 * 24 );
PageViews summary
$ pageViews = Tracker ::pageViews (60 * 24 * 30 );
PageViews By Country summary
$ pageViews = Tracker ::pageViewsByCountry (60 * 24 );
Filter range
You can send timestamp ranges to those methods using the Minutes class:
$ range = new Minutes ();
$ range ->setStart (Carbon ::now ()->subDays (2 ));
$ range ->setEnd (Carbon ::now ()->subDays (1 ));
Tracker ::userDevices ($ range );
Routes By Name
Having a route of
Route ::get ('user/{id}' , ['as' => 'user.profile' , 'use' => 'UsersController@profile' ]);
You can use this method to select all hits on that particular route and count them using Laravel:
return Tracker ::logByRouteName ('user.profile' )
->where (function ($ query )
{
$ query
->where ('parameter' , 'id' )
->where ('value' , 1 );
})
->count ();
And if you need count how many unique visitors accessed that route, you can do:
return Tracker ::logByRouteName ('tracker.stats.log' )
->where (function ($ query )
{
$ query
->where ('parameter' , 'uuid' )
->where ('value' , '8b6faf82-00f1-4db9-88ad-32e58cfb4f9d' );
})
->select ('tracker_log.session_id' )
->groupBy ('tracker_log.session_id' )
->distinct ()
->count ('tracker_log.session_id' );
Screenshots
Visits
Charts
Users
Events
Errors
Blade Views
The views above are available in this package, but you need to install the sb-admin
panel on your public folder, please look at the instructions below.
How data is stored
All tables are prefixed by tracker_
, and here's an extract of some of them, showing columns and contents:
sessions
+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+
| id | uuid | user_id | device_id | agent_id | client_ip | referer_id | cookie_id | geoip_id | language_id |
+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+
| 1 | 09465be3-5930-4581-8711-5161f62c4373 | 1 | 1 | 1 | 186.228.127.245 | 2 | 1 | 2 | 3 |
| 2 | 07399969-0a19-47f0-862d-43b06d7cde45 | | 2 | 2 | 66.240.192.138 | | 2 | 2 | 2 |
+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+
devices
+----+----------+-------------+-------------+------------------+-----------+
| id | kind | model | platform | platform_version | is_mobile |
+----+----------+-------------+-------------+------------------+-----------+
| 1 | Computer | unavailable | Windows 8 | | |
| 2 | Tablet | iPad | iOS | 7.1.1 | 1 |
| 3 | Computer | unavailable | Windows XP | | |
| 5 | Computer | unavailable | Other | | |
| 6 | Computer | unavailable | Windows 7 | | |
| 7 | Computer | unavailable | Windows 8.1 | | |
| 8 | Phone | iPhone | iOS | 7.1 | 1 |
+----+----------+-------------+-------------+------------------+-----------+
agents
+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+
| id | name | browser | browser_version |
+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+
| 1 | Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 | Chrome | 35.0.1916 |
| 2 | Mozilla/5.0 (iPad; CPU OS 7_1_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/34.0.1847.18 Mobile/11D201 Safari/9537.53 | Chrome Mobile iOS | 34.0.1847 |
| 3 | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) | IE | 6.0 |
| 4 | Python-urllib/2.6 | Other | |
| 5 | Other | Other | |
| 6 | Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 | Chrome | 34.0.1847 |
| 7 | Mozilla/5.0 (Windows NT 6.3; rv:28.0) Gecko/20100101 Firefox/28.0 | Firefox | 28.0 |
| 8 | Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D169 Safari/9537.53 | Mobile Safari | 7.0 |
+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+
languages
+----+------------+----------------+
| id | preference | language_range |
+----+------------+----------------+
| 1 | en | ru=0.8,es=0.5 |
| 2 | es | en=0.7,ru=0.3 |
| 3 | ru | en=0.5,es=0.5 |
+----+------------+----------------+
domains
+----+--------------------------+
| id | name |
+----+--------------------------+
| 1 | antoniocarlosribeiro.com |
+----+--------------------------+
errors
+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | code | message |
+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 1 | 404 | |
| 2 | 500 | Call to undefined method PragmaRX\Tracker\Tracker::sessionLog() |
| 3 | 500 | Trying to get property of non-object (View: /home/forge/stage.antoniocarlosribeiro.com/app/views/admin/tracker/log.blade.php) |
| 4 | 500 | syntax error, unexpected 'foreach' (T_FOREACH) |
| 5 | 500 | Call to undefined method PragmaRX\Tracker\Tracker::pageViewsByCountry() |
| 6 | 500 | Class PragmaRX\Firewall\Vendor\Laravel\Artisan\Base contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Illuminate\Console\Command::fire) |
| 7 | 405 | |
| 8 | 500 | Trying to get property of non-object |
| 9 | 500 | Missing argument 2 for Illuminate\Database\Eloquent\Model::setAttribute(), called in /home/forge/stage.antoniocarlosribeiro.com/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 2444 and defined |
+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
events
+----+------------------------------------------------+
| id | name |
+----+------------------------------------------------+
| 1 | illuminate.log |
| 2 | router.before |
| 3 | router.matched |
| 4 | auth.attempt |
| 5 | auth.login |
| 6 | composing: admin.tracker.index |
| 7 | creating: admin.tracker._partials.menu |
| 8 | composing: admin.tracker._partials.menu |
| 9 | creating: admin.layout |
| 10 | composing: admin.layout |
| 11 | creating: admin._partials.mainMenu |
| 12 | composing: admin._partials.mainMenu |
| 13 | creating: admin._partials.messages |
| 14 | composing: admin._partials.messages |
| 15 | creating: global._partials.google-analytics |
| 16 | composing: global._partials.google-analytics |
+----+------------------------------------------------+
geoip
+----+----------+-----------+--------------+---------------+---------------------------+--------+----------------+-------------+-----------+----------+------------+----------------+
| id | latitude | longitude | country_code | country_code3 | country_name | region | city | postal_code | area_code | dma_code | metro_code | continent_code |
+----+----------+-----------+--------------+---------------+---------------------------+--------+----------------+-------------+-----------+----------+------------+----------------+
| 1 | 37.4192 | -122.057 | US | USA | United States | CA | Mountain View | 94043 | 650 | 807 | 807 | NA |
| 2 | -10 | -55 | BR | BRA | Brazil | | | | | | | SA |
| 3 | 30.3909 | -86.3161 | US | USA | United States | FL | Miramar Beach | 32550 | 850 | 686 | 686 | NA |
| 4 | 38.65 | -90.5334 | US | USA | United States | MO | Chesterfield | 63017 | 314 | 609 | 609 | NA |
| 5 | 42.7257 | -84.636 | US | USA | United States | MI | Lansing | 48917 | 517 | 551 | 551 | NA |
| 6 | 42.8884 | -78.8761 | US | USA | United States | NY | Buffalo | 14202 | 716 | 514 | 514 | NA |
| 7 | 40.1545 | -75.3809 | US | USA | United States | PA | Norristown | 19403 | 610 | 504 | 504 | NA |
| 8 | 47.4891 | -122.291 | US | USA | United States | WA | Seattle | 98168 | 206 | 819 | 819 | NA |
| 9 | 33.7516 | -84.3915 | US | USA | United States | GA | Atlanta | 30303 | 404 | 524 | 524 | NA |
| 10 | 33.7633 | -117.794 | US | USA | United States | CA | Santa Ana | 92705 | 714
请发表评论