nginx.chart.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # -*- coding: utf-8 -*-
  2. # Description: nginx netdata python.d module
  3. # Author: Pawel Krupa (paulfantom)
  4. # SPDX-License-Identifier: GPL-3.0-or-later
  5. from bases.FrameworkServices.UrlService import UrlService
  6. ORDER = [
  7. 'connections',
  8. 'requests',
  9. 'connection_status',
  10. 'connect_rate',
  11. ]
  12. CHARTS = {
  13. 'connections': {
  14. 'options': [None, 'Active Connections', 'connections', 'active connections',
  15. 'nginx.connections', 'line'],
  16. 'lines': [
  17. ['active']
  18. ]
  19. },
  20. 'requests': {
  21. 'options': [None, 'Requests', 'requests/s', 'requests', 'nginx.requests', 'line'],
  22. 'lines': [
  23. ['requests', None, 'incremental']
  24. ]
  25. },
  26. 'connection_status': {
  27. 'options': [None, 'Active Connections by Status', 'connections', 'status',
  28. 'nginx.connection_status', 'line'],
  29. 'lines': [
  30. ['reading'],
  31. ['writing'],
  32. ['waiting', 'idle']
  33. ]
  34. },
  35. 'connect_rate': {
  36. 'options': [None, 'Connections Rate', 'connections/s', 'connections rate',
  37. 'nginx.connect_rate', 'line'],
  38. 'lines': [
  39. ['accepts', 'accepted', 'incremental'],
  40. ['handled', None, 'incremental']
  41. ]
  42. }
  43. }
  44. class Service(UrlService):
  45. def __init__(self, configuration=None, name=None):
  46. UrlService.__init__(self, configuration=configuration, name=name)
  47. self.order = ORDER
  48. self.definitions = CHARTS
  49. self.url = self.configuration.get('url', 'http://localhost/stub_status')
  50. def _get_data(self):
  51. """
  52. Format data received from http request
  53. :return: dict
  54. """
  55. try:
  56. raw = self._get_raw_data().split(" ")
  57. return {'active': int(raw[2]),
  58. 'requests': int(raw[9]),
  59. 'reading': int(raw[11]),
  60. 'writing': int(raw[13]),
  61. 'waiting': int(raw[15]),
  62. 'accepts': int(raw[7]),
  63. 'handled': int(raw[8])}
  64. except (ValueError, AttributeError):
  65. return None