Commit Graph

71 Commits

Author SHA1 Message Date
Shauren
dd1533b315 Core/Utils: Added additional argument to Tokenizer class to make it behave like strtok - not returning empty tokens in case of multiple consecutive separators in input string 2016-06-04 16:40:57 +02:00
DDuarte
8b26aea95a Implement real time statistic visualization (#16956)
Docs at https://trinitycore.atlassian.net/wiki/display/tc/Monitoring+a+TrinityCore+server

* Common/Graphs: Initial proof of concept

* Move influx db code to its own class

* Reuse the same socket

* Allow to log values of different categories

* Allow to log events

* Pass the timestamp to influxdb

* Send events in batches

* Send data async

* Log server shutdown.
Fix memory leak.

* Allow to enable/disable Stats in the settings and at runtime

* Read interval between each batch send from config

* Add InfluxDB connection info to configs

* Move each event category to its own table

* Log pathfinding queries

* Move categories table initialization to constructor using enum as key to avoid assigning the table name to the wrong enum value

* Log player login/logout events.
Pass the hostname correctly in the HTTP request.

* Fix linux build

* Handle "Connection: close" HTTP header, reconnecting on next scheduled send.
Disable StatsLogger if connection fails, logging the error.

* Add an enum for categories of logged values, it's still possible to pass a string instead of the enum.

* Don't log the whole batchedData when InfluxDB returns an error, it's too long and unreadable on console.

* Allow to call a function at a specified interval in thread-safe World::Update() context to log data like player count.

* Log map tile load/unload

* Core/StatsLogger: Allow logging more value types other than ints

https://docs.influxdata.com/influxdb/v0.10/write_protocols/write_syntax/

* Fix a typo in string escape of StatsLogger

* Yet more fixes to the escaping in FormatInfluxDBValue

* DB/Gameobject: Fix respawn time of few Quest GameObjects

By Tauriella, closes #16701

* DB/Misc: Fix some engrish

By tkrokli closes #16648

* Tools/MMaps: Add format library linking to mmaps_generator

(Very) partial cherry pick of ed75b0649a

* Core/StatsLogger: Simplify code

Convert values and categories arrays to maps initialized in-place
Remove constructor and destructor

* Core/StatsLogger: Add realm name to the event and value tags

* Log amount of processed packet of each session

* Apply recent singleton changes to sStatsLogger too

* Fix influxdb data format if no realm name is present

* Remove unneeded newlines from request body, fixes response 400 from InfluxDB 0.10

* Rename Reporting folder to Metric

* Rename StatsLogger to Metric

* Rename InfluxDB configs to Metric

* Add Grafana dashboards

* Add a random annoying macro

* Move string formatting to Metric::SendBatch(), reducing performance footprint of Metric::LogEvent() and Metric::LogValue()

* Update grafana graphs refresing tags on load and showing now-15m data, refreshing every minute. These settings can be modified in grafana.

* Rename MetricData fields

* Contrib/Grafana: Rename dashboard files

* Contrib/Grafana: Replace hardcoded Windows/Ubuntu realm names by the default, Trinity

* Config/Worldserver: Add missing section to the index

* Contrib/Grafana: Add singlestat panels with current online players, update diff averages (1 min, 5 mins and 15 mins)

http://i.imgur.com/Zi8lfvS.png

* Core/Metric: Replace the enums MetricEventCategory and MetricValueCategory by strings

For the sake of simplicity and less recompile time when adding new metrics, similar to how TC_LOG_* works

* Contrib/Grafana: Display the current number of online players and not its average

Closes #15075
(cherry picked from commit 3ae1016082)

# Conflicts:
#	src/server/game/Server/WorldSession.cpp
#	src/server/game/World/World.cpp
#	src/server/worldserver/Main.cpp
2016-06-04 11:26:57 +01:00
Shauren
a6205e4035 Core/Containers: Warning fixes and RandomResizeList with predicate optimization
(cherry picked from commit 0fbfa8ead0)
2016-05-24 18:52:34 +02:00
Naios
a0dacd90cb Core/Game: Remove some unnecessary export macros
(cherry picked from commit f50c4b71a1)
2016-05-10 19:24:30 +02:00
Naios
be90932eda Core/Common: Move the query callback header to the database project
* Also renames the header to it's correct name QueryCallback

(cherry picked from commit d4d199d765)
2016-05-10 18:20:52 +02:00
Naios
8f05a47793 Core/Utilities: Inherit env vars when starting external processes
(cherry picked from commit 5b15b714ab)
2016-05-01 01:45:10 +02:00
Shauren
406ac4f4b4 Core/Misc: Use steady_clock instead of system_clock for calculating ms timers. This makes update diffs immune to systemwide time changes 2016-04-26 18:10:17 +02:00
joschiwald
803473fb64 Core/Utils: replaced std::random_shuffle with our own implementation using SFMT random generator
(cherry picked from commit 9e371b766c)
2016-04-24 20:19:42 +02:00
Naios
53f44fbffa Core/Common: Fix a std::string -> char* -> std::string conversion
* Thanks jackpoz for noticing

(cherry picked from commit 2698d1ff48)
2016-04-23 18:15:12 +02:00
Naios
51ec8d3b8c Core/Scripting: Use the path of the worldserver executable to search for the scripts dir
* Fixes issues when starting the worldserver not in the bin directory
  or the CMAKE_INSTALL_PREFIX directory using the -c option.

(cherry picked from commit 86b0fcf67a)
2016-04-18 23:03:24 +02:00
Naios
a679829050 Core/Cryptography: Move the SHA1 calculate helper to the SHA1 header
(cherry picked from commit 3271f328de)
2016-04-18 22:11:16 +02:00
Naios
5fa7127927 Core/Proto: Convert the proto project to a standalone shared library
* Fixes issues with dynamic linking on linux
* Closes #16981
2016-04-16 22:07:07 +02:00
Naios
3497b4960b Core/Common: Capsule boost process into helper functions
* For easier usage, the processes output it routed
  correctly to the TC logger line by line now.
* Add support for asynchronous process execution
  and process termination.
2016-04-11 20:07:24 +02:00
Shauren
a82f6aa4cc Core/Misc: Build fix for dynamic linking 2016-04-10 17:58:05 +02:00
Shauren
2a7a2a1b65 Core/Misc: gcc 5.3 nopch build fix
Closes #16878
2016-04-09 12:42:57 +02:00
treeston
cf7436b644 Util/Random: Add randtime(Milliseconds const&, Milliseconds const&) to supersede urandms(uint32,uint32) for scripts being ported to std::chrono.
(cherry picked from commit 224b42c53a)
2016-04-08 22:57:01 +02:00
Shauren
08c27d3205 Core/Misc: MSVC /W4 warning fixes 2016-04-06 18:40:41 +02:00
Shauren
4a3a178d7f Buildsystem: Initial changes to support building with vs clang toolset 2016-04-05 22:43:41 +02:00
Shauren
70412e7e25 Core/Misc: MSVC warning fixes 2016-04-05 00:15:56 +02:00
Carbenium
2e3686b7e7 Core/Util: Add a missing include
(cherry picked from commit 1038df8d5b)
2016-04-02 14:33:25 +02:00
DDuarte
0afcefea27 Core/Config: Fix 3 more missing config warnings
Closes #16861

Thanks tkrokli
2016-03-31 03:31:21 +01:00
DDuarte
9431b94bff Core/Config: Error logging for ptree_bad_data
Ref 6487e2f2d6 (commitcomment-16888976)
2016-03-31 03:19:27 +01:00
DDuarte
06b3bca0d2 Core/Startup: Warn when a config key isn't found in the config files
Example: "Missing name Guild.SaveInterval in config file worldserver.conf, add "Guild.SaveInterval = 15" to this file"
2016-03-27 23:48:17 +01:00
Shauren
a81a204678 Core/Common: Moved MessageBuffer to common 2016-03-26 17:15:20 +01:00
Naios
501fd9b502 Core/Common: Converted the common library to a shared library.
* There is still the possibility to static link against common.
2016-03-24 01:28:58 +01:00
Naios
f4e0945b13 Core/Build: Add the possibility to link libraries dynamically.
* makes it possible to access exported singletons from other shared lib's.
* reduces binary size
2016-03-24 01:28:55 +01:00
Shauren
e3af42e05c Core/Util: Extracted GetPID to separate function 2016-03-21 17:25:34 +01:00
Naios
0db4f018e8 CMake: Use inherited dependencies in common and tools
(cherry picked from commit abda7a910a)
2016-03-19 23:19:52 +01:00
Shauren
680c12a4bf Core/Crypto: Renamed SHA1Randx/WardenKeyGeneration and made it a template class 2016-03-19 23:15:54 +01:00
Naios
37dbbe22eb Dep/CppFormat: Update cppformat to cppformat/cppformat@5174b8c
(cherry picked from commit f52495c66b)
2016-03-16 16:12:04 +01:00
Naios
30517cb1d3 Core/Common: Generalize platform specific includes in common/Platform 2016-03-11 18:25:55 +01:00
Naios
5c91586797 Core/Common: Move singleton instances into compilation units
* Fixes issues when building shared libraries
  (prevents gcc and clang from providing several instance)
2016-03-11 18:22:39 +01:00
MitchesD
ce5def332f Core/Misc: fix build 2016-03-03 19:58:28 +01:00
Shauren
dea7d429ab Core/Debugging: Make abort() less bad on windows by forcing crash log generation 2016-03-03 17:29:48 +01:00
joschiwald
44ad10f884 Core/Logging: fixed default logger (partial reverts 0904858624)
(cherry picked from commit 9beeca79ac)
2016-02-27 18:00:02 +01:00
Shauren
a0b2be6c1d Core/Logging: Force synchronous logging after io_service shutdown - fixes logging on worldserver shutdown 2016-02-23 23:41:18 +01:00
Shauren
8086a39210 Core/PacketIO: Requeue packets handled with STATUS_LOGGEDIN received before player is fully loaded in one step after packet processing loop - reduces used locks from 3 per packet to 1 per packet 2016-02-22 20:02:26 +01:00
Naios
719159e207 Core/Common: Add a generic config helper to access built-in overwriteable paths.
* Adds CMAKE_COMMAND and CMAKE_BINARY_DIR to revision_data.h
* Move the source and mysql exe path handling out of the DBUpdater.
* Make some Config methods const for correctness.
* Remove C & CXX flags from revision_data.h
 (was unused and didn't capture all cxx vars)
* Reorder the link order to prevent `ld` from ignoring the file
* Ref #15671
2016-02-21 15:52:42 +01:00
Shauren
97a79af470 Core/Networking: Rewrite networking threading model
Each network thread has its own io_service - this means that all operations on a given socket except queueing packets run from a single thread, removing the need for locking
Sending packets now writes to a lockfree intermediate queue directly, encryption is applied in network thread if it was required at the time of sending the packet
2016-02-19 19:23:04 +01:00
Carbenium
32e8b6506f Collision/MMap: Fix a memleak reported by valgrind
Tiles which are owned by the mesh should have the DT_TILE_FREE_DATA flag to ensure
deallocation on removal from the mesh.

Log:
==23516== 6,181,976 bytes in 6 blocks are definitely lost in loss record 15 of 15
==23516==    at 0x4C298A0: operator new[](unsigned long) (vg_replace_malloc.c:389)
==23516==    by 0x2052660: dtCustomAlloc(int, dtAllocHint) (Memory.h:11)
==23516==    by 0x29D7FDA: dtAlloc(int, dtAllocHint) (DetourAlloc.cpp:43)
==23516==    by 0x230AA70: MMAP::MMapManager::loadMap(std::string const&, unsigned int, int, int) (MMapManager.cpp:166)
==23516==    by 0x1DD585B: Map::LoadMMap(int, int) (Map.cpp:125)
==23516==    by 0x1DD7266: Map::LoadMapAndVMap(int, int) (Map.cpp:200)
==23516==    by 0x1DD93C6: Map::EnsureGridCreated_i(CoordPair<64u> const&) (Map.cpp:453)
==23516==    by 0x1DD9129: Map::EnsureGridCreated(CoordPair<64u> const&) (Map.cpp:429)
==23516==    by 0x1DED100: Map::GetGrid(float, float) (Map.cpp:2200)
==23516==    by 0x1DE0F4C: Map::GetAreaFlag(float, float, float, bool*) const (Map.cpp:2349)
==23516==    by 0x198521B: Map::GetZoneId(float, float, float) const (Map.h:353)
==23516==    by 0x197CFF0: WorldObject::GetZoneId() const (Object.cpp:1277)

Phase tiles aren't managed by detour so they shouldn't be free'd automatically on removal.
See MMapManager::UnloadPhaseTile
2016-01-30 20:40:54 +01:00
Shauren
d5b0ffbe9b Core/Misc: Added safeguard against generating invalid selection weight data in Trinity::Containers::SelectRandomWeightedContainerElement 2016-01-23 11:34:47 +01:00
Shauren
bc94bacce4 Core/Misc: Build fix for clang & libc++ 2016-01-09 01:38:59 +01:00
DDuarte
ff9c999334 Core/Utilities: Fix build in some versions of Ubuntu / GCC
Closes #16125
2016-01-03 20:39:13 +00:00
Shauren
00c878e73a Core/Misc: Build fix for older gcc 2016-01-02 18:45:01 +01:00
Vincent-Michael
478cc756eb Update copyright note for 2016
Happy new year (Again new year with idiots ...)
2016-01-01 00:34:25 +01:00
Shauren
9ab10d6e68 Core/Misc: VS 2013 build fix - horrible hack. 2015-12-27 01:21:30 +01:00
Shauren
921d893c2a Build fix 2015-12-26 00:33:14 +01:00
Shauren
ae20b2ab56 Core/Utils: Moved rng functions to separate header and added utility functions to select a random element from a container where each element can have different chance of being selected 2015-12-24 19:48:39 +01:00
jackpoz
f6131af02b Merge pull request #15912 from Treeston/3.3.5-urandms
Core/Util: Add urandms(minMS, maxMS) helper
(cherry picked from commit c1b4cd21f3)
2015-12-12 03:26:31 +01:00
Zedron
32a82dc956 Core/MMaps: Fixed mmap loading
Bug introduced in 1d2aafd
2015-11-24 15:31:49 -06:00