Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
60de658
add Component Id
Jul 5, 2020
510c7bb
remove skywalking_python.egg-info in .gitignore
Jul 5, 2020
6b5cd52
update requests component id
Jul 5, 2020
11ec9c1
Merge branch 'master' into master
kezhenxu94 Jul 5, 2020
cab0e73
update PyMsql testCase
Jul 13, 2020
6323e41
add PyMsql plugin
Jul 13, 2020
8f5683d
Merge branch 'master' of https://github.com/alonelaval/skywalking-python
Jul 13, 2020
d82adfa
Merge branch 'master' into master
alonelaval Jul 13, 2020
d378929
update code style
Jul 14, 2020
f23865a
update code style
Jul 14, 2020
8fcc35c
update code style
Jul 14, 2020
9906e28
update code style
Jul 14, 2020
d7940bf
Add pymysql to test requires
kezhenxu94 Jul 15, 2020
1929c7e
Add pymysql plugin doc
kezhenxu94 Jul 15, 2020
b1eda99
add PyMsql Sql parameters
Jul 17, 2020
ac65a02
Merge branch 'master' of https://github.com/alonelaval/skywalking-python
Jul 17, 2020
97b5298
Merge branch 'master' into master
alonelaval Jul 17, 2020
20d2264
add PyMsql Sql parameters
Jul 17, 2020
87f7338
add PyMsql Sql parameters
Jul 17, 2020
e433233
Polish
kezhenxu94 Jul 18, 2020
229d21d
add PyMsql Sql parameters testCase
Jul 18, 2020
14fc755
add PyMsql Sql parameters testCase
Jul 18, 2020
46733d9
Merge branch 'master' into master
kezhenxu94 Jul 18, 2020
eef5722
Add ignore_suffix config
Jul 19, 2020
ca1e560
Merge branch 'master' into master
alonelaval Jul 19, 2020
1da3d0d
Add ignore_suffix config
Jul 19, 2020
5274940
Update skywalking/trace/context/__init__.py
kezhenxu94 Jul 19, 2020
eedd905
Add Flask Http Params
Jul 19, 2020
bd00e20
Merge branch 'master' into flask-params
alonelaval Jul 19, 2020
ce12802
Add Flask Http Params
Jul 19, 2020
ab82ab1
Add Flask Http Params
Jul 19, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions skywalking/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
mysql_sql_parameters_max_length = int(os.getenv('SW_MYSQL_SQL_PARAMETERS_MAX_LENGTH') or '512') # type: int
ignore_suffix = os.getenv('SW_IGNORE_SUFFIX') or '.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,' \
'.mp4,.html,.svg ' # type: str
flask_collect_http_params = True if os.getenv('SW_FLASK_COLLECT_HTTP_PARAMS') and \
os.getenv('SW_FLASK_COLLECT_HTTP_PARAMS') == 'True' else False # type: bool
http_params_length_threshold = int(os.getenv('SW_HTTP_PARAMS_LENGTH_THRESHOLD') or '1024') # type: int


def init(
Expand Down
10 changes: 8 additions & 2 deletions skywalking/plugins/sw_flask/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#
import logging

from skywalking import Layer, Component
from skywalking import Layer, Component, config
from skywalking.trace import tags
from skywalking.trace.carrier import Carrier
from skywalking.trace.context import get_context
Expand All @@ -34,6 +34,9 @@ def install():

_handle_user_exception = Flask.handle_user_exception

def params_tostring(params):
return "\n".join([k + '=[' + ",".join(params.getlist(k)) + ']' for k, _ in params.items()])

def _sw_full_dispatch_request(this: Flask):
import flask
req = flask.request
Expand All @@ -48,7 +51,10 @@ def _sw_full_dispatch_request(this: Flask):
span.component = Component.Flask
span.peer = '%s:%s' % (req.environ["REMOTE_ADDR"], req.environ["REMOTE_PORT"])
span.tag(Tag(key=tags.HttpMethod, val=req.method))
span.tag(Tag(key=tags.HttpUrl, val=req.url))
span.tag(Tag(key=tags.HttpUrl, val=req.url.split("?")[0]))
if config.flask_collect_http_params and req.values:
span.tag(Tag(key=tags.HttpParams,
val=params_tostring(req.values)[0:config.http_params_length_threshold]))
resp = _full_dispatch_request(this)

if resp.status_code >= 400:
Expand Down
1 change: 1 addition & 0 deletions skywalking/trace/tags/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@
DbInstance = 'db.instance'
DbStatement = 'db.statement'
DbSqlParameters = 'db.sql.parameters'
HttpParams = 'http.params'
2 changes: 2 additions & 0 deletions tests/plugin/sw_flask/expected.data.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ segmentItems:
value: GET
- key: url
value: http://0.0.0.0:9090/users
- key: http.params
value: "test=[test1,test2]\ntest2=[test2]"
- key: status.code
value: '200'
startTime: gt 0
Expand Down
1 change: 1 addition & 0 deletions tests/plugin/sw_flask/services/consumer.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
if __name__ == '__main__':
config.service_name = 'consumer'
config.logging_level = 'DEBUG'
config.flask_collect_http_params = True
agent.start()

from flask import Flask, jsonify
Expand Down
2 changes: 1 addition & 1 deletion tests/plugin/sw_flask/test_flask.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def setUpClass(cls):
cls.compose = DockerCompose(filepath=dirname(inspect.getfile(cls)))
cls.compose.start()

cls.compose.wait_for(cls.url(('consumer', '9090'), 'users'))
cls.compose.wait_for(cls.url(('consumer', '9090'), 'users?test=test1&test=test2&test2=test2'))

def test_plugin(self):
time.sleep(3)
Expand Down