FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
netdata/python.d/tomcat.chart.py at master · pjz/netdata · GitHub
pjz
/
netdata
Public
forked from
netdata/netdata
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
netdata
/
python.d
/
tomcat.chart.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
111 lines (98 loc) · 3.61 KB
Breadcrumbs
netdata
/
python.d
/
tomcat.chart.py
Copy path
File metadata and controls
111 lines (98 loc) · 3.61 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# -*- coding: utf-8 -*-
# Description: tomcat netdata python.d module
# Author: Pawel Krupa (paulfantom)
# Python version higher than 2.7 is needed to run this module.
from
base
import
UrlService
import
xml
.
etree
.
ElementTree
as
ET
# phone home...
#from xml.parsers.expat import errors
# default module values (can be overridden per job in `config`)
# update_every = 2
priority
=
60000
retries
=
60
# charts order (can be overridden if you want less charts, or different order)
ORDER
=
[
'accesses'
,
'volume'
,
'threads'
,
'jvm'
]
CHARTS
=
{
'accesses'
: {
'options'
: [
None
,
"Requests"
,
"requests/s"
,
"statistics"
,
"tomcat.accesses"
,
"area"
],
'lines'
: [
[
"accesses"
,
None
,
'incremental'
]
]},
'volume'
: {
'options'
: [
None
,
"Volume"
,
"KB/s"
,
"volume"
,
"tomcat.volume"
,
"area"
],
'lines'
: [
[
"volume"
,
None
,
'incremental'
,
1
,
1024
]
]},
'threads'
: {
'options'
: [
None
,
"Threads"
,
"current threads"
,
"statistics"
,
"tomcat.threads"
,
"line"
],
'lines'
: [
[
"current"
,
None
,
"absolute"
],
[
"busy"
,
None
,
"absolute"
]
]},
'jvm'
: {
'options'
: [
None
,
"JVM Free Memory"
,
"MB"
,
"statistics"
,
"tomcat.jvm"
,
"area"
],
'lines'
: [
[
"jvm"
,
None
,
"absolute"
,
1
,
1048576
]
]}
}
class
Service
(
UrlService
):
def
__init__
(
self
,
configuration
=
None
,
name
=
None
):
UrlService
.
__init__
(
self
,
configuration
=
configuration
,
name
=
name
)
if
len
(
self
.
url
)
==
0
:
self
.
url
=
"http://localhost:8080/manager/status?XML=true"
self
.
order
=
ORDER
self
.
definitions
=
CHARTS
self
.
port
=
8080
def
check
(
self
):
if
UrlService
.
check
(
self
):
return
True
# get port from url
self
.
port
=
0
for
i
in
self
.
url
.
split
(
'/'
):
try
:
int
(
i
[
-
1
])
self
.
port
=
i
.
split
(
':'
)[
-
1
]
break
except
:
pass
if
self
.
port
==
0
:
self
.
port
=
80
test
=
self
.
_get_data
()
if
test
is
None
or
len
(
test
)
==
0
:
return
False
else
:
return
True
def
_get_data
(
self
):
"""
Format data received from http request
:return: dict
"""
try
:
raw
=
self
.
_get_raw_data
()
try
:
data
=
ET
.
fromstring
(
raw
)
except
ET
.
ParseError
as
e
:
# if e.code == errors.codes[errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT]:
if
e
.
code
==
9
:
end
=
raw
.
find
(
'</status>'
)
end
+=
9
raw
=
raw
[:
end
]
self
.
debug
(
raw
)
data
=
ET
.
fromstring
(
raw
)
else
:
raise
Exception
(
e
)
memory
=
data
.
find
(
'./jvm/memory'
)
threads
=
data
.
find
(
"./connector[@name='
\"
http-bio-"
+
str
(
self
.
port
)
+
"
\"
']/threadInfo"
)
requests
=
data
.
find
(
"./connector[@name='
\"
http-bio-"
+
str
(
self
.
port
)
+
"
\"
']/requestInfo"
)
return
{
'accesses'
:
requests
.
attrib
[
'requestCount'
],
'volume'
:
requests
.
attrib
[
'bytesSent'
],
'current'
:
threads
.
attrib
[
'currentThreadCount'
],
'busy'
:
threads
.
attrib
[
'currentThreadsBusy'
],
'jvm'
:
memory
.
attrib
[
'free'
]}
except
(
ValueError
,
AttributeError
)
as
e
:
self
.
debug
(
str
(
e
))
return
None
except
SyntaxError
as
e
:
self
.
error
(
"Tomcat module needs python 2.7 at least. Stopping"
)
self
.
debug
(
str
(
e
))
except
Exception
as
e
:
self
.
debug
(
str
(
e
))
Back
|
FazBrowse Home
|
New Git URL