From 584bc647ce9587d38d37290055d8a6990294ef64 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Fri, 11 Oct 2019 11:03:28 +0800 Subject: [PATCH 01/45] [10-11] support grpc --- PHP/pinpoint_php_ext/pinpoint_php.cpp | 2 +- collector-agent/Proto/grpc/Annotation.proto | 66 + collector-agent/Proto/grpc/Annotation_pb2.py | 536 +++++++ .../Proto/grpc/Annotation_pb2_grpc.py | 3 + collector-agent/Proto/grpc/Cmd.proto | 106 ++ collector-agent/Proto/grpc/Cmd_pb2.py | 800 ++++++++++ collector-agent/Proto/grpc/Cmd_pb2_grpc.py | 3 + collector-agent/Proto/grpc/Service.proto | 57 + collector-agent/Proto/grpc/Service_pb2.py | 221 +++ .../Proto/grpc/Service_pb2_grpc.py | 336 +++++ collector-agent/Proto/grpc/Span.proto | 153 ++ collector-agent/Proto/grpc/Span_pb2.py | 947 ++++++++++++ collector-agent/Proto/grpc/Span_pb2_grpc.py | 3 + collector-agent/Proto/grpc/Stat.proto | 160 ++ collector-agent/Proto/grpc/Stat_pb2.py | 1300 +++++++++++++++++ collector-agent/Proto/grpc/Stat_pb2_grpc.py | 3 + collector-agent/Proto/grpc/ThreadDump.proto | 75 + collector-agent/Proto/grpc/ThreadDump_pb2.py | 502 +++++++ .../Proto/grpc/ThreadDump_pb2_grpc.py | 3 + collector-agent/Test/test_grpc.py | 38 + collector-agent/Test/test_packet.py | 2 +- collector-agent/requirements.txt | 3 + 22 files changed, 5317 insertions(+), 2 deletions(-) create mode 100644 collector-agent/Proto/grpc/Annotation.proto create mode 100644 collector-agent/Proto/grpc/Annotation_pb2.py create mode 100644 collector-agent/Proto/grpc/Annotation_pb2_grpc.py create mode 100644 collector-agent/Proto/grpc/Cmd.proto create mode 100644 collector-agent/Proto/grpc/Cmd_pb2.py create mode 100644 collector-agent/Proto/grpc/Cmd_pb2_grpc.py create mode 100644 collector-agent/Proto/grpc/Service.proto create mode 100644 collector-agent/Proto/grpc/Service_pb2.py create mode 100644 collector-agent/Proto/grpc/Service_pb2_grpc.py create mode 100644 collector-agent/Proto/grpc/Span.proto create mode 100644 collector-agent/Proto/grpc/Span_pb2.py create mode 100644 collector-agent/Proto/grpc/Span_pb2_grpc.py create mode 100644 collector-agent/Proto/grpc/Stat.proto create mode 100644 collector-agent/Proto/grpc/Stat_pb2.py create mode 100644 collector-agent/Proto/grpc/Stat_pb2_grpc.py create mode 100644 collector-agent/Proto/grpc/ThreadDump.proto create mode 100644 collector-agent/Proto/grpc/ThreadDump_pb2.py create mode 100644 collector-agent/Proto/grpc/ThreadDump_pb2_grpc.py create mode 100644 collector-agent/Test/test_grpc.py diff --git a/PHP/pinpoint_php_ext/pinpoint_php.cpp b/PHP/pinpoint_php_ext/pinpoint_php.cpp index 4e8e14c09..28781dd0e 100644 --- a/PHP/pinpoint_php_ext/pinpoint_php.cpp +++ b/PHP/pinpoint_php_ext/pinpoint_php.cpp @@ -533,7 +533,7 @@ PHP_RINIT_FUNCTION(pinpoint_php) { #if defined(COMPILE_DL_PINPIOINT_PHP) && defined(ZTS) - ZEND_TSRMLS_CACHE_UPDATE(); + ZEND_TSRMLS_CACHE_UPDATE();2 #endif if(PPG(root) == NULL){ diff --git a/collector-agent/Proto/grpc/Annotation.proto b/collector-agent/Proto/grpc/Annotation.proto new file mode 100644 index 000000000..55167c6da --- /dev/null +++ b/collector-agent/Proto/grpc/Annotation.proto @@ -0,0 +1,66 @@ +syntax = "proto3"; + +import "google/protobuf/wrappers.proto"; + + +option java_multiple_files = true; +option java_package = "com.navercorp.pinpoint.grpc.trace"; +option java_outer_classname = "AnnotationProto"; +//option objc_class_prefix = "PIN"; + +message PIntStringValue { + int32 intValue = 1; + google.protobuf.StringValue stringValue = 2; +} + +message PIntStringStringValue { + int32 intValue = 1; + google.protobuf.StringValue stringValue1 = 2; + google.protobuf.StringValue stringValue2 = 3; +} + +message PLongIntIntByteByteStringValue { + int64 longValue = 1; + int32 intValue1 = 2; + int32 intValue2 = 3; + sint32 byteValue1 = 4; + sint32 byteValue2 = 5; + google.protobuf.StringValue stringValue = 6; +} + +message PIntBooleanIntBooleanValue { + int32 intValue1 = 1; + bool boolValue1 = 2; + int32 intValue2 = 3; + bool boolValue2 = 4; +} + +message PStringStringValue { + google.protobuf.StringValue stringValue1 = 1; + google.protobuf.StringValue stringValue2 = 2; +} + +message PAnnotationValue { + oneof field { + string stringValue = 1; + bool boolValue = 2; + int32 intValue = 3; + int64 longValue = 4; + // for compatibility + sint32 shortValue = 5; + double doubleValue = 6; + bytes binaryValue = 7; + // for compatibility + sint32 byteValue = 8; + PIntStringValue intStringValue = 9; + PStringStringValue stringStringValue = 10; + PIntStringStringValue intStringStringValue = 11; + PLongIntIntByteByteStringValue longIntIntByteByteStringValue = 12; + PIntBooleanIntBooleanValue intBooleanIntBooleanValue = 13; + } +} + +message PAnnotation { + int32 key = 1; + PAnnotationValue value = 2; +} \ No newline at end of file diff --git a/collector-agent/Proto/grpc/Annotation_pb2.py b/collector-agent/Proto/grpc/Annotation_pb2.py new file mode 100644 index 000000000..8f8f34c34 --- /dev/null +++ b/collector-agent/Proto/grpc/Annotation_pb2.py @@ -0,0 +1,536 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: Annotation.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='Annotation.proto', + package='', + syntax='proto3', + serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\017AnnotationProtoP\001'), + serialized_pb=_b('\n\x10\x41nnotation.proto\x1a\x1egoogle/protobuf/wrappers.proto\"V\n\x0fPIntStringValue\x12\x10\n\x08intValue\x18\x01 \x01(\x05\x12\x31\n\x0bstringValue\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\x91\x01\n\x15PIntStringStringValue\x12\x10\n\x08intValue\x18\x01 \x01(\x05\x12\x32\n\x0cstringValue1\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12\x32\n\x0cstringValue2\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xb4\x01\n\x1ePLongIntIntByteByteStringValue\x12\x11\n\tlongValue\x18\x01 \x01(\x03\x12\x11\n\tintValue1\x18\x02 \x01(\x05\x12\x11\n\tintValue2\x18\x03 \x01(\x05\x12\x12\n\nbyteValue1\x18\x04 \x01(\x11\x12\x12\n\nbyteValue2\x18\x05 \x01(\x11\x12\x31\n\x0bstringValue\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"j\n\x1aPIntBooleanIntBooleanValue\x12\x11\n\tintValue1\x18\x01 \x01(\x05\x12\x12\n\nboolValue1\x18\x02 \x01(\x08\x12\x11\n\tintValue2\x18\x03 \x01(\x05\x12\x12\n\nboolValue2\x18\x04 \x01(\x08\"|\n\x12PStringStringValue\x12\x32\n\x0cstringValue1\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12\x32\n\x0cstringValue2\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xeb\x03\n\x10PAnnotationValue\x12\x15\n\x0bstringValue\x18\x01 \x01(\tH\x00\x12\x13\n\tboolValue\x18\x02 \x01(\x08H\x00\x12\x12\n\x08intValue\x18\x03 \x01(\x05H\x00\x12\x13\n\tlongValue\x18\x04 \x01(\x03H\x00\x12\x14\n\nshortValue\x18\x05 \x01(\x11H\x00\x12\x15\n\x0b\x64oubleValue\x18\x06 \x01(\x01H\x00\x12\x15\n\x0b\x62inaryValue\x18\x07 \x01(\x0cH\x00\x12\x13\n\tbyteValue\x18\x08 \x01(\x11H\x00\x12*\n\x0eintStringValue\x18\t \x01(\x0b\x32\x10.PIntStringValueH\x00\x12\x30\n\x11stringStringValue\x18\n \x01(\x0b\x32\x13.PStringStringValueH\x00\x12\x36\n\x14intStringStringValue\x18\x0b \x01(\x0b\x32\x16.PIntStringStringValueH\x00\x12H\n\x1dlongIntIntByteByteStringValue\x18\x0c \x01(\x0b\x32\x1f.PLongIntIntByteByteStringValueH\x00\x12@\n\x19intBooleanIntBooleanValue\x18\r \x01(\x0b\x32\x1b.PIntBooleanIntBooleanValueH\x00\x42\x07\n\x05\x66ield\"<\n\x0bPAnnotation\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12 \n\x05value\x18\x02 \x01(\x0b\x32\x11.PAnnotationValueB6\n!com.navercorp.pinpoint.grpc.traceB\x0f\x41nnotationProtoP\x01\x62\x06proto3') + , + dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) + + + + +_PINTSTRINGVALUE = _descriptor.Descriptor( + name='PIntStringValue', + full_name='PIntStringValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='intValue', full_name='PIntStringValue.intValue', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringValue', full_name='PIntStringValue.stringValue', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=52, + serialized_end=138, +) + + +_PINTSTRINGSTRINGVALUE = _descriptor.Descriptor( + name='PIntStringStringValue', + full_name='PIntStringStringValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='intValue', full_name='PIntStringStringValue.intValue', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringValue1', full_name='PIntStringStringValue.stringValue1', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringValue2', full_name='PIntStringStringValue.stringValue2', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=141, + serialized_end=286, +) + + +_PLONGINTINTBYTEBYTESTRINGVALUE = _descriptor.Descriptor( + name='PLongIntIntByteByteStringValue', + full_name='PLongIntIntByteByteStringValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='longValue', full_name='PLongIntIntByteByteStringValue.longValue', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='intValue1', full_name='PLongIntIntByteByteStringValue.intValue1', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='intValue2', full_name='PLongIntIntByteByteStringValue.intValue2', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='byteValue1', full_name='PLongIntIntByteByteStringValue.byteValue1', index=3, + number=4, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='byteValue2', full_name='PLongIntIntByteByteStringValue.byteValue2', index=4, + number=5, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringValue', full_name='PLongIntIntByteByteStringValue.stringValue', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=289, + serialized_end=469, +) + + +_PINTBOOLEANINTBOOLEANVALUE = _descriptor.Descriptor( + name='PIntBooleanIntBooleanValue', + full_name='PIntBooleanIntBooleanValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='intValue1', full_name='PIntBooleanIntBooleanValue.intValue1', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='boolValue1', full_name='PIntBooleanIntBooleanValue.boolValue1', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='intValue2', full_name='PIntBooleanIntBooleanValue.intValue2', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='boolValue2', full_name='PIntBooleanIntBooleanValue.boolValue2', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=471, + serialized_end=577, +) + + +_PSTRINGSTRINGVALUE = _descriptor.Descriptor( + name='PStringStringValue', + full_name='PStringStringValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='stringValue1', full_name='PStringStringValue.stringValue1', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringValue2', full_name='PStringStringValue.stringValue2', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=579, + serialized_end=703, +) + + +_PANNOTATIONVALUE = _descriptor.Descriptor( + name='PAnnotationValue', + full_name='PAnnotationValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='stringValue', full_name='PAnnotationValue.stringValue', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='boolValue', full_name='PAnnotationValue.boolValue', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='intValue', full_name='PAnnotationValue.intValue', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='longValue', full_name='PAnnotationValue.longValue', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='shortValue', full_name='PAnnotationValue.shortValue', index=4, + number=5, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='doubleValue', full_name='PAnnotationValue.doubleValue', index=5, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='binaryValue', full_name='PAnnotationValue.binaryValue', index=6, + number=7, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='byteValue', full_name='PAnnotationValue.byteValue', index=7, + number=8, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='intStringValue', full_name='PAnnotationValue.intStringValue', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringStringValue', full_name='PAnnotationValue.stringStringValue', index=9, + number=10, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='intStringStringValue', full_name='PAnnotationValue.intStringStringValue', index=10, + number=11, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='longIntIntByteByteStringValue', full_name='PAnnotationValue.longIntIntByteByteStringValue', index=11, + number=12, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='intBooleanIntBooleanValue', full_name='PAnnotationValue.intBooleanIntBooleanValue', index=12, + number=13, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='field', full_name='PAnnotationValue.field', + index=0, containing_type=None, fields=[]), + ], + serialized_start=706, + serialized_end=1197, +) + + +_PANNOTATION = _descriptor.Descriptor( + name='PAnnotation', + full_name='PAnnotation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='PAnnotation.key', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='value', full_name='PAnnotation.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1199, + serialized_end=1259, +) + +_PINTSTRINGVALUE.fields_by_name['stringValue'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE +_PINTSTRINGSTRINGVALUE.fields_by_name['stringValue1'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE +_PINTSTRINGSTRINGVALUE.fields_by_name['stringValue2'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE +_PLONGINTINTBYTEBYTESTRINGVALUE.fields_by_name['stringValue'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE +_PSTRINGSTRINGVALUE.fields_by_name['stringValue1'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE +_PSTRINGSTRINGVALUE.fields_by_name['stringValue2'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE +_PANNOTATIONVALUE.fields_by_name['intStringValue'].message_type = _PINTSTRINGVALUE +_PANNOTATIONVALUE.fields_by_name['stringStringValue'].message_type = _PSTRINGSTRINGVALUE +_PANNOTATIONVALUE.fields_by_name['intStringStringValue'].message_type = _PINTSTRINGSTRINGVALUE +_PANNOTATIONVALUE.fields_by_name['longIntIntByteByteStringValue'].message_type = _PLONGINTINTBYTEBYTESTRINGVALUE +_PANNOTATIONVALUE.fields_by_name['intBooleanIntBooleanValue'].message_type = _PINTBOOLEANINTBOOLEANVALUE +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['stringValue']) +_PANNOTATIONVALUE.fields_by_name['stringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['boolValue']) +_PANNOTATIONVALUE.fields_by_name['boolValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['intValue']) +_PANNOTATIONVALUE.fields_by_name['intValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['longValue']) +_PANNOTATIONVALUE.fields_by_name['longValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['shortValue']) +_PANNOTATIONVALUE.fields_by_name['shortValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['doubleValue']) +_PANNOTATIONVALUE.fields_by_name['doubleValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['binaryValue']) +_PANNOTATIONVALUE.fields_by_name['binaryValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['byteValue']) +_PANNOTATIONVALUE.fields_by_name['byteValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['intStringValue']) +_PANNOTATIONVALUE.fields_by_name['intStringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['stringStringValue']) +_PANNOTATIONVALUE.fields_by_name['stringStringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['intStringStringValue']) +_PANNOTATIONVALUE.fields_by_name['intStringStringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['longIntIntByteByteStringValue']) +_PANNOTATIONVALUE.fields_by_name['longIntIntByteByteStringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( + _PANNOTATIONVALUE.fields_by_name['intBooleanIntBooleanValue']) +_PANNOTATIONVALUE.fields_by_name['intBooleanIntBooleanValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] +_PANNOTATION.fields_by_name['value'].message_type = _PANNOTATIONVALUE +DESCRIPTOR.message_types_by_name['PIntStringValue'] = _PINTSTRINGVALUE +DESCRIPTOR.message_types_by_name['PIntStringStringValue'] = _PINTSTRINGSTRINGVALUE +DESCRIPTOR.message_types_by_name['PLongIntIntByteByteStringValue'] = _PLONGINTINTBYTEBYTESTRINGVALUE +DESCRIPTOR.message_types_by_name['PIntBooleanIntBooleanValue'] = _PINTBOOLEANINTBOOLEANVALUE +DESCRIPTOR.message_types_by_name['PStringStringValue'] = _PSTRINGSTRINGVALUE +DESCRIPTOR.message_types_by_name['PAnnotationValue'] = _PANNOTATIONVALUE +DESCRIPTOR.message_types_by_name['PAnnotation'] = _PANNOTATION +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +PIntStringValue = _reflection.GeneratedProtocolMessageType('PIntStringValue', (_message.Message,), { + 'DESCRIPTOR' : _PINTSTRINGVALUE, + '__module__' : 'Annotation_pb2' + # @@protoc_insertion_point(class_scope:PIntStringValue) + }) +_sym_db.RegisterMessage(PIntStringValue) + +PIntStringStringValue = _reflection.GeneratedProtocolMessageType('PIntStringStringValue', (_message.Message,), { + 'DESCRIPTOR' : _PINTSTRINGSTRINGVALUE, + '__module__' : 'Annotation_pb2' + # @@protoc_insertion_point(class_scope:PIntStringStringValue) + }) +_sym_db.RegisterMessage(PIntStringStringValue) + +PLongIntIntByteByteStringValue = _reflection.GeneratedProtocolMessageType('PLongIntIntByteByteStringValue', (_message.Message,), { + 'DESCRIPTOR' : _PLONGINTINTBYTEBYTESTRINGVALUE, + '__module__' : 'Annotation_pb2' + # @@protoc_insertion_point(class_scope:PLongIntIntByteByteStringValue) + }) +_sym_db.RegisterMessage(PLongIntIntByteByteStringValue) + +PIntBooleanIntBooleanValue = _reflection.GeneratedProtocolMessageType('PIntBooleanIntBooleanValue', (_message.Message,), { + 'DESCRIPTOR' : _PINTBOOLEANINTBOOLEANVALUE, + '__module__' : 'Annotation_pb2' + # @@protoc_insertion_point(class_scope:PIntBooleanIntBooleanValue) + }) +_sym_db.RegisterMessage(PIntBooleanIntBooleanValue) + +PStringStringValue = _reflection.GeneratedProtocolMessageType('PStringStringValue', (_message.Message,), { + 'DESCRIPTOR' : _PSTRINGSTRINGVALUE, + '__module__' : 'Annotation_pb2' + # @@protoc_insertion_point(class_scope:PStringStringValue) + }) +_sym_db.RegisterMessage(PStringStringValue) + +PAnnotationValue = _reflection.GeneratedProtocolMessageType('PAnnotationValue', (_message.Message,), { + 'DESCRIPTOR' : _PANNOTATIONVALUE, + '__module__' : 'Annotation_pb2' + # @@protoc_insertion_point(class_scope:PAnnotationValue) + }) +_sym_db.RegisterMessage(PAnnotationValue) + +PAnnotation = _reflection.GeneratedProtocolMessageType('PAnnotation', (_message.Message,), { + 'DESCRIPTOR' : _PANNOTATION, + '__module__' : 'Annotation_pb2' + # @@protoc_insertion_point(class_scope:PAnnotation) + }) +_sym_db.RegisterMessage(PAnnotation) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Annotation_pb2_grpc.py b/collector-agent/Proto/grpc/Annotation_pb2_grpc.py new file mode 100644 index 000000000..a89435267 --- /dev/null +++ b/collector-agent/Proto/grpc/Annotation_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + diff --git a/collector-agent/Proto/grpc/Cmd.proto b/collector-agent/Proto/grpc/Cmd.proto new file mode 100644 index 000000000..38ad44ac5 --- /dev/null +++ b/collector-agent/Proto/grpc/Cmd.proto @@ -0,0 +1,106 @@ +syntax = "proto3"; + +import "google/protobuf/wrappers.proto"; +import "ThreadDump.proto"; + +option java_multiple_files = true; +option java_package = "com.navercorp.pinpoint.grpc.trace"; +option java_outer_classname = "CmdProto"; +//option objc_class_prefix = "PIN"; + +package v1; + +enum PCommandType { + NONE = 0; + + PING = 100; + PONG = 101; + + ECHO = 710; + + ACTIVE_THREAD_COUNT = 730; + ACTIVE_THREAD_DUMP = 740; + ACTIVE_THREAD_LIGHT_DUMP = 750; +} + +message PCmdMessage { + oneof message { + PCmdServiceHandshake handshakeMessage = 1; + PCmdResponse failMessage = 2; + } +} + +message PCmdServiceHandshake { + // initial message + repeated int32 supportCommandServiceKey = 1; +} + +message PCmdResponse { + int32 responseId = 1; + int32 status = 2; + google.protobuf.StringValue message = 3; +} + +message PCmdStreamResponse { + int32 responseId = 1; + int32 sequenceId = 2; + google.protobuf.StringValue message = 3; +} + +message PCmdRequest { + int32 requestId = 1; + + oneof command { + PCmdEcho commandEcho = 710; + PCmdActiveThreadCount commandActiveThreadCount = 730; + PCmdActiveThreadDump commandActiveThreadDump = 740; + PCmdActiveThreadLightDump commandActiveThreadLightDump = 750; + } +} + +message PCmdEcho { + string message = 1; +} + +message PCmdEchoResponse { + PCmdResponse commonResponse = 1; + string message = 2; +} + +message PCmdActiveThreadDump { + int32 limit = 1; + repeated string threadName = 2; + repeated int64 localTraceId = 3; +} + +message PCmdActiveThreadDumpRes { + PCmdResponse commonResponse = 1; + repeated PActiveThreadDump threadDump = 2; + string type = 3; + string subType = 4; + string version = 5; +} + +message PCmdActiveThreadLightDump { + int32 limit = 1; + repeated string threadName = 2; + repeated int64 localTraceId = 3; +} + +message PCmdActiveThreadLightDumpRes { + PCmdResponse commonResponse = 1; + repeated PActiveThreadLightDump threadDump = 2; + string type = 3; + string subType = 4; + string version = 5; +} + +message PCmdActiveThreadCount { +} + +message PCmdActiveThreadCountRes { + PCmdStreamResponse commonStreamResponse = 1; + int32 histogramSchemaType = 2; + repeated int32 activeThreadCount = 3; + int64 timeStamp = 4; +} \ No newline at end of file diff --git a/collector-agent/Proto/grpc/Cmd_pb2.py b/collector-agent/Proto/grpc/Cmd_pb2.py new file mode 100644 index 000000000..fa46ca9f9 --- /dev/null +++ b/collector-agent/Proto/grpc/Cmd_pb2.py @@ -0,0 +1,800 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: Cmd.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 +import ThreadDump_pb2 as ThreadDump__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='Cmd.proto', + package='v1', + syntax='proto3', + serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\010CmdProtoP\001'), + serialized_pb=_b('\n\tCmd.proto\x12\x02v1\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x10ThreadDump.proto\"w\n\x0bPCmdMessage\x12\x34\n\x10handshakeMessage\x18\x01 \x01(\x0b\x32\x18.v1.PCmdServiceHandshakeH\x00\x12\'\n\x0b\x66\x61ilMessage\x18\x02 \x01(\x0b\x32\x10.v1.PCmdResponseH\x00\x42\t\n\x07message\"8\n\x14PCmdServiceHandshake\x12 \n\x18supportCommandServiceKey\x18\x01 \x03(\x05\"a\n\x0cPCmdResponse\x12\x12\n\nresponseId\x18\x01 \x01(\x05\x12\x0e\n\x06status\x18\x02 \x01(\x05\x12-\n\x07message\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"k\n\x12PCmdStreamResponse\x12\x12\n\nresponseId\x18\x01 \x01(\x05\x12\x12\n\nsequenceId\x18\x02 \x01(\x05\x12-\n\x07message\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\x97\x02\n\x0bPCmdRequest\x12\x11\n\trequestId\x18\x01 \x01(\x05\x12$\n\x0b\x63ommandEcho\x18\xc6\x05 \x01(\x0b\x32\x0c.v1.PCmdEchoH\x00\x12>\n\x18\x63ommandActiveThreadCount\x18\xda\x05 \x01(\x0b\x32\x19.v1.PCmdActiveThreadCountH\x00\x12<\n\x17\x63ommandActiveThreadDump\x18\xe4\x05 \x01(\x0b\x32\x18.v1.PCmdActiveThreadDumpH\x00\x12\x46\n\x1c\x63ommandActiveThreadLightDump\x18\xee\x05 \x01(\x0b\x32\x1d.v1.PCmdActiveThreadLightDumpH\x00\x42\t\n\x07\x63ommand\"\x1b\n\x08PCmdEcho\x12\x0f\n\x07message\x18\x01 \x01(\t\"M\n\x10PCmdEchoResponse\x12(\n\x0e\x63ommonResponse\x18\x01 \x01(\x0b\x32\x10.v1.PCmdResponse\x12\x0f\n\x07message\x18\x02 \x01(\t\"O\n\x14PCmdActiveThreadDump\x12\r\n\x05limit\x18\x01 \x01(\x05\x12\x12\n\nthreadName\x18\x02 \x03(\t\x12\x14\n\x0clocalTraceId\x18\x03 \x03(\x03\"\x9e\x01\n\x17PCmdActiveThreadDumpRes\x12(\n\x0e\x63ommonResponse\x18\x01 \x01(\x0b\x32\x10.v1.PCmdResponse\x12)\n\nthreadDump\x18\x02 \x03(\x0b\x32\x15.v1.PActiveThreadDump\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0f\n\x07subType\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\"T\n\x19PCmdActiveThreadLightDump\x12\r\n\x05limit\x18\x01 \x01(\x05\x12\x12\n\nthreadName\x18\x02 \x03(\t\x12\x14\n\x0clocalTraceId\x18\x03 \x03(\x03\"\xa8\x01\n\x1cPCmdActiveThreadLightDumpRes\x12(\n\x0e\x63ommonResponse\x18\x01 \x01(\x0b\x32\x10.v1.PCmdResponse\x12.\n\nthreadDump\x18\x02 \x03(\x0b\x32\x1a.v1.PActiveThreadLightDump\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0f\n\x07subType\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\"\x17\n\x15PCmdActiveThreadCount\"\x9b\x01\n\x18PCmdActiveThreadCountRes\x12\x34\n\x14\x63ommonStreamResponse\x18\x01 \x01(\x0b\x32\x16.v1.PCmdStreamResponse\x12\x1b\n\x13histogramSchemaType\x18\x02 \x01(\x05\x12\x19\n\x11\x61\x63tiveThreadCount\x18\x03 \x03(\x05\x12\x11\n\ttimeStamp\x18\x04 \x01(\x03*\x89\x01\n\x0cPCommandType\x12\x08\n\x04NONE\x10\x00\x12\x08\n\x04PING\x10\x64\x12\x08\n\x04PONG\x10\x65\x12\t\n\x04\x45\x43HO\x10\xc6\x05\x12\x18\n\x13\x41\x43TIVE_THREAD_COUNT\x10\xda\x05\x12\x17\n\x12\x41\x43TIVE_THREAD_DUMP\x10\xe4\x05\x12\x1d\n\x18\x41\x43TIVE_THREAD_LIGHT_DUMP\x10\xee\x05\x42/\n!com.navercorp.pinpoint.grpc.traceB\x08\x43mdProtoP\x01\x62\x06proto3') + , + dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,ThreadDump__pb2.DESCRIPTOR,]) + +_PCOMMANDTYPE = _descriptor.EnumDescriptor( + name='PCommandType', + full_name='v1.PCommandType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='NONE', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PING', index=1, number=100, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PONG', index=2, number=101, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ECHO', index=3, number=710, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ACTIVE_THREAD_COUNT', index=4, number=730, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ACTIVE_THREAD_DUMP', index=5, number=740, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ACTIVE_THREAD_LIGHT_DUMP', index=6, number=750, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=1527, + serialized_end=1664, +) +_sym_db.RegisterEnumDescriptor(_PCOMMANDTYPE) + +PCommandType = enum_type_wrapper.EnumTypeWrapper(_PCOMMANDTYPE) +NONE = 0 +PING = 100 +PONG = 101 +ECHO = 710 +ACTIVE_THREAD_COUNT = 730 +ACTIVE_THREAD_DUMP = 740 +ACTIVE_THREAD_LIGHT_DUMP = 750 + + + +_PCMDMESSAGE = _descriptor.Descriptor( + name='PCmdMessage', + full_name='v1.PCmdMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='handshakeMessage', full_name='v1.PCmdMessage.handshakeMessage', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='failMessage', full_name='v1.PCmdMessage.failMessage', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='message', full_name='v1.PCmdMessage.message', + index=0, containing_type=None, fields=[]), + ], + serialized_start=67, + serialized_end=186, +) + + +_PCMDSERVICEHANDSHAKE = _descriptor.Descriptor( + name='PCmdServiceHandshake', + full_name='v1.PCmdServiceHandshake', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='supportCommandServiceKey', full_name='v1.PCmdServiceHandshake.supportCommandServiceKey', index=0, + number=1, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=188, + serialized_end=244, +) + + +_PCMDRESPONSE = _descriptor.Descriptor( + name='PCmdResponse', + full_name='v1.PCmdResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='responseId', full_name='v1.PCmdResponse.responseId', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='status', full_name='v1.PCmdResponse.status', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='message', full_name='v1.PCmdResponse.message', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=246, + serialized_end=343, +) + + +_PCMDSTREAMRESPONSE = _descriptor.Descriptor( + name='PCmdStreamResponse', + full_name='v1.PCmdStreamResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='responseId', full_name='v1.PCmdStreamResponse.responseId', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sequenceId', full_name='v1.PCmdStreamResponse.sequenceId', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='message', full_name='v1.PCmdStreamResponse.message', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=345, + serialized_end=452, +) + + +_PCMDREQUEST = _descriptor.Descriptor( + name='PCmdRequest', + full_name='v1.PCmdRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='requestId', full_name='v1.PCmdRequest.requestId', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='commandEcho', full_name='v1.PCmdRequest.commandEcho', index=1, + number=710, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='commandActiveThreadCount', full_name='v1.PCmdRequest.commandActiveThreadCount', index=2, + number=730, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='commandActiveThreadDump', full_name='v1.PCmdRequest.commandActiveThreadDump', index=3, + number=740, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='commandActiveThreadLightDump', full_name='v1.PCmdRequest.commandActiveThreadLightDump', index=4, + number=750, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='command', full_name='v1.PCmdRequest.command', + index=0, containing_type=None, fields=[]), + ], + serialized_start=455, + serialized_end=734, +) + + +_PCMDECHO = _descriptor.Descriptor( + name='PCmdEcho', + full_name='v1.PCmdEcho', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='message', full_name='v1.PCmdEcho.message', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=736, + serialized_end=763, +) + + +_PCMDECHORESPONSE = _descriptor.Descriptor( + name='PCmdEchoResponse', + full_name='v1.PCmdEchoResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonResponse', full_name='v1.PCmdEchoResponse.commonResponse', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='message', full_name='v1.PCmdEchoResponse.message', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=765, + serialized_end=842, +) + + +_PCMDACTIVETHREADDUMP = _descriptor.Descriptor( + name='PCmdActiveThreadDump', + full_name='v1.PCmdActiveThreadDump', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='limit', full_name='v1.PCmdActiveThreadDump.limit', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadName', full_name='v1.PCmdActiveThreadDump.threadName', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='localTraceId', full_name='v1.PCmdActiveThreadDump.localTraceId', index=2, + number=3, type=3, cpp_type=2, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=844, + serialized_end=923, +) + + +_PCMDACTIVETHREADDUMPRES = _descriptor.Descriptor( + name='PCmdActiveThreadDumpRes', + full_name='v1.PCmdActiveThreadDumpRes', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonResponse', full_name='v1.PCmdActiveThreadDumpRes.commonResponse', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadDump', full_name='v1.PCmdActiveThreadDumpRes.threadDump', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='type', full_name='v1.PCmdActiveThreadDumpRes.type', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='subType', full_name='v1.PCmdActiveThreadDumpRes.subType', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='version', full_name='v1.PCmdActiveThreadDumpRes.version', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=926, + serialized_end=1084, +) + + +_PCMDACTIVETHREADLIGHTDUMP = _descriptor.Descriptor( + name='PCmdActiveThreadLightDump', + full_name='v1.PCmdActiveThreadLightDump', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='limit', full_name='v1.PCmdActiveThreadLightDump.limit', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadName', full_name='v1.PCmdActiveThreadLightDump.threadName', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='localTraceId', full_name='v1.PCmdActiveThreadLightDump.localTraceId', index=2, + number=3, type=3, cpp_type=2, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1086, + serialized_end=1170, +) + + +_PCMDACTIVETHREADLIGHTDUMPRES = _descriptor.Descriptor( + name='PCmdActiveThreadLightDumpRes', + full_name='v1.PCmdActiveThreadLightDumpRes', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonResponse', full_name='v1.PCmdActiveThreadLightDumpRes.commonResponse', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadDump', full_name='v1.PCmdActiveThreadLightDumpRes.threadDump', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='type', full_name='v1.PCmdActiveThreadLightDumpRes.type', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='subType', full_name='v1.PCmdActiveThreadLightDumpRes.subType', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='version', full_name='v1.PCmdActiveThreadLightDumpRes.version', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1173, + serialized_end=1341, +) + + +_PCMDACTIVETHREADCOUNT = _descriptor.Descriptor( + name='PCmdActiveThreadCount', + full_name='v1.PCmdActiveThreadCount', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1343, + serialized_end=1366, +) + + +_PCMDACTIVETHREADCOUNTRES = _descriptor.Descriptor( + name='PCmdActiveThreadCountRes', + full_name='v1.PCmdActiveThreadCountRes', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonStreamResponse', full_name='v1.PCmdActiveThreadCountRes.commonStreamResponse', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='histogramSchemaType', full_name='v1.PCmdActiveThreadCountRes.histogramSchemaType', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='activeThreadCount', full_name='v1.PCmdActiveThreadCountRes.activeThreadCount', index=2, + number=3, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='timeStamp', full_name='v1.PCmdActiveThreadCountRes.timeStamp', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1369, + serialized_end=1524, +) + +_PCMDMESSAGE.fields_by_name['handshakeMessage'].message_type = _PCMDSERVICEHANDSHAKE +_PCMDMESSAGE.fields_by_name['failMessage'].message_type = _PCMDRESPONSE +_PCMDMESSAGE.oneofs_by_name['message'].fields.append( + _PCMDMESSAGE.fields_by_name['handshakeMessage']) +_PCMDMESSAGE.fields_by_name['handshakeMessage'].containing_oneof = _PCMDMESSAGE.oneofs_by_name['message'] +_PCMDMESSAGE.oneofs_by_name['message'].fields.append( + _PCMDMESSAGE.fields_by_name['failMessage']) +_PCMDMESSAGE.fields_by_name['failMessage'].containing_oneof = _PCMDMESSAGE.oneofs_by_name['message'] +_PCMDRESPONSE.fields_by_name['message'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE +_PCMDSTREAMRESPONSE.fields_by_name['message'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE +_PCMDREQUEST.fields_by_name['commandEcho'].message_type = _PCMDECHO +_PCMDREQUEST.fields_by_name['commandActiveThreadCount'].message_type = _PCMDACTIVETHREADCOUNT +_PCMDREQUEST.fields_by_name['commandActiveThreadDump'].message_type = _PCMDACTIVETHREADDUMP +_PCMDREQUEST.fields_by_name['commandActiveThreadLightDump'].message_type = _PCMDACTIVETHREADLIGHTDUMP +_PCMDREQUEST.oneofs_by_name['command'].fields.append( + _PCMDREQUEST.fields_by_name['commandEcho']) +_PCMDREQUEST.fields_by_name['commandEcho'].containing_oneof = _PCMDREQUEST.oneofs_by_name['command'] +_PCMDREQUEST.oneofs_by_name['command'].fields.append( + _PCMDREQUEST.fields_by_name['commandActiveThreadCount']) +_PCMDREQUEST.fields_by_name['commandActiveThreadCount'].containing_oneof = _PCMDREQUEST.oneofs_by_name['command'] +_PCMDREQUEST.oneofs_by_name['command'].fields.append( + _PCMDREQUEST.fields_by_name['commandActiveThreadDump']) +_PCMDREQUEST.fields_by_name['commandActiveThreadDump'].containing_oneof = _PCMDREQUEST.oneofs_by_name['command'] +_PCMDREQUEST.oneofs_by_name['command'].fields.append( + _PCMDREQUEST.fields_by_name['commandActiveThreadLightDump']) +_PCMDREQUEST.fields_by_name['commandActiveThreadLightDump'].containing_oneof = _PCMDREQUEST.oneofs_by_name['command'] +_PCMDECHORESPONSE.fields_by_name['commonResponse'].message_type = _PCMDRESPONSE +_PCMDACTIVETHREADDUMPRES.fields_by_name['commonResponse'].message_type = _PCMDRESPONSE +_PCMDACTIVETHREADDUMPRES.fields_by_name['threadDump'].message_type = ThreadDump__pb2._PACTIVETHREADDUMP +_PCMDACTIVETHREADLIGHTDUMPRES.fields_by_name['commonResponse'].message_type = _PCMDRESPONSE +_PCMDACTIVETHREADLIGHTDUMPRES.fields_by_name['threadDump'].message_type = ThreadDump__pb2._PACTIVETHREADLIGHTDUMP +_PCMDACTIVETHREADCOUNTRES.fields_by_name['commonStreamResponse'].message_type = _PCMDSTREAMRESPONSE +DESCRIPTOR.message_types_by_name['PCmdMessage'] = _PCMDMESSAGE +DESCRIPTOR.message_types_by_name['PCmdServiceHandshake'] = _PCMDSERVICEHANDSHAKE +DESCRIPTOR.message_types_by_name['PCmdResponse'] = _PCMDRESPONSE +DESCRIPTOR.message_types_by_name['PCmdStreamResponse'] = _PCMDSTREAMRESPONSE +DESCRIPTOR.message_types_by_name['PCmdRequest'] = _PCMDREQUEST +DESCRIPTOR.message_types_by_name['PCmdEcho'] = _PCMDECHO +DESCRIPTOR.message_types_by_name['PCmdEchoResponse'] = _PCMDECHORESPONSE +DESCRIPTOR.message_types_by_name['PCmdActiveThreadDump'] = _PCMDACTIVETHREADDUMP +DESCRIPTOR.message_types_by_name['PCmdActiveThreadDumpRes'] = _PCMDACTIVETHREADDUMPRES +DESCRIPTOR.message_types_by_name['PCmdActiveThreadLightDump'] = _PCMDACTIVETHREADLIGHTDUMP +DESCRIPTOR.message_types_by_name['PCmdActiveThreadLightDumpRes'] = _PCMDACTIVETHREADLIGHTDUMPRES +DESCRIPTOR.message_types_by_name['PCmdActiveThreadCount'] = _PCMDACTIVETHREADCOUNT +DESCRIPTOR.message_types_by_name['PCmdActiveThreadCountRes'] = _PCMDACTIVETHREADCOUNTRES +DESCRIPTOR.enum_types_by_name['PCommandType'] = _PCOMMANDTYPE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +PCmdMessage = _reflection.GeneratedProtocolMessageType('PCmdMessage', (_message.Message,), { + 'DESCRIPTOR' : _PCMDMESSAGE, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdMessage) + }) +_sym_db.RegisterMessage(PCmdMessage) + +PCmdServiceHandshake = _reflection.GeneratedProtocolMessageType('PCmdServiceHandshake', (_message.Message,), { + 'DESCRIPTOR' : _PCMDSERVICEHANDSHAKE, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdServiceHandshake) + }) +_sym_db.RegisterMessage(PCmdServiceHandshake) + +PCmdResponse = _reflection.GeneratedProtocolMessageType('PCmdResponse', (_message.Message,), { + 'DESCRIPTOR' : _PCMDRESPONSE, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdResponse) + }) +_sym_db.RegisterMessage(PCmdResponse) + +PCmdStreamResponse = _reflection.GeneratedProtocolMessageType('PCmdStreamResponse', (_message.Message,), { + 'DESCRIPTOR' : _PCMDSTREAMRESPONSE, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdStreamResponse) + }) +_sym_db.RegisterMessage(PCmdStreamResponse) + +PCmdRequest = _reflection.GeneratedProtocolMessageType('PCmdRequest', (_message.Message,), { + 'DESCRIPTOR' : _PCMDREQUEST, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdRequest) + }) +_sym_db.RegisterMessage(PCmdRequest) + +PCmdEcho = _reflection.GeneratedProtocolMessageType('PCmdEcho', (_message.Message,), { + 'DESCRIPTOR' : _PCMDECHO, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdEcho) + }) +_sym_db.RegisterMessage(PCmdEcho) + +PCmdEchoResponse = _reflection.GeneratedProtocolMessageType('PCmdEchoResponse', (_message.Message,), { + 'DESCRIPTOR' : _PCMDECHORESPONSE, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdEchoResponse) + }) +_sym_db.RegisterMessage(PCmdEchoResponse) + +PCmdActiveThreadDump = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadDump', (_message.Message,), { + 'DESCRIPTOR' : _PCMDACTIVETHREADDUMP, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadDump) + }) +_sym_db.RegisterMessage(PCmdActiveThreadDump) + +PCmdActiveThreadDumpRes = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadDumpRes', (_message.Message,), { + 'DESCRIPTOR' : _PCMDACTIVETHREADDUMPRES, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadDumpRes) + }) +_sym_db.RegisterMessage(PCmdActiveThreadDumpRes) + +PCmdActiveThreadLightDump = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadLightDump', (_message.Message,), { + 'DESCRIPTOR' : _PCMDACTIVETHREADLIGHTDUMP, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadLightDump) + }) +_sym_db.RegisterMessage(PCmdActiveThreadLightDump) + +PCmdActiveThreadLightDumpRes = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadLightDumpRes', (_message.Message,), { + 'DESCRIPTOR' : _PCMDACTIVETHREADLIGHTDUMPRES, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadLightDumpRes) + }) +_sym_db.RegisterMessage(PCmdActiveThreadLightDumpRes) + +PCmdActiveThreadCount = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadCount', (_message.Message,), { + 'DESCRIPTOR' : _PCMDACTIVETHREADCOUNT, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadCount) + }) +_sym_db.RegisterMessage(PCmdActiveThreadCount) + +PCmdActiveThreadCountRes = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadCountRes', (_message.Message,), { + 'DESCRIPTOR' : _PCMDACTIVETHREADCOUNTRES, + '__module__' : 'Cmd_pb2' + # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadCountRes) + }) +_sym_db.RegisterMessage(PCmdActiveThreadCountRes) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Cmd_pb2_grpc.py b/collector-agent/Proto/grpc/Cmd_pb2_grpc.py new file mode 100644 index 000000000..a89435267 --- /dev/null +++ b/collector-agent/Proto/grpc/Cmd_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + diff --git a/collector-agent/Proto/grpc/Service.proto b/collector-agent/Proto/grpc/Service.proto new file mode 100644 index 000000000..e9a00b128 --- /dev/null +++ b/collector-agent/Proto/grpc/Service.proto @@ -0,0 +1,57 @@ +syntax = "proto3"; + +import "google/protobuf/empty.proto"; +import "Span.proto"; +import "Stat.proto"; +import "ThreadDump.proto"; +import "Cmd.proto"; + +option java_multiple_files = true; +option java_package = "com.navercorp.pinpoint.grpc.trace"; +option java_outer_classname = "ServiceProto"; +//option objc_class_prefix = "PIN"; + +package v1; + +service Span { + rpc SendSpan (stream PSpanMessage) returns (google.protobuf.Empty) { + } +} + +service Agent { + rpc RequestAgentInfo (PAgentInfo) returns (PResult) { + } + rpc PingSession (stream PPing) returns (stream PPing) { + } +} + +service Metadata { + rpc RequestSqlMetaData (PSqlMetaData) returns (PResult) { + } + rpc RequestApiMetaData (PApiMetaData) returns (PResult) { + } + rpc RequestStringMetaData (PStringMetaData) returns (PResult) { + } +} + +service Stat { + rpc SendAgentStat (stream PStatMessage) returns (google.protobuf.Empty) { + } +} + +service ProfilerCommandService { + rpc HandleCommand (stream PCmdMessage) returns (stream PCmdRequest) { + } + + rpc CommandEcho (PCmdEchoResponse) returns (google.protobuf.Empty) { + } + + rpc CommandStreamActiveThreadCount (stream PCmdActiveThreadCountRes) returns (google.protobuf.Empty) { + } + + rpc CommandActiveThreadDump (PCmdActiveThreadDumpRes) returns (google.protobuf.Empty) { + } + + rpc CommandActiveThreadLightDump (PCmdActiveThreadLightDumpRes) returns (google.protobuf.Empty) { + } +} \ No newline at end of file diff --git a/collector-agent/Proto/grpc/Service_pb2.py b/collector-agent/Proto/grpc/Service_pb2.py new file mode 100644 index 000000000..58149d442 --- /dev/null +++ b/collector-agent/Proto/grpc/Service_pb2.py @@ -0,0 +1,221 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: Service.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +import Span_pb2 as Span__pb2 +import Stat_pb2 as Stat__pb2 +import ThreadDump_pb2 as ThreadDump__pb2 +import Cmd_pb2 as Cmd__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='Service.proto', + package='v1', + syntax='proto3', + serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\014ServiceProtoP\001'), + serialized_pb=_b('\n\rService.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\nSpan.proto\x1a\nStat.proto\x1a\x10ThreadDump.proto\x1a\tCmd.proto2@\n\x04Span\x12\x38\n\x08SendSpan\x12\x10.v1.PSpanMessage\x1a\x16.google.protobuf.Empty\"\x00(\x01\x32\x65\n\x05\x41gent\x12\x31\n\x10RequestAgentInfo\x12\x0e.v1.PAgentInfo\x1a\x0b.v1.PResult\"\x00\x12)\n\x0bPingSession\x12\t.v1.PPing\x1a\t.v1.PPing\"\x00(\x01\x30\x01\x32\xb5\x01\n\x08Metadata\x12\x35\n\x12RequestSqlMetaData\x12\x10.v1.PSqlMetaData\x1a\x0b.v1.PResult\"\x00\x12\x35\n\x12RequestApiMetaData\x12\x10.v1.PApiMetaData\x1a\x0b.v1.PResult\"\x00\x12;\n\x15RequestStringMetaData\x12\x13.v1.PStringMetaData\x1a\x0b.v1.PResult\"\x00\x32\x45\n\x04Stat\x12=\n\rSendAgentStat\x12\x10.v1.PStatMessage\x1a\x16.google.protobuf.Empty\"\x00(\x01\x32\x9a\x03\n\x16ProfilerCommandService\x12\x37\n\rHandleCommand\x12\x0f.v1.PCmdMessage\x1a\x0f.v1.PCmdRequest\"\x00(\x01\x30\x01\x12=\n\x0b\x43ommandEcho\x12\x14.v1.PCmdEchoResponse\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x1e\x43ommandStreamActiveThreadCount\x12\x1c.v1.PCmdActiveThreadCountRes\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12P\n\x17\x43ommandActiveThreadDump\x12\x1b.v1.PCmdActiveThreadDumpRes\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x1c\x43ommandActiveThreadLightDump\x12 .v1.PCmdActiveThreadLightDumpRes\x1a\x16.google.protobuf.Empty\"\x00\x42\x33\n!com.navercorp.pinpoint.grpc.traceB\x0cServiceProtoP\x01\x62\x06proto3') + , + dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,Span__pb2.DESCRIPTOR,Stat__pb2.DESCRIPTOR,ThreadDump__pb2.DESCRIPTOR,Cmd__pb2.DESCRIPTOR,]) + + + +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + +DESCRIPTOR._options = None + +_SPAN = _descriptor.ServiceDescriptor( + name='Span', + full_name='v1.Span', + file=DESCRIPTOR, + index=0, + serialized_options=None, + serialized_start=103, + serialized_end=167, + methods=[ + _descriptor.MethodDescriptor( + name='SendSpan', + full_name='v1.Span.SendSpan', + index=0, + containing_service=None, + input_type=Span__pb2._PSPANMESSAGE, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_SPAN) + +DESCRIPTOR.services_by_name['Span'] = _SPAN + + +_AGENT = _descriptor.ServiceDescriptor( + name='Agent', + full_name='v1.Agent', + file=DESCRIPTOR, + index=1, + serialized_options=None, + serialized_start=169, + serialized_end=270, + methods=[ + _descriptor.MethodDescriptor( + name='RequestAgentInfo', + full_name='v1.Agent.RequestAgentInfo', + index=0, + containing_service=None, + input_type=Stat__pb2._PAGENTINFO, + output_type=Span__pb2._PRESULT, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='PingSession', + full_name='v1.Agent.PingSession', + index=1, + containing_service=None, + input_type=Stat__pb2._PPING, + output_type=Stat__pb2._PPING, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_AGENT) + +DESCRIPTOR.services_by_name['Agent'] = _AGENT + + +_METADATA = _descriptor.ServiceDescriptor( + name='Metadata', + full_name='v1.Metadata', + file=DESCRIPTOR, + index=2, + serialized_options=None, + serialized_start=273, + serialized_end=454, + methods=[ + _descriptor.MethodDescriptor( + name='RequestSqlMetaData', + full_name='v1.Metadata.RequestSqlMetaData', + index=0, + containing_service=None, + input_type=Span__pb2._PSQLMETADATA, + output_type=Span__pb2._PRESULT, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='RequestApiMetaData', + full_name='v1.Metadata.RequestApiMetaData', + index=1, + containing_service=None, + input_type=Span__pb2._PAPIMETADATA, + output_type=Span__pb2._PRESULT, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='RequestStringMetaData', + full_name='v1.Metadata.RequestStringMetaData', + index=2, + containing_service=None, + input_type=Span__pb2._PSTRINGMETADATA, + output_type=Span__pb2._PRESULT, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_METADATA) + +DESCRIPTOR.services_by_name['Metadata'] = _METADATA + + +_STAT = _descriptor.ServiceDescriptor( + name='Stat', + full_name='v1.Stat', + file=DESCRIPTOR, + index=3, + serialized_options=None, + serialized_start=456, + serialized_end=525, + methods=[ + _descriptor.MethodDescriptor( + name='SendAgentStat', + full_name='v1.Stat.SendAgentStat', + index=0, + containing_service=None, + input_type=Stat__pb2._PSTATMESSAGE, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_STAT) + +DESCRIPTOR.services_by_name['Stat'] = _STAT + + +_PROFILERCOMMANDSERVICE = _descriptor.ServiceDescriptor( + name='ProfilerCommandService', + full_name='v1.ProfilerCommandService', + file=DESCRIPTOR, + index=4, + serialized_options=None, + serialized_start=528, + serialized_end=938, + methods=[ + _descriptor.MethodDescriptor( + name='HandleCommand', + full_name='v1.ProfilerCommandService.HandleCommand', + index=0, + containing_service=None, + input_type=Cmd__pb2._PCMDMESSAGE, + output_type=Cmd__pb2._PCMDREQUEST, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='CommandEcho', + full_name='v1.ProfilerCommandService.CommandEcho', + index=1, + containing_service=None, + input_type=Cmd__pb2._PCMDECHORESPONSE, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='CommandStreamActiveThreadCount', + full_name='v1.ProfilerCommandService.CommandStreamActiveThreadCount', + index=2, + containing_service=None, + input_type=Cmd__pb2._PCMDACTIVETHREADCOUNTRES, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='CommandActiveThreadDump', + full_name='v1.ProfilerCommandService.CommandActiveThreadDump', + index=3, + containing_service=None, + input_type=Cmd__pb2._PCMDACTIVETHREADDUMPRES, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='CommandActiveThreadLightDump', + full_name='v1.ProfilerCommandService.CommandActiveThreadLightDump', + index=4, + containing_service=None, + input_type=Cmd__pb2._PCMDACTIVETHREADLIGHTDUMPRES, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_PROFILERCOMMANDSERVICE) + +DESCRIPTOR.services_by_name['ProfilerCommandService'] = _PROFILERCOMMANDSERVICE + +# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Service_pb2_grpc.py b/collector-agent/Proto/grpc/Service_pb2_grpc.py new file mode 100644 index 000000000..225e51480 --- /dev/null +++ b/collector-agent/Proto/grpc/Service_pb2_grpc.py @@ -0,0 +1,336 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +import Cmd_pb2 as Cmd__pb2 +import Span_pb2 as Span__pb2 +import Stat_pb2 as Stat__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +class SpanStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.SendSpan = channel.stream_unary( + '/v1.Span/SendSpan', + request_serializer=Span__pb2.PSpanMessage.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + + +class SpanServicer(object): + # missing associated documentation comment in .proto file + pass + + def SendSpan(self, request_iterator, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_SpanServicer_to_server(servicer, server): + rpc_method_handlers = { + 'SendSpan': grpc.stream_unary_rpc_method_handler( + servicer.SendSpan, + request_deserializer=Span__pb2.PSpanMessage.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'v1.Span', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + +class AgentStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.RequestAgentInfo = channel.unary_unary( + '/v1.Agent/RequestAgentInfo', + request_serializer=Stat__pb2.PAgentInfo.SerializeToString, + response_deserializer=Span__pb2.PResult.FromString, + ) + self.PingSession = channel.stream_stream( + '/v1.Agent/PingSession', + request_serializer=Stat__pb2.PPing.SerializeToString, + response_deserializer=Stat__pb2.PPing.FromString, + ) + + +class AgentServicer(object): + # missing associated documentation comment in .proto file + pass + + def RequestAgentInfo(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def PingSession(self, request_iterator, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_AgentServicer_to_server(servicer, server): + rpc_method_handlers = { + 'RequestAgentInfo': grpc.unary_unary_rpc_method_handler( + servicer.RequestAgentInfo, + request_deserializer=Stat__pb2.PAgentInfo.FromString, + response_serializer=Span__pb2.PResult.SerializeToString, + ), + 'PingSession': grpc.stream_stream_rpc_method_handler( + servicer.PingSession, + request_deserializer=Stat__pb2.PPing.FromString, + response_serializer=Stat__pb2.PPing.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'v1.Agent', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + +class MetadataStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.RequestSqlMetaData = channel.unary_unary( + '/v1.Metadata/RequestSqlMetaData', + request_serializer=Span__pb2.PSqlMetaData.SerializeToString, + response_deserializer=Span__pb2.PResult.FromString, + ) + self.RequestApiMetaData = channel.unary_unary( + '/v1.Metadata/RequestApiMetaData', + request_serializer=Span__pb2.PApiMetaData.SerializeToString, + response_deserializer=Span__pb2.PResult.FromString, + ) + self.RequestStringMetaData = channel.unary_unary( + '/v1.Metadata/RequestStringMetaData', + request_serializer=Span__pb2.PStringMetaData.SerializeToString, + response_deserializer=Span__pb2.PResult.FromString, + ) + + +class MetadataServicer(object): + # missing associated documentation comment in .proto file + pass + + def RequestSqlMetaData(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def RequestApiMetaData(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def RequestStringMetaData(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_MetadataServicer_to_server(servicer, server): + rpc_method_handlers = { + 'RequestSqlMetaData': grpc.unary_unary_rpc_method_handler( + servicer.RequestSqlMetaData, + request_deserializer=Span__pb2.PSqlMetaData.FromString, + response_serializer=Span__pb2.PResult.SerializeToString, + ), + 'RequestApiMetaData': grpc.unary_unary_rpc_method_handler( + servicer.RequestApiMetaData, + request_deserializer=Span__pb2.PApiMetaData.FromString, + response_serializer=Span__pb2.PResult.SerializeToString, + ), + 'RequestStringMetaData': grpc.unary_unary_rpc_method_handler( + servicer.RequestStringMetaData, + request_deserializer=Span__pb2.PStringMetaData.FromString, + response_serializer=Span__pb2.PResult.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'v1.Metadata', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + +class StatStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.SendAgentStat = channel.stream_unary( + '/v1.Stat/SendAgentStat', + request_serializer=Stat__pb2.PStatMessage.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + + +class StatServicer(object): + # missing associated documentation comment in .proto file + pass + + def SendAgentStat(self, request_iterator, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_StatServicer_to_server(servicer, server): + rpc_method_handlers = { + 'SendAgentStat': grpc.stream_unary_rpc_method_handler( + servicer.SendAgentStat, + request_deserializer=Stat__pb2.PStatMessage.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'v1.Stat', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + +class ProfilerCommandServiceStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.HandleCommand = channel.stream_stream( + '/v1.ProfilerCommandService/HandleCommand', + request_serializer=Cmd__pb2.PCmdMessage.SerializeToString, + response_deserializer=Cmd__pb2.PCmdRequest.FromString, + ) + self.CommandEcho = channel.unary_unary( + '/v1.ProfilerCommandService/CommandEcho', + request_serializer=Cmd__pb2.PCmdEchoResponse.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.CommandStreamActiveThreadCount = channel.stream_unary( + '/v1.ProfilerCommandService/CommandStreamActiveThreadCount', + request_serializer=Cmd__pb2.PCmdActiveThreadCountRes.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.CommandActiveThreadDump = channel.unary_unary( + '/v1.ProfilerCommandService/CommandActiveThreadDump', + request_serializer=Cmd__pb2.PCmdActiveThreadDumpRes.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.CommandActiveThreadLightDump = channel.unary_unary( + '/v1.ProfilerCommandService/CommandActiveThreadLightDump', + request_serializer=Cmd__pb2.PCmdActiveThreadLightDumpRes.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + + +class ProfilerCommandServiceServicer(object): + # missing associated documentation comment in .proto file + pass + + def HandleCommand(self, request_iterator, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CommandEcho(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CommandStreamActiveThreadCount(self, request_iterator, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CommandActiveThreadDump(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CommandActiveThreadLightDump(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_ProfilerCommandServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'HandleCommand': grpc.stream_stream_rpc_method_handler( + servicer.HandleCommand, + request_deserializer=Cmd__pb2.PCmdMessage.FromString, + response_serializer=Cmd__pb2.PCmdRequest.SerializeToString, + ), + 'CommandEcho': grpc.unary_unary_rpc_method_handler( + servicer.CommandEcho, + request_deserializer=Cmd__pb2.PCmdEchoResponse.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'CommandStreamActiveThreadCount': grpc.stream_unary_rpc_method_handler( + servicer.CommandStreamActiveThreadCount, + request_deserializer=Cmd__pb2.PCmdActiveThreadCountRes.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'CommandActiveThreadDump': grpc.unary_unary_rpc_method_handler( + servicer.CommandActiveThreadDump, + request_deserializer=Cmd__pb2.PCmdActiveThreadDumpRes.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'CommandActiveThreadLightDump': grpc.unary_unary_rpc_method_handler( + servicer.CommandActiveThreadLightDump, + request_deserializer=Cmd__pb2.PCmdActiveThreadLightDumpRes.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'v1.ProfilerCommandService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/collector-agent/Proto/grpc/Span.proto b/collector-agent/Proto/grpc/Span.proto new file mode 100644 index 000000000..f9a8c8f4d --- /dev/null +++ b/collector-agent/Proto/grpc/Span.proto @@ -0,0 +1,153 @@ +syntax = "proto3"; + +import "google/protobuf/empty.proto"; +import "Annotation.proto"; + + +option java_multiple_files = true; +option java_package = "com.navercorp.pinpoint.grpc.trace"; +option java_outer_classname = "SpanProto"; +//option objc_class_prefix = "PIN"; + +package v1; + +message PSpanMessage { + oneof field { + PSpan span = 1; + PSpanChunk spanChunk =2; + } +} + +message PSpan { + int32 version = 1; + + PTransactionId transactionId = 2; + + sfixed64 spanId = 3; + sfixed64 parentSpanId = 4; + + // span event's startTimestamp + int64 startTime = 5; + int32 elapsed = 6; + int32 apiId = 7; + + int32 serviceType = 8; + + PAcceptEvent acceptEvent = 9; + + repeated PAnnotation annotation = 10; + + int32 flag = 11; + sint32 err = 12; + + repeated PSpanEvent spanEvent = 13; + + PIntStringValue exceptionInfo = 14; + + int32 applicationServiceType = 15; + int32 loggingTransactionInfo = 16; +} + +message PTransactionId { + // identical to agentId if null + string agentId = 1; //nullable + int64 agentStartTime = 2; + int64 sequence = 3; +} + +message PAcceptEvent { + string rpc = 1; + string endPoint = 2; + string remoteAddr = 3; + PParentInfo parentInfo = 4; +} + +message PParentInfo { + string parentApplicationName = 1; + int32 parentApplicationType = 2; + string acceptorHost = 3; +} + +message PLocalAsyncId { + int32 asyncId = 1; + int32 sequence = 2; +} + + +message PSpanEvent { + int32 sequence = 1; + int32 depth = 2; + + int32 startElapsed = 3; + int32 endElapsed = 4; + + sint32 serviceType = 5; + + repeated PAnnotation annotation = 6; + + sint32 apiId = 10; + PIntStringValue exceptionInfo = 11; + + PNextEvent nextEvent = 12; + int32 asyncEvent = 13; +} + +message PNextEvent { + oneof field { + PMessageEvent messageEvent = 1; + } +} + +message PMessageEvent { + sfixed64 nextSpanId = 1; + string endPoint = 2; + string destinationId = 3; +} + +message PSpanChunk { + int32 version = 1; + + PTransactionId transactionId = 2; + + sfixed64 spanId = 3; + + string endPoint = 4; + + repeated PSpanEvent spanEvent = 5; + + int32 applicationServiceType = 6; + + int64 keyTime = 7; + + PLocalAsyncId localAsyncId = 8; + +} + +// 1.6.x- : version = 0; +// 1.7.x+ : version = 1; +//const i8 TRACE_V1 = 0; +//const i8 TRACE_V2 = 1; +// + + +message PResult { + bool success = 1; + string message = 2; +} + +message PSqlMetaData { + int32 sqlId = 1; + string sql = 2; +} + +message PApiMetaData { + int32 apiId = 1; + string apiInfo = 2; + int32 line = 3; + int32 type = 4; +} + +message PStringMetaData { + int32 stringId = 1; + string stringValue = 2; +} \ No newline at end of file diff --git a/collector-agent/Proto/grpc/Span_pb2.py b/collector-agent/Proto/grpc/Span_pb2.py new file mode 100644 index 000000000..d3c2a9cfa --- /dev/null +++ b/collector-agent/Proto/grpc/Span_pb2.py @@ -0,0 +1,947 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: Span.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +import Annotation_pb2 as Annotation__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='Span.proto', + package='v1', + syntax='proto3', + serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\tSpanProtoP\001'), + serialized_pb=_b('\n\nSpan.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x10\x41nnotation.proto\"W\n\x0cPSpanMessage\x12\x19\n\x04span\x18\x01 \x01(\x0b\x32\t.v1.PSpanH\x00\x12#\n\tspanChunk\x18\x02 \x01(\x0b\x32\x0e.v1.PSpanChunkH\x00\x42\x07\n\x05\x66ield\"\xa1\x03\n\x05PSpan\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12)\n\rtransactionId\x18\x02 \x01(\x0b\x32\x12.v1.PTransactionId\x12\x0e\n\x06spanId\x18\x03 \x01(\x10\x12\x14\n\x0cparentSpanId\x18\x04 \x01(\x10\x12\x11\n\tstartTime\x18\x05 \x01(\x03\x12\x0f\n\x07\x65lapsed\x18\x06 \x01(\x05\x12\r\n\x05\x61piId\x18\x07 \x01(\x05\x12\x13\n\x0bserviceType\x18\x08 \x01(\x05\x12%\n\x0b\x61\x63\x63\x65ptEvent\x18\t \x01(\x0b\x32\x10.v1.PAcceptEvent\x12 \n\nannotation\x18\n \x03(\x0b\x32\x0c.PAnnotation\x12\x0c\n\x04\x66lag\x18\x0b \x01(\x05\x12\x0b\n\x03\x65rr\x18\x0c \x01(\x11\x12!\n\tspanEvent\x18\r \x03(\x0b\x32\x0e.v1.PSpanEvent\x12\'\n\rexceptionInfo\x18\x0e \x01(\x0b\x32\x10.PIntStringValue\x12\x1e\n\x16\x61pplicationServiceType\x18\x0f \x01(\x05\x12\x1e\n\x16loggingTransactionInfo\x18\x10 \x01(\x05\"K\n\x0ePTransactionId\x12\x0f\n\x07\x61gentId\x18\x01 \x01(\t\x12\x16\n\x0e\x61gentStartTime\x18\x02 \x01(\x03\x12\x10\n\x08sequence\x18\x03 \x01(\x03\"f\n\x0cPAcceptEvent\x12\x0b\n\x03rpc\x18\x01 \x01(\t\x12\x10\n\x08\x65ndPoint\x18\x02 \x01(\t\x12\x12\n\nremoteAddr\x18\x03 \x01(\t\x12#\n\nparentInfo\x18\x04 \x01(\x0b\x32\x0f.v1.PParentInfo\"a\n\x0bPParentInfo\x12\x1d\n\x15parentApplicationName\x18\x01 \x01(\t\x12\x1d\n\x15parentApplicationType\x18\x02 \x01(\x05\x12\x14\n\x0c\x61\x63\x63\x65ptorHost\x18\x03 \x01(\t\"2\n\rPLocalAsyncId\x12\x0f\n\x07\x61syncId\x18\x01 \x01(\x05\x12\x10\n\x08sequence\x18\x02 \x01(\x05\"\xfd\x01\n\nPSpanEvent\x12\x10\n\x08sequence\x18\x01 \x01(\x05\x12\r\n\x05\x64\x65pth\x18\x02 \x01(\x05\x12\x14\n\x0cstartElapsed\x18\x03 \x01(\x05\x12\x12\n\nendElapsed\x18\x04 \x01(\x05\x12\x13\n\x0bserviceType\x18\x05 \x01(\x11\x12 \n\nannotation\x18\x06 \x03(\x0b\x32\x0c.PAnnotation\x12\r\n\x05\x61piId\x18\n \x01(\x11\x12\'\n\rexceptionInfo\x18\x0b \x01(\x0b\x32\x10.PIntStringValue\x12!\n\tnextEvent\x18\x0c \x01(\x0b\x32\x0e.v1.PNextEvent\x12\x12\n\nasyncEvent\x18\r \x01(\x05\"@\n\nPNextEvent\x12)\n\x0cmessageEvent\x18\x01 \x01(\x0b\x32\x11.v1.PMessageEventH\x00\x42\x07\n\x05\x66ield\"L\n\rPMessageEvent\x12\x12\n\nnextSpanId\x18\x01 \x01(\x10\x12\x10\n\x08\x65ndPoint\x18\x02 \x01(\t\x12\x15\n\rdestinationId\x18\x03 \x01(\t\"\xe7\x01\n\nPSpanChunk\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12)\n\rtransactionId\x18\x02 \x01(\x0b\x32\x12.v1.PTransactionId\x12\x0e\n\x06spanId\x18\x03 \x01(\x10\x12\x10\n\x08\x65ndPoint\x18\x04 \x01(\t\x12!\n\tspanEvent\x18\x05 \x03(\x0b\x32\x0e.v1.PSpanEvent\x12\x1e\n\x16\x61pplicationServiceType\x18\x06 \x01(\x05\x12\x0f\n\x07keyTime\x18\x07 \x01(\x03\x12\'\n\x0clocalAsyncId\x18\x08 \x01(\x0b\x32\x11.v1.PLocalAsyncId\"+\n\x07PResult\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\"*\n\x0cPSqlMetaData\x12\r\n\x05sqlId\x18\x01 \x01(\x05\x12\x0b\n\x03sql\x18\x02 \x01(\t\"J\n\x0cPApiMetaData\x12\r\n\x05\x61piId\x18\x01 \x01(\x05\x12\x0f\n\x07\x61piInfo\x18\x02 \x01(\t\x12\x0c\n\x04line\x18\x03 \x01(\x05\x12\x0c\n\x04type\x18\x04 \x01(\x05\"8\n\x0fPStringMetaData\x12\x10\n\x08stringId\x18\x01 \x01(\x05\x12\x13\n\x0bstringValue\x18\x02 \x01(\tB0\n!com.navercorp.pinpoint.grpc.traceB\tSpanProtoP\x01\x62\x06proto3') + , + dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,Annotation__pb2.DESCRIPTOR,]) + + + + +_PSPANMESSAGE = _descriptor.Descriptor( + name='PSpanMessage', + full_name='v1.PSpanMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='span', full_name='v1.PSpanMessage.span', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='spanChunk', full_name='v1.PSpanMessage.spanChunk', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='field', full_name='v1.PSpanMessage.field', + index=0, containing_type=None, fields=[]), + ], + serialized_start=65, + serialized_end=152, +) + + +_PSPAN = _descriptor.Descriptor( + name='PSpan', + full_name='v1.PSpan', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='version', full_name='v1.PSpan.version', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='transactionId', full_name='v1.PSpan.transactionId', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='spanId', full_name='v1.PSpan.spanId', index=2, + number=3, type=16, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='parentSpanId', full_name='v1.PSpan.parentSpanId', index=3, + number=4, type=16, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='startTime', full_name='v1.PSpan.startTime', index=4, + number=5, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='elapsed', full_name='v1.PSpan.elapsed', index=5, + number=6, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='apiId', full_name='v1.PSpan.apiId', index=6, + number=7, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='serviceType', full_name='v1.PSpan.serviceType', index=7, + number=8, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='acceptEvent', full_name='v1.PSpan.acceptEvent', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='annotation', full_name='v1.PSpan.annotation', index=9, + number=10, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='flag', full_name='v1.PSpan.flag', index=10, + number=11, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='err', full_name='v1.PSpan.err', index=11, + number=12, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='spanEvent', full_name='v1.PSpan.spanEvent', index=12, + number=13, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='exceptionInfo', full_name='v1.PSpan.exceptionInfo', index=13, + number=14, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='applicationServiceType', full_name='v1.PSpan.applicationServiceType', index=14, + number=15, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='loggingTransactionInfo', full_name='v1.PSpan.loggingTransactionInfo', index=15, + number=16, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=155, + serialized_end=572, +) + + +_PTRANSACTIONID = _descriptor.Descriptor( + name='PTransactionId', + full_name='v1.PTransactionId', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='agentId', full_name='v1.PTransactionId.agentId', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='agentStartTime', full_name='v1.PTransactionId.agentStartTime', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sequence', full_name='v1.PTransactionId.sequence', index=2, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=574, + serialized_end=649, +) + + +_PACCEPTEVENT = _descriptor.Descriptor( + name='PAcceptEvent', + full_name='v1.PAcceptEvent', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='rpc', full_name='v1.PAcceptEvent.rpc', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='endPoint', full_name='v1.PAcceptEvent.endPoint', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='remoteAddr', full_name='v1.PAcceptEvent.remoteAddr', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='parentInfo', full_name='v1.PAcceptEvent.parentInfo', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=651, + serialized_end=753, +) + + +_PPARENTINFO = _descriptor.Descriptor( + name='PParentInfo', + full_name='v1.PParentInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='parentApplicationName', full_name='v1.PParentInfo.parentApplicationName', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='parentApplicationType', full_name='v1.PParentInfo.parentApplicationType', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='acceptorHost', full_name='v1.PParentInfo.acceptorHost', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=755, + serialized_end=852, +) + + +_PLOCALASYNCID = _descriptor.Descriptor( + name='PLocalAsyncId', + full_name='v1.PLocalAsyncId', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='asyncId', full_name='v1.PLocalAsyncId.asyncId', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sequence', full_name='v1.PLocalAsyncId.sequence', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=854, + serialized_end=904, +) + + +_PSPANEVENT = _descriptor.Descriptor( + name='PSpanEvent', + full_name='v1.PSpanEvent', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='sequence', full_name='v1.PSpanEvent.sequence', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='depth', full_name='v1.PSpanEvent.depth', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='startElapsed', full_name='v1.PSpanEvent.startElapsed', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='endElapsed', full_name='v1.PSpanEvent.endElapsed', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='serviceType', full_name='v1.PSpanEvent.serviceType', index=4, + number=5, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='annotation', full_name='v1.PSpanEvent.annotation', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='apiId', full_name='v1.PSpanEvent.apiId', index=6, + number=10, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='exceptionInfo', full_name='v1.PSpanEvent.exceptionInfo', index=7, + number=11, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='nextEvent', full_name='v1.PSpanEvent.nextEvent', index=8, + number=12, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='asyncEvent', full_name='v1.PSpanEvent.asyncEvent', index=9, + number=13, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=907, + serialized_end=1160, +) + + +_PNEXTEVENT = _descriptor.Descriptor( + name='PNextEvent', + full_name='v1.PNextEvent', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='messageEvent', full_name='v1.PNextEvent.messageEvent', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='field', full_name='v1.PNextEvent.field', + index=0, containing_type=None, fields=[]), + ], + serialized_start=1162, + serialized_end=1226, +) + + +_PMESSAGEEVENT = _descriptor.Descriptor( + name='PMessageEvent', + full_name='v1.PMessageEvent', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='nextSpanId', full_name='v1.PMessageEvent.nextSpanId', index=0, + number=1, type=16, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='endPoint', full_name='v1.PMessageEvent.endPoint', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='destinationId', full_name='v1.PMessageEvent.destinationId', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1228, + serialized_end=1304, +) + + +_PSPANCHUNK = _descriptor.Descriptor( + name='PSpanChunk', + full_name='v1.PSpanChunk', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='version', full_name='v1.PSpanChunk.version', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='transactionId', full_name='v1.PSpanChunk.transactionId', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='spanId', full_name='v1.PSpanChunk.spanId', index=2, + number=3, type=16, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='endPoint', full_name='v1.PSpanChunk.endPoint', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='spanEvent', full_name='v1.PSpanChunk.spanEvent', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='applicationServiceType', full_name='v1.PSpanChunk.applicationServiceType', index=5, + number=6, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='keyTime', full_name='v1.PSpanChunk.keyTime', index=6, + number=7, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='localAsyncId', full_name='v1.PSpanChunk.localAsyncId', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1307, + serialized_end=1538, +) + + +_PRESULT = _descriptor.Descriptor( + name='PResult', + full_name='v1.PResult', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='success', full_name='v1.PResult.success', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='message', full_name='v1.PResult.message', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1540, + serialized_end=1583, +) + + +_PSQLMETADATA = _descriptor.Descriptor( + name='PSqlMetaData', + full_name='v1.PSqlMetaData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='sqlId', full_name='v1.PSqlMetaData.sqlId', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sql', full_name='v1.PSqlMetaData.sql', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1585, + serialized_end=1627, +) + + +_PAPIMETADATA = _descriptor.Descriptor( + name='PApiMetaData', + full_name='v1.PApiMetaData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='apiId', full_name='v1.PApiMetaData.apiId', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='apiInfo', full_name='v1.PApiMetaData.apiInfo', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='line', full_name='v1.PApiMetaData.line', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='type', full_name='v1.PApiMetaData.type', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1629, + serialized_end=1703, +) + + +_PSTRINGMETADATA = _descriptor.Descriptor( + name='PStringMetaData', + full_name='v1.PStringMetaData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='stringId', full_name='v1.PStringMetaData.stringId', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stringValue', full_name='v1.PStringMetaData.stringValue', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1705, + serialized_end=1761, +) + +_PSPANMESSAGE.fields_by_name['span'].message_type = _PSPAN +_PSPANMESSAGE.fields_by_name['spanChunk'].message_type = _PSPANCHUNK +_PSPANMESSAGE.oneofs_by_name['field'].fields.append( + _PSPANMESSAGE.fields_by_name['span']) +_PSPANMESSAGE.fields_by_name['span'].containing_oneof = _PSPANMESSAGE.oneofs_by_name['field'] +_PSPANMESSAGE.oneofs_by_name['field'].fields.append( + _PSPANMESSAGE.fields_by_name['spanChunk']) +_PSPANMESSAGE.fields_by_name['spanChunk'].containing_oneof = _PSPANMESSAGE.oneofs_by_name['field'] +_PSPAN.fields_by_name['transactionId'].message_type = _PTRANSACTIONID +_PSPAN.fields_by_name['acceptEvent'].message_type = _PACCEPTEVENT +_PSPAN.fields_by_name['annotation'].message_type = Annotation__pb2._PANNOTATION +_PSPAN.fields_by_name['spanEvent'].message_type = _PSPANEVENT +_PSPAN.fields_by_name['exceptionInfo'].message_type = Annotation__pb2._PINTSTRINGVALUE +_PACCEPTEVENT.fields_by_name['parentInfo'].message_type = _PPARENTINFO +_PSPANEVENT.fields_by_name['annotation'].message_type = Annotation__pb2._PANNOTATION +_PSPANEVENT.fields_by_name['exceptionInfo'].message_type = Annotation__pb2._PINTSTRINGVALUE +_PSPANEVENT.fields_by_name['nextEvent'].message_type = _PNEXTEVENT +_PNEXTEVENT.fields_by_name['messageEvent'].message_type = _PMESSAGEEVENT +_PNEXTEVENT.oneofs_by_name['field'].fields.append( + _PNEXTEVENT.fields_by_name['messageEvent']) +_PNEXTEVENT.fields_by_name['messageEvent'].containing_oneof = _PNEXTEVENT.oneofs_by_name['field'] +_PSPANCHUNK.fields_by_name['transactionId'].message_type = _PTRANSACTIONID +_PSPANCHUNK.fields_by_name['spanEvent'].message_type = _PSPANEVENT +_PSPANCHUNK.fields_by_name['localAsyncId'].message_type = _PLOCALASYNCID +DESCRIPTOR.message_types_by_name['PSpanMessage'] = _PSPANMESSAGE +DESCRIPTOR.message_types_by_name['PSpan'] = _PSPAN +DESCRIPTOR.message_types_by_name['PTransactionId'] = _PTRANSACTIONID +DESCRIPTOR.message_types_by_name['PAcceptEvent'] = _PACCEPTEVENT +DESCRIPTOR.message_types_by_name['PParentInfo'] = _PPARENTINFO +DESCRIPTOR.message_types_by_name['PLocalAsyncId'] = _PLOCALASYNCID +DESCRIPTOR.message_types_by_name['PSpanEvent'] = _PSPANEVENT +DESCRIPTOR.message_types_by_name['PNextEvent'] = _PNEXTEVENT +DESCRIPTOR.message_types_by_name['PMessageEvent'] = _PMESSAGEEVENT +DESCRIPTOR.message_types_by_name['PSpanChunk'] = _PSPANCHUNK +DESCRIPTOR.message_types_by_name['PResult'] = _PRESULT +DESCRIPTOR.message_types_by_name['PSqlMetaData'] = _PSQLMETADATA +DESCRIPTOR.message_types_by_name['PApiMetaData'] = _PAPIMETADATA +DESCRIPTOR.message_types_by_name['PStringMetaData'] = _PSTRINGMETADATA +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +PSpanMessage = _reflection.GeneratedProtocolMessageType('PSpanMessage', (_message.Message,), { + 'DESCRIPTOR' : _PSPANMESSAGE, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PSpanMessage) + }) +_sym_db.RegisterMessage(PSpanMessage) + +PSpan = _reflection.GeneratedProtocolMessageType('PSpan', (_message.Message,), { + 'DESCRIPTOR' : _PSPAN, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PSpan) + }) +_sym_db.RegisterMessage(PSpan) + +PTransactionId = _reflection.GeneratedProtocolMessageType('PTransactionId', (_message.Message,), { + 'DESCRIPTOR' : _PTRANSACTIONID, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PTransactionId) + }) +_sym_db.RegisterMessage(PTransactionId) + +PAcceptEvent = _reflection.GeneratedProtocolMessageType('PAcceptEvent', (_message.Message,), { + 'DESCRIPTOR' : _PACCEPTEVENT, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PAcceptEvent) + }) +_sym_db.RegisterMessage(PAcceptEvent) + +PParentInfo = _reflection.GeneratedProtocolMessageType('PParentInfo', (_message.Message,), { + 'DESCRIPTOR' : _PPARENTINFO, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PParentInfo) + }) +_sym_db.RegisterMessage(PParentInfo) + +PLocalAsyncId = _reflection.GeneratedProtocolMessageType('PLocalAsyncId', (_message.Message,), { + 'DESCRIPTOR' : _PLOCALASYNCID, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PLocalAsyncId) + }) +_sym_db.RegisterMessage(PLocalAsyncId) + +PSpanEvent = _reflection.GeneratedProtocolMessageType('PSpanEvent', (_message.Message,), { + 'DESCRIPTOR' : _PSPANEVENT, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PSpanEvent) + }) +_sym_db.RegisterMessage(PSpanEvent) + +PNextEvent = _reflection.GeneratedProtocolMessageType('PNextEvent', (_message.Message,), { + 'DESCRIPTOR' : _PNEXTEVENT, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PNextEvent) + }) +_sym_db.RegisterMessage(PNextEvent) + +PMessageEvent = _reflection.GeneratedProtocolMessageType('PMessageEvent', (_message.Message,), { + 'DESCRIPTOR' : _PMESSAGEEVENT, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PMessageEvent) + }) +_sym_db.RegisterMessage(PMessageEvent) + +PSpanChunk = _reflection.GeneratedProtocolMessageType('PSpanChunk', (_message.Message,), { + 'DESCRIPTOR' : _PSPANCHUNK, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PSpanChunk) + }) +_sym_db.RegisterMessage(PSpanChunk) + +PResult = _reflection.GeneratedProtocolMessageType('PResult', (_message.Message,), { + 'DESCRIPTOR' : _PRESULT, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PResult) + }) +_sym_db.RegisterMessage(PResult) + +PSqlMetaData = _reflection.GeneratedProtocolMessageType('PSqlMetaData', (_message.Message,), { + 'DESCRIPTOR' : _PSQLMETADATA, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PSqlMetaData) + }) +_sym_db.RegisterMessage(PSqlMetaData) + +PApiMetaData = _reflection.GeneratedProtocolMessageType('PApiMetaData', (_message.Message,), { + 'DESCRIPTOR' : _PAPIMETADATA, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PApiMetaData) + }) +_sym_db.RegisterMessage(PApiMetaData) + +PStringMetaData = _reflection.GeneratedProtocolMessageType('PStringMetaData', (_message.Message,), { + 'DESCRIPTOR' : _PSTRINGMETADATA, + '__module__' : 'Span_pb2' + # @@protoc_insertion_point(class_scope:v1.PStringMetaData) + }) +_sym_db.RegisterMessage(PStringMetaData) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Span_pb2_grpc.py b/collector-agent/Proto/grpc/Span_pb2_grpc.py new file mode 100644 index 000000000..a89435267 --- /dev/null +++ b/collector-agent/Proto/grpc/Span_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + diff --git a/collector-agent/Proto/grpc/Stat.proto b/collector-agent/Proto/grpc/Stat.proto new file mode 100644 index 000000000..5fbdf53de --- /dev/null +++ b/collector-agent/Proto/grpc/Stat.proto @@ -0,0 +1,160 @@ +syntax = "proto3"; + +import "google/protobuf/empty.proto"; +import "ThreadDump.proto"; + +option java_multiple_files = true; +option java_package = "com.navercorp.pinpoint.grpc.trace"; +option java_outer_classname = "StatProto"; +option objc_class_prefix = "PIN"; + +package v1; + +message PPing { +} + +message PStatMessage { + oneof field { + PAgentStat agentStat = 1; + PAgentStatBatch agentStatBatch = 2; + } +} + +message PAgentInfo { + string hostname = 1; + string ip = 2; + string ports = 3; + int32 serviceType = 4; + int32 pid = 5; + string agentVersion = 6; + string vmVersion = 7; + int64 endTimestamp = 8; + int32 endStatus = 9; + PServerMetaData serverMetaData = 10; + PJvmInfo jvmInfo = 11; + bool container = 12; +} + +message PServerMetaData { + string serverInfo = 1; + repeated string vmArg = 2; + repeated PServiceInfo serviceInfo = 3; +} + +message PServiceInfo { + string serviceName = 1; + repeated string serviceLib = 2; +} + +message PJvmInfo { + int32 version = 1; + string vmVersion = 2; + PJvmGcType gcType = 3; +} + +enum PJvmGcType { + JVM_GC_TYPE_UNKNOWN = 0; + JVM_GC_TYPE_SERIAL = 1; + JVM_GC_TYPE_PARALLEL = 2; + JVM_GC_TYPE_CMS = 3; + JVM_GC_TYPE_G1 = 4; +} + +message PAgentStat { + int64 timestamp = 1; + int64 collectInterval =2; + PJvmGc gc = 3; + PCpuLoad cpuLoad = 4; + PTransaction transaction = 5; + PActiveTrace activeTrace = 6; + PDataSourceList dataSourceList = 7; + PResponseTime responseTime = 8; + PDeadlock deadlock = 9; + PFileDescriptor fileDescriptor = 10; + PDirectBuffer directBuffer = 11; + string metadata = 12; +} + +message PAgentStatBatch { + repeated PAgentStat agentStat = 1; +} + +message PDataSource { + int32 id = 1; + int32 serviceTypeCode = 2; + string databaseName = 3; + string url = 4; + int32 activeConnectionSize = 5; + int32 maxConnectionSize = 6; +} + +message PDataSourceList { + repeated PDataSource dataSource = 1; +} + +message PFileDescriptor { + int64 openFileDescriptorCount = 1; +} + +message PJvmGc { + PJvmGcType type = 1; + int64 jvmMemoryHeapUsed = 2; + int64 jvmMemoryHeapMax = 3; + int64 jvmMemoryNonHeapUsed = 4; + int64 jvmMemoryNonHeapMax = 5; + int64 jvmGcOldCount = 6; + int64 jvmGcOldTime = 7; + PJvmGcDetailed jvmGcDetailed = 8; +} + +message PJvmGcDetailed { + int64 jvmGcNewCount = 1; + int64 jvmGcNewTime = 2; + double jvmPoolCodeCacheUsed = 3; + double jvmPoolNewGenUsed = 4; + double jvmPoolOldGenUsed = 5; + double jvmPoolSurvivorSpaceUsed = 6; + double jvmPoolPermGenUsed = 7; + double jvmPoolMetaspaceUsed = 8; +} + +message PCpuLoad { + double jvmCpuLoad = 1; + double systemCpuLoad = 2; +} + +message PTransaction { + int64 sampledNewCount = 2; + int64 sampledContinuationCount = 3; + int64 unsampledNewCount = 4; + int64 unsampledContinuationCount = 5; + int64 skippedNewCount = 6; + int64 skippedContinuationCount = 7; +} + +message PActiveTraceHistogram { + int32 version = 1; + int32 histogramSchemaType = 2; + repeated int32 activeTraceCount = 3; +} + +message PActiveTrace { + PActiveTraceHistogram histogram = 1; +} + +message PResponseTime { + int64 avg = 1; + int64 max = 2; +} + +message PDeadlock { + int32 count = 1; + repeated PThreadDump threadDump = 2; +} + +message PDirectBuffer { + int64 directCount = 1; + int64 directMemoryUsed = 2; + int64 mappedCount = 3; + int64 mappedMemoryUsed = 4; +} \ No newline at end of file diff --git a/collector-agent/Proto/grpc/Stat_pb2.py b/collector-agent/Proto/grpc/Stat_pb2.py new file mode 100644 index 000000000..391ffa066 --- /dev/null +++ b/collector-agent/Proto/grpc/Stat_pb2.py @@ -0,0 +1,1300 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: Stat.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +import ThreadDump_pb2 as ThreadDump__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='Stat.proto', + package='v1', + syntax='proto3', + serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\tStatProtoP\001\242\002\003PIN'), + serialized_pb=_b('\n\nStat.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x10ThreadDump.proto\"\x07\n\x05PPing\"k\n\x0cPStatMessage\x12#\n\tagentStat\x18\x01 \x01(\x0b\x32\x0e.v1.PAgentStatH\x00\x12-\n\x0e\x61gentStatBatch\x18\x02 \x01(\x0b\x32\x13.v1.PAgentStatBatchH\x00\x42\x07\n\x05\x66ield\"\x8c\x02\n\nPAgentInfo\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\n\n\x02ip\x18\x02 \x01(\t\x12\r\n\x05ports\x18\x03 \x01(\t\x12\x13\n\x0bserviceType\x18\x04 \x01(\x05\x12\x0b\n\x03pid\x18\x05 \x01(\x05\x12\x14\n\x0c\x61gentVersion\x18\x06 \x01(\t\x12\x11\n\tvmVersion\x18\x07 \x01(\t\x12\x14\n\x0c\x65ndTimestamp\x18\x08 \x01(\x03\x12\x11\n\tendStatus\x18\t \x01(\x05\x12+\n\x0eserverMetaData\x18\n \x01(\x0b\x32\x13.v1.PServerMetaData\x12\x1d\n\x07jvmInfo\x18\x0b \x01(\x0b\x32\x0c.v1.PJvmInfo\x12\x11\n\tcontainer\x18\x0c \x01(\x08\"[\n\x0fPServerMetaData\x12\x12\n\nserverInfo\x18\x01 \x01(\t\x12\r\n\x05vmArg\x18\x02 \x03(\t\x12%\n\x0bserviceInfo\x18\x03 \x03(\x0b\x32\x10.v1.PServiceInfo\"7\n\x0cPServiceInfo\x12\x13\n\x0bserviceName\x18\x01 \x01(\t\x12\x12\n\nserviceLib\x18\x02 \x03(\t\"N\n\x08PJvmInfo\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x11\n\tvmVersion\x18\x02 \x01(\t\x12\x1e\n\x06gcType\x18\x03 \x01(\x0e\x32\x0e.v1.PJvmGcType\"\x9c\x03\n\nPAgentStat\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\x12\x17\n\x0f\x63ollectInterval\x18\x02 \x01(\x03\x12\x16\n\x02gc\x18\x03 \x01(\x0b\x32\n.v1.PJvmGc\x12\x1d\n\x07\x63puLoad\x18\x04 \x01(\x0b\x32\x0c.v1.PCpuLoad\x12%\n\x0btransaction\x18\x05 \x01(\x0b\x32\x10.v1.PTransaction\x12%\n\x0b\x61\x63tiveTrace\x18\x06 \x01(\x0b\x32\x10.v1.PActiveTrace\x12+\n\x0e\x64\x61taSourceList\x18\x07 \x01(\x0b\x32\x13.v1.PDataSourceList\x12\'\n\x0cresponseTime\x18\x08 \x01(\x0b\x32\x11.v1.PResponseTime\x12\x1f\n\x08\x64\x65\x61\x64lock\x18\t \x01(\x0b\x32\r.v1.PDeadlock\x12+\n\x0e\x66ileDescriptor\x18\n \x01(\x0b\x32\x13.v1.PFileDescriptor\x12\'\n\x0c\x64irectBuffer\x18\x0b \x01(\x0b\x32\x11.v1.PDirectBuffer\x12\x10\n\x08metadata\x18\x0c \x01(\t\"4\n\x0fPAgentStatBatch\x12!\n\tagentStat\x18\x01 \x03(\x0b\x32\x0e.v1.PAgentStat\"\x8e\x01\n\x0bPDataSource\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x17\n\x0fserviceTypeCode\x18\x02 \x01(\x05\x12\x14\n\x0c\x64\x61tabaseName\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x1c\n\x14\x61\x63tiveConnectionSize\x18\x05 \x01(\x05\x12\x19\n\x11maxConnectionSize\x18\x06 \x01(\x05\"6\n\x0fPDataSourceList\x12#\n\ndataSource\x18\x01 \x03(\x0b\x32\x0f.v1.PDataSource\"2\n\x0fPFileDescriptor\x12\x1f\n\x17openFileDescriptorCount\x18\x01 \x01(\x03\"\xee\x01\n\x06PJvmGc\x12\x1c\n\x04type\x18\x01 \x01(\x0e\x32\x0e.v1.PJvmGcType\x12\x19\n\x11jvmMemoryHeapUsed\x18\x02 \x01(\x03\x12\x18\n\x10jvmMemoryHeapMax\x18\x03 \x01(\x03\x12\x1c\n\x14jvmMemoryNonHeapUsed\x18\x04 \x01(\x03\x12\x1b\n\x13jvmMemoryNonHeapMax\x18\x05 \x01(\x03\x12\x15\n\rjvmGcOldCount\x18\x06 \x01(\x03\x12\x14\n\x0cjvmGcOldTime\x18\x07 \x01(\x03\x12)\n\rjvmGcDetailed\x18\x08 \x01(\x0b\x32\x12.v1.PJvmGcDetailed\"\xed\x01\n\x0ePJvmGcDetailed\x12\x15\n\rjvmGcNewCount\x18\x01 \x01(\x03\x12\x14\n\x0cjvmGcNewTime\x18\x02 \x01(\x03\x12\x1c\n\x14jvmPoolCodeCacheUsed\x18\x03 \x01(\x01\x12\x19\n\x11jvmPoolNewGenUsed\x18\x04 \x01(\x01\x12\x19\n\x11jvmPoolOldGenUsed\x18\x05 \x01(\x01\x12 \n\x18jvmPoolSurvivorSpaceUsed\x18\x06 \x01(\x01\x12\x1a\n\x12jvmPoolPermGenUsed\x18\x07 \x01(\x01\x12\x1c\n\x14jvmPoolMetaspaceUsed\x18\x08 \x01(\x01\"5\n\x08PCpuLoad\x12\x12\n\njvmCpuLoad\x18\x01 \x01(\x01\x12\x15\n\rsystemCpuLoad\x18\x02 \x01(\x01\"\xc3\x01\n\x0cPTransaction\x12\x17\n\x0fsampledNewCount\x18\x02 \x01(\x03\x12 \n\x18sampledContinuationCount\x18\x03 \x01(\x03\x12\x19\n\x11unsampledNewCount\x18\x04 \x01(\x03\x12\"\n\x1aunsampledContinuationCount\x18\x05 \x01(\x03\x12\x17\n\x0fskippedNewCount\x18\x06 \x01(\x03\x12 \n\x18skippedContinuationCount\x18\x07 \x01(\x03\"_\n\x15PActiveTraceHistogram\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x1b\n\x13histogramSchemaType\x18\x02 \x01(\x05\x12\x18\n\x10\x61\x63tiveTraceCount\x18\x03 \x03(\x05\"<\n\x0cPActiveTrace\x12,\n\thistogram\x18\x01 \x01(\x0b\x32\x19.v1.PActiveTraceHistogram\")\n\rPResponseTime\x12\x0b\n\x03\x61vg\x18\x01 \x01(\x03\x12\x0b\n\x03max\x18\x02 \x01(\x03\"?\n\tPDeadlock\x12\r\n\x05\x63ount\x18\x01 \x01(\x05\x12#\n\nthreadDump\x18\x02 \x03(\x0b\x32\x0f.v1.PThreadDump\"m\n\rPDirectBuffer\x12\x13\n\x0b\x64irectCount\x18\x01 \x01(\x03\x12\x18\n\x10\x64irectMemoryUsed\x18\x02 \x01(\x03\x12\x13\n\x0bmappedCount\x18\x03 \x01(\x03\x12\x18\n\x10mappedMemoryUsed\x18\x04 \x01(\x03*\x80\x01\n\nPJvmGcType\x12\x17\n\x13JVM_GC_TYPE_UNKNOWN\x10\x00\x12\x16\n\x12JVM_GC_TYPE_SERIAL\x10\x01\x12\x18\n\x14JVM_GC_TYPE_PARALLEL\x10\x02\x12\x13\n\x0fJVM_GC_TYPE_CMS\x10\x03\x12\x12\n\x0eJVM_GC_TYPE_G1\x10\x04\x42\x36\n!com.navercorp.pinpoint.grpc.traceB\tStatProtoP\x01\xa2\x02\x03PINb\x06proto3') + , + dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,ThreadDump__pb2.DESCRIPTOR,]) + +_PJVMGCTYPE = _descriptor.EnumDescriptor( + name='PJvmGcType', + full_name='v1.PJvmGcType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='JVM_GC_TYPE_UNKNOWN', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='JVM_GC_TYPE_SERIAL', index=1, number=1, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='JVM_GC_TYPE_PARALLEL', index=2, number=2, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='JVM_GC_TYPE_CMS', index=3, number=3, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='JVM_GC_TYPE_G1', index=4, number=4, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=2519, + serialized_end=2647, +) +_sym_db.RegisterEnumDescriptor(_PJVMGCTYPE) + +PJvmGcType = enum_type_wrapper.EnumTypeWrapper(_PJVMGCTYPE) +JVM_GC_TYPE_UNKNOWN = 0 +JVM_GC_TYPE_SERIAL = 1 +JVM_GC_TYPE_PARALLEL = 2 +JVM_GC_TYPE_CMS = 3 +JVM_GC_TYPE_G1 = 4 + + + +_PPING = _descriptor.Descriptor( + name='PPing', + full_name='v1.PPing', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=65, + serialized_end=72, +) + + +_PSTATMESSAGE = _descriptor.Descriptor( + name='PStatMessage', + full_name='v1.PStatMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='agentStat', full_name='v1.PStatMessage.agentStat', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='agentStatBatch', full_name='v1.PStatMessage.agentStatBatch', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='field', full_name='v1.PStatMessage.field', + index=0, containing_type=None, fields=[]), + ], + serialized_start=74, + serialized_end=181, +) + + +_PAGENTINFO = _descriptor.Descriptor( + name='PAgentInfo', + full_name='v1.PAgentInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='hostname', full_name='v1.PAgentInfo.hostname', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='ip', full_name='v1.PAgentInfo.ip', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='ports', full_name='v1.PAgentInfo.ports', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='serviceType', full_name='v1.PAgentInfo.serviceType', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='pid', full_name='v1.PAgentInfo.pid', index=4, + number=5, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='agentVersion', full_name='v1.PAgentInfo.agentVersion', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='vmVersion', full_name='v1.PAgentInfo.vmVersion', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='endTimestamp', full_name='v1.PAgentInfo.endTimestamp', index=7, + number=8, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='endStatus', full_name='v1.PAgentInfo.endStatus', index=8, + number=9, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='serverMetaData', full_name='v1.PAgentInfo.serverMetaData', index=9, + number=10, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmInfo', full_name='v1.PAgentInfo.jvmInfo', index=10, + number=11, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='container', full_name='v1.PAgentInfo.container', index=11, + number=12, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=184, + serialized_end=452, +) + + +_PSERVERMETADATA = _descriptor.Descriptor( + name='PServerMetaData', + full_name='v1.PServerMetaData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='serverInfo', full_name='v1.PServerMetaData.serverInfo', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='vmArg', full_name='v1.PServerMetaData.vmArg', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='serviceInfo', full_name='v1.PServerMetaData.serviceInfo', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=454, + serialized_end=545, +) + + +_PSERVICEINFO = _descriptor.Descriptor( + name='PServiceInfo', + full_name='v1.PServiceInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='serviceName', full_name='v1.PServiceInfo.serviceName', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='serviceLib', full_name='v1.PServiceInfo.serviceLib', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=547, + serialized_end=602, +) + + +_PJVMINFO = _descriptor.Descriptor( + name='PJvmInfo', + full_name='v1.PJvmInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='version', full_name='v1.PJvmInfo.version', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='vmVersion', full_name='v1.PJvmInfo.vmVersion', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='gcType', full_name='v1.PJvmInfo.gcType', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=604, + serialized_end=682, +) + + +_PAGENTSTAT = _descriptor.Descriptor( + name='PAgentStat', + full_name='v1.PAgentStat', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='timestamp', full_name='v1.PAgentStat.timestamp', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='collectInterval', full_name='v1.PAgentStat.collectInterval', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='gc', full_name='v1.PAgentStat.gc', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='cpuLoad', full_name='v1.PAgentStat.cpuLoad', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='transaction', full_name='v1.PAgentStat.transaction', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='activeTrace', full_name='v1.PAgentStat.activeTrace', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='dataSourceList', full_name='v1.PAgentStat.dataSourceList', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='responseTime', full_name='v1.PAgentStat.responseTime', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='deadlock', full_name='v1.PAgentStat.deadlock', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='fileDescriptor', full_name='v1.PAgentStat.fileDescriptor', index=9, + number=10, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='directBuffer', full_name='v1.PAgentStat.directBuffer', index=10, + number=11, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='metadata', full_name='v1.PAgentStat.metadata', index=11, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=685, + serialized_end=1097, +) + + +_PAGENTSTATBATCH = _descriptor.Descriptor( + name='PAgentStatBatch', + full_name='v1.PAgentStatBatch', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='agentStat', full_name='v1.PAgentStatBatch.agentStat', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1099, + serialized_end=1151, +) + + +_PDATASOURCE = _descriptor.Descriptor( + name='PDataSource', + full_name='v1.PDataSource', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='v1.PDataSource.id', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='serviceTypeCode', full_name='v1.PDataSource.serviceTypeCode', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='databaseName', full_name='v1.PDataSource.databaseName', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='url', full_name='v1.PDataSource.url', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='activeConnectionSize', full_name='v1.PDataSource.activeConnectionSize', index=4, + number=5, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='maxConnectionSize', full_name='v1.PDataSource.maxConnectionSize', index=5, + number=6, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1154, + serialized_end=1296, +) + + +_PDATASOURCELIST = _descriptor.Descriptor( + name='PDataSourceList', + full_name='v1.PDataSourceList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='dataSource', full_name='v1.PDataSourceList.dataSource', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1298, + serialized_end=1352, +) + + +_PFILEDESCRIPTOR = _descriptor.Descriptor( + name='PFileDescriptor', + full_name='v1.PFileDescriptor', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='openFileDescriptorCount', full_name='v1.PFileDescriptor.openFileDescriptorCount', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1354, + serialized_end=1404, +) + + +_PJVMGC = _descriptor.Descriptor( + name='PJvmGc', + full_name='v1.PJvmGc', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='v1.PJvmGc.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmMemoryHeapUsed', full_name='v1.PJvmGc.jvmMemoryHeapUsed', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmMemoryHeapMax', full_name='v1.PJvmGc.jvmMemoryHeapMax', index=2, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmMemoryNonHeapUsed', full_name='v1.PJvmGc.jvmMemoryNonHeapUsed', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmMemoryNonHeapMax', full_name='v1.PJvmGc.jvmMemoryNonHeapMax', index=4, + number=5, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmGcOldCount', full_name='v1.PJvmGc.jvmGcOldCount', index=5, + number=6, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmGcOldTime', full_name='v1.PJvmGc.jvmGcOldTime', index=6, + number=7, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmGcDetailed', full_name='v1.PJvmGc.jvmGcDetailed', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1407, + serialized_end=1645, +) + + +_PJVMGCDETAILED = _descriptor.Descriptor( + name='PJvmGcDetailed', + full_name='v1.PJvmGcDetailed', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='jvmGcNewCount', full_name='v1.PJvmGcDetailed.jvmGcNewCount', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmGcNewTime', full_name='v1.PJvmGcDetailed.jvmGcNewTime', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmPoolCodeCacheUsed', full_name='v1.PJvmGcDetailed.jvmPoolCodeCacheUsed', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmPoolNewGenUsed', full_name='v1.PJvmGcDetailed.jvmPoolNewGenUsed', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmPoolOldGenUsed', full_name='v1.PJvmGcDetailed.jvmPoolOldGenUsed', index=4, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmPoolSurvivorSpaceUsed', full_name='v1.PJvmGcDetailed.jvmPoolSurvivorSpaceUsed', index=5, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmPoolPermGenUsed', full_name='v1.PJvmGcDetailed.jvmPoolPermGenUsed', index=6, + number=7, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='jvmPoolMetaspaceUsed', full_name='v1.PJvmGcDetailed.jvmPoolMetaspaceUsed', index=7, + number=8, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1648, + serialized_end=1885, +) + + +_PCPULOAD = _descriptor.Descriptor( + name='PCpuLoad', + full_name='v1.PCpuLoad', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='jvmCpuLoad', full_name='v1.PCpuLoad.jvmCpuLoad', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='systemCpuLoad', full_name='v1.PCpuLoad.systemCpuLoad', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1887, + serialized_end=1940, +) + + +_PTRANSACTION = _descriptor.Descriptor( + name='PTransaction', + full_name='v1.PTransaction', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='sampledNewCount', full_name='v1.PTransaction.sampledNewCount', index=0, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sampledContinuationCount', full_name='v1.PTransaction.sampledContinuationCount', index=1, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='unsampledNewCount', full_name='v1.PTransaction.unsampledNewCount', index=2, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='unsampledContinuationCount', full_name='v1.PTransaction.unsampledContinuationCount', index=3, + number=5, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='skippedNewCount', full_name='v1.PTransaction.skippedNewCount', index=4, + number=6, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='skippedContinuationCount', full_name='v1.PTransaction.skippedContinuationCount', index=5, + number=7, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1943, + serialized_end=2138, +) + + +_PACTIVETRACEHISTOGRAM = _descriptor.Descriptor( + name='PActiveTraceHistogram', + full_name='v1.PActiveTraceHistogram', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='version', full_name='v1.PActiveTraceHistogram.version', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='histogramSchemaType', full_name='v1.PActiveTraceHistogram.histogramSchemaType', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='activeTraceCount', full_name='v1.PActiveTraceHistogram.activeTraceCount', index=2, + number=3, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2140, + serialized_end=2235, +) + + +_PACTIVETRACE = _descriptor.Descriptor( + name='PActiveTrace', + full_name='v1.PActiveTrace', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='histogram', full_name='v1.PActiveTrace.histogram', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2237, + serialized_end=2297, +) + + +_PRESPONSETIME = _descriptor.Descriptor( + name='PResponseTime', + full_name='v1.PResponseTime', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='avg', full_name='v1.PResponseTime.avg', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='max', full_name='v1.PResponseTime.max', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2299, + serialized_end=2340, +) + + +_PDEADLOCK = _descriptor.Descriptor( + name='PDeadlock', + full_name='v1.PDeadlock', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='count', full_name='v1.PDeadlock.count', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadDump', full_name='v1.PDeadlock.threadDump', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2342, + serialized_end=2405, +) + + +_PDIRECTBUFFER = _descriptor.Descriptor( + name='PDirectBuffer', + full_name='v1.PDirectBuffer', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='directCount', full_name='v1.PDirectBuffer.directCount', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='directMemoryUsed', full_name='v1.PDirectBuffer.directMemoryUsed', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='mappedCount', full_name='v1.PDirectBuffer.mappedCount', index=2, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='mappedMemoryUsed', full_name='v1.PDirectBuffer.mappedMemoryUsed', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2407, + serialized_end=2516, +) + +_PSTATMESSAGE.fields_by_name['agentStat'].message_type = _PAGENTSTAT +_PSTATMESSAGE.fields_by_name['agentStatBatch'].message_type = _PAGENTSTATBATCH +_PSTATMESSAGE.oneofs_by_name['field'].fields.append( + _PSTATMESSAGE.fields_by_name['agentStat']) +_PSTATMESSAGE.fields_by_name['agentStat'].containing_oneof = _PSTATMESSAGE.oneofs_by_name['field'] +_PSTATMESSAGE.oneofs_by_name['field'].fields.append( + _PSTATMESSAGE.fields_by_name['agentStatBatch']) +_PSTATMESSAGE.fields_by_name['agentStatBatch'].containing_oneof = _PSTATMESSAGE.oneofs_by_name['field'] +_PAGENTINFO.fields_by_name['serverMetaData'].message_type = _PSERVERMETADATA +_PAGENTINFO.fields_by_name['jvmInfo'].message_type = _PJVMINFO +_PSERVERMETADATA.fields_by_name['serviceInfo'].message_type = _PSERVICEINFO +_PJVMINFO.fields_by_name['gcType'].enum_type = _PJVMGCTYPE +_PAGENTSTAT.fields_by_name['gc'].message_type = _PJVMGC +_PAGENTSTAT.fields_by_name['cpuLoad'].message_type = _PCPULOAD +_PAGENTSTAT.fields_by_name['transaction'].message_type = _PTRANSACTION +_PAGENTSTAT.fields_by_name['activeTrace'].message_type = _PACTIVETRACE +_PAGENTSTAT.fields_by_name['dataSourceList'].message_type = _PDATASOURCELIST +_PAGENTSTAT.fields_by_name['responseTime'].message_type = _PRESPONSETIME +_PAGENTSTAT.fields_by_name['deadlock'].message_type = _PDEADLOCK +_PAGENTSTAT.fields_by_name['fileDescriptor'].message_type = _PFILEDESCRIPTOR +_PAGENTSTAT.fields_by_name['directBuffer'].message_type = _PDIRECTBUFFER +_PAGENTSTATBATCH.fields_by_name['agentStat'].message_type = _PAGENTSTAT +_PDATASOURCELIST.fields_by_name['dataSource'].message_type = _PDATASOURCE +_PJVMGC.fields_by_name['type'].enum_type = _PJVMGCTYPE +_PJVMGC.fields_by_name['jvmGcDetailed'].message_type = _PJVMGCDETAILED +_PACTIVETRACE.fields_by_name['histogram'].message_type = _PACTIVETRACEHISTOGRAM +_PDEADLOCK.fields_by_name['threadDump'].message_type = ThreadDump__pb2._PTHREADDUMP +DESCRIPTOR.message_types_by_name['PPing'] = _PPING +DESCRIPTOR.message_types_by_name['PStatMessage'] = _PSTATMESSAGE +DESCRIPTOR.message_types_by_name['PAgentInfo'] = _PAGENTINFO +DESCRIPTOR.message_types_by_name['PServerMetaData'] = _PSERVERMETADATA +DESCRIPTOR.message_types_by_name['PServiceInfo'] = _PSERVICEINFO +DESCRIPTOR.message_types_by_name['PJvmInfo'] = _PJVMINFO +DESCRIPTOR.message_types_by_name['PAgentStat'] = _PAGENTSTAT +DESCRIPTOR.message_types_by_name['PAgentStatBatch'] = _PAGENTSTATBATCH +DESCRIPTOR.message_types_by_name['PDataSource'] = _PDATASOURCE +DESCRIPTOR.message_types_by_name['PDataSourceList'] = _PDATASOURCELIST +DESCRIPTOR.message_types_by_name['PFileDescriptor'] = _PFILEDESCRIPTOR +DESCRIPTOR.message_types_by_name['PJvmGc'] = _PJVMGC +DESCRIPTOR.message_types_by_name['PJvmGcDetailed'] = _PJVMGCDETAILED +DESCRIPTOR.message_types_by_name['PCpuLoad'] = _PCPULOAD +DESCRIPTOR.message_types_by_name['PTransaction'] = _PTRANSACTION +DESCRIPTOR.message_types_by_name['PActiveTraceHistogram'] = _PACTIVETRACEHISTOGRAM +DESCRIPTOR.message_types_by_name['PActiveTrace'] = _PACTIVETRACE +DESCRIPTOR.message_types_by_name['PResponseTime'] = _PRESPONSETIME +DESCRIPTOR.message_types_by_name['PDeadlock'] = _PDEADLOCK +DESCRIPTOR.message_types_by_name['PDirectBuffer'] = _PDIRECTBUFFER +DESCRIPTOR.enum_types_by_name['PJvmGcType'] = _PJVMGCTYPE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +PPing = _reflection.GeneratedProtocolMessageType('PPing', (_message.Message,), { + 'DESCRIPTOR' : _PPING, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PPing) + }) +_sym_db.RegisterMessage(PPing) + +PStatMessage = _reflection.GeneratedProtocolMessageType('PStatMessage', (_message.Message,), { + 'DESCRIPTOR' : _PSTATMESSAGE, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PStatMessage) + }) +_sym_db.RegisterMessage(PStatMessage) + +PAgentInfo = _reflection.GeneratedProtocolMessageType('PAgentInfo', (_message.Message,), { + 'DESCRIPTOR' : _PAGENTINFO, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PAgentInfo) + }) +_sym_db.RegisterMessage(PAgentInfo) + +PServerMetaData = _reflection.GeneratedProtocolMessageType('PServerMetaData', (_message.Message,), { + 'DESCRIPTOR' : _PSERVERMETADATA, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PServerMetaData) + }) +_sym_db.RegisterMessage(PServerMetaData) + +PServiceInfo = _reflection.GeneratedProtocolMessageType('PServiceInfo', (_message.Message,), { + 'DESCRIPTOR' : _PSERVICEINFO, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PServiceInfo) + }) +_sym_db.RegisterMessage(PServiceInfo) + +PJvmInfo = _reflection.GeneratedProtocolMessageType('PJvmInfo', (_message.Message,), { + 'DESCRIPTOR' : _PJVMINFO, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PJvmInfo) + }) +_sym_db.RegisterMessage(PJvmInfo) + +PAgentStat = _reflection.GeneratedProtocolMessageType('PAgentStat', (_message.Message,), { + 'DESCRIPTOR' : _PAGENTSTAT, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PAgentStat) + }) +_sym_db.RegisterMessage(PAgentStat) + +PAgentStatBatch = _reflection.GeneratedProtocolMessageType('PAgentStatBatch', (_message.Message,), { + 'DESCRIPTOR' : _PAGENTSTATBATCH, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PAgentStatBatch) + }) +_sym_db.RegisterMessage(PAgentStatBatch) + +PDataSource = _reflection.GeneratedProtocolMessageType('PDataSource', (_message.Message,), { + 'DESCRIPTOR' : _PDATASOURCE, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PDataSource) + }) +_sym_db.RegisterMessage(PDataSource) + +PDataSourceList = _reflection.GeneratedProtocolMessageType('PDataSourceList', (_message.Message,), { + 'DESCRIPTOR' : _PDATASOURCELIST, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PDataSourceList) + }) +_sym_db.RegisterMessage(PDataSourceList) + +PFileDescriptor = _reflection.GeneratedProtocolMessageType('PFileDescriptor', (_message.Message,), { + 'DESCRIPTOR' : _PFILEDESCRIPTOR, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PFileDescriptor) + }) +_sym_db.RegisterMessage(PFileDescriptor) + +PJvmGc = _reflection.GeneratedProtocolMessageType('PJvmGc', (_message.Message,), { + 'DESCRIPTOR' : _PJVMGC, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PJvmGc) + }) +_sym_db.RegisterMessage(PJvmGc) + +PJvmGcDetailed = _reflection.GeneratedProtocolMessageType('PJvmGcDetailed', (_message.Message,), { + 'DESCRIPTOR' : _PJVMGCDETAILED, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PJvmGcDetailed) + }) +_sym_db.RegisterMessage(PJvmGcDetailed) + +PCpuLoad = _reflection.GeneratedProtocolMessageType('PCpuLoad', (_message.Message,), { + 'DESCRIPTOR' : _PCPULOAD, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PCpuLoad) + }) +_sym_db.RegisterMessage(PCpuLoad) + +PTransaction = _reflection.GeneratedProtocolMessageType('PTransaction', (_message.Message,), { + 'DESCRIPTOR' : _PTRANSACTION, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PTransaction) + }) +_sym_db.RegisterMessage(PTransaction) + +PActiveTraceHistogram = _reflection.GeneratedProtocolMessageType('PActiveTraceHistogram', (_message.Message,), { + 'DESCRIPTOR' : _PACTIVETRACEHISTOGRAM, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PActiveTraceHistogram) + }) +_sym_db.RegisterMessage(PActiveTraceHistogram) + +PActiveTrace = _reflection.GeneratedProtocolMessageType('PActiveTrace', (_message.Message,), { + 'DESCRIPTOR' : _PACTIVETRACE, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PActiveTrace) + }) +_sym_db.RegisterMessage(PActiveTrace) + +PResponseTime = _reflection.GeneratedProtocolMessageType('PResponseTime', (_message.Message,), { + 'DESCRIPTOR' : _PRESPONSETIME, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PResponseTime) + }) +_sym_db.RegisterMessage(PResponseTime) + +PDeadlock = _reflection.GeneratedProtocolMessageType('PDeadlock', (_message.Message,), { + 'DESCRIPTOR' : _PDEADLOCK, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PDeadlock) + }) +_sym_db.RegisterMessage(PDeadlock) + +PDirectBuffer = _reflection.GeneratedProtocolMessageType('PDirectBuffer', (_message.Message,), { + 'DESCRIPTOR' : _PDIRECTBUFFER, + '__module__' : 'Stat_pb2' + # @@protoc_insertion_point(class_scope:v1.PDirectBuffer) + }) +_sym_db.RegisterMessage(PDirectBuffer) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Stat_pb2_grpc.py b/collector-agent/Proto/grpc/Stat_pb2_grpc.py new file mode 100644 index 000000000..a89435267 --- /dev/null +++ b/collector-agent/Proto/grpc/Stat_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + diff --git a/collector-agent/Proto/grpc/ThreadDump.proto b/collector-agent/Proto/grpc/ThreadDump.proto new file mode 100644 index 000000000..ed0db0fa8 --- /dev/null +++ b/collector-agent/Proto/grpc/ThreadDump.proto @@ -0,0 +1,75 @@ +syntax = "proto3"; + +import "google/protobuf/empty.proto"; +import "google/protobuf/wrappers.proto"; + +option java_multiple_files = true; +option java_package = "com.navercorp.pinpoint.grpc.trace"; +option java_outer_classname = "ThreadDumpProto"; +//option objc_class_prefix = "PIN"; + +package v1; + +enum PThreadState { + THREAD_STATE_NEW = 0; + THREAD_STATE_RUNNABLE = 1; + THREAD_STATE_BLOCKED = 2; + THREAD_STATE_WAITING = 3; + THREAD_STATE_TIMED_WAITING = 4; + THREAD_STATE_TERMINATED = 5; + THREAD_STATE_UNKNOWN = 6; +} + +message PMonitorInfo { + int32 stackDepth = 1; + string stackFrame = 2; +} + +message PThreadDump { + string threadName = 1; + int64 threadId = 2; + int64 blockedTime = 3; + int64 blockedCount = 4; + int64 waitedTime = 5; + int64 waitedCount = 6; + string lockName = 7; + int64 lockOwnerId = 8; + string lockOwnerName = 9; + bool inNative = 10; + bool suspended = 11; + PThreadState threadState = 12; + repeated string stackTrace = 13; + repeated PMonitorInfo lockedMonitor = 14; + repeated string lockedSynchronizer = 15; +} + +message PThreadLightDump { + string threadName = 1; + int64 threadId = 2; + PThreadState threadState = 3; +} + +enum PThreadDumpType { + TARGET = 0; + PENDING = 1; +} + +message PActiveThreadDump { + int64 startTime = 1; + int64 localTraceId = 2; + PThreadDump threadDump = 3; + bool sampled = 4; + string transactionId = 5; + string entryPoint = 6; +} + +message PActiveThreadLightDump { + int64 startTime = 1; + int64 localTraceId = 2; + PThreadLightDump threadDump = 3; + bool sampled = 4; + string transactionId = 5; + string entryPoint = 6; +} + + diff --git a/collector-agent/Proto/grpc/ThreadDump_pb2.py b/collector-agent/Proto/grpc/ThreadDump_pb2.py new file mode 100644 index 000000000..3a06331d6 --- /dev/null +++ b/collector-agent/Proto/grpc/ThreadDump_pb2.py @@ -0,0 +1,502 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: ThreadDump.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='ThreadDump.proto', + package='v1', + syntax='proto3', + serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\017ThreadDumpProtoP\001'), + serialized_pb=_b('\n\x10ThreadDump.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\"6\n\x0cPMonitorInfo\x12\x12\n\nstackDepth\x18\x01 \x01(\x05\x12\x12\n\nstackFrame\x18\x02 \x01(\t\"\xea\x02\n\x0bPThreadDump\x12\x12\n\nthreadName\x18\x01 \x01(\t\x12\x10\n\x08threadId\x18\x02 \x01(\x03\x12\x13\n\x0b\x62lockedTime\x18\x03 \x01(\x03\x12\x14\n\x0c\x62lockedCount\x18\x04 \x01(\x03\x12\x12\n\nwaitedTime\x18\x05 \x01(\x03\x12\x13\n\x0bwaitedCount\x18\x06 \x01(\x03\x12\x10\n\x08lockName\x18\x07 \x01(\t\x12\x13\n\x0blockOwnerId\x18\x08 \x01(\x03\x12\x15\n\rlockOwnerName\x18\t \x01(\t\x12\x10\n\x08inNative\x18\n \x01(\x08\x12\x11\n\tsuspended\x18\x0b \x01(\x08\x12%\n\x0bthreadState\x18\x0c \x01(\x0e\x32\x10.v1.PThreadState\x12\x12\n\nstackTrace\x18\r \x03(\t\x12\'\n\rlockedMonitor\x18\x0e \x03(\x0b\x32\x10.v1.PMonitorInfo\x12\x1a\n\x12lockedSynchronizer\x18\x0f \x03(\t\"_\n\x10PThreadLightDump\x12\x12\n\nthreadName\x18\x01 \x01(\t\x12\x10\n\x08threadId\x18\x02 \x01(\x03\x12%\n\x0bthreadState\x18\x03 \x01(\x0e\x32\x10.v1.PThreadState\"\x9d\x01\n\x11PActiveThreadDump\x12\x11\n\tstartTime\x18\x01 \x01(\x03\x12\x14\n\x0clocalTraceId\x18\x02 \x01(\x03\x12#\n\nthreadDump\x18\x03 \x01(\x0b\x32\x0f.v1.PThreadDump\x12\x0f\n\x07sampled\x18\x04 \x01(\x08\x12\x15\n\rtransactionId\x18\x05 \x01(\t\x12\x12\n\nentryPoint\x18\x06 \x01(\t\"\xa7\x01\n\x16PActiveThreadLightDump\x12\x11\n\tstartTime\x18\x01 \x01(\x03\x12\x14\n\x0clocalTraceId\x18\x02 \x01(\x03\x12(\n\nthreadDump\x18\x03 \x01(\x0b\x32\x14.v1.PThreadLightDump\x12\x0f\n\x07sampled\x18\x04 \x01(\x08\x12\x15\n\rtransactionId\x18\x05 \x01(\t\x12\x12\n\nentryPoint\x18\x06 \x01(\t*\xca\x01\n\x0cPThreadState\x12\x14\n\x10THREAD_STATE_NEW\x10\x00\x12\x19\n\x15THREAD_STATE_RUNNABLE\x10\x01\x12\x18\n\x14THREAD_STATE_BLOCKED\x10\x02\x12\x18\n\x14THREAD_STATE_WAITING\x10\x03\x12\x1e\n\x1aTHREAD_STATE_TIMED_WAITING\x10\x04\x12\x1b\n\x17THREAD_STATE_TERMINATED\x10\x05\x12\x18\n\x14THREAD_STATE_UNKNOWN\x10\x06**\n\x0fPThreadDumpType\x12\n\n\x06TARGET\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x42\x36\n!com.navercorp.pinpoint.grpc.traceB\x0fThreadDumpProtoP\x01\x62\x06proto3') + , + dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) + +_PTHREADSTATE = _descriptor.EnumDescriptor( + name='PThreadState', + full_name='v1.PThreadState', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='THREAD_STATE_NEW', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='THREAD_STATE_RUNNABLE', index=1, number=1, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='THREAD_STATE_BLOCKED', index=2, number=2, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='THREAD_STATE_WAITING', index=3, number=3, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='THREAD_STATE_TIMED_WAITING', index=4, number=4, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='THREAD_STATE_TERMINATED', index=5, number=5, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='THREAD_STATE_UNKNOWN', index=6, number=6, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=934, + serialized_end=1136, +) +_sym_db.RegisterEnumDescriptor(_PTHREADSTATE) + +PThreadState = enum_type_wrapper.EnumTypeWrapper(_PTHREADSTATE) +_PTHREADDUMPTYPE = _descriptor.EnumDescriptor( + name='PThreadDumpType', + full_name='v1.PThreadDumpType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='TARGET', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PENDING', index=1, number=1, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=1138, + serialized_end=1180, +) +_sym_db.RegisterEnumDescriptor(_PTHREADDUMPTYPE) + +PThreadDumpType = enum_type_wrapper.EnumTypeWrapper(_PTHREADDUMPTYPE) +THREAD_STATE_NEW = 0 +THREAD_STATE_RUNNABLE = 1 +THREAD_STATE_BLOCKED = 2 +THREAD_STATE_WAITING = 3 +THREAD_STATE_TIMED_WAITING = 4 +THREAD_STATE_TERMINATED = 5 +THREAD_STATE_UNKNOWN = 6 +TARGET = 0 +PENDING = 1 + + + +_PMONITORINFO = _descriptor.Descriptor( + name='PMonitorInfo', + full_name='v1.PMonitorInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='stackDepth', full_name='v1.PMonitorInfo.stackDepth', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stackFrame', full_name='v1.PMonitorInfo.stackFrame', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=85, + serialized_end=139, +) + + +_PTHREADDUMP = _descriptor.Descriptor( + name='PThreadDump', + full_name='v1.PThreadDump', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='threadName', full_name='v1.PThreadDump.threadName', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadId', full_name='v1.PThreadDump.threadId', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='blockedTime', full_name='v1.PThreadDump.blockedTime', index=2, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='blockedCount', full_name='v1.PThreadDump.blockedCount', index=3, + number=4, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='waitedTime', full_name='v1.PThreadDump.waitedTime', index=4, + number=5, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='waitedCount', full_name='v1.PThreadDump.waitedCount', index=5, + number=6, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lockName', full_name='v1.PThreadDump.lockName', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lockOwnerId', full_name='v1.PThreadDump.lockOwnerId', index=7, + number=8, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lockOwnerName', full_name='v1.PThreadDump.lockOwnerName', index=8, + number=9, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='inNative', full_name='v1.PThreadDump.inNative', index=9, + number=10, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='suspended', full_name='v1.PThreadDump.suspended', index=10, + number=11, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadState', full_name='v1.PThreadDump.threadState', index=11, + number=12, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='stackTrace', full_name='v1.PThreadDump.stackTrace', index=12, + number=13, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lockedMonitor', full_name='v1.PThreadDump.lockedMonitor', index=13, + number=14, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='lockedSynchronizer', full_name='v1.PThreadDump.lockedSynchronizer', index=14, + number=15, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=142, + serialized_end=504, +) + + +_PTHREADLIGHTDUMP = _descriptor.Descriptor( + name='PThreadLightDump', + full_name='v1.PThreadLightDump', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='threadName', full_name='v1.PThreadLightDump.threadName', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadId', full_name='v1.PThreadLightDump.threadId', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadState', full_name='v1.PThreadLightDump.threadState', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=506, + serialized_end=601, +) + + +_PACTIVETHREADDUMP = _descriptor.Descriptor( + name='PActiveThreadDump', + full_name='v1.PActiveThreadDump', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='startTime', full_name='v1.PActiveThreadDump.startTime', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='localTraceId', full_name='v1.PActiveThreadDump.localTraceId', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadDump', full_name='v1.PActiveThreadDump.threadDump', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sampled', full_name='v1.PActiveThreadDump.sampled', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='transactionId', full_name='v1.PActiveThreadDump.transactionId', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='entryPoint', full_name='v1.PActiveThreadDump.entryPoint', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=604, + serialized_end=761, +) + + +_PACTIVETHREADLIGHTDUMP = _descriptor.Descriptor( + name='PActiveThreadLightDump', + full_name='v1.PActiveThreadLightDump', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='startTime', full_name='v1.PActiveThreadLightDump.startTime', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='localTraceId', full_name='v1.PActiveThreadLightDump.localTraceId', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='threadDump', full_name='v1.PActiveThreadLightDump.threadDump', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sampled', full_name='v1.PActiveThreadLightDump.sampled', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='transactionId', full_name='v1.PActiveThreadLightDump.transactionId', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='entryPoint', full_name='v1.PActiveThreadLightDump.entryPoint', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=764, + serialized_end=931, +) + +_PTHREADDUMP.fields_by_name['threadState'].enum_type = _PTHREADSTATE +_PTHREADDUMP.fields_by_name['lockedMonitor'].message_type = _PMONITORINFO +_PTHREADLIGHTDUMP.fields_by_name['threadState'].enum_type = _PTHREADSTATE +_PACTIVETHREADDUMP.fields_by_name['threadDump'].message_type = _PTHREADDUMP +_PACTIVETHREADLIGHTDUMP.fields_by_name['threadDump'].message_type = _PTHREADLIGHTDUMP +DESCRIPTOR.message_types_by_name['PMonitorInfo'] = _PMONITORINFO +DESCRIPTOR.message_types_by_name['PThreadDump'] = _PTHREADDUMP +DESCRIPTOR.message_types_by_name['PThreadLightDump'] = _PTHREADLIGHTDUMP +DESCRIPTOR.message_types_by_name['PActiveThreadDump'] = _PACTIVETHREADDUMP +DESCRIPTOR.message_types_by_name['PActiveThreadLightDump'] = _PACTIVETHREADLIGHTDUMP +DESCRIPTOR.enum_types_by_name['PThreadState'] = _PTHREADSTATE +DESCRIPTOR.enum_types_by_name['PThreadDumpType'] = _PTHREADDUMPTYPE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +PMonitorInfo = _reflection.GeneratedProtocolMessageType('PMonitorInfo', (_message.Message,), { + 'DESCRIPTOR' : _PMONITORINFO, + '__module__' : 'ThreadDump_pb2' + # @@protoc_insertion_point(class_scope:v1.PMonitorInfo) + }) +_sym_db.RegisterMessage(PMonitorInfo) + +PThreadDump = _reflection.GeneratedProtocolMessageType('PThreadDump', (_message.Message,), { + 'DESCRIPTOR' : _PTHREADDUMP, + '__module__' : 'ThreadDump_pb2' + # @@protoc_insertion_point(class_scope:v1.PThreadDump) + }) +_sym_db.RegisterMessage(PThreadDump) + +PThreadLightDump = _reflection.GeneratedProtocolMessageType('PThreadLightDump', (_message.Message,), { + 'DESCRIPTOR' : _PTHREADLIGHTDUMP, + '__module__' : 'ThreadDump_pb2' + # @@protoc_insertion_point(class_scope:v1.PThreadLightDump) + }) +_sym_db.RegisterMessage(PThreadLightDump) + +PActiveThreadDump = _reflection.GeneratedProtocolMessageType('PActiveThreadDump', (_message.Message,), { + 'DESCRIPTOR' : _PACTIVETHREADDUMP, + '__module__' : 'ThreadDump_pb2' + # @@protoc_insertion_point(class_scope:v1.PActiveThreadDump) + }) +_sym_db.RegisterMessage(PActiveThreadDump) + +PActiveThreadLightDump = _reflection.GeneratedProtocolMessageType('PActiveThreadLightDump', (_message.Message,), { + 'DESCRIPTOR' : _PACTIVETHREADLIGHTDUMP, + '__module__' : 'ThreadDump_pb2' + # @@protoc_insertion_point(class_scope:v1.PActiveThreadLightDump) + }) +_sym_db.RegisterMessage(PActiveThreadLightDump) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/ThreadDump_pb2_grpc.py b/collector-agent/Proto/grpc/ThreadDump_pb2_grpc.py new file mode 100644 index 000000000..a89435267 --- /dev/null +++ b/collector-agent/Proto/grpc/ThreadDump_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + diff --git a/collector-agent/Test/test_grpc.py b/collector-agent/Test/test_grpc.py new file mode 100644 index 000000000..09afc4e16 --- /dev/null +++ b/collector-agent/Test/test_grpc.py @@ -0,0 +1,38 @@ +# -*- coding: UTF-8 -*- +import grpc +import time +from unittest import TestCase +from Proto.grpc import Service_pb2_grpc +from Proto.grpc.Stat_pb2 import PAgentInfo + + +host='dev-pinpoint' +# agent_port=9991 +# stat_port=9992 +# span_port=9993 + + +class TestGRPC(TestCase): + def testStat(self): + channel = grpc.insecure_channel('dev-pinpoint:9991') + stub =Service_pb2_grpc.AgentStub(channel) + + response,call = stub.RequestAgentInfo.with_call( + PAgentInfo(hostname='xxx', ip='ip', ports='456,546', pid=423, endTimestamp=-1, + serviceType=1500), + metadata=(('agentid', 'test-id'), + ('applicationname', 'test-name'), + ('starttime', str(int(time.time() * 1000)))) + ) + + # agent_info = PAgentInfo(hostname='xxx',ip='ip',ports='456,546',pid=423,endTimestamp=-1, + # serviceType=1500) + + # + # result = stub.RequestAgentInfo(agent_info,metedata={('agentid','test-id'), + # ('applicationname','test-name'), + # ('starttime', int(time.time()*1000))}) + # print(result) + + for key, value in call.trailing_metadata(): + print('%s %s'%(key,value)) \ No newline at end of file diff --git a/collector-agent/Test/test_packet.py b/collector-agent/Test/test_packet.py index 855c8bc99..1978d760d 100644 --- a/collector-agent/Test/test_packet.py +++ b/collector-agent/Test/test_packet.py @@ -16,7 +16,7 @@ #!/usr/bin/env python from unittest import TestCase -from TCollectorAgent.TPackets import * +from CollectorAgent.TPackets import * # -*- coding: UTF-8 -*- diff --git a/collector-agent/requirements.txt b/collector-agent/requirements.txt index fa0070b77..95875fa9f 100644 --- a/collector-agent/requirements.txt +++ b/collector-agent/requirements.txt @@ -1,5 +1,8 @@ gevent==1.4.0 greenlet==0.4.15 +grpcio==1.23.0 +grpcio-tools==1.23.0 +protobuf==3.9.1 psutil==5.6.3 six==1.12.0 thrift==0.11.0 From 1d70752dca365f3242742f282538f48232af79fa Mon Sep 17 00:00:00 2001 From: liumingyi Date: Fri, 18 Oct 2019 18:11:19 +0800 Subject: [PATCH 02/45] [10-8] GRPC backup --- collector-agent/CollectorAgent/APIMeta.py | 30 ------ .../CollectorAgent/AgentStateManager.py | 3 - .../CollectorAgent/CollectorAgentConf.py | 53 ++++++++--- .../CollectorAgent/GrpcAgentImplement.py | 84 ++++++++++++++++ collector-agent/CollectorAgent/GrpcClient.py | 95 +++++++++++++++++++ .../CollectorAgent/ThriftAgentImplement.py | 3 +- collector-agent/PHPAgent/FrontAgent.py | 28 +----- .../PinpointAgent/AppManagement.py | 8 +- .../PinpointAgent/PinpointAgent.py | 2 +- collector-agent/PinpointAgent/Type.py | 4 + collector-agent/Test/test_common.py | 3 + collector-agent/Test/test_front_agent.py | 51 ++++++++++ collector-agent/Test/test_grpc.py | 38 -------- collector-agent/Test/test_grpc_agent.py | 18 ++++ .../Test/test_grpc_protocol_routine.py | 91 ++++++++++++++++++ collector-agent/conf/collector.conf | 20 ++-- 16 files changed, 406 insertions(+), 125 deletions(-) create mode 100644 collector-agent/CollectorAgent/GrpcAgentImplement.py create mode 100644 collector-agent/CollectorAgent/GrpcClient.py create mode 100644 collector-agent/Test/test_common.py create mode 100644 collector-agent/Test/test_front_agent.py delete mode 100644 collector-agent/Test/test_grpc.py create mode 100644 collector-agent/Test/test_grpc_agent.py create mode 100644 collector-agent/Test/test_grpc_protocol_routine.py diff --git a/collector-agent/CollectorAgent/APIMeta.py b/collector-agent/CollectorAgent/APIMeta.py index 3fe610880..a283ceaf4 100644 --- a/collector-agent/CollectorAgent/APIMeta.py +++ b/collector-agent/CollectorAgent/APIMeta.py @@ -78,33 +78,3 @@ def toPacket(self): packet = Packet(PacketType.APPLICATION_REQUEST,CollectorPro.getCurReqCount() ,len(body),body) return packet - - - - -# class InterceptManager(object): -# def __init__(self, collector_cb, ac): -# ''' -# -# :param tcpLayer: -# :param CollectorAgentConf ac: -# ''' -# self.collector_cb = collector_cb -# self.api_metas = {} -# self.string_metas = {} -# self.startTimeStamp = ac.startTimestamp -# self.ac = ac -# -# def sendMeta(self, meta): -# ''' -# -# :param APIMeta meta: -# :return: -# ''' -# TCLogger.debug("meta: %s", meta.name) -# self.collector_cb(meta.toPacket().getSerializedData()) - - - - -# interceptManger = InterceptManager() diff --git a/collector-agent/CollectorAgent/AgentStateManager.py b/collector-agent/CollectorAgent/AgentStateManager.py index 91123ca6a..148d45db7 100644 --- a/collector-agent/CollectorAgent/AgentStateManager.py +++ b/collector-agent/CollectorAgent/AgentStateManager.py @@ -59,6 +59,3 @@ def sendState(self,layer): self.trans_layer.sendData(body) -# if __name__ == '__main__': - # state = AgentState('fdf',1645455556) - # state.getCurStatePacket() diff --git a/collector-agent/CollectorAgent/CollectorAgentConf.py b/collector-agent/CollectorAgent/CollectorAgentConf.py index fbffaf44e..b37e25f14 100644 --- a/collector-agent/CollectorAgent/CollectorAgentConf.py +++ b/collector-agent/CollectorAgent/CollectorAgentConf.py @@ -15,7 +15,9 @@ #------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- - +from PinpointAgent.Type import SUPPORT_THRIFT, SUPPORT_GRPC +from CollectorAgent.ThriftAgentImplement import ThriftAgentImplement +from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement AGENT_VERSION = '1.8.0-RC1' @@ -25,22 +27,43 @@ def __init__(self,config): :param ConfigParser config: ''' - self.CollectorSpanIp = config.get('Collector', - 'CollectorSpanIp') - self.CollectorSpanPort = config.getint('Collector', - 'CollectorSpanPort') - self.CollectorStatIp = config.get('Collector', - 'CollectorStatIp') - self.CollectorStatPort = config.getint('Collector', - 'CollectorStatPort') - self.CollectorTcpIp = config.get('Collector', - 'CollectorTcpIp') - self.CollectorTcpPort = config.getint('Collector', - 'CollectorTcpPort') + if config.has_option('Collector','collector.grpc.agent.ip') and \ + config.has_option('Collector','collector.grpc.stat.ip') and \ + config.has_option('Collector', 'collector.grpc.span.ip'): + self.CollectorSpanIp = config.get('Collector', + 'collector.grpc.span.ip') + self.CollectorSpanPort = config.getint('Collector', + 'collector.grpc.span.port') + self.CollectorStatIp = config.get('Collector', + 'collector.grpc.stat.ip') + self.CollectorStatPort = config.getint('Collector', + 'collector.grpc.stat.port') + self.CollectorAgentIp = config.get('Collector', + 'collector.grpc.agent.ip') + self.CollectorAgentPort = config.getint('Collector', + 'collector.grpc.agent.port') + self.max_pending_size = config.getint('Collector', + 'collector.grpc.discardpolicy.maxpendingthreshold') + self.collector_type = SUPPORT_GRPC + self.collector_implement = GrpcAgentImplement + else: + self.CollectorSpanIp = config.get('Collector', + 'CollectorSpanIp') + self.CollectorSpanPort = config.getint('Collector', + 'CollectorSpanPort') + self.CollectorStatIp = config.get('Collector', + 'CollectorStatIp') + self.CollectorStatPort = config.getint('Collector', + 'CollectorStatPort') + self.CollectorAgentIp = config.get('Collector', + 'CollectorTcpIp') + self.CollectorAgentPort = config.getint('Collector', + 'CollectorTcpPort') + self.collector_type = SUPPORT_THRIFT + self.collector_implement = ThriftAgentImplement self.AgentID = config.get('Collector', 'AgentID') - self.ApplicationName = config.get('Collector', 'ApplicationName') self.version = AGENT_VERSION @@ -53,7 +76,7 @@ def getStatHost(self): return ( self.CollectorStatIp,self.CollectorStatPort) def getTcpHost(self): - return ( self.CollectorTcpIp, self.CollectorTcpPort) + return (self.CollectorAgentIp, self.CollectorAgentPort) def clean(self): pass diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py new file mode 100644 index 000000000..e64b9f174 --- /dev/null +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/16/19 +import grpc + +from CollectorAgent import CollectorAgentConf +from PinpointAgent import PinpointAgent +from PinpointAgent.Type import PHP, SUPPORT_GRPC + +# ready means channel is free to use +READY=1 +# wait .... +NOT_READY=0 + +class GrpcAgentImplement(PinpointAgent): + socketUniqueId=0 + def __init__(self, manage, ac, app_id, app_name, serviceType=PHP): + assert(isinstance(ac,CollectorAgentConf)) + assert(ac.collector_type == SUPPORT_GRPC) + super().__init__(app_id, app_name) + self.agent_metadata = [('starttime',self.manage.startTimestamp), + ('agentid', app_id), + ('applicationname',app_name)] + self.span_metadata = self.agent_metadata.append(()) + self.ping_metadata = self.agent_metadata.append(('socketid',str(GrpcAgentImplement.socketUniqueId))) + GrpcAgentImplement.socketUniqueId += 1 + # maybe change in future + self.app_name = app_name + self.max_pending_sz = ac.max_pending_size + self.app_id = app_id + self.span_c_state = NOT_READY + self.stat_c_state = NOT_READY + self.agent_c_state = NOT_READY + self.write_queue_ofs = 0 + self.span_buff=([],[]) + self.agent_addr = ac.CollectorAgentIp+':' + str(ac.CollectorAgentPort) + self.stat_addr = ac.CollectorStatIp + ':' + str(ac.CollectorSpanPort) + self.span_addr = ac.CollectorSpanIp + ':' + str(ac.CollectorSpanPort) + self.agent_channel,self.stat_channel,self.span_channel = self._initialize_channels() + + def _initialize_channels(self): + agent_ch = grpc.insecure_channel(self.agent_addr) + stat_ch = grpc.insecure_channel(self.stat_addr) + span_ch = grpc.insecure_channel(self.span_addr) + + # add state change hook + + + + return agent_ch,stat_ch,span_ch + + + + + def _send_ping_session(self): + pass + + def set_span_channel_state(self,state): + pass + + def set_agent_channel_state(self,state): + pass + + def set_stat_channel_state(self,state): + pass + + + def start(self): + # 1. create channel of span,agent,stat + # 2. register agent + # 3. keep ping + raise NotImplementedError() + + def sendSpan(self, stack): + # stack -> grpc-span + + # create stringid, + + # elapsed by 1s + raise NotImplementedError() + + def stop(self): + # close all channel + raise NotImplementedError() \ No newline at end of file diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py new file mode 100644 index 000000000..198bb3ffc --- /dev/null +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/18/19 + +import grpc + +from CollectorAgent.GrpcAgentImplement import NOT_READY,READY,BUSY +from Proto.grpc import Service_pb2_grpc +from Proto.grpc.Stat_pb2 import PAgentInfo, PPing +from Span_pb2 import PSqlMetaData, PApiMetaData, PSpanMessage, PSpan, PTransactionId + +# copy from grpc example +class _GenericClientInterceptor( + grpc.UnaryUnaryClientInterceptor, grpc.UnaryStreamClientInterceptor, + grpc.StreamUnaryClientInterceptor, grpc.StreamStreamClientInterceptor): + + def __init__(self, interceptor_function): + self._fn = interceptor_function + + def intercept_unary_unary(self, continuation, client_call_details, request): + new_details, new_request_iterator, postprocess = self._fn( + client_call_details, iter((request,)), False, False) + response = continuation(new_details, next(new_request_iterator)) + return postprocess(response) if postprocess else response + + def intercept_unary_stream(self, continuation, client_call_details, + request): + new_details, new_request_iterator, postprocess = self._fn( + client_call_details, iter((request,)), False, True) + response_it = continuation(new_details, next(new_request_iterator)) + return postprocess(response_it) if postprocess else response_it + + def intercept_stream_unary(self, continuation, client_call_details, + request_iterator): + new_details, new_request_iterator, postprocess = self._fn( + client_call_details, request_iterator, True, False) + response = continuation(new_details, new_request_iterator) + return postprocess(response) if postprocess else response + + def intercept_stream_stream(self, continuation, client_call_details, + request_iterator): + new_details, new_request_iterator, postprocess = self._fn( + client_call_details, request_iterator, True, True) + response_it = continuation(new_details, new_request_iterator) + return postprocess(response_it) if postprocess else response_it + + +class GrpcClient(object): + def __init__(self,address,meta=None,maxPending=-1): + self.address = address + self.meta = meta + self.max_pending_size = maxPending + self.state = NOT_READY + channel = grpc.insecure_channel(address) + if meta is not None: + pass + if maxPending != -1: + pass + self.channel =channel + self.channel.subscribe(self.channel_state_change) + + + def _add_meta_header(self): + pass + + def get_stub(self): + pass + + def get_state(self): + return self.state + + def _interceptor_add_header(self,header): + def intercept_call(client_call_details, request_iterator, request_streaming, + response_streaming): + metadata = [] + if client_call_details.metadata is not None: + metadata = list(client_call_details.metadata) + metadata += header + client_call_details = _ClientCallDetails( + client_call_details.method, client_call_details.timeout, metadata, + client_call_details.credentials) + return client_call_details, request_iterator, None + return _GenericClientInterceptor(intercept_call) + + def channel_state_change(self,activity): + if activity == grpc.ChannelConnectivity.TRANSIENT_FAILURE: + self.state = NOT_READY + elif activity == grpc.ChannelConnectivity.CONNECTING: + self.state = NOT_READY + elif activity == grpc.ChannelConnectivity.READY: + self.state = READY + +class AgentClient(GrpcClient): + def __init__(self,address,meta=None,maxPending=-1): + super().__init__(address,meta,maxPending) \ No newline at end of file diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index b72df3cd2..731f7fa4f 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -39,8 +39,7 @@ class ThriftAgentImplement(PinpointAgent): PingCount= 0 ReqCount = 0 - Negotiation=0 - Clear =1 + def __init__(self,manage,ac,app_id,app_name,serviceType=PHP): diff --git a/collector-agent/PHPAgent/FrontAgent.py b/collector-agent/PHPAgent/FrontAgent.py index cac88200b..02e0ca522 100644 --- a/collector-agent/PHPAgent/FrontAgent.py +++ b/collector-agent/PHPAgent/FrontAgent.py @@ -22,10 +22,10 @@ from gevent import socket as gsocket -from Common import * from PHPAgent.Type import RESPONSE_AGENT_INFO from PHPAgent.PHPAgentConf import PHPAgentConf from Trains import StreamServerLayer +from Common import * class FrontAgent(object): @@ -85,29 +85,3 @@ def start(self): def stop(self): pass - - - -def handleAgentPacket(client,type,str): - ''' - - :param str str: - :return: - ''' - TCLogger.debug("%d,%s",type,str) - - - -if __name__ == '__main__': - ac = PHPAgentConf(CAConfig) - agent = FrontAgent(ac, handleAgentPacket) - agent.start() - from gevent.event import Event - import gevent,signal - evt =Event() - - gevent.signal(signal.SIGQUIT, evt.set) - gevent.signal(signal.SIGTERM, evt.set) - gevent.signal(signal.SIGINT, evt.set) - - evt.wait() diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 5a514a401..a4aca96ae 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -24,7 +24,9 @@ def __init__(self,collector_conf,service_type=PHP): self.create_default_implement(service_type) def create_default_implement(self,service_type): - self.default_app = ThriftAgentImplement(self,self.collector_conf,self.default_appid, self.default_appname,service_type) + + self.default_app = self.collector_conf.collector_implement(self, self.collector_conf, self.default_appid, self.default_appname, service_type) + self.default_app.start() self.app_map[self.default_appid] = self.default_app @@ -38,9 +40,9 @@ def find_app(self, app_id, app_name,service_type): ## check service_type else: - if service_type == PHP: + if service_type == PHP: TCLogger.info("collector-agent try to create a new application agent.[%s@%s]",app_id,app_name) - app = ThriftAgentImplement(self,self.collector_conf,app_id, app_name) + app = self.collector_conf.collector_implement(self, self.collector_conf, app_id, app_name) app.start() self.app_map[app_id] = app else: diff --git a/collector-agent/PinpointAgent/PinpointAgent.py b/collector-agent/PinpointAgent/PinpointAgent.py index da0809959..2f6eee9c8 100644 --- a/collector-agent/PinpointAgent/PinpointAgent.py +++ b/collector-agent/PinpointAgent/PinpointAgent.py @@ -27,7 +27,7 @@ def __init__(self,app_id,app_name,serviceType=PHP): def start(self): raise NotImplementedError() - def sendSpan(self): + def sendSpan(self,stack): raise NotImplementedError() def stop(self): diff --git a/collector-agent/PinpointAgent/Type.py b/collector-agent/PinpointAgent/Type.py index d8ef368ba..13dd44e61 100644 --- a/collector-agent/PinpointAgent/Type.py +++ b/collector-agent/PinpointAgent/Type.py @@ -68,6 +68,10 @@ PHP_ARGS = 922 PHP_DESCRIPTION = 923 +#collector type +SUPPORT_GRPC=1 +SUPPORT_THRIFT=2 + class AgentSocketCode(object): diff --git a/collector-agent/Test/test_common.py b/collector-agent/Test/test_common.py new file mode 100644 index 000000000..750d7a99e --- /dev/null +++ b/collector-agent/Test/test_common.py @@ -0,0 +1,3 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/16/19 diff --git a/collector-agent/Test/test_front_agent.py b/collector-agent/Test/test_front_agent.py new file mode 100644 index 000000000..904857845 --- /dev/null +++ b/collector-agent/Test/test_front_agent.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/16/19 + +import sys,os +sys.path.append(os.path.abspath('..')) +sys.path.append(os.path.abspath('./helloworld')) + +from PHPAgent import PHPAgentConf +from PHPAgent.FrontAgent import FrontAgent +from Common import * +import helloworld_pb2_grpc, helloworld_pb2 + + +import grpc + +channel= grpc.insecure_channel('localhost:50051') + +def handleAgentPacket(client,type,str): + ''' + + :param str str: + :return: + ''' + + TCLogger.debug("%d,%s",type,str) + + stub = helloworld_pb2_grpc.GreeterStub(channel) + + def process_response(future): + print(future.result().message) + + call_future = stub.SayHello.future(helloworld_pb2.HelloRequest(name='you')) + call_future.add_done_callback(process_response) + + +if __name__ == '__main__': + + ac = PHPAgentConf(CAConfig) + agent = FrontAgent(ac, handleAgentPacket) + agent.start() + + from gevent.event import Event + import gevent,signal + evt = Event() + + gevent.signal(signal.SIGQUIT, evt.set) + gevent.signal(signal.SIGTERM, evt.set) + gevent.signal(signal.SIGINT, evt.set) + + evt.wait() diff --git a/collector-agent/Test/test_grpc.py b/collector-agent/Test/test_grpc.py deleted file mode 100644 index 09afc4e16..000000000 --- a/collector-agent/Test/test_grpc.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: UTF-8 -*- -import grpc -import time -from unittest import TestCase -from Proto.grpc import Service_pb2_grpc -from Proto.grpc.Stat_pb2 import PAgentInfo - - -host='dev-pinpoint' -# agent_port=9991 -# stat_port=9992 -# span_port=9993 - - -class TestGRPC(TestCase): - def testStat(self): - channel = grpc.insecure_channel('dev-pinpoint:9991') - stub =Service_pb2_grpc.AgentStub(channel) - - response,call = stub.RequestAgentInfo.with_call( - PAgentInfo(hostname='xxx', ip='ip', ports='456,546', pid=423, endTimestamp=-1, - serviceType=1500), - metadata=(('agentid', 'test-id'), - ('applicationname', 'test-name'), - ('starttime', str(int(time.time() * 1000)))) - ) - - # agent_info = PAgentInfo(hostname='xxx',ip='ip',ports='456,546',pid=423,endTimestamp=-1, - # serviceType=1500) - - # - # result = stub.RequestAgentInfo(agent_info,metedata={('agentid','test-id'), - # ('applicationname','test-name'), - # ('starttime', int(time.time()*1000))}) - # print(result) - - for key, value in call.trailing_metadata(): - print('%s %s'%(key,value)) \ No newline at end of file diff --git a/collector-agent/Test/test_grpc_agent.py b/collector-agent/Test/test_grpc_agent.py new file mode 100644 index 000000000..500305789 --- /dev/null +++ b/collector-agent/Test/test_grpc_agent.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/18/19\ +from CollectorAgent import CollectorAgentConf +from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement +import time +from Common import * + + +class FakeManager(object): + pass + +if __name__ == '__main__': + collector_conf = CollectorAgentConf(CAConfig) + manager = FakeManager() + agent = GrpcAgentImplement(manager,collector_conf,'test-id','test-id-15') + agent.start() + time.sleep(3) diff --git a/collector-agent/Test/test_grpc_protocol_routine.py b/collector-agent/Test/test_grpc_protocol_routine.py new file mode 100644 index 000000000..7f1ac5182 --- /dev/null +++ b/collector-agent/Test/test_grpc_protocol_routine.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/14/19 +import grpc +import time + +from Proto.grpc import Service_pb2_grpc +from Proto.grpc.Stat_pb2 import PAgentInfo, PPing + + +from Span_pb2 import PSqlMetaData, PApiMetaData, PSpanMessage, PSpan, PTransactionId + + +def agentinfo(): + channel = grpc.insecure_channel('dev-pinpoint:9991') + stub = Service_pb2_grpc.AgentStub(channel) + starttime = str(int(time.time() * 1000)) + agent_meta =[('agentid', 'test-id'), + ('applicationname', 'test-name'), + ('starttime',starttime)] + + response, call = stub.RequestAgentInfo.with_call( + PAgentInfo(hostname='xxx', ip='ip', ports='456,546', pid=423, endTimestamp=-1, + serviceType=1500), + metadata=agent_meta + ) + + print(response) + print(call.trailing_metadata()) + + def ping_reqeust(): + for i in range(10): + ping = PPing() + yield ping + + ping_meta = agent_meta[:] + ping_meta.append(('socketid', '55')) + ping_iter = stub.PingSession(ping_reqeust(),metadata=ping_meta) + + for ping in ping_iter: + print(ping) + + + ## send metadata + channel = grpc.insecure_channel('dev-pinpoint:9991') + + meta_stub = Service_pb2_grpc.MetadataStub(channel) + + result = meta_stub.RequestApiMetaData(PApiMetaData(apiId=1,apiInfo='name',line=10,type=0),metadata=agent_meta) + print(result) + + ## snd span + channel = grpc.insecure_channel('dev-pinpoint:9993') + span_stub = Service_pb2_grpc.SpanStub(channel) + + def request_span(): + for i in range(5): + tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=i) + span =PSpan(version = 1, + transactionId=tid, + startTime= int(time.time()), + elapsed=10, + apiId=1, + serviceType=1500, + applicationServiceType=1500) + meg= PSpanMessage(span=span) + yield meg + + response = span_stub.SendSpan(request_span(),metadata=agent_meta) + + print(response) + + # print(call.trailing_metadata()) + + + + + # for r in results: + # print(r) + + + # while True: + # response, call = stub.PingSession(PPing(), metadata=agent_meta) + # print(response) + # print(call) + # time.sleep(1) + + + +if __name__ == '__main__': + agentinfo() \ No newline at end of file diff --git a/collector-agent/conf/collector.conf b/collector-agent/conf/collector.conf index bbdfd3171..90cd0ae63 100644 --- a/collector-agent/conf/collector.conf +++ b/collector-agent/conf/collector.conf @@ -1,12 +1,20 @@ [Collector] AgentID=dev ApplicationName=dev-app -CollectorSpanIp=collectorHost -CollectorSpanPort=port -CollectorStatIp=collectorHost -CollectorStatPort=port -CollectorTcpIp=collectorHost -CollectorTcpPort=port + +# CollectorSpanIp=collectorHost +# CollectorSpanPort=port +# CollectorStatIp=collectorHost +# CollectorStatPort=port +# CollectorTcpIp=collectorHost +# CollectorTcpPort=port +collector.grpc.agent.ip=collectorHost +collector.grpc.agent.port=9991 +collector.grpc.stat.ip=collectorHost +collector.grpc.stat.port=9992 +collector.grpc.span.ip=collectorHost +collector.grpc.span.port=9993 +collector.grpc.discardpolicy.maxpendingthreshold=1024 [Common] # your web server (nginx&apache) port Web_Port=8001 From 7944ee38e7d1a1c77605f5a6177a2289de0e7703 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Wed, 30 Oct 2019 18:25:08 +0800 Subject: [PATCH 03/45] [10-30] grpc, can't avoiding the thread cost --- collector-agent/CollectorAgent/AgentClient.py | 65 +++++++++++++++++ .../CollectorAgent/AgentStateManager.py | 4 +- .../CollectorAgent/CollectorAgentConf.py | 5 ++ collector-agent/CollectorAgent/Grpc.py | 9 +++ .../CollectorAgent/GrpcAgentImplement.py | 21 +++--- collector-agent/CollectorAgent/GrpcClient.py | 60 +++++++++------- collector-agent/CollectorAgent/TCGenerator.py | 2 +- .../CollectorAgent/ThriftAgentImplement.py | 64 ++++++++--------- collector-agent/CollectorAgent/__init__.py | 27 ------- collector-agent/Common/AgentHost.py | 6 +- collector-agent/Common/Config.py | 20 +++--- collector-agent/Common/Logger.py | 23 +++--- collector-agent/Common/__init__.py | 23 ------ .../{Trains => Events}/DgramLayer.py | 4 +- collector-agent/Events/GTimer.py | 11 +++ collector-agent/{Trains => Events}/State.py | 0 .../{Trains => Events}/StreamClientLayer.py | 3 +- .../{Trains => Events}/StreamServerLayer.py | 0 .../{Trains => Events}/TrainsLayer.py | 0 .../{Trains => Events}/__init__.py | 8 +-- collector-agent/PHPAgent/FrontAgent.py | 2 +- .../PinpointAgent/AppManagement.py | 1 - collector-agent/PinpointAgent/__init__.py | 6 +- collector-agent/Test/test_agent_client.py | 30 ++++++++ collector-agent/Test/test_front_agent.py | 7 +- collector-agent/Test/test_grpc_agent.py | 2 +- .../Test/test_grpc_protocol_routine.py | 72 ++++++++++--------- collector-agent/requirements.txt | 4 +- 28 files changed, 275 insertions(+), 204 deletions(-) create mode 100644 collector-agent/CollectorAgent/AgentClient.py create mode 100644 collector-agent/CollectorAgent/Grpc.py delete mode 100644 collector-agent/CollectorAgent/__init__.py delete mode 100644 collector-agent/Common/__init__.py rename collector-agent/{Trains => Events}/DgramLayer.py (96%) create mode 100644 collector-agent/Events/GTimer.py rename collector-agent/{Trains => Events}/State.py (100%) rename collector-agent/{Trains => Events}/StreamClientLayer.py (99%) rename collector-agent/{Trains => Events}/StreamServerLayer.py (100%) rename collector-agent/{Trains => Events}/TrainsLayer.py (100%) rename collector-agent/{Trains => Events}/__init__.py (81%) create mode 100644 collector-agent/Test/test_agent_client.py diff --git a/collector-agent/CollectorAgent/AgentClient.py b/collector-agent/CollectorAgent/AgentClient.py new file mode 100644 index 000000000..5d7db02cd --- /dev/null +++ b/collector-agent/CollectorAgent/AgentClient.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/21/19 +from grpc import Future + +import Service_pb2_grpc +import threading +from functools import partial + +from CollectorAgent.Grpc import CH_READY +from CollectorAgent.GrpcClient import GrpcClient +from Common.Logger import TCLogger +from PinpointAgent.Type import PHP +from Stat_pb2 import PAgentInfo, PPing + +class AgentClient(GrpcClient): + PINGID=0 + def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_timeout=10): + super().__init__(address,meta,maxPending) + self.hostname = hostname + self.ip = ip + self.pid = pid + self.stub = Service_pb2_grpc.AgentStub(self.channel) + agentinfo = PAgentInfo(hostname=hostname, ip=ip, ports=ports, pid=pid, endTimestamp=-1, + serviceType=PHP) + self.pingid= AgentClient.PINGID + AgentClient.PINGID += 1 + self.ping_meta = meta.append(('socketid', str(AgentClient.PINGID))) + self._register_agent(agentinfo) + self.ping_timeout =ping_timeout + + def _register_agent(self, agentInfo): + assert isinstance(agentInfo,PAgentInfo) + call_future = self.stub.RequestAgentInfo.future(agentInfo) + callback = partial(self.print_return_unary_mesg,input=agentInfo) + call_future.add_done_callback(callback) + + def print_return_unary_mesg(self,future,input): + # start ping if future is success + if future.result(): + TCLogger.debug("agent register done:%s",future.result()) + self._try_ping_session() + + def _ping_PPing(self): + while self.state == CH_READY: + ping = PPing() + TCLogger.debug("%s send ping",self) + yield ping + import time + time.sleep(10) + + def _try_ping_session(self): + # create ping stub + ret_iter = self.stub.PingSession(self._ping_PPing(),metadata=self.ping_meta) + self.ping_reponse_task = threading.Thread(target=self._ping_response, args=(ret_iter)) + self.ping_reponse_task.start() + + def _ping_response(self,response_iter): + for response in response_iter: + TCLogger.debug('get ping response %s',response) + + TCLogger.warn('Agent [%s] ping thread stopped',self) + + def __str__(self): + return 'hostname:%s ip:%s pid:%d address:%s'%(self.hostname,self.ip,self.pid,self.address ) \ No newline at end of file diff --git a/collector-agent/CollectorAgent/AgentStateManager.py b/collector-agent/CollectorAgent/AgentStateManager.py index 148d45db7..68a6165fa 100644 --- a/collector-agent/CollectorAgent/AgentStateManager.py +++ b/collector-agent/CollectorAgent/AgentStateManager.py @@ -19,10 +19,10 @@ from CollectorAgent.Protocol import CollectorPro from PinpointAgent.Type import AGENT_STAT_BATCH -from Common import TCLogger +from Common.Logger import TCLogger from Proto.Trift.Pinpoint.ttypes import TAgentStat, TCpuLoad, TAgentStatBatch -from Trains import DgramLayer, TrainLayer +from Events import DgramLayer, TrainLayer diff --git a/collector-agent/CollectorAgent/CollectorAgentConf.py b/collector-agent/CollectorAgent/CollectorAgentConf.py index b37e25f14..a420dba6b 100644 --- a/collector-agent/CollectorAgent/CollectorAgentConf.py +++ b/collector-agent/CollectorAgent/CollectorAgentConf.py @@ -15,6 +15,7 @@ #------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +import Common from PinpointAgent.Type import SUPPORT_THRIFT, SUPPORT_GRPC from CollectorAgent.ThriftAgentImplement import ThriftAgentImplement from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement @@ -68,6 +69,10 @@ def __init__(self,config): 'ApplicationName') self.version = AGENT_VERSION self.config = config + log_dir = config.get('Common','LOG_DIR') + log_level = config.get('Common', 'Log_Level',fallback='DEBUG') + Common.Logger.TCLogger = Common.Logger.create_logger("TC", log_dir, "collector.agent.log",log_level) + Common.Logger.PALogger = Common.Logger.create_logger("PA",log_dir, "php.agent.log",log_level) def getSpanHost(self): return ( self.CollectorSpanIp,self.CollectorSpanPort) diff --git a/collector-agent/CollectorAgent/Grpc.py b/collector-agent/CollectorAgent/Grpc.py new file mode 100644 index 000000000..81e2b0b9e --- /dev/null +++ b/collector-agent/CollectorAgent/Grpc.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/21/19+ + + +# ready means channel is free to use +CH_READY=1 +# wait .... +CH_NOT_READY=0 \ No newline at end of file diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index e64b9f174..e37731842 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -1,20 +1,20 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/16/19 +import time + import grpc -from CollectorAgent import CollectorAgentConf +from CollectorAgent.Grpc import CH_NOT_READY, CH_READY from PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP, SUPPORT_GRPC +from Stat_pb2 import PPing -# ready means channel is free to use -READY=1 -# wait .... -NOT_READY=0 class GrpcAgentImplement(PinpointAgent): socketUniqueId=0 def __init__(self, manage, ac, app_id, app_name, serviceType=PHP): + from CollectorAgent import CollectorAgentConf assert(isinstance(ac,CollectorAgentConf)) assert(ac.collector_type == SUPPORT_GRPC) super().__init__(app_id, app_name) @@ -28,9 +28,9 @@ def __init__(self, manage, ac, app_id, app_name, serviceType=PHP): self.app_name = app_name self.max_pending_sz = ac.max_pending_size self.app_id = app_id - self.span_c_state = NOT_READY - self.stat_c_state = NOT_READY - self.agent_c_state = NOT_READY + self.span_c_state = CH_NOT_READY + self.stat_c_state = CH_NOT_READY + self.agent_c_state = CH_NOT_READY self.write_queue_ofs = 0 self.span_buff=([],[]) self.agent_addr = ac.CollectorAgentIp+':' + str(ac.CollectorAgentPort) @@ -50,11 +50,6 @@ def _initialize_channels(self): return agent_ch,stat_ch,span_ch - - - def _send_ping_session(self): - pass - def set_span_channel_state(self,state): pass diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 198bb3ffc..5951d367a 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -1,15 +1,15 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/18/19 - +import collections import grpc -from CollectorAgent.GrpcAgentImplement import NOT_READY,READY,BUSY -from Proto.grpc import Service_pb2_grpc -from Proto.grpc.Stat_pb2 import PAgentInfo, PPing -from Span_pb2 import PSqlMetaData, PApiMetaData, PSpanMessage, PSpan, PTransactionId # copy from grpc example +from CollectorAgent.Grpc import CH_NOT_READY, CH_READY +from Common.Logger import TCLogger + + class _GenericClientInterceptor( grpc.UnaryUnaryClientInterceptor, grpc.UnaryStreamClientInterceptor, grpc.StreamUnaryClientInterceptor, grpc.StreamStreamClientInterceptor): @@ -44,27 +44,28 @@ def intercept_stream_stream(self, continuation, client_call_details, response_it = continuation(new_details, new_request_iterator) return postprocess(response_it) if postprocess else response_it +class _ClientCallDetails( + collections.namedtuple( + '_ClientCallDetails', + ('method', 'timeout', 'metadata', 'credentials')), + grpc.ClientCallDetails): + pass class GrpcClient(object): def __init__(self,address,meta=None,maxPending=-1): self.address = address - self.meta = meta + self.meta = None self.max_pending_size = maxPending - self.state = NOT_READY + self.state = CH_NOT_READY channel = grpc.insecure_channel(address) - if meta is not None: - pass - if maxPending != -1: - pass - self.channel =channel - self.channel.subscribe(self.channel_state_change) - - def _add_meta_header(self): - pass - - def get_stub(self): - pass + if meta is not None: + self.meta = meta + intercept_channel = grpc.intercept_channel(channel, + self._interceptor_add_header(meta)) + channel = intercept_channel + self.channel = channel + self.channel.subscribe(self._channel_state_change) def get_state(self): return self.state @@ -82,14 +83,19 @@ def intercept_call(client_call_details, request_iterator, request_streaming, return client_call_details, request_iterator, None return _GenericClientInterceptor(intercept_call) - def channel_state_change(self,activity): + def _channel_state_change(self, activity): if activity == grpc.ChannelConnectivity.TRANSIENT_FAILURE: - self.state = NOT_READY + self.state = CH_NOT_READY elif activity == grpc.ChannelConnectivity.CONNECTING: - self.state = NOT_READY + self.state = CH_NOT_READY elif activity == grpc.ChannelConnectivity.READY: - self.state = READY - -class AgentClient(GrpcClient): - def __init__(self,address,meta=None,maxPending=-1): - super().__init__(address,meta,maxPending) \ No newline at end of file + self.state = CH_READY + def stop(self): + self.channel.close() + + def print_return_stream_mesg(self,future): + # todo add try catch + # for ret in future.result(): + # print(ret.message) + # print(future) + pass \ No newline at end of file diff --git a/collector-agent/CollectorAgent/TCGenerator.py b/collector-agent/CollectorAgent/TCGenerator.py index 0201c3fd9..fb28d9274 100644 --- a/collector-agent/CollectorAgent/TCGenerator.py +++ b/collector-agent/CollectorAgent/TCGenerator.py @@ -48,7 +48,7 @@ # } # from Intercept import interceptManger -from Common import TCLogger +from Common.Logger import TCLogger from CollectorAgent.Protocol import * from Proto.Trift.Trace.ttypes import TAnnotation, TAnnotationValue, TIntStringValue,TLongIntIntByteByteStringValue diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index 731f7fa4f..aeab0d5d4 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -24,16 +24,16 @@ from CollectorAgent.TPackets import ControlMessageDecoder, ControlMessage, HandShakeMessage from Common import * +from Common.AgentHost import AgentHost +from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP, API_DEFAULT, AgentSocketCode, AGENT_INFO, SPAN, PHP_METHOD_CALL, API_WEB_REQUEST, \ PROXY_HTTP_HEADER from Proto.Trift.Trace.ttypes import TSpan, TSpanEvent, TIntStringValue, TAnnotation, TAnnotationValue, \ TLongIntIntByteByteStringValue -from Trains import * +from Events import * from CollectorAgent.TCGenerator import * from CollectorAgent.APIMeta import * from CollectorAgent.AgentStateManager import AgentStateManager -from CollectorAgent.CollectorAgentConf import CollectorAgentConf -from PinpointAgent import * class ThriftAgentImplement(PinpointAgent): @@ -339,7 +339,7 @@ def genTspan(self, span): return tSpan def scanLocalInfo(self): - ah = AgentHost() + ah = AgentHost(self.ac) self.agentInfo.hostname = ah.hostname self.agentInfo.ip = ah.ip self.agentInfo.ports = ah.port @@ -501,34 +501,34 @@ def __getTAgentInfoPacket(self): return packet - - -if __name__ == '__main__': - ac = CollectorAgentConf(CAConfig) - agent = ThriftAgentImplement(ac,'php-test-1','PHP-TEST-1') - - agent.startAll() - i = 0 - while True: - stime = int(time.time()*1000) - - rawSpan='{"name":"PHP Request",' \ - '"server":"10.34.130.79:28081",' \ - '"sid":"3345567788","psid":"3345567789","tid":"php-test-1^1560951035971^%d",'\ - '"S":%d,"E":20,' \ - '"clues":["46:200"],' \ - '"uri":"/index.html",' \ - '"EC":1, "estr":"DIY",' \ - '"calls":[{"name":"hello","S":0,"E":8,"calls":[{"name":"hello2","S":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":4,"E":4}]}]}],' \ - '"client":"10.10.10.10"}'% (i,stime) - stack = json.loads(rawSpan) - TCLogger.info("%s", stack) - agent.sendSpan(stack) - i += 1 - gevent.sleep(10) - - g = Event() - g.wait() +# +# +# if __name__ == '__main__': +# ac = CollectorAgentConf(CAConfig) +# agent = ThriftAgentImplement(ac,'php-test-1','PHP-TEST-1') +# +# agent.startAll() +# i = 0 +# while True: +# stime = int(time.time()*1000) +# +# rawSpan='{"name":"PHP Request",' \ +# '"server":"10.34.130.79:28081",' \ +# '"sid":"3345567788","psid":"3345567789","tid":"php-test-1^1560951035971^%d",'\ +# '"S":%d,"E":20,' \ +# '"clues":["46:200"],' \ +# '"uri":"/index.html",' \ +# '"EC":1, "estr":"DIY",' \ +# '"calls":[{"name":"hello","S":0,"E":8,"calls":[{"name":"hello2","S":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":4,"E":4}]}]}],' \ +# '"client":"10.10.10.10"}'% (i,stime) +# stack = json.loads(rawSpan) +# TCLogger.info("%s", stack) +# agent.sendSpan(stack) +# i += 1 +# gevent.sleep(10) +# +# g = Event() +# g.wait() # g1 = gevent.spawn( # time.sleep(1) diff --git a/collector-agent/CollectorAgent/__init__.py b/collector-agent/CollectorAgent/__init__.py deleted file mode 100644 index 5240cc38d..000000000 --- a/collector-agent/CollectorAgent/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - -from __future__ import absolute_import - -from CollectorAgent.ThriftAgentImplement import ThriftAgentImplement -from CollectorAgent.CollectorAgentConf import CollectorAgentConf -from CollectorAgent.Protocol import CollectorPro -__all__= ['CollectorAgentConf', 'ThriftAgentImplement', 'CollectorPro'] - - - diff --git a/collector-agent/Common/AgentHost.py b/collector-agent/Common/AgentHost.py index b76217412..c415a6e8d 100644 --- a/collector-agent/Common/AgentHost.py +++ b/collector-agent/Common/AgentHost.py @@ -17,16 +17,12 @@ # -*- coding: UTF-8 -*- import socket -from Common.Config import CAConfig class AgentHost(object): - def __init__(self): + def __init__(self,CAConfig): self.hostname = socket.gethostname() self.ip = socket.gethostbyname(self.hostname) self.port = CAConfig.get('Common','Web_Port') def __str__(self): return "host:%s ip:%s"%(self.hostname,self.ip) -if __name__ == '__main__': - agent = AgentHost() - print(agent) diff --git a/collector-agent/Common/Config.py b/collector-agent/Common/Config.py index 4ecdeff1c..7281b9753 100644 --- a/collector-agent/Common/Config.py +++ b/collector-agent/Common/Config.py @@ -27,21 +27,17 @@ else: import configparser as ConfigParser +def get_conf(env_name): + if not env_name in os.environ: + raise Exception("COLLECTOR_CONFIG not found in your environment") -if not 'COLLECTOR_CONFIG' in os.environ: - raise Exception("COLLECTOR_CONFIG not found in your environment") + __config_path = os.environ[env_name] + if not os.path.exists(__config_path): + raise Exception("COLLECTOR_CONFIG:%s not exist" % (__config_path)) -__config_path = os.environ['COLLECTOR_CONFIG'] - -if not os.path.exists(__config_path): - raise Exception("COLLECTOR_CONFIG:%s not exist"%(__config_path)) - -def get_conf(fullPath): config = ConfigParser.ConfigParser() - config.read(fullPath) + config.read(__config_path) return config -CAConfig = get_conf(__config_path); +CAConfig = get_conf('COLLECTOR_CONFIG'); -if __name__ == '__main__': - print(CAConfig.get('Common','LOG_DIR')) diff --git a/collector-agent/Common/Logger.py b/collector-agent/Common/Logger.py index 116331971..7f787056a 100644 --- a/collector-agent/Common/Logger.py +++ b/collector-agent/Common/Logger.py @@ -18,18 +18,19 @@ import logging -import Common.Config +TCLogger = logging.getLogger(__name__) +PALogger = logging.getLogger(__name__) - -def ca_logger(name,config,filename): - fullPath = config.get('Common', - 'LOG_DIR')+filename +def create_logger(name, filename,fullPath,level): + # fullPath = config.get('Common', + # 'LOG_DIR')+filename + fullPath =fullPath + filename logger = logging.getLogger(name) caFormat = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(filename)s:%(lineno)s] %(message)s') fileHandler = logging.FileHandler(fullPath) fileHandler.setFormatter(caFormat) # level = config.get('Common','Log_Level','DEBUG') - level = config.get('Common', 'Log_Level',fallback='DEBUG') + # level = config.get('Common', 'Log_Level',fallback='DEBUG') logger.setLevel(level) logger.addHandler(fileHandler) @@ -37,17 +38,13 @@ def ca_logger(name,config,filename): streamHandler = logging.StreamHandler() streamHandler.setFormatter(caFormat) logger.addHandler(streamHandler) - return logger - """ TCLogger response for thrift collector PALogger response for php agent """ -TCLogger=ca_logger("TC",Common.Config.CAConfig, "collector.agent.log") -PALogger=ca_logger("PA",Common.Config.CAConfig, "php.agent.log") -if __name__ == '__main__': - TCLogger.debug("test tc info") - PALogger.info("test pa info") + + + diff --git a/collector-agent/Common/__init__.py b/collector-agent/Common/__init__.py deleted file mode 100644 index 97aa49eab..000000000 --- a/collector-agent/Common/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - -from Common.AgentHost import AgentHost -from Common.Config import * -from Common.Logger import PALogger, TCLogger - -__all__ = ["CAConfig", "PALogger", "TCLogger","AgentHost","PY2"] diff --git a/collector-agent/Trains/DgramLayer.py b/collector-agent/Events/DgramLayer.py similarity index 96% rename from collector-agent/Trains/DgramLayer.py rename to collector-agent/Events/DgramLayer.py index 7ad317af1..2c1a8263d 100644 --- a/collector-agent/Trains/DgramLayer.py +++ b/collector-agent/Events/DgramLayer.py @@ -20,8 +20,8 @@ import errno from gevent import socket as asy_socket -from Common import TCLogger -from Trains.TrainsLayer import * +from Common.Logger import TCLogger +from Events.TrainsLayer import * class DgramLayer(TrainLayer): diff --git a/collector-agent/Events/GTimer.py b/collector-agent/Events/GTimer.py new file mode 100644 index 000000000..c44f945c6 --- /dev/null +++ b/collector-agent/Events/GTimer.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/21/19 + +class GTimer(object): + @staticmethod + def registerTimers(callback,interval,args=None): + from gevent import get_hub + loop = get_hub().loop + time = loop.timer(0, interval) + time.start(callback,args) \ No newline at end of file diff --git a/collector-agent/Trains/State.py b/collector-agent/Events/State.py similarity index 100% rename from collector-agent/Trains/State.py rename to collector-agent/Events/State.py diff --git a/collector-agent/Trains/StreamClientLayer.py b/collector-agent/Events/StreamClientLayer.py similarity index 99% rename from collector-agent/Trains/StreamClientLayer.py rename to collector-agent/Events/StreamClientLayer.py index 2dce6176c..60eebfbfb 100644 --- a/collector-agent/Trains/StreamClientLayer.py +++ b/collector-agent/Events/StreamClientLayer.py @@ -25,7 +25,8 @@ from gevent.event import Event ## write signal from Common import * -from Trains.TrainsLayer import * +from Common.Logger import TCLogger +from Events.TrainsLayer import * class StreamClientLayer(TrainLayer): diff --git a/collector-agent/Trains/StreamServerLayer.py b/collector-agent/Events/StreamServerLayer.py similarity index 100% rename from collector-agent/Trains/StreamServerLayer.py rename to collector-agent/Events/StreamServerLayer.py diff --git a/collector-agent/Trains/TrainsLayer.py b/collector-agent/Events/TrainsLayer.py similarity index 100% rename from collector-agent/Trains/TrainsLayer.py rename to collector-agent/Events/TrainsLayer.py diff --git a/collector-agent/Trains/__init__.py b/collector-agent/Events/__init__.py similarity index 81% rename from collector-agent/Trains/__init__.py rename to collector-agent/Events/__init__.py index c83015d2c..2e477ec85 100644 --- a/collector-agent/Trains/__init__.py +++ b/collector-agent/Events/__init__.py @@ -16,9 +16,9 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- -from Trains.DgramLayer import DgramLayer -from Trains.StreamClientLayer import StreamClientLayer -from Trains.StreamServerLayer import StreamServerLayer -from Trains.TrainsLayer import TrainLayer +from Events.DgramLayer import DgramLayer +from Events.StreamClientLayer import StreamClientLayer +from Events.StreamServerLayer import StreamServerLayer +from Events.TrainsLayer import TrainLayer __all__=['StreamClientLayer', 'DgramLayer','StreamServerLayer','TrainLayer'] diff --git a/collector-agent/PHPAgent/FrontAgent.py b/collector-agent/PHPAgent/FrontAgent.py index 02e0ca522..47badffd3 100644 --- a/collector-agent/PHPAgent/FrontAgent.py +++ b/collector-agent/PHPAgent/FrontAgent.py @@ -24,7 +24,7 @@ from PHPAgent.Type import RESPONSE_AGENT_INFO from PHPAgent.PHPAgentConf import PHPAgentConf -from Trains import StreamServerLayer +from Events import StreamServerLayer from Common import * diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index a4aca96ae..723b1acea 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -4,7 +4,6 @@ import json import time -from Common import * from CollectorAgent.CollectorAgentConf import CollectorAgentConf from CollectorAgent.ThriftAgentImplement import ThriftAgentImplement diff --git a/collector-agent/PinpointAgent/__init__.py b/collector-agent/PinpointAgent/__init__.py index 7e80b09d5..caf15ae98 100644 --- a/collector-agent/PinpointAgent/__init__.py +++ b/collector-agent/PinpointAgent/__init__.py @@ -16,6 +16,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- -from PinpointAgent.PinpointAgent import PinpointAgent -from .AppManagement import AppManagement -__all__=['PinpointAgent','AppManagement'] +# from PinpointAgent.PinpointAgent import PinpointAgent +# from PinpointAgent.AppManagement import AppManagement +# __all__=['PinpointAgent','AppManagement'] diff --git a/collector-agent/Test/test_agent_client.py b/collector-agent/Test/test_agent_client.py new file mode 100644 index 000000000..afdbe2821 --- /dev/null +++ b/collector-agent/Test/test_agent_client.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/21/19 + + +# -*- coding: UTF-8 -*- +import time +import logging +from unittest import TestCase +from CollectorAgent.AgentClient import AgentClient +from Common.Logger import TCLogger + +class TestGRPCRoutine(TestCase): + def setUp(self) -> None: + # import sys, os + # sys.path.append(os.path.abspath('..')) + # pass + import sys + TCLogger= logging.getLogger() + TCLogger.level=logging.DEBUG + console_handler=logging.StreamHandler(sys.stdout) + TCLogger.addHandler(console_handler) + def test_agentinfo(self): + starttime = str(int(time.time() * 1000)) + agent_meta = [('agentid', 'test-id'), + ('applicationname', 'test-name'), + ('starttime', starttime)] + agent = AgentClient('dev-1230','10.10.12.23','2345',4569,'dev-pinpoint:9991',agent_meta) + time.sleep(10) + agent.stop() \ No newline at end of file diff --git a/collector-agent/Test/test_front_agent.py b/collector-agent/Test/test_front_agent.py index 904857845..1bc690be3 100644 --- a/collector-agent/Test/test_front_agent.py +++ b/collector-agent/Test/test_front_agent.py @@ -3,13 +3,16 @@ # Created by eeliu at 10/16/19 import sys,os + +from Common.Config import CAConfig + sys.path.append(os.path.abspath('..')) sys.path.append(os.path.abspath('./helloworld')) from PHPAgent import PHPAgentConf from PHPAgent.FrontAgent import FrontAgent from Common import * -import helloworld_pb2_grpc, helloworld_pb2 +import helloworld_pb2, helloworld_pb2 import grpc @@ -25,7 +28,7 @@ def handleAgentPacket(client,type,str): TCLogger.debug("%d,%s",type,str) - stub = helloworld_pb2_grpc.GreeterStub(channel) + stub = helloworld_pb2.GreeterStub(channel) def process_response(future): print(future.result().message) diff --git a/collector-agent/Test/test_grpc_agent.py b/collector-agent/Test/test_grpc_agent.py index 500305789..987c101cd 100644 --- a/collector-agent/Test/test_grpc_agent.py +++ b/collector-agent/Test/test_grpc_agent.py @@ -4,7 +4,7 @@ from CollectorAgent import CollectorAgentConf from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement import time -from Common import * +from Common.Config import CAConfig class FakeManager(object): diff --git a/collector-agent/Test/test_grpc_protocol_routine.py b/collector-agent/Test/test_grpc_protocol_routine.py index 7f1ac5182..510feef4f 100644 --- a/collector-agent/Test/test_grpc_protocol_routine.py +++ b/collector-agent/Test/test_grpc_protocol_routine.py @@ -4,6 +4,12 @@ import grpc import time +from gevent import monkey +monkey.patch_all() +import grpc.experimental.gevent as grpc_gevent +grpc_gevent.init_gevent() + +from PinpointAgent.Type import PHP from Proto.grpc import Service_pb2_grpc from Proto.grpc.Stat_pb2 import PAgentInfo, PPing @@ -20,8 +26,8 @@ def agentinfo(): ('starttime',starttime)] response, call = stub.RequestAgentInfo.with_call( - PAgentInfo(hostname='xxx', ip='ip', ports='456,546', pid=423, endTimestamp=-1, - serviceType=1500), + PAgentInfo(hostname='xxx', ip='ip', ports='456', pid=423, endTimestamp=-1, + serviceType=PHP), metadata=agent_meta ) @@ -31,6 +37,8 @@ def agentinfo(): def ping_reqeust(): for i in range(10): ping = PPing() + time.sleep(1) + print('-') yield ping ping_meta = agent_meta[:] @@ -42,33 +50,33 @@ def ping_reqeust(): ## send metadata - channel = grpc.insecure_channel('dev-pinpoint:9991') - - meta_stub = Service_pb2_grpc.MetadataStub(channel) - - result = meta_stub.RequestApiMetaData(PApiMetaData(apiId=1,apiInfo='name',line=10,type=0),metadata=agent_meta) - print(result) - - ## snd span - channel = grpc.insecure_channel('dev-pinpoint:9993') - span_stub = Service_pb2_grpc.SpanStub(channel) - - def request_span(): - for i in range(5): - tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=i) - span =PSpan(version = 1, - transactionId=tid, - startTime= int(time.time()), - elapsed=10, - apiId=1, - serviceType=1500, - applicationServiceType=1500) - meg= PSpanMessage(span=span) - yield meg - - response = span_stub.SendSpan(request_span(),metadata=agent_meta) - - print(response) + # channel = grpc.insecure_channel('dev-pinpoint:9991') + # + # meta_stub = Service_pb2_grpc.MetadataStub(channel) + # + # result = meta_stub.RequestApiMetaData(PApiMetaData(apiId=1,apiInfo='name',line=10,type=0),metadata=agent_meta) + # print(result) + # + # ## snd span + # channel = grpc.insecure_channel('dev-pinpoint:9993') + # span_stub = Service_pb2_grpc.SpanStub(channel) + # + # def request_span(): + # for i in range(5): + # tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=i) + # span =PSpan(version = 1, + # transactionId=tid, + # startTime= int(time.time()), + # elapsed=10, + # apiId=1, + # serviceType=1500, + # applicationServiceType=1500) + # meg= PSpanMessage(span=span) + # yield meg + # + # response = span_stub.SendSpan(request_span(),metadata=agent_meta) + # + # print(response) # print(call.trailing_metadata()) @@ -81,9 +89,9 @@ def request_span(): # while True: # response, call = stub.PingSession(PPing(), metadata=agent_meta) - # print(response) - # print(call) - # time.sleep(1) + # print(response) + # print(call) + # time.sleep(1) diff --git a/collector-agent/requirements.txt b/collector-agent/requirements.txt index 95875fa9f..e0f771f8c 100644 --- a/collector-agent/requirements.txt +++ b/collector-agent/requirements.txt @@ -1,7 +1,7 @@ gevent==1.4.0 greenlet==0.4.15 -grpcio==1.23.0 -grpcio-tools==1.23.0 +grpcio==1.25.0rc1 +grpcio-tools==1.25.0rc1 protobuf==3.9.1 psutil==5.6.3 six==1.12.0 From 586b4030737e8ecc9103243ef324ac6b3dbacbc9 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Thu, 31 Oct 2019 16:31:54 +0800 Subject: [PATCH 04/45] [10-31] rebind life cycle --- collector-agent/CollectorAgent/AgentClient.py | 42 ++++++++++++------- collector-agent/CollectorAgent/GrpcClient.py | 31 +++++++++----- collector-agent/CollectorAgent/SpanClient.py | 9 ++++ .../PinpointAgent/AppManagement.py | 2 +- collector-agent/Test/test_agent_client.py | 4 +- collector-agent/Test/test_grpc_agent.py | 2 +- 6 files changed, 60 insertions(+), 30 deletions(-) create mode 100644 collector-agent/CollectorAgent/SpanClient.py diff --git a/collector-agent/CollectorAgent/AgentClient.py b/collector-agent/CollectorAgent/AgentClient.py index 5d7db02cd..67a25d507 100644 --- a/collector-agent/CollectorAgent/AgentClient.py +++ b/collector-agent/CollectorAgent/AgentClient.py @@ -21,45 +21,57 @@ def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_tim self.ip = ip self.pid = pid self.stub = Service_pb2_grpc.AgentStub(self.channel) - agentinfo = PAgentInfo(hostname=hostname, ip=ip, ports=ports, pid=pid, endTimestamp=-1, + self.agentinfo = PAgentInfo(hostname=hostname, ip=ip, ports=ports, pid=pid, endTimestamp=-1, serviceType=PHP) self.pingid= AgentClient.PINGID AgentClient.PINGID += 1 self.ping_meta = meta.append(('socketid', str(AgentClient.PINGID))) - self._register_agent(agentinfo) - self.ping_timeout =ping_timeout + self.ping_timeout = ping_timeout - def _register_agent(self, agentInfo): - assert isinstance(agentInfo,PAgentInfo) - call_future = self.stub.RequestAgentInfo.future(agentInfo) - callback = partial(self.print_return_unary_mesg,input=agentInfo) + + def channel_is_ready(self): + self._start_ping_thread() + + def channel_is_idle(self): + self._register_agent() + + def channel_is_error(self): + self._register_agent() + + def _register_agent(self): + assert isinstance(self.agentinfo,PAgentInfo) + call_future = self.stub.RequestAgentInfo.future(self.agentinfo) + callback = partial(self.reponse_agentinfo_callback, input=self.agentinfo) call_future.add_done_callback(callback) - def print_return_unary_mesg(self,future,input): + def reponse_agentinfo_callback(self, future, input): # start ping if future is success + if future.exception(): + TCLogger.error("agent catch exception %s",future.exception()) + return + if future.result(): TCLogger.debug("agent register done:%s",future.result()) - self._try_ping_session() + def _ping_PPing(self): - while self.state == CH_READY: + while True: ping = PPing() TCLogger.debug("%s send ping",self) yield ping import time time.sleep(10) - def _try_ping_session(self): + def _start_ping_thread(self): # create ping stub - ret_iter = self.stub.PingSession(self._ping_PPing(),metadata=self.ping_meta) - self.ping_reponse_task = threading.Thread(target=self._ping_response, args=(ret_iter)) + iter_reponse = self.stub.PingSession(self._ping_PPing(),metadata=self.ping_meta) + self.ping_reponse_task = threading.Thread(target=self._ping_response, args=(iter_reponse,)) self.ping_reponse_task.start() def _ping_response(self,response_iter): for response in response_iter: TCLogger.debug('get ping response %s',response) - - TCLogger.warn('Agent [%s] ping thread stopped',self) + TCLogger.warning('Agent [%s] ping thread stopped',self) def __str__(self): return 'hostname:%s ip:%s pid:%d address:%s'%(self.hostname,self.ip,self.pid,self.address ) \ No newline at end of file diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 5951d367a..9ee77f5b6 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -56,7 +56,8 @@ def __init__(self,address,meta=None,maxPending=-1): self.address = address self.meta = None self.max_pending_size = maxPending - self.state = CH_NOT_READY + # treat ready as default + self.state = CH_READY channel = grpc.insecure_channel(address) if meta is not None: @@ -85,17 +86,25 @@ def intercept_call(client_call_details, request_iterator, request_streaming, def _channel_state_change(self, activity): if activity == grpc.ChannelConnectivity.TRANSIENT_FAILURE: - self.state = CH_NOT_READY - elif activity == grpc.ChannelConnectivity.CONNECTING: - self.state = CH_NOT_READY + self.channel_is_error() elif activity == grpc.ChannelConnectivity.READY: - self.state = CH_READY + self.channel_is_ready() + elif activity == grpc.ChannelConnectivity.IDLE: + self.channel_is_idle() + + TCLogger.debug("channel state change %s",activity) + + def channel_is_ready(self): + raise NotImplemented() + + def channel_is_idle(self): + raise NotImplemented() + + def channel_is_error(self): + raise NotImplemented() + def stop(self): self.channel.close() - def print_return_stream_mesg(self,future): - # todo add try catch - # for ret in future.result(): - # print(ret.message) - # print(future) - pass \ No newline at end of file + def reinit(self): + raise NotImplemented() diff --git a/collector-agent/CollectorAgent/SpanClient.py b/collector-agent/CollectorAgent/SpanClient.py new file mode 100644 index 000000000..78c3918e8 --- /dev/null +++ b/collector-agent/CollectorAgent/SpanClient.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/31/19 +from CollectorAgent.GrpcClient import GrpcClient + + +class SpanClient(GrpcClient): + def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_timeout=10): + super().__init__(address, meta, maxPending) \ No newline at end of file diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 723b1acea..2518fd238 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -5,7 +5,7 @@ import time from CollectorAgent.CollectorAgentConf import CollectorAgentConf -from CollectorAgent.ThriftAgentImplement import ThriftAgentImplement +from Common.Logger import TCLogger from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP diff --git a/collector-agent/Test/test_agent_client.py b/collector-agent/Test/test_agent_client.py index afdbe2821..a21d0e047 100644 --- a/collector-agent/Test/test_agent_client.py +++ b/collector-agent/Test/test_agent_client.py @@ -26,5 +26,5 @@ def test_agentinfo(self): ('applicationname', 'test-name'), ('starttime', starttime)] agent = AgentClient('dev-1230','10.10.12.23','2345',4569,'dev-pinpoint:9991',agent_meta) - time.sleep(10) - agent.stop() \ No newline at end of file + time.sleep(1000) + # agent.stop() \ No newline at end of file diff --git a/collector-agent/Test/test_grpc_agent.py b/collector-agent/Test/test_grpc_agent.py index 987c101cd..22836a8b6 100644 --- a/collector-agent/Test/test_grpc_agent.py +++ b/collector-agent/Test/test_grpc_agent.py @@ -15,4 +15,4 @@ class FakeManager(object): manager = FakeManager() agent = GrpcAgentImplement(manager,collector_conf,'test-id','test-id-15') agent.start() - time.sleep(3) + # time.sleep(3) From e2d6106c70dce7b841759cfa7a92674b99b91e12 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 5 Nov 2019 18:50:11 +0800 Subject: [PATCH 05/45] [11-5] add metaClient --- collector-agent/CollectorAgent/AgentClient.py | 9 +- collector-agent/CollectorAgent/GrpcClient.py | 7 +- collector-agent/CollectorAgent/MetaClient.py | 87 +++++++++++++++++++ collector-agent/CollectorAgent/SpanClient.py | 38 +++++++- collector-agent/Test/test_agent_client.py | 54 ++++++++++-- .../Test/test_grpc_protocol_routine.py | 67 +++++++------- 6 files changed, 208 insertions(+), 54 deletions(-) create mode 100644 collector-agent/CollectorAgent/MetaClient.py diff --git a/collector-agent/CollectorAgent/AgentClient.py b/collector-agent/CollectorAgent/AgentClient.py index 67a25d507..4129934ae 100644 --- a/collector-agent/CollectorAgent/AgentClient.py +++ b/collector-agent/CollectorAgent/AgentClient.py @@ -5,9 +5,8 @@ import Service_pb2_grpc import threading +import time from functools import partial - -from CollectorAgent.Grpc import CH_READY from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger from PinpointAgent.Type import PHP @@ -53,14 +52,12 @@ def reponse_agentinfo_callback(self, future, input): if future.result(): TCLogger.debug("agent register done:%s",future.result()) - def _ping_PPing(self): while True: ping = PPing() TCLogger.debug("%s send ping",self) yield ping - import time - time.sleep(10) + time.sleep(self.ping_timeout) def _start_ping_thread(self): # create ping stub @@ -74,4 +71,4 @@ def _ping_response(self,response_iter): TCLogger.warning('Agent [%s] ping thread stopped',self) def __str__(self): - return 'hostname:%s ip:%s pid:%d address:%s'%(self.hostname,self.ip,self.pid,self.address ) \ No newline at end of file + return 'agentclient: hostname:%s ip:%s pid:%d address:%s'%(self.hostname,self.ip,self.pid,self.address) \ No newline at end of file diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 9ee77f5b6..2a4c6d5f4 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -56,8 +56,7 @@ def __init__(self,address,meta=None,maxPending=-1): self.address = address self.meta = None self.max_pending_size = maxPending - # treat ready as default - self.state = CH_READY + channel = grpc.insecure_channel(address) if meta is not None: @@ -68,8 +67,6 @@ def __init__(self,address,meta=None,maxPending=-1): self.channel = channel self.channel.subscribe(self._channel_state_change) - def get_state(self): - return self.state def _interceptor_add_header(self,header): def intercept_call(client_call_details, request_iterator, request_streaming, @@ -106,5 +103,3 @@ def channel_is_error(self): def stop(self): self.channel.close() - def reinit(self): - raise NotImplemented() diff --git a/collector-agent/CollectorAgent/MetaClient.py b/collector-agent/CollectorAgent/MetaClient.py new file mode 100644 index 000000000..14fcb8014 --- /dev/null +++ b/collector-agent/CollectorAgent/MetaClient.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 11/5/19 +import Service_pb2_grpc +from CollectorAgent.GrpcClient import GrpcClient +from Span_pb2 import PSqlMetaData, PApiMetaData, PStringMetaData + + +class MetaClient(GrpcClient): + def __init__(self,address,meta=None): + super().__init__(address, meta,-1) + self.meta_stub=Service_pb2_grpc.MetadataStub(self.channel) + self.is_ok = False + self.id = 0 + self.sql_table = {} + self.api_table = {} + self.string_table={} + + def _send_sql_meta(self,meta): + future = self.meta_stub.RequestSqlMetaData.future(meta) + future.add_done_callback(self._response) + + def _send_api_meta(self, meta): + future = self.meta_stub.RequestApiMetaData.future(meta) + future.add_done_callback(self._response) + + def _send_string_meta(self, meta): + future = self.meta_stub.RequestStringMetaData.future(meta) + future.add_done_callback(self._response) + + def update_api_meta(self, apiInfo, line, type): + row_str = ("%s-%d-%d"%(apiInfo,line,type)) + if row_str in self.api_table: + return self.api_table[row_str][0] + else: + id = self.id + meta = PApiMetaData(apiId=id, apiInfo=apiInfo,line=line,type=type) + self.api_table[row_str] = [id, meta] + self._send_api_meta(meta) + self.id += 1 + return id + + def update_string_meta(self, value): + if value in self.string_table: + return self.string_table[value][0] + else: + id = self.id + meta = PStringMetaData(stringId=id,stringValue=value) + self.string_table[value] = [id, meta] + self._send_string_meta(meta) + self.id += 1 + return id + + def update_sql_meta(self,sql): + if sql in self.sql_table: + return self.sql_table[sql][0] + else: + id = self.id + meta = PSqlMetaData(sqlId=id,sql=sql) + self.sql_table[sql] = [id,meta] + self._send_sql_meta(meta) + self.id+=1 + return id + + def _response(self,future): + pass + + def channel_is_ready(self): + self.is_ok = True + self._register_all_meta() + + def channel_is_idle(self): + self.is_ok = True + + def channel_is_error(self): + self.is_ok = False + + def _register_all_meta(self): + # register sql + for key,value in self.sql_table.items(): + self._send_sql_meta(value) + # api + for key,value in self.api_table.items(): + self._send_api_meta(value) + # string + for key,value in self.string_table.items(): + self._send_string_meta(value) \ No newline at end of file diff --git a/collector-agent/CollectorAgent/SpanClient.py b/collector-agent/CollectorAgent/SpanClient.py index 78c3918e8..dc75fcc34 100644 --- a/collector-agent/CollectorAgent/SpanClient.py +++ b/collector-agent/CollectorAgent/SpanClient.py @@ -1,9 +1,43 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/31/19 +import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient +from Common.Logger import TCLogger class SpanClient(GrpcClient): - def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_timeout=10): - super().__init__(address, meta, maxPending) \ No newline at end of file + def __init__(self,span_callback_fn,address,meta=None,maxPending=-1): + super().__init__(address, meta, maxPending) + + self.is_ok = False + assert (callable(span_callback_fn)) + self.span_callback_fn = span_callback_fn + self.span_stub = Service_pb2_grpc.SpanStub(self.channel) + self._start_span() + + + def channel_is_ready(self): + self.is_ok = True + + def channel_is_idle(self): + self.is_ok = True + + def channel_is_error(self): + self.is_ok = False + + def _span_response(self,*args): + print(args) + + def _get_span(self): + #todo add is_ok checking + while True: + span = self.span_callback_fn() + if span is not None: + yield span + else: + TCLogger.error(" get span failed, checking the span_callback_fn") + + def _start_span(self): + self.future = self.span_stub.SendSpan.future(self._get_span()) + self.future.add_done_callback(self._span_response) \ No newline at end of file diff --git a/collector-agent/Test/test_agent_client.py b/collector-agent/Test/test_agent_client.py index a21d0e047..50325efea 100644 --- a/collector-agent/Test/test_agent_client.py +++ b/collector-agent/Test/test_agent_client.py @@ -8,23 +8,59 @@ import logging from unittest import TestCase from CollectorAgent.AgentClient import AgentClient -from Common.Logger import TCLogger +from CollectorAgent.MetaClient import MetaClient +from CollectorAgent.SpanClient import SpanClient +from Span_pb2 import PTransactionId, PSpan, PSpanMessage + class TestGRPCRoutine(TestCase): + SEQ = 0 def setUp(self) -> None: # import sys, os # sys.path.append(os.path.abspath('..')) # pass import sys - TCLogger= logging.getLogger() - TCLogger.level=logging.DEBUG + logger= logging.getLogger() + logger.level=logging.DEBUG console_handler=logging.StreamHandler(sys.stdout) - TCLogger.addHandler(console_handler) - def test_agentinfo(self): + logger.addHandler(console_handler) + self.logger = logger starttime = str(int(time.time() * 1000)) - agent_meta = [('agentid', 'test-id'), + self.agent_meta = [('agentid', 'test-id'), ('applicationname', 'test-name'), ('starttime', starttime)] - agent = AgentClient('dev-1230','10.10.12.23','2345',4569,'dev-pinpoint:9991',agent_meta) - time.sleep(1000) - # agent.stop() \ No newline at end of file + self.agent = AgentClient('dev-1230', '10.10.12.23', '2345', 4569, 'dev-pinpoint:9991', self.agent_meta) + + def _generate_span(self): + + tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=TestGRPCRoutine.SEQ) + span =PSpan(version = 1, + transactionId=tid, + startTime= int(time.time()), + elapsed=10, + apiId=1, + serviceType=1500, + applicationServiceType=1500) + TestGRPCRoutine.SEQ+= 1 + msg= PSpanMessage(span=span) + self.logger.debug("generator a span") + return msg + + def test_sendspan(self): + spanclient = SpanClient(self._generate_span,'dev-pinpoint:9993',self.agent_meta,10) + time.sleep(5) + + def test_metaData(self): + apis=(['aa',10,0],['ada',12,0],['aa',31,2],['aaf',11,3]) + strings = ('aaaaaaaaaaaa','bbbbbbbbbbb','cccccccc') + sqls=('ssss','bbbbb','ssssssss') + meta_client = MetaClient('dev-pinpoint:9991',self.agent_meta) + + for api in apis: + meta_client.update_api_meta(*api) + + for string in strings: + meta_client.update_string_meta(string) + + for sql in sqls: + meta_client.update_sql_meta(sql) \ No newline at end of file diff --git a/collector-agent/Test/test_grpc_protocol_routine.py b/collector-agent/Test/test_grpc_protocol_routine.py index 510feef4f..b38455a8b 100644 --- a/collector-agent/Test/test_grpc_protocol_routine.py +++ b/collector-agent/Test/test_grpc_protocol_routine.py @@ -34,19 +34,19 @@ def agentinfo(): print(response) print(call.trailing_metadata()) - def ping_reqeust(): - for i in range(10): - ping = PPing() - time.sleep(1) - print('-') - yield ping - - ping_meta = agent_meta[:] - ping_meta.append(('socketid', '55')) - ping_iter = stub.PingSession(ping_reqeust(),metadata=ping_meta) - - for ping in ping_iter: - print(ping) + # def ping_reqeust(): + # for i in range(10): + # ping = PPing() + # time.sleep(1) + # print('-') + # yield ping + # + # ping_meta = agent_meta[:] + # ping_meta.append(('socketid', '55')) + # ping_iter = stub.PingSession(ping_reqeust(),metadata=ping_meta) + # + # for ping in ping_iter: + # print(ping) ## send metadata @@ -58,25 +58,30 @@ def ping_reqeust(): # print(result) # # ## snd span - # channel = grpc.insecure_channel('dev-pinpoint:9993') - # span_stub = Service_pb2_grpc.SpanStub(channel) - # - # def request_span(): - # for i in range(5): - # tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=i) - # span =PSpan(version = 1, - # transactionId=tid, - # startTime= int(time.time()), - # elapsed=10, - # apiId=1, - # serviceType=1500, - # applicationServiceType=1500) - # meg= PSpanMessage(span=span) - # yield meg - # - # response = span_stub.SendSpan(request_span(),metadata=agent_meta) + channel = grpc.insecure_channel('dev-pinpoint:9993') + span_stub = Service_pb2_grpc.SpanStub(channel) # - # print(response) + def request_span(): + for i in range(5): + tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=i) + span =PSpan(version = 1, + transactionId=tid, + startTime= int(time.time()), + elapsed=10, + apiId=1, + serviceType=1500, + applicationServiceType=1500) + meg= PSpanMessage(span=span) + yield meg + print("send span") + + def resp(self,*args): + print(args) + + response = span_stub.SendSpan.future(request_span(),metadata=agent_meta) + response.add_done_callback(resp) + + time.sleep(3) # print(call.trailing_metadata()) From 75c3016c50416e2ada350febc107b0682ab29627 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Wed, 6 Nov 2019 15:10:31 +0800 Subject: [PATCH 06/45] [11-6] metadata is done --- collector-agent/CollectorAgent/MetaClient.py | 15 ++++++++++---- collector-agent/Test/test_agent_client.py | 21 ++++++++++++++------ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/collector-agent/CollectorAgent/MetaClient.py b/collector-agent/CollectorAgent/MetaClient.py index 14fcb8014..98d8a13e9 100644 --- a/collector-agent/CollectorAgent/MetaClient.py +++ b/collector-agent/CollectorAgent/MetaClient.py @@ -3,6 +3,7 @@ # Created by eeliu at 11/5/19 import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient +from Common.Logger import TCLogger from Span_pb2 import PSqlMetaData, PApiMetaData, PStringMetaData @@ -17,14 +18,17 @@ def __init__(self,address,meta=None): self.string_table={} def _send_sql_meta(self,meta): + assert isinstance(meta,PSqlMetaData) future = self.meta_stub.RequestSqlMetaData.future(meta) future.add_done_callback(self._response) def _send_api_meta(self, meta): + assert isinstance(meta, PApiMetaData) future = self.meta_stub.RequestApiMetaData.future(meta) future.add_done_callback(self._response) def _send_string_meta(self, meta): + assert isinstance(meta, PStringMetaData) future = self.meta_stub.RequestStringMetaData.future(meta) future.add_done_callback(self._response) @@ -63,7 +67,10 @@ def update_sql_meta(self,sql): return id def _response(self,future): - pass + if future.exception(): + TCLogger.warning("register meta failed") + return + TCLogger.debug(future.result()) def channel_is_ready(self): self.is_ok = True @@ -78,10 +85,10 @@ def channel_is_error(self): def _register_all_meta(self): # register sql for key,value in self.sql_table.items(): - self._send_sql_meta(value) + self._send_sql_meta(value[1]) # api for key,value in self.api_table.items(): - self._send_api_meta(value) + self._send_api_meta(value[1]) # string for key,value in self.string_table.items(): - self._send_string_meta(value) \ No newline at end of file + self._send_string_meta(value[1]) \ No newline at end of file diff --git a/collector-agent/Test/test_agent_client.py b/collector-agent/Test/test_agent_client.py index 50325efea..22df50813 100644 --- a/collector-agent/Test/test_agent_client.py +++ b/collector-agent/Test/test_agent_client.py @@ -55,12 +55,21 @@ def test_metaData(self): strings = ('aaaaaaaaaaaa','bbbbbbbbbbb','cccccccc') sqls=('ssss','bbbbb','ssssssss') meta_client = MetaClient('dev-pinpoint:9991',self.agent_meta) - + id = 0 for api in apis: - meta_client.update_api_meta(*api) - + id = meta_client.update_api_meta(*api) + self.assertEqual(id,3) for string in strings: - meta_client.update_string_meta(string) - + id = meta_client.update_string_meta(string) + self.assertEqual(id, 6) for sql in sqls: - meta_client.update_sql_meta(sql) \ No newline at end of file + id = meta_client.update_sql_meta(sql) + self.assertEqual(id, 9) + + id = meta_client.update_sql_meta('ssss') + self.assertEqual(id, 7) + + id = meta_client.update_string_meta('bbbbbbbbbbb') + self.assertEqual(id, 5) + + time.sleep(3) \ No newline at end of file From ef258eb084485f5a79d3025cceebc9c1e6baf73a Mon Sep 17 00:00:00 2001 From: liumingyi Date: Wed, 6 Nov 2019 17:45:31 +0800 Subject: [PATCH 07/45] [11-6] add spanFactory --- collector-agent/CollectorAgent/AgentClient.py | 6 +- .../CollectorAgent/CollectorAgentConf.py | 11 +++ .../CollectorAgent/GrpcAgentImplement.py | 76 +++++++------------ collector-agent/CollectorAgent/GrpcClient.py | 12 +-- collector-agent/CollectorAgent/MetaClient.py | 6 +- collector-agent/CollectorAgent/SpanClient.py | 6 +- .../CollectorAgent/ThriftAgentImplement.py | 40 +--------- collector-agent/PHPAgent/FrontAgent.py | 2 +- collector-agent/PHPAgent/SpanFactory.py | 36 +++++++++ collector-agent/Test/test_front_agent.py | 4 +- ...t_grpc_agent.py => test_grpc_implement.py} | 9 +-- collector-agent/Test/test_packet.py | 35 ++++++++- .../Test/test_perf_of_unix_socket.py | 51 +++++++++++++ 13 files changed, 183 insertions(+), 111 deletions(-) create mode 100644 collector-agent/PHPAgent/SpanFactory.py rename collector-agent/Test/{test_grpc_agent.py => test_grpc_implement.py} (65%) create mode 100644 collector-agent/Test/test_perf_of_unix_socket.py diff --git a/collector-agent/CollectorAgent/AgentClient.py b/collector-agent/CollectorAgent/AgentClient.py index 4129934ae..8eb8193ec 100644 --- a/collector-agent/CollectorAgent/AgentClient.py +++ b/collector-agent/CollectorAgent/AgentClient.py @@ -28,13 +28,13 @@ def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_tim self.ping_timeout = ping_timeout - def channel_is_ready(self): + def channel_set_ready(self): self._start_ping_thread() - def channel_is_idle(self): + def channel_set_idle(self): self._register_agent() - def channel_is_error(self): + def channel_set_error(self): self._register_agent() def _register_agent(self): diff --git a/collector-agent/CollectorAgent/CollectorAgentConf.py b/collector-agent/CollectorAgent/CollectorAgentConf.py index a420dba6b..9bd928e49 100644 --- a/collector-agent/CollectorAgent/CollectorAgentConf.py +++ b/collector-agent/CollectorAgent/CollectorAgentConf.py @@ -28,6 +28,17 @@ def __init__(self,config): :param ConfigParser config: ''' + + self.CollectorSpanIp ='' + self.CollectorSpanPort ='' + self.CollectorStatIp ='' + self.CollectorStatPort ='' + self.CollectorAgentIp ='' + self.CollectorAgentPort = '' + self.max_pending_size ='' + self.collector_type = -1 + self.collector_implement = None + if config.has_option('Collector','collector.grpc.agent.ip') and \ config.has_option('Collector','collector.grpc.stat.ip') and \ config.has_option('Collector', 'collector.grpc.span.ip'): diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index e37731842..efe06b3bd 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -1,79 +1,59 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/16/19 -import time - -import grpc - -from CollectorAgent.Grpc import CH_NOT_READY, CH_READY -from PinpointAgent import PinpointAgent +from CollectorAgent.AgentClient import AgentClient +from CollectorAgent.MetaClient import MetaClient +from CollectorAgent.SpanClient import SpanClient +from CollectorAgent.CollectorAgentConf import CollectorAgentConf +from Common.AgentHost import AgentHost +from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP, SUPPORT_GRPC -from Stat_pb2 import PPing +from Span_pb2 import PSpanMessage +from queue import Queue class GrpcAgentImplement(PinpointAgent): - socketUniqueId=0 - def __init__(self, manage, ac, app_id, app_name, serviceType=PHP): - from CollectorAgent import CollectorAgentConf - assert(isinstance(ac,CollectorAgentConf)) - assert(ac.collector_type == SUPPORT_GRPC) + def __init__(self, ac, app_id, app_name, serviceType=PHP): + + assert isinstance(ac,CollectorAgentConf) + assert ac.collector_type == SUPPORT_GRPC super().__init__(app_id, app_name) self.agent_metadata = [('starttime',self.manage.startTimestamp), ('agentid', app_id), ('applicationname',app_name)] - self.span_metadata = self.agent_metadata.append(()) - self.ping_metadata = self.agent_metadata.append(('socketid',str(GrpcAgentImplement.socketUniqueId))) - GrpcAgentImplement.socketUniqueId += 1 # maybe change in future self.app_name = app_name self.max_pending_sz = ac.max_pending_size self.app_id = app_id - self.span_c_state = CH_NOT_READY - self.stat_c_state = CH_NOT_READY - self.agent_c_state = CH_NOT_READY self.write_queue_ofs = 0 self.span_buff=([],[]) self.agent_addr = ac.CollectorAgentIp+':' + str(ac.CollectorAgentPort) self.stat_addr = ac.CollectorStatIp + ':' + str(ac.CollectorSpanPort) self.span_addr = ac.CollectorSpanIp + ':' + str(ac.CollectorSpanPort) - self.agent_channel,self.stat_channel,self.span_channel = self._initialize_channels() - - def _initialize_channels(self): - agent_ch = grpc.insecure_channel(self.agent_addr) - stat_ch = grpc.insecure_channel(self.stat_addr) - span_ch = grpc.insecure_channel(self.span_addr) - - # add state change hook - - - - return agent_ch,stat_ch,span_ch - - - def set_span_channel_state(self,state): - pass - - def set_agent_channel_state(self,state): - pass - - def set_stat_channel_state(self,state): - pass - + import os + ah = AgentHost(self.ac) + self.agent_client = AgentClient(ah.hostname,ah.ip,ah.port,os.getpid(),self.agent_addr,self.agent_meta) + self.meta_client = MetaClient(self.agent_addr, self.agent_meta) + self.span_client = SpanClient(self._generate_span, self.span_addr, self.agent_meta, self.max_pending_sz) + self.queue = Queue(10000) + self.sequenceId = 0 def start(self): - # 1. create channel of span,agent,stat - # 2. register agent - # 3. keep ping - raise NotImplementedError() + pass def sendSpan(self, stack): # stack -> grpc-span # create stringid, + pass - # elapsed by 1s - raise NotImplementedError() def stop(self): # close all channel - raise NotImplementedError() \ No newline at end of file + raise NotImplementedError() + + def _generate_span(self): + # here return a PSpanMessage + span = self.queue.get() + assert isinstance(span,PSpanMessage) + return span \ No newline at end of file diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 2a4c6d5f4..e8064730e 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -83,21 +83,21 @@ def intercept_call(client_call_details, request_iterator, request_streaming, def _channel_state_change(self, activity): if activity == grpc.ChannelConnectivity.TRANSIENT_FAILURE: - self.channel_is_error() + self.channel_set_error() elif activity == grpc.ChannelConnectivity.READY: - self.channel_is_ready() + self.channel_set_ready() elif activity == grpc.ChannelConnectivity.IDLE: - self.channel_is_idle() + self.channel_set_idle() TCLogger.debug("channel state change %s",activity) - def channel_is_ready(self): + def channel_set_ready(self): raise NotImplemented() - def channel_is_idle(self): + def channel_set_idle(self): raise NotImplemented() - def channel_is_error(self): + def channel_set_error(self): raise NotImplemented() def stop(self): diff --git a/collector-agent/CollectorAgent/MetaClient.py b/collector-agent/CollectorAgent/MetaClient.py index 98d8a13e9..358340cb8 100644 --- a/collector-agent/CollectorAgent/MetaClient.py +++ b/collector-agent/CollectorAgent/MetaClient.py @@ -72,14 +72,14 @@ def _response(self,future): return TCLogger.debug(future.result()) - def channel_is_ready(self): + def channel_set_ready(self): self.is_ok = True self._register_all_meta() - def channel_is_idle(self): + def channel_set_idle(self): self.is_ok = True - def channel_is_error(self): + def channel_set_error(self): self.is_ok = False def _register_all_meta(self): diff --git a/collector-agent/CollectorAgent/SpanClient.py b/collector-agent/CollectorAgent/SpanClient.py index dc75fcc34..d480e45da 100644 --- a/collector-agent/CollectorAgent/SpanClient.py +++ b/collector-agent/CollectorAgent/SpanClient.py @@ -17,13 +17,13 @@ def __init__(self,span_callback_fn,address,meta=None,maxPending=-1): self._start_span() - def channel_is_ready(self): + def channel_set_ready(self): self.is_ok = True - def channel_is_idle(self): + def channel_set_idle(self): self.is_ok = True - def channel_is_error(self): + def channel_set_error(self): self.is_ok = False def _span_response(self,*args): diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index aeab0d5d4..ef2044aea 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -498,42 +498,4 @@ def __getTAgentInfoPacket(self): packet = Packet(PacketType.APPLICATION_REQUEST,CollectorPro.getCurReqCount(),len(body),body) ThriftAgentImplement.ReqCount +=1 - return packet - - -# -# -# if __name__ == '__main__': -# ac = CollectorAgentConf(CAConfig) -# agent = ThriftAgentImplement(ac,'php-test-1','PHP-TEST-1') -# -# agent.startAll() -# i = 0 -# while True: -# stime = int(time.time()*1000) -# -# rawSpan='{"name":"PHP Request",' \ -# '"server":"10.34.130.79:28081",' \ -# '"sid":"3345567788","psid":"3345567789","tid":"php-test-1^1560951035971^%d",'\ -# '"S":%d,"E":20,' \ -# '"clues":["46:200"],' \ -# '"uri":"/index.html",' \ -# '"EC":1, "estr":"DIY",' \ -# '"calls":[{"name":"hello","S":0,"E":8,"calls":[{"name":"hello2","S":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":4,"E":4}]}]}],' \ -# '"client":"10.10.10.10"}'% (i,stime) -# stack = json.loads(rawSpan) -# TCLogger.info("%s", stack) -# agent.sendSpan(stack) -# i += 1 -# gevent.sleep(10) -# -# g = Event() -# g.wait() - - # g1 = gevent.spawn( - # time.sleep(1) - # rawSpan='{"name":"a","args":"1,2,3","calls":[{"name":"b","args":"1"},{"name":"c","args":"1"},{"name":"d","args":"1"}]}' - # agent.upLoadTSpanEvent(rawSpan) - # g1.join() - - + return packet \ No newline at end of file diff --git a/collector-agent/PHPAgent/FrontAgent.py b/collector-agent/PHPAgent/FrontAgent.py index 47badffd3..8f595a637 100644 --- a/collector-agent/PHPAgent/FrontAgent.py +++ b/collector-agent/PHPAgent/FrontAgent.py @@ -22,10 +22,10 @@ from gevent import socket as gsocket +from Common.Logger import TCLogger from PHPAgent.Type import RESPONSE_AGENT_INFO from PHPAgent.PHPAgentConf import PHPAgentConf from Events import StreamServerLayer -from Common import * class FrontAgent(object): diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py new file mode 100644 index 000000000..5b7147daf --- /dev/null +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 11/6/19 + +class SpanFactory(object): + def __init__(self): + self.sequenceid = 0 + + def create_span(self,stackMap): + raise NotImplemented + + def create_span_event(self,stackMap): + raise NotImplemented + + def attach_span_event(self,span_event): + raise NotImplemented + + def make_span(self,stackMap): + self.sequenceid = 0 + span = self.create_span(stackMap) + self.make_span_ev(span,stackMap) + + return span + + def make_span_ev(self,span,stackMap,index= 0 ): + span_ev = self.create_span_event(stackMap) + self.set_sequenceid(span_ev,self.sequenceid) + self.sequenceid += 1 + self.attach_span_event(span_ev) + + if 'calls' in stackMap: + for called in stackMap['calls']: + self.make_span_ev(span,called, index + 1) + + def set_sequenceid(self,span_ev,id): + raise NotImplemented \ No newline at end of file diff --git a/collector-agent/Test/test_front_agent.py b/collector-agent/Test/test_front_agent.py index 1bc690be3..3bd8e518e 100644 --- a/collector-agent/Test/test_front_agent.py +++ b/collector-agent/Test/test_front_agent.py @@ -5,14 +5,14 @@ import sys,os from Common.Config import CAConfig +from Common.Logger import TCLogger +from Test.helloworld import helloworld_pb2 sys.path.append(os.path.abspath('..')) sys.path.append(os.path.abspath('./helloworld')) from PHPAgent import PHPAgentConf from PHPAgent.FrontAgent import FrontAgent -from Common import * -import helloworld_pb2, helloworld_pb2 import grpc diff --git a/collector-agent/Test/test_grpc_agent.py b/collector-agent/Test/test_grpc_implement.py similarity index 65% rename from collector-agent/Test/test_grpc_agent.py rename to collector-agent/Test/test_grpc_implement.py index 22836a8b6..363d7911d 100644 --- a/collector-agent/Test/test_grpc_agent.py +++ b/collector-agent/Test/test_grpc_implement.py @@ -1,9 +1,9 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/18/19\ -from CollectorAgent import CollectorAgentConf -from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement import time +from CollectorAgent.CollectorAgentConf import CollectorAgentConf +from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement from Common.Config import CAConfig @@ -12,7 +12,6 @@ class FakeManager(object): if __name__ == '__main__': collector_conf = CollectorAgentConf(CAConfig) - manager = FakeManager() - agent = GrpcAgentImplement(manager,collector_conf,'test-id','test-id-15') + agent = GrpcAgentImplement(collector_conf,'test-id','test-id-15') agent.start() - # time.sleep(3) + time.sleep(3) diff --git a/collector-agent/Test/test_packet.py b/collector-agent/Test/test_packet.py index 1978d760d..e683f8d2a 100644 --- a/collector-agent/Test/test_packet.py +++ b/collector-agent/Test/test_packet.py @@ -20,7 +20,7 @@ # -*- coding: UTF-8 -*- -class TestPacket(TestCase): +class TestUtil(TestCase): def test_parseNetByteStream(self): netFlow = struct.pack('!hii9shih',PacketType.CONTROL_HANDSHAKE,2,9,"123456789".encode(),PacketType.APPLICATION_STREAM_CLOSE,12345,0) view = memoryview(netFlow) @@ -43,4 +43,37 @@ def test_parseNetByteStream(self): self.assertEqual(tp[2],12345) self.assertEqual(tp[3],None) + def test_queue(self): + import threading + from queue import Queue + simple_queue = Queue() + + def worker(): + times = 10000 + while times>0 : + item = simple_queue.get() + if item is None: + raise + times-=1 + print("-1") + + def consumer(): + times = 10000 + while times > 0: + simple_queue.put(consumer) + times -= 1 + print("+1") + + + producer = threading.Thread(target=worker) + cons = threading.Thread(target=consumer) + producer.start() + cons.start() + producer.join() + cons.join() + + def create_fun(self): + def fun(): + return None + return fun diff --git a/collector-agent/Test/test_perf_of_unix_socket.py b/collector-agent/Test/test_perf_of_unix_socket.py new file mode 100644 index 000000000..9b7756c3e --- /dev/null +++ b/collector-agent/Test/test_perf_of_unix_socket.py @@ -0,0 +1,51 @@ +import struct +import time + +from gevent import Timeout +from gevent import socket as gsocket + + +def output_src(socket,address): + print('New connection from %s' % address) + while True: + header = socket.recv(4) + len, = struct.unpack('!i', header) + print(len) + body = socket.recv(len) + print(body) + + +def timer_send_cc(socket): + socket.send("ccc") + +def timer_send(socket): + socket.send("ttt") + +count = 0 + +def client(): + global count + count+=1 + s = gsocket.socket(gsocket.AF_UNIX, gsocket.SOCK_STREAM) + + try: + s.connect(('/tmp/collector-agent.sock')) + except Timeout as t: + print("connect time out: %s"%str(t)) + except Exception as e: + print(str(e)) + json='{"a":1,"c":"123456789"}' + import struct + data = struct.pack('!ii',1,0) + s.send(data) + data =s.recv(1024) + s.close() + + +if __name__ == '__main__': + time_s = time.time() + i = 10000 + while i > 0: + client() + i-=1 + print(" speed:%f"%(time.time() - time_s)) \ No newline at end of file From 1c8258f091d543da3fb5649cc3142b096ebd1ec1 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Thu, 7 Nov 2019 17:00:16 +0800 Subject: [PATCH 08/45] [11-7] - rewrite logger --- .../CollectorAgent/CollectorAgentConf.py | 21 +- .../CollectorAgent/GrpcAgentImplement.py | 8 +- .../CollectorAgent/PBSpanFactory.py | 3 + .../CollectorAgent/ThriftAgentImplement.py | 209 ++---------------- .../CollectorAgent/ThriftSpanFactory.py | 156 +++++++++++++ collector-agent/Common/AgentHost.py | 3 +- collector-agent/Common/Config.py | 12 +- collector-agent/Common/Logger.py | 45 ++-- collector-agent/PHPAgent/PHPAgentConf.py | 6 - collector-agent/PHPAgent/SpanFactory.py | 11 +- .../PinpointAgent/AppManagement.py | 8 +- collector-agent/Test/conf/collector_grpc.conf | 16 ++ .../Test/conf/collector_thrift.conf | 16 ++ collector-agent/Test/test_implement.py | 54 +++++ .../Test/{test_packet.py => test_util.py} | 11 +- collector-agent/run.py | 14 +- 16 files changed, 328 insertions(+), 265 deletions(-) create mode 100644 collector-agent/CollectorAgent/PBSpanFactory.py create mode 100644 collector-agent/CollectorAgent/ThriftSpanFactory.py create mode 100644 collector-agent/Test/conf/collector_grpc.conf create mode 100644 collector-agent/Test/conf/collector_thrift.conf create mode 100644 collector-agent/Test/test_implement.py rename collector-agent/Test/{test_packet.py => test_util.py} (93%) diff --git a/collector-agent/CollectorAgent/CollectorAgentConf.py b/collector-agent/CollectorAgent/CollectorAgentConf.py index 9bd928e49..bf244bf6a 100644 --- a/collector-agent/CollectorAgent/CollectorAgentConf.py +++ b/collector-agent/CollectorAgent/CollectorAgentConf.py @@ -15,7 +15,10 @@ #------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +import time + import Common +from Common.Logger import set_logger_file, set_logger_level, logger_enable_console from PinpointAgent.Type import SUPPORT_THRIFT, SUPPORT_GRPC from CollectorAgent.ThriftAgentImplement import ThriftAgentImplement from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement @@ -38,7 +41,8 @@ def __init__(self,config): self.max_pending_size ='' self.collector_type = -1 self.collector_implement = None - + self.startTimestamp = int(time.time() * 1000) + self.config = config if config.has_option('Collector','collector.grpc.agent.ip') and \ config.has_option('Collector','collector.grpc.stat.ip') and \ config.has_option('Collector', 'collector.grpc.span.ip'): @@ -79,11 +83,15 @@ def __init__(self,config): self.ApplicationName = config.get('Collector', 'ApplicationName') self.version = AGENT_VERSION - self.config = config - log_dir = config.get('Common','LOG_DIR') + + log_dir = config.get('Common','LOG_DIR',fallback=None) log_level = config.get('Common', 'Log_Level',fallback='DEBUG') - Common.Logger.TCLogger = Common.Logger.create_logger("TC", log_dir, "collector.agent.log",log_level) - Common.Logger.PALogger = Common.Logger.create_logger("PA",log_dir, "php.agent.log",log_level) + if log_dir is not None: + set_logger_file(log_dir) + else: + logger_enable_console() + set_logger_level(log_level) + def getSpanHost(self): return ( self.CollectorSpanIp,self.CollectorSpanPort) @@ -94,6 +102,9 @@ def getStatHost(self): def getTcpHost(self): return (self.CollectorAgentIp, self.CollectorAgentPort) + def getWebPort(self): + return self.config.get('Common','Web_Port') + def clean(self): pass # os.remove(self.sharedObjectAddress) diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index efe06b3bd..f91c74619 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -4,7 +4,6 @@ from CollectorAgent.AgentClient import AgentClient from CollectorAgent.MetaClient import MetaClient from CollectorAgent.SpanClient import SpanClient -from CollectorAgent.CollectorAgentConf import CollectorAgentConf from Common.AgentHost import AgentHost from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP, SUPPORT_GRPC @@ -15,10 +14,9 @@ class GrpcAgentImplement(PinpointAgent): def __init__(self, ac, app_id, app_name, serviceType=PHP): - assert isinstance(ac,CollectorAgentConf) assert ac.collector_type == SUPPORT_GRPC super().__init__(app_id, app_name) - self.agent_metadata = [('starttime',self.manage.startTimestamp), + self.agent_meta = [('starttime',ac.startTimestamp), ('agentid', app_id), ('applicationname',app_name)] # maybe change in future @@ -31,8 +29,8 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): self.stat_addr = ac.CollectorStatIp + ':' + str(ac.CollectorSpanPort) self.span_addr = ac.CollectorSpanIp + ':' + str(ac.CollectorSpanPort) import os - ah = AgentHost(self.ac) - self.agent_client = AgentClient(ah.hostname,ah.ip,ah.port,os.getpid(),self.agent_addr,self.agent_meta) + ah = AgentHost() + self.agent_client = AgentClient(ah.hostname,ah.ip,ac.getWebPort(),os.getpid(),self.agent_addr,self.agent_meta) self.meta_client = MetaClient(self.agent_addr, self.agent_meta) self.span_client = SpanClient(self._generate_span, self.span_addr, self.agent_meta, self.max_pending_sz) self.queue = Queue(10000) diff --git a/collector-agent/CollectorAgent/PBSpanFactory.py b/collector-agent/CollectorAgent/PBSpanFactory.py new file mode 100644 index 000000000..26de6e768 --- /dev/null +++ b/collector-agent/CollectorAgent/PBSpanFactory.py @@ -0,0 +1,3 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 11/7/19 \ No newline at end of file diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index ef2044aea..409691d82 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -15,21 +15,18 @@ #------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- -import json +# import json import os -import struct -import time - -import gevent +# import struct +# import time +# +# import gevent from CollectorAgent.TPackets import ControlMessageDecoder, ControlMessage, HandShakeMessage -from Common import * +from CollectorAgent.ThriftSpanFactory import ThriftSpanFactory from Common.AgentHost import AgentHost from PinpointAgent.PinpointAgent import PinpointAgent -from PinpointAgent.Type import PHP, API_DEFAULT, AgentSocketCode, AGENT_INFO, SPAN, PHP_METHOD_CALL, API_WEB_REQUEST, \ - PROXY_HTTP_HEADER -from Proto.Trift.Trace.ttypes import TSpan, TSpanEvent, TIntStringValue, TAnnotation, TAnnotationValue, \ - TLongIntIntByteByteStringValue +from PinpointAgent.Type import PHP, API_DEFAULT, AgentSocketCode from Events import * from CollectorAgent.TCGenerator import * from CollectorAgent.APIMeta import * @@ -41,11 +38,11 @@ class ThriftAgentImplement(PinpointAgent): ReqCount = 0 - def __init__(self,manage,ac,app_id,app_name,serviceType=PHP): + def __init__(self,ac,app_id,app_name,serviceType=PHP): super().__init__(app_id,app_name) self.ac = ac - self.tcpHost = (ac.CollectorTcpIp, ac.CollectorTcpPort) + self.tcpHost = (ac.CollectorAgentIp, ac.CollectorAgentPort) self.statHost = (ac.CollectorStatIp, ac.CollectorStatPort) self.spanHost = (ac.CollectorSpanIp, ac.CollectorSpanPort) TCLogger.debug("CollectorTcp %s CollectorStat %s CollectorSpan %s" % (self.tcpHost, self.statHost, self.spanHost)) @@ -75,8 +72,7 @@ def __init__(self,manage,ac,app_id,app_name,serviceType=PHP): PacketType.CONTROL_PONG : self.handle_recv_pong } self.socketCode = AgentSocketCode.NONE - self.manage = manage - self.startTimeStamp = self.manage.startTimestamp + self.startTimeStamp = self.ac.startTimestamp self.agentName= app_name self.agentInfo = TAgentInfo( agentId =app_id, @@ -92,6 +88,7 @@ def __init__(self,manage,ac,app_id,app_name,serviceType=PHP): self.scanLocalInfo() self.api_metas = {} self.string_metas = {} + self.span_factory = ThriftSpanFactory(self) ## expose to other module def sendMsgToCollector(self,msg): @@ -147,202 +144,24 @@ def updateStringMeta(self,name): def sendSpan(self,stack): ''' - :param dict stack: :return: ''' ### must reset to zero self.sequenceId = 0 - tSpan = self.makeSpan(stack) - + tSpan = self.span_factory.make_span(stack) body = CollectorPro.obj2bin(tSpan,SPAN) # packet = Packet(PacketType.HEADLESS, len(body), body) self.spanLayer.sendData(body) # self.spanLayer.sendData(packet.getSerializedData()) TCLogger.debug("send TSpan:%s",tSpan) - - def genSpanEvent(self, span): - ''' - - :param dict span: - :return TSpanEvent: - ''' - assert 'name' in span - spanEv = TSpanEvent() - - spanEv.apiId = self.updateApiMeta(span['name']).apiId - spanEv.annotations = [] - if 'EXP' in span: - id = self.updateStringMeta('EXP').apiId - spanEv.exceptionInfo = TIntStringValue(id, span['EXP']) - - if 'dst' in span: - spanEv.destinationId = span['dst'] - - if 'S' in span: - spanEv.startElapsed = span['S'] - - if 'E' in span: - spanEv.endElapsed = span['E'] - - if 'dst' in span: - spanEv.destinationId = span['dst'] - - if 'nsid' in span: - spanEv.nextSpanId = int(span['nsid']) - - if 'stp' in span: - spanEv.serviceType = int(span['stp']) - else: - spanEv.serviceType = PHP_METHOD_CALL - - if 'clues' in span: - for annotation in span['clues']: # list - id, value = annotation.split(':', 1) - - if value and value[0] =='[': ## value is a In - pass - else: ## value is a string - ann = TAnnotation(int(id), TAnnotationValue(stringValue=value)) - spanEv.annotations.append(ann) - - return spanEv - - - def makeSpan(self, stackMap, tSpan=None, index=0): - ''' - - :param stackMap: - :param tSpan: - :param index: the depth of call stack - :param sequenceId: reset from every span. Must start from zero - :return: - ''' - if tSpan is None: ## A TSpan - tSpan = self.genTspan(stackMap) - else: ## A span event - spanEv = self.genSpanEvent(stackMap) - # spanEv.spanId = tSpan.spanId - spanEv.sequence = self.sequenceId - self.sequenceId += 1 - spanEv.depth = index - tSpan.spanEventList.append(spanEv) - - if 'calls' in stackMap: - for called in stackMap['calls']: - self.makeSpan(called, tSpan, index + 1) - - return tSpan - - def genTspan(self, span): - ''' - :param dict span: - :param InterceptManager interceptManger - :return : - ''' - - tSpan = TSpan() - tSpan.apiId = self.updateApiMeta(span['name'], API_WEB_REQUEST).apiId - tSpan.agentStartTime = self.startTimeStamp - - if 'appid' in span: - tSpan.agentId = span['appid'] - else: - tSpan.agentId = self.app_id - - if 'appname' in span: - tSpan.applicationName = span['appname'] - else: - tSpan.applicationName = self.app_name - - if 'stp' in span: - tSpan.serviceType = int(span['stp']) - tSpan.applicationServiceType = int(span['stp']) - else: - tSpan.serviceType = PHP - tSpan.applicationServiceType = PHP - - if 'psid' in span: - tSpan.parentSpanId = int(span['psid']) - - if 'tid' in span: - tSpan.transactionId = TransactionId(encoded_str= span['tid']).getBytes() - - if 'sid' in span: - tSpan.spanId = int(span['sid']) - - if 'S' in span: - tSpan.startTime = span['S'] - - if 'E' in span: - tSpan.elapsed = span['E'] - - if 'uri' in span: - tSpan.rpc = span['uri'] - - if 'pname' in span: - tSpan.parentApplicationName = span['pname'] - - if 'ptype' in span: - tSpan.parentApplicationType = int(span['ptype']) - - if 'client' in span: - tSpan.remoteAddr = span['client'] - - if 'server' in span: - tSpan.endPoint = span['server'] - - if 'ERR' in span: - tSpan.err = 1 - id = self.updateStringMeta('ERR').apiId - tSpan.exceptionInfo = TIntStringValue(id,span['ERR']['msg']) - - if 'Ah' in span: - tSpan.acceptorHost = span['Ah'] - - tSpan.spanEventList = [] - tSpan.annotations = [] - - if 'clues' in span: - for annotation in span['clues']: # list - id, value = annotation.split(':', 1) - ann = TAnnotation(int(id), TAnnotationValue(stringValue=value)) - tSpan.annotations.append(ann) - - try: - value = TLongIntIntByteByteStringValue() - if 'NP' in span: ## nginx - arr = ThriftProtocolUtil._parseStrField(span['NP']) - value.intValue1 = 2 - if 'D' in arr: - value.intValue2 =ThriftProtocolUtil._parseDotFormat(arr['D']) - if 't' in arr: - value.longValue =ThriftProtocolUtil._parseDotFormat(arr['t']) - elif 'AP' in span: ## apache - arr = ThriftProtocolUtil._parseStrField(span['AP']) - value.intValue1 = 3 - if 'i' in arr: - value.byteValue1 = int(arr['i']) - if 'b' in arr: - value.byteValue2 = int(arr['b']) - if 'D' in arr: - value.intValue2 = int(arr['D']) - if 't' in arr: - value.longValue = int(int(arr['t'])/1000) - ann = TAnnotation(PROXY_HTTP_HEADER,TAnnotationValue(longIntIntByteByteStringValue=value)) - tSpan.annotations.append(ann) - except Exception as e: - TCLogger.error("input is illegal,Exception %s",e) - - return tSpan - def scanLocalInfo(self): - ah = AgentHost(self.ac) + ah = AgentHost() self.agentInfo.hostname = ah.hostname self.agentInfo.ip = ah.ip - self.agentInfo.ports = ah.port + self.agentInfo.ports = self.ac.getWebPort() def start(self): self.tcpLayer.start() diff --git a/collector-agent/CollectorAgent/ThriftSpanFactory.py b/collector-agent/CollectorAgent/ThriftSpanFactory.py new file mode 100644 index 000000000..6f033a5c3 --- /dev/null +++ b/collector-agent/CollectorAgent/ThriftSpanFactory.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 11/7/19 +from CollectorAgent.Protocol import TransactionId +from CollectorAgent.TCGenerator import ThriftProtocolUtil +from Common.Logger import TCLogger +from PHPAgent.SpanFactory import SpanFactory +from PinpointAgent.Type import API_WEB_REQUEST, PHP, PROXY_HTTP_HEADER, PHP_METHOD_CALL +from Proto.Trift.Trace.ttypes import TSpan, TIntStringValue, TAnnotation, TAnnotationValue, \ + TLongIntIntByteByteStringValue, TSpanEvent + + +class ThriftSpanFactory(SpanFactory): + def create_span(self,stackMap): + tSpan = TSpan() + tSpan.apiId = self.agent.updateApiMeta(stackMap['name'], API_WEB_REQUEST).apiId + tSpan.agentStartTime = self.agent.startTimeStamp + + if 'appid' in stackMap: + tSpan.agentId = stackMap['appid'] + else: + tSpan.agentId = self.agent.app_id + + if 'appname' in stackMap: + tSpan.applicationName = stackMap['appname'] + else: + tSpan.applicationName = self.agent.app_name + + if 'stp' in stackMap: + tSpan.serviceType = int(stackMap['stp']) + tSpan.applicationServiceType = int(stackMap['stp']) + else: + tSpan.serviceType = PHP + tSpan.applicationServiceType = PHP + + if 'psid' in stackMap: + tSpan.parentSpanId = int(stackMap['psid']) + + if 'tid' in stackMap: + tSpan.transactionId = TransactionId(encoded_str=stackMap['tid']).getBytes() + + if 'sid' in stackMap: + tSpan.spanId = int(stackMap['sid']) + + if 'S' in stackMap: + tSpan.startTime = stackMap['S'] + + if 'E' in stackMap: + tSpan.elapsed = stackMap['E'] + + if 'uri' in stackMap: + tSpan.rpc = stackMap['uri'] + + if 'pname' in stackMap: + tSpan.parentApplicationName = stackMap['pname'] + + if 'ptype' in stackMap: + tSpan.parentApplicationType = int(stackMap['ptype']) + + if 'client' in stackMap: + tSpan.remoteAddr = stackMap['client'] + + if 'server' in stackMap: + tSpan.endPoint = stackMap['server'] + + if 'ERR' in stackMap: + tSpan.err = 1 + id = self.agent.updateStringMeta('ERR').apiId + tSpan.exceptionInfo = TIntStringValue(id, stackMap['ERR']['msg']) + + if 'Ah' in stackMap: + tSpan.acceptorHost = stackMap['Ah'] + + tSpan.spanEventList = [] + tSpan.annotations = [] + + if 'clues' in stackMap: + for annotation in stackMap['clues']: # list + id, value = annotation.split(':', 1) + ann = TAnnotation(int(id), TAnnotationValue(stringValue=value)) + tSpan.annotations.append(ann) + + try: + value = TLongIntIntByteByteStringValue() + if 'NP' in stackMap: ## nginx + arr = ThriftProtocolUtil._parseStrField(stackMap['NP']) + value.intValue1 = 2 + if 'D' in arr: + value.intValue2 = ThriftProtocolUtil._parseDotFormat(arr['D']) + if 't' in arr: + value.longValue = ThriftProtocolUtil._parseDotFormat(arr['t']) + elif 'AP' in stackMap: ## apache + arr = ThriftProtocolUtil._parseStrField(stackMap['AP']) + value.intValue1 = 3 + if 'i' in arr: + value.byteValue1 = int(arr['i']) + if 'b' in arr: + value.byteValue2 = int(arr['b']) + if 'D' in arr: + value.intValue2 = int(arr['D']) + if 't' in arr: + value.longValue = int(int(arr['t']) / 1000) + ann = TAnnotation(PROXY_HTTP_HEADER, TAnnotationValue(longIntIntByteByteStringValue=value)) + tSpan.annotations.append(ann) + except Exception as e: + TCLogger.error("input is illegal,Exception %s", e) + + return tSpan + + def create_span_event(self,stackMap): + assert 'name' in stackMap + spanEv = TSpanEvent() + + spanEv.apiId = self.agent.updateApiMeta(stackMap['name']).apiId + spanEv.annotations = [] + if 'EXP' in stackMap: + id = self.agent.updateStringMeta('EXP').apiId + spanEv.exceptionInfo = TIntStringValue(id, stackMap['EXP']) + + if 'dst' in stackMap: + spanEv.destinationId = stackMap['dst'] + + if 'S' in stackMap: + spanEv.startElapsed = stackMap['S'] + + if 'E' in stackMap: + spanEv.endElapsed = stackMap['E'] + + if 'dst' in stackMap: + spanEv.destinationId = stackMap['dst'] + + if 'nsid' in stackMap: + spanEv.nextSpanId = int(stackMap['nsid']) + + if 'stp' in stackMap: + spanEv.serviceType = int(stackMap['stp']) + else: + spanEv.serviceType = PHP_METHOD_CALL + + if 'clues' in stackMap: + for annotation in stackMap['clues']: # list + id, value = annotation.split(':', 1) + + if value and value[0] == '[': ## value is a In + pass + else: ## value is a string + ann = TAnnotation(int(id), TAnnotationValue(stringValue=value)) + spanEv.annotations.append(ann) + + return spanEv + + def attach_span_event(self,tSpan,span_event): + tSpan.spanEventList.append(span_event) + + def set_sequenceid(self,span_ev,id): + span_ev.sequence = id \ No newline at end of file diff --git a/collector-agent/Common/AgentHost.py b/collector-agent/Common/AgentHost.py index c415a6e8d..01326198d 100644 --- a/collector-agent/Common/AgentHost.py +++ b/collector-agent/Common/AgentHost.py @@ -19,10 +19,9 @@ import socket class AgentHost(object): - def __init__(self,CAConfig): + def __init__(self): self.hostname = socket.gethostname() self.ip = socket.gethostbyname(self.hostname) - self.port = CAConfig.get('Common','Web_Port') def __str__(self): return "host:%s ip:%s"%(self.hostname,self.ip) diff --git a/collector-agent/Common/Config.py b/collector-agent/Common/Config.py index 7281b9753..764364487 100644 --- a/collector-agent/Common/Config.py +++ b/collector-agent/Common/Config.py @@ -17,15 +17,7 @@ # -*- coding: UTF-8 -*- import os -import sys - -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] >= 3 - -if PY2: - import ConfigParser -else: - import configparser as ConfigParser +import configparser as ConfigParser def get_conf(env_name): if not env_name in os.environ: @@ -39,5 +31,5 @@ def get_conf(env_name): config.read(__config_path) return config -CAConfig = get_conf('COLLECTOR_CONFIG'); +CAConfig = get_conf('COLLECTOR_CONFIG') diff --git a/collector-agent/Common/Logger.py b/collector-agent/Common/Logger.py index 7f787056a..f3a1bf856 100644 --- a/collector-agent/Common/Logger.py +++ b/collector-agent/Common/Logger.py @@ -18,33 +18,32 @@ import logging -TCLogger = logging.getLogger(__name__) -PALogger = logging.getLogger(__name__) - -def create_logger(name, filename,fullPath,level): - # fullPath = config.get('Common', - # 'LOG_DIR')+filename - fullPath =fullPath + filename +def _create_logger(name): logger = logging.getLogger(name) - caFormat = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(filename)s:%(lineno)s] %(message)s') - fileHandler = logging.FileHandler(fullPath) - fileHandler.setFormatter(caFormat) - # level = config.get('Common','Log_Level','DEBUG') - # level = config.get('Common', 'Log_Level',fallback='DEBUG') - logger.setLevel(level) - logger.addHandler(fileHandler) - - # disable console print - streamHandler = logging.StreamHandler() - streamHandler.setFormatter(caFormat) - logger.addHandler(streamHandler) return logger -""" -TCLogger response for thrift collector -PALogger response for php agent -""" +TCLogger = _create_logger("TC") +PALogger = _create_logger("PA") + +def set_logger_file(fullpath,format=logging.Formatter('[%(asctime)s] [%(levelname)s] [%(filename)s:%(lineno)s] %(message)s')): + fileHandler = logging.FileHandler(fullpath+'/collector.agent.log') + fileHandler.setFormatter(format) + TCLogger.addHandler(fileHandler) + fileHandler = logging.FileHandler(fullpath+'/front.agent.log') + fileHandler.setFormatter(format) + PALogger.addHandler(fileHandler) +def set_logger_level(level): + TCLogger.setLevel(level) + PALogger.setLevel(level) +def logger_enable_console(format=logging.Formatter('[%(asctime)s] [%(levelname)s] [%(filename)s:%(lineno)s] %(message)s')): + streamHandler = logging.StreamHandler() + streamHandler.setFormatter(format) + TCLogger.addHandler(streamHandler) + + streamHandler = logging.StreamHandler() + streamHandler.setFormatter(format) + PALogger.addHandler(streamHandler) \ No newline at end of file diff --git a/collector-agent/PHPAgent/PHPAgentConf.py b/collector-agent/PHPAgent/PHPAgentConf.py index 599caf697..735b0daa4 100644 --- a/collector-agent/PHPAgent/PHPAgentConf.py +++ b/collector-agent/PHPAgent/PHPAgentConf.py @@ -16,12 +16,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- -from Common import PY2 - -if PY2: - pass -else: - pass class PHPAgentConf(object): def __init__(self,config): diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index 5b7147daf..2b5684668 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -3,8 +3,9 @@ # Created by eeliu at 11/6/19 class SpanFactory(object): - def __init__(self): + def __init__(self,agent): self.sequenceid = 0 + self.agent = agent def create_span(self,stackMap): raise NotImplemented @@ -12,7 +13,7 @@ def create_span(self,stackMap): def create_span_event(self,stackMap): raise NotImplemented - def attach_span_event(self,span_event): + def attach_span_event(self,span,span_event): raise NotImplemented def make_span(self,stackMap): @@ -22,15 +23,15 @@ def make_span(self,stackMap): return span - def make_span_ev(self,span,stackMap,index= 0 ): + def make_span_ev(self, span, stackMap, depth= 0): span_ev = self.create_span_event(stackMap) self.set_sequenceid(span_ev,self.sequenceid) self.sequenceid += 1 - self.attach_span_event(span_ev) + self.attach_span_event(span,span_ev) if 'calls' in stackMap: for called in stackMap['calls']: - self.make_span_ev(span,called, index + 1) + self.make_span_ev(span, called, depth + 1) def set_sequenceid(self,span_ev,id): raise NotImplemented \ No newline at end of file diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 2518fd238..0d449c8c0 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -2,7 +2,6 @@ # -*- coding: UTF-8 -*- # Created by eeliu at 9/4/19 import json -import time from CollectorAgent.CollectorAgentConf import CollectorAgentConf from Common.Logger import TCLogger @@ -19,12 +18,11 @@ def __init__(self,collector_conf,service_type=PHP): self.default_appname = self.collector_conf.ApplicationName self.app_map = {} self.default_app = None - self.startTimestamp = int(time.time()*1000) self.create_default_implement(service_type) def create_default_implement(self,service_type): - self.default_app = self.collector_conf.collector_implement(self, self.collector_conf, self.default_appid, self.default_appname, service_type) + self.default_app = self.collector_conf.collector_implement(self.collector_conf, self.default_appid, self.default_appname, service_type) self.default_app.start() self.app_map[self.default_appid] = self.default_app @@ -41,7 +39,7 @@ def find_app(self, app_id, app_name,service_type): else: if service_type == PHP: TCLogger.info("collector-agent try to create a new application agent.[%s@%s]",app_id,app_name) - app = self.collector_conf.collector_implement(self, self.collector_conf, app_id, app_name) + app = self.collector_conf.collector_implement(self.collector_conf, app_id, app_name) app.start() self.app_map[app_id] = app else: @@ -75,7 +73,7 @@ def handle_front_agent_data(self,client,type,body): def tell_whoami(self): return { - "time": str(self.startTimestamp), + "time": str(self.collector_conf.startTimestamp), "id": self.default_appid, "name": self.default_appname } diff --git a/collector-agent/Test/conf/collector_grpc.conf b/collector-agent/Test/conf/collector_grpc.conf new file mode 100644 index 000000000..b73d58029 --- /dev/null +++ b/collector-agent/Test/conf/collector_grpc.conf @@ -0,0 +1,16 @@ +[Collector] +AgentID=phpmyadmin +ApplicationName=test-php +collector.grpc.agent.ip=dev-pinpoint +collector.grpc.agent.port=9991 +collector.grpc.stat.ip=dev-pinpoint +collector.grpc.stat.port=9992 +collector.grpc.span.ip=dev-pinpoint +collector.grpc.span.port=9993 + +[Common] +Web_Port=8001 +Log_Level=DEBUG + +[Agent] +Address=/tmp/collector-agent.sock \ No newline at end of file diff --git a/collector-agent/Test/conf/collector_thrift.conf b/collector-agent/Test/conf/collector_thrift.conf new file mode 100644 index 000000000..528a8b66a --- /dev/null +++ b/collector-agent/Test/conf/collector_thrift.conf @@ -0,0 +1,16 @@ +[Collector] +AgentID=phpmyadmin +ApplicationName=test-php +CollectorSpanIp=dev-pinpoint +CollectorSpanPort=9996 +CollectorStatIp=dev-pinpoint +CollectorStatPort=9995 +CollectorTcpIp=dev-pinpoint +CollectorTcpPort=9994 + +[Common] +Web_Port=8001 +Log_Level=DEBUG + +[Agent] +Address=/tmp/collector-agent.sock \ No newline at end of file diff --git a/collector-agent/Test/test_implement.py b/collector-agent/Test/test_implement.py new file mode 100644 index 000000000..26e7f395e --- /dev/null +++ b/collector-agent/Test/test_implement.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 11/7/19 +import json +import time +from unittest import TestCase + +import gevent + +from CollectorAgent.CollectorAgentConf import CollectorAgentConf +from Common.Logger import TCLogger +from PinpointAgent.AppManagement import AppManagement +import os + +# class FakeCollectorAgentConf: +# def __init__(self): +# self.CollectorSpanIp ='dev-pinpoint' +# self.CollectorSpanPort =9996 +# self.CollectorStatIp ='dev-pinpoint' +# self.CollectorStatPort =9995 +# self.CollectorAgentIp ='dev-pinpoint' +# self.CollectorAgentPort =9994 +# self.max_pending_size =-1 +# self.collector_type = SUPPORT_THRIFT +# self.collector_implement = ThriftAgentImplement +# self.startTimestamp = int(time.time() * 1000) +# self.version = '1.8.0-RC1' +# def getWebPort(self): +# return '8080' + +class TestImplement(TestCase): + def setUp(self) -> None: + path = os.getcwd() + self.grpc_config = path+'/conf/collector_grpc.conf' + self.thrift_config = path+'/conf/collector_thrift.conf' + + def test_thrift(self): + os.environ['COLLECTOR_CONFIG'] = self.thrift_config + from Common.Config import CAConfig + collector_conf = CollectorAgentConf(CAConfig) + app_management = AppManagement(collector_conf) + while True: + stime = int(time.time()) + span='{"name":"PHP Request","FT":1500,' \ + '"server":"10.34.130.79:28081",' \ + '"sid":"3345567788","psid":"3345567789","tid":"test-agent^1560951035971^1",'\ + '"S":%d,"E":20,' \ + '"clues":["46:200"],' \ + '"uri":"/index.html",' \ + '"EC":1, "estr":"DIY",' \ + '"calls":[{"name":"hello","S":0,"E":8,"calls":[{"name":"hello2","S":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":4,"E":4}]}]}],' \ + '"client":"10.10.10.10"}'% (stime) + app_management.handle_front_agent_data(None,None,span.encode()) + gevent.sleep(1) \ No newline at end of file diff --git a/collector-agent/Test/test_packet.py b/collector-agent/Test/test_util.py similarity index 93% rename from collector-agent/Test/test_packet.py rename to collector-agent/Test/test_util.py index e683f8d2a..e067e7fa6 100644 --- a/collector-agent/Test/test_packet.py +++ b/collector-agent/Test/test_util.py @@ -20,6 +20,9 @@ # -*- coding: UTF-8 -*- +from Common.Logger import create_logger + + class TestUtil(TestCase): def test_parseNetByteStream(self): netFlow = struct.pack('!hii9shih',PacketType.CONTROL_HANDSHAKE,2,9,"123456789".encode(),PacketType.APPLICATION_STREAM_CLOSE,12345,0) @@ -72,8 +75,6 @@ def consumer(): cons.start() producer.join() cons.join() - - def create_fun(self): - def fun(): - return None - return fun + def test_logger(self): + logger = create_logger('noll',None,None,'DEBUG') + logger.debug("890") diff --git a/collector-agent/run.py b/collector-agent/run.py index b1b1f0ad5..0a620f50f 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -15,13 +15,19 @@ #------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- -from PHPAgent import * -from Common import * -from PinpointAgent import * +import os,sys +proto_class = os.getcwd()+'/Proto/grpc' +sys.path.append(proto_class) + from gevent.event import Event -from CollectorAgent import CollectorAgentConf import gevent,signal +from CollectorAgent.CollectorAgentConf import CollectorAgentConf +from Common.Config import CAConfig +from Common.Logger import TCLogger +from PHPAgent import PHPAgentConf, FrontAgent +from PinpointAgent.AppManagement import AppManagement + class Server(object): def __init__(self): From 6f090dd95dc2f279af0ebfd8607b985d5bed6524 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 11 Nov 2019 09:56:16 +0800 Subject: [PATCH 09/45] [11-11] backup --- collector-agent/CollectorAgent/AgentClient.py | 9 +- .../CollectorAgent/GrpcAgentImplement.py | 44 +++-- collector-agent/CollectorAgent/GrpcClient.py | 2 +- collector-agent/CollectorAgent/MetaClient.py | 5 +- .../CollectorAgent/PBSpanFactory.py | 155 +++++++++++++++++- .../CollectorAgent/SharedObject.py | 31 ---- collector-agent/CollectorAgent/SpanClient.py | 22 ++- .../CollectorAgent/ThriftAgentImplement.py | 2 - .../CollectorAgent/ThriftSpanFactory.py | 5 +- collector-agent/PHPAgent/SpanFactory.py | 9 +- collector-agent/Proto/grpc/Span_pb2.py | 7 +- collector-agent/Test/conf/collector_grpc.conf | 1 + ..._agent_client.py => test_grpc_protocol.py} | 0 collector-agent/Test/test_implement.py | 33 ++-- collector-agent/Test/test_util.py | 14 +- 15 files changed, 257 insertions(+), 82 deletions(-) delete mode 100644 collector-agent/CollectorAgent/SharedObject.py rename collector-agent/Test/{test_agent_client.py => test_grpc_protocol.py} (100%) diff --git a/collector-agent/CollectorAgent/AgentClient.py b/collector-agent/CollectorAgent/AgentClient.py index 8eb8193ec..8059423d8 100644 --- a/collector-agent/CollectorAgent/AgentClient.py +++ b/collector-agent/CollectorAgent/AgentClient.py @@ -22,7 +22,7 @@ def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_tim self.stub = Service_pb2_grpc.AgentStub(self.channel) self.agentinfo = PAgentInfo(hostname=hostname, ip=ip, ports=ports, pid=pid, endTimestamp=-1, serviceType=PHP) - self.pingid= AgentClient.PINGID + self.pingid = AgentClient.PINGID AgentClient.PINGID += 1 self.ping_meta = meta.append(('socketid', str(AgentClient.PINGID))) self.ping_timeout = ping_timeout @@ -40,11 +40,10 @@ def channel_set_error(self): def _register_agent(self): assert isinstance(self.agentinfo,PAgentInfo) call_future = self.stub.RequestAgentInfo.future(self.agentinfo) - callback = partial(self.reponse_agentinfo_callback, input=self.agentinfo) - call_future.add_done_callback(callback) + call_future.add_done_callback(self.reponse_agentinfo_callback) + TCLogger.debug("register agent %s",self.agentinfo) - def reponse_agentinfo_callback(self, future, input): - # start ping if future is success + def reponse_agentinfo_callback(self, future): if future.exception(): TCLogger.error("agent catch exception %s",future.exception()) return diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index f91c74619..03d39dad8 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -3,11 +3,13 @@ # Created by eeliu at 10/16/19 from CollectorAgent.AgentClient import AgentClient from CollectorAgent.MetaClient import MetaClient +from CollectorAgent.PBSpanFactory import PBSpanFactory from CollectorAgent.SpanClient import SpanClient from Common.AgentHost import AgentHost +from Common.Logger import TCLogger from PinpointAgent.PinpointAgent import PinpointAgent -from PinpointAgent.Type import PHP, SUPPORT_GRPC -from Span_pb2 import PSpanMessage +from PinpointAgent.Type import PHP, SUPPORT_GRPC, API_DEFAULT +from Span_pb2 import PSpanMessage, PSpan from queue import Queue @@ -16,10 +18,12 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): assert ac.collector_type == SUPPORT_GRPC super().__init__(app_id, app_name) - self.agent_meta = [('starttime',ac.startTimestamp), + self.agent_meta = [('starttime',str(ac.startTimestamp)), ('agentid', app_id), ('applicationname',app_name)] + self.startTimeStamp = ac.startTimestamp # maybe change in future + self.queue = Queue(10000) self.app_name = app_name self.max_pending_sz = ac.max_pending_size self.app_id = app_id @@ -28,30 +32,42 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): self.agent_addr = ac.CollectorAgentIp+':' + str(ac.CollectorAgentPort) self.stat_addr = ac.CollectorStatIp + ':' + str(ac.CollectorSpanPort) self.span_addr = ac.CollectorSpanIp + ':' + str(ac.CollectorSpanPort) + import os - ah = AgentHost() - self.agent_client = AgentClient(ah.hostname,ah.ip,ac.getWebPort(),os.getpid(),self.agent_addr,self.agent_meta) + self.agentHost = AgentHost() + self.agent_client = AgentClient(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), self.agent_addr, self.agent_meta) self.meta_client = MetaClient(self.agent_addr, self.agent_meta) self.span_client = SpanClient(self._generate_span, self.span_addr, self.agent_meta, self.max_pending_sz) - self.queue = Queue(10000) + self.sequenceId = 0 + self.span_factory = PBSpanFactory(self) def start(self): pass def sendSpan(self, stack): - # stack -> grpc-span - - # create stringid, - pass - + pSpan = self.span_factory.make_span(stack) + spanMesg = PSpanMessage(span = pSpan) + if self.span_client.is_ok: + self.queue.put(spanMesg) + elif self.queue.qsize() > self.span_client.max_pending_size: + TCLogger.warning("span channel is busy. Drop %s",pSpan) + return + else: + self.queue.put(spanMesg) def stop(self): # close all channel - raise NotImplementedError() + self.queue.qsize() def _generate_span(self): # here return a PSpanMessage span = self.queue.get() - assert isinstance(span,PSpanMessage) - return span \ No newline at end of file + return span + + def updateApiMeta(self,name,type=API_DEFAULT): + return self.meta_client.update_api_meta(name,-1,type) + + def updateStringMeta(self, name): + return self.meta_client.update_string_meta(name) + diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index e8064730e..9fccd9e5c 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -89,7 +89,7 @@ def _channel_state_change(self, activity): elif activity == grpc.ChannelConnectivity.IDLE: self.channel_set_idle() - TCLogger.debug("channel state change %s",activity) + TCLogger.debug("channel state change %s dst:%s",activity,self.address) def channel_set_ready(self): raise NotImplemented() diff --git a/collector-agent/CollectorAgent/MetaClient.py b/collector-agent/CollectorAgent/MetaClient.py index 358340cb8..d678b32fd 100644 --- a/collector-agent/CollectorAgent/MetaClient.py +++ b/collector-agent/CollectorAgent/MetaClient.py @@ -42,6 +42,7 @@ def update_api_meta(self, apiInfo, line, type): self.api_table[row_str] = [id, meta] self._send_api_meta(meta) self.id += 1 + TCLogger.debug("register api meta id:%d -> api:[%s]", id, row_str) return id def update_string_meta(self, value): @@ -53,6 +54,7 @@ def update_string_meta(self, value): self.string_table[value] = [id, meta] self._send_string_meta(meta) self.id += 1 + TCLogger.debug("register string meta id:%d -> value:[%s]",id,value) return id def update_sql_meta(self,sql): @@ -64,11 +66,12 @@ def update_sql_meta(self,sql): self.sql_table[sql] = [id,meta] self._send_sql_meta(meta) self.id+=1 + TCLogger.debug("register sql meta id:%d -> sql:[%s]", id, sql) return id def _response(self,future): if future.exception(): - TCLogger.warning("register meta failed") + TCLogger.warning("register meta failed %s",future.exception) return TCLogger.debug(future.result()) diff --git a/collector-agent/CollectorAgent/PBSpanFactory.py b/collector-agent/CollectorAgent/PBSpanFactory.py index 26de6e768..5bde95563 100644 --- a/collector-agent/CollectorAgent/PBSpanFactory.py +++ b/collector-agent/CollectorAgent/PBSpanFactory.py @@ -1,3 +1,156 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- -# Created by eeliu at 11/7/19 \ No newline at end of file +# Created by eeliu at 11/7/19 +from google.protobuf.wrappers_pb2 import StringValue + +from Annotation_pb2 import PIntStringValue, PAnnotation, PAnnotationValue, PLongIntIntByteByteStringValue +from CollectorAgent.TCGenerator import ThriftProtocolUtil +from Common.Logger import TCLogger +from PHPAgent.SpanFactory import SpanFactory +from PinpointAgent.Type import API_WEB_REQUEST, PHP, PHP_METHOD_CALL, PROXY_HTTP_HEADER +from Span_pb2 import PSpan, PTransactionId, PAcceptEvent, PParentInfo, PSpanEvent, PNextEvent, PMessageEvent + + +class PBSpanFactory(SpanFactory): + def create_span(self, stackMap): + tSpan = PSpan() + tSpan.apiId =self.agent.updateApiMeta(stackMap['name'], API_WEB_REQUEST) + tSpan.version = 1 + if 'stp' in stackMap: + tSpan.serviceType = int(stackMap['stp']) + tSpan.applicationServiceType = int(stackMap['stp']) + else: + tSpan.serviceType = PHP + tSpan.applicationServiceType = PHP + + if 'psid' in stackMap: + tSpan.parentSpanId = int(stackMap['psid']) + + if 'tid' in stackMap: + agentId, startTime, id = stackMap['tid'].split('^') + tSpan.transactionId.agentId = agentId + tSpan.transactionId.agentStartTime = int(startTime) + tSpan.transactionId.sequence = int(id) + + if 'sid' in stackMap: + tSpan.spanId = int(stackMap['sid']) + + if 'S' in stackMap: + tSpan.startTime = stackMap['S'] + + if 'E' in stackMap: + tSpan.elapsed = stackMap['E'] + + accept = tSpan.acceptEvent + + if 'uri' in stackMap: + accept.rpc = stackMap['uri'] + if 'server' in stackMap: + accept.endPoint = stackMap['server'] + if 'client' in stackMap: + accept.remoteAddr = stackMap['client'] + + parent_info = accept.parentInfo + + if 'pname' in stackMap: + parent_info.parentApplicationName = stackMap['pname'] + + if 'ptype' in stackMap: + parent_info.parentApplicationType = int(stackMap['ptype']) + + if 'Ah' in stackMap: + parent_info.acceptorHost = stackMap['Ah'] + + if 'ERR' in stackMap: + id = self.agent.updateStringMeta('ERR') + value = StringValue(value=stackMap['ERR']['msg']) + tSpan.exceptionInfo.intValue = id + tSpan.exceptionInfo.stringValue.CopyFrom(value) + + if 'clues' in stackMap: + for annotation in stackMap['clues']: # list + id, value = annotation.split(':', 1) + ann = PAnnotation(key=int(id),value=PAnnotationValue(stringValue=value)) + tSpan.annotation.append(ann) + + try: + value = PLongIntIntByteByteStringValue() + if 'NP' in stackMap: ## nginx + arr = ThriftProtocolUtil._parseStrField(stackMap['NP']) + value.intValue1 = 2 + if 'D' in arr: + value.intValue2 = ThriftProtocolUtil._parseDotFormat(arr['D']) + if 't' in arr: + value.longValue = ThriftProtocolUtil._parseDotFormat(arr['t']) + elif 'AP' in stackMap: ## apache + arr = ThriftProtocolUtil._parseStrField(stackMap['AP']) + value.intValue1 = 3 + if 'i' in arr: + value.byteValue1 = int(arr['i']) + if 'b' in arr: + value.byteValue2 = int(arr['b']) + if 'D' in arr: + value.intValue2 = int(arr['D']) + if 't' in arr: + value.longValue = int(int(arr['t']) / 1000) + ann = PAnnotation(key=PROXY_HTTP_HEADER, value=PAnnotationValue(longIntIntByteByteStringValue=value)) + tSpan.annotation.append(ann) + except Exception as e: + TCLogger.error("input is illegal,Exception %s", e) + + return tSpan + + def create_span_event(self, stackMap): + assert 'name' in stackMap + spanEv = PSpanEvent() + spanEv.apiId = self.agent.updateApiMeta(stackMap['name']) + + if 'EXP' in stackMap: + id = self.agent.updateStringMeta('EXP') + value = StringValue(value=stackMap['EXP']['msg']) + spanEv.exceptionInfo.intValue = id + spanEv.exceptionInfo.stringValue.CopyFrom(value) + + + nextEv = spanEv.nextEvent + msgEv = nextEv.messageEvent + + if 'dst' in stackMap: + msgEv.destinationId = stackMap['dst'] + + if 'nsid' in stackMap: + msgEv.nextSpanId = int(stackMap['nsid']) + + if 'server' in stackMap: + msgEv.endPoint = stackMap['server'] + + if 'S' in stackMap: + spanEv.startElapsed = int(stackMap['S']) + + if 'E' in stackMap: + spanEv.endElapsed = int(stackMap['E']) + + if 'stp' in stackMap: + spanEv.serviceType = int(stackMap['stp']) + else: + spanEv.serviceType = PHP_METHOD_CALL + + if 'clues' in stackMap: + for annotation in stackMap['clues']: # list + id, value = annotation.split(':', 1) + if value and value[0] == '[': ## value is a In + pass + else: ## value is a string + ann = PAnnotation(key=int(id), value =PAnnotationValue(stringValue=value)) + spanEv.annotation.append(ann) + + return spanEv + + def attach_span_event(self, tSpan, span_event): + tSpan.spanEvent.append(span_event) + + def set_sequenceid(self, span_ev, id): + span_ev.sequence = id + + def set_depth(self, span_ev, depth): + span_ev.depth = depth \ No newline at end of file diff --git a/collector-agent/CollectorAgent/SharedObject.py b/collector-agent/CollectorAgent/SharedObject.py deleted file mode 100644 index a96e62c2f..000000000 --- a/collector-agent/CollectorAgent/SharedObject.py +++ /dev/null @@ -1,31 +0,0 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# Created by eeliu at 6/28/19 - -class SharedObject(object): - def __init__(self,object_file_address): - self.address = object_file_address - # buffer,size = self._bindObjectOnAddress() - - - - - - def _bindObjectOnAddress(self): - self.address - pass diff --git a/collector-agent/CollectorAgent/SpanClient.py b/collector-agent/CollectorAgent/SpanClient.py index d480e45da..3b7bb432e 100644 --- a/collector-agent/CollectorAgent/SpanClient.py +++ b/collector-agent/CollectorAgent/SpanClient.py @@ -4,6 +4,7 @@ import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger +from Span_pb2 import PSpan class SpanClient(GrpcClient): @@ -26,17 +27,22 @@ def channel_set_idle(self): def channel_set_error(self): self.is_ok = False - def _span_response(self,*args): - print(args) + def _span_response(self,result): + TCLogger.debug(result) def _get_span(self): - #todo add is_ok checking while True: - span = self.span_callback_fn() - if span is not None: - yield span - else: - TCLogger.error(" get span failed, checking the span_callback_fn") + try: + span = self.span_callback_fn() + if span is not None: + TCLogger.debug("send span:%s",span) + yield span + else: + TCLogger.error(" get span failed, checking the span_callback_fn") + except Exception as e: + TCLogger.error("get_span catch %s",e) + import sys + sys.exit(-1) def _start_span(self): self.future = self.span_stub.SendSpan.future(self._get_span()) diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index 409691d82..642295cb6 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -50,7 +50,6 @@ def __init__(self,ac,app_id,app_name,serviceType=PHP): self.tcpLayer = StreamClientLayer(self.tcpHost, self.handlerResponse, self.collectorTcpHello) self.spanLayer = DgramLayer(self.spanHost,None) - self.sequenceId = 0 self.packetRoute = { PacketType.APPLICATION_SEND : self.handle_default, PacketType.APPLICATION_TRACE_SEND : self.handle_default, @@ -149,7 +148,6 @@ def sendSpan(self,stack): ''' ### must reset to zero - self.sequenceId = 0 tSpan = self.span_factory.make_span(stack) body = CollectorPro.obj2bin(tSpan,SPAN) # packet = Packet(PacketType.HEADLESS, len(body), body) diff --git a/collector-agent/CollectorAgent/ThriftSpanFactory.py b/collector-agent/CollectorAgent/ThriftSpanFactory.py index 6f033a5c3..f7350abba 100644 --- a/collector-agent/CollectorAgent/ThriftSpanFactory.py +++ b/collector-agent/CollectorAgent/ThriftSpanFactory.py @@ -153,4 +153,7 @@ def attach_span_event(self,tSpan,span_event): tSpan.spanEventList.append(span_event) def set_sequenceid(self,span_ev,id): - span_ev.sequence = id \ No newline at end of file + span_ev.sequence = id + + def set_depth(self,span_ev,depth): + span_ev.depth = depth \ No newline at end of file diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index 2b5684668..055306d19 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 11/6/19 +from Span_pb2 import PSpanMessage + class SpanFactory(object): def __init__(self,agent): @@ -20,13 +22,13 @@ def make_span(self,stackMap): self.sequenceid = 0 span = self.create_span(stackMap) self.make_span_ev(span,stackMap) - return span - def make_span_ev(self, span, stackMap, depth= 0): + def make_span_ev(self, span, stackMap, depth=0): span_ev = self.create_span_event(stackMap) self.set_sequenceid(span_ev,self.sequenceid) self.sequenceid += 1 + self.set_depth(span_ev,depth) self.attach_span_event(span,span_ev) if 'calls' in stackMap: @@ -34,4 +36,7 @@ def make_span_ev(self, span, stackMap, depth= 0): self.make_span_ev(span, called, depth + 1) def set_sequenceid(self,span_ev,id): + raise NotImplemented + + def set_depth(self,span_ev,depth): raise NotImplemented \ No newline at end of file diff --git a/collector-agent/Proto/grpc/Span_pb2.py b/collector-agent/Proto/grpc/Span_pb2.py index d3c2a9cfa..98799b1d4 100644 --- a/collector-agent/Proto/grpc/Span_pb2.py +++ b/collector-agent/Proto/grpc/Span_pb2.py @@ -3,6 +3,11 @@ # source: Span.proto import sys +from typing import Union + +from google.protobuf.internal.python_message import GeneratedProtocolMessageType +from google.protobuf.pyext.cpp_message import GeneratedProtocolMessageType + _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message @@ -855,7 +860,7 @@ 'DESCRIPTOR' : _PSPAN, '__module__' : 'Span_pb2' # @@protoc_insertion_point(class_scope:v1.PSpan) - }) + }) # type: Union[GeneratedProtocolMessageType, GeneratedProtocolMessageType] _sym_db.RegisterMessage(PSpan) PTransactionId = _reflection.GeneratedProtocolMessageType('PTransactionId', (_message.Message,), { diff --git a/collector-agent/Test/conf/collector_grpc.conf b/collector-agent/Test/conf/collector_grpc.conf index b73d58029..99f85f2b1 100644 --- a/collector-agent/Test/conf/collector_grpc.conf +++ b/collector-agent/Test/conf/collector_grpc.conf @@ -7,6 +7,7 @@ collector.grpc.stat.ip=dev-pinpoint collector.grpc.stat.port=9992 collector.grpc.span.ip=dev-pinpoint collector.grpc.span.port=9993 +collector.grpc.discardpolicy.maxpendingthreshold=1024 [Common] Web_Port=8001 diff --git a/collector-agent/Test/test_agent_client.py b/collector-agent/Test/test_grpc_protocol.py similarity index 100% rename from collector-agent/Test/test_agent_client.py rename to collector-agent/Test/test_grpc_protocol.py diff --git a/collector-agent/Test/test_implement.py b/collector-agent/Test/test_implement.py index 26e7f395e..6d5bf6154 100644 --- a/collector-agent/Test/test_implement.py +++ b/collector-agent/Test/test_implement.py @@ -36,19 +36,30 @@ def setUp(self) -> None: def test_thrift(self): os.environ['COLLECTOR_CONFIG'] = self.thrift_config + self.run_app_manager() + + def test_grpc(self): + os.environ['COLLECTOR_CONFIG'] = self.grpc_config + self.run_app_manager() + + def run_app_manager(self): from Common.Config import CAConfig collector_conf = CollectorAgentConf(CAConfig) app_management = AppManagement(collector_conf) while True: stime = int(time.time()) - span='{"name":"PHP Request","FT":1500,' \ - '"server":"10.34.130.79:28081",' \ - '"sid":"3345567788","psid":"3345567789","tid":"test-agent^1560951035971^1",'\ - '"S":%d,"E":20,' \ - '"clues":["46:200"],' \ - '"uri":"/index.html",' \ - '"EC":1, "estr":"DIY",' \ - '"calls":[{"name":"hello","S":0,"E":8,"calls":[{"name":"hello2","S":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":4,"E":4}]}]}],' \ - '"client":"10.10.10.10"}'% (stime) - app_management.handle_front_agent_data(None,None,span.encode()) - gevent.sleep(1) \ No newline at end of file + span = '{"name":"PHP Request","FT":1500,' \ + '"server":"10.34.130.79:28081",' \ + '"sid":"3345567788","psid":"3345567789","tid":"phpmyadmin^1560951035971^1",' \ + '"S":%d,"E":20,' \ + '"clues":["46:200"],' \ + '"uri":"/index.html",' \ + '"ERR":{"msg":"23456789op[xdcfvgbhnjmk"},' \ + '"EC":1, "estr":"DIY",' \ + '"calls":[{"name":"hello","S":0,"E":8,"calls":[{"name":"hello2","S":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":4,"E":4}]}]}],' \ + '"client":"10.10.10.10"}' % (stime) + app_management.handle_front_agent_data(None, None, span.encode()) + time.sleep(3) + # gevent.sleep(1) + +# GRPC_TRACE=all;GRPC_VERBOSITY=DEBUG \ No newline at end of file diff --git a/collector-agent/Test/test_util.py b/collector-agent/Test/test_util.py index e067e7fa6..7523be996 100644 --- a/collector-agent/Test/test_util.py +++ b/collector-agent/Test/test_util.py @@ -20,7 +20,8 @@ # -*- coding: UTF-8 -*- -from Common.Logger import create_logger + +from Span_pb2 import PAcceptEvent, PSpan class TestUtil(TestCase): @@ -75,6 +76,11 @@ def consumer(): cons.start() producer.join() cons.join() - def test_logger(self): - logger = create_logger('noll',None,None,'DEBUG') - logger.debug("890") + def test_span(self): + acceptEv = PAcceptEvent() + args ={ + 'acceptEvent':acceptEv + } + span = PSpan() + span.serviceType =100 + print(span) From ce009c0c1fc051dca4227e75ae61a57be766829f Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 11 Nov 2019 16:21:24 +0800 Subject: [PATCH 10/45] [11-11] bug in create_span --- collector-agent/CollectorAgent/PBSpanFactory.py | 4 +++- collector-agent/CollectorAgent/SpanClient.py | 2 +- collector-agent/PHPAgent/SpanFactory.py | 9 ++++++--- collector-agent/Test/test_implement.py | 10 +++++----- collector-agent/Test/test_util.py | 8 +++++++- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/collector-agent/CollectorAgent/PBSpanFactory.py b/collector-agent/CollectorAgent/PBSpanFactory.py index 5bde95563..e137d6002 100644 --- a/collector-agent/CollectorAgent/PBSpanFactory.py +++ b/collector-agent/CollectorAgent/PBSpanFactory.py @@ -151,6 +151,8 @@ def attach_span_event(self, tSpan, span_event): def set_sequenceid(self, span_ev, id): span_ev.sequence = id + TCLogger.debug("id %d", id) def set_depth(self, span_ev, depth): - span_ev.depth = depth \ No newline at end of file + span_ev.depth = depth + TCLogger.debug("span_ev %s",span_ev) \ No newline at end of file diff --git a/collector-agent/CollectorAgent/SpanClient.py b/collector-agent/CollectorAgent/SpanClient.py index 3b7bb432e..f06bba2d5 100644 --- a/collector-agent/CollectorAgent/SpanClient.py +++ b/collector-agent/CollectorAgent/SpanClient.py @@ -35,7 +35,7 @@ def _get_span(self): try: span = self.span_callback_fn() if span is not None: - TCLogger.debug("send span:%s",span) + # TCLogger.debug("send span:%s",span) yield span else: TCLogger.error(" get span failed, checking the span_callback_fn") diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index 055306d19..b250d7ddc 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 11/6/19 +from Common.Logger import TCLogger from Span_pb2 import PSpanMessage @@ -19,9 +20,11 @@ def attach_span_event(self,span,span_event): raise NotImplemented def make_span(self,stackMap): - self.sequenceid = 0 + self.sequenceid = 1 span = self.create_span(stackMap) - self.make_span_ev(span,stackMap) + if 'calls' in stackMap: + for called in stackMap['calls']: + self.make_span_ev(span,called) return span def make_span_ev(self, span, stackMap, depth=0): @@ -30,7 +33,7 @@ def make_span_ev(self, span, stackMap, depth=0): self.sequenceid += 1 self.set_depth(span_ev,depth) self.attach_span_event(span,span_ev) - + TCLogger.debug(span_ev) if 'calls' in stackMap: for called in stackMap['calls']: self.make_span_ev(span, called, depth + 1) diff --git a/collector-agent/Test/test_implement.py b/collector-agent/Test/test_implement.py index 6d5bf6154..3f9817af5 100644 --- a/collector-agent/Test/test_implement.py +++ b/collector-agent/Test/test_implement.py @@ -47,17 +47,17 @@ def run_app_manager(self): collector_conf = CollectorAgentConf(CAConfig) app_management = AppManagement(collector_conf) while True: - stime = int(time.time()) + # stime =1573438683 span = '{"name":"PHP Request","FT":1500,' \ '"server":"10.34.130.79:28081",' \ '"sid":"3345567788","psid":"3345567789","tid":"phpmyadmin^1560951035971^1",' \ - '"S":%d,"E":20,' \ + '"S":1573438683,"E":20,' \ '"clues":["46:200"],' \ '"uri":"/index.html",' \ - '"ERR":{"msg":"23456789op[xdcfvgbhnjmk"},' \ + '"ERR":{"msg":"23456789op[xdcfvgbhnjmk"},' \ '"EC":1, "estr":"DIY",' \ - '"calls":[{"name":"hello","S":0,"E":8,"calls":[{"name":"hello2","S":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":4,"E":4}]}]}],' \ - '"client":"10.10.10.10"}' % (stime) + '"calls":[{"name":"hello","S":1573438683,"E":8,"calls":[{"name":"hello2","1573438683":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":1573438683,"E":4}]}]}],' \ + '"client":"10.10.10.10"}' app_management.handle_front_agent_data(None, None, span.encode()) time.sleep(3) # gevent.sleep(1) diff --git a/collector-agent/Test/test_util.py b/collector-agent/Test/test_util.py index 7523be996..0bcc6d921 100644 --- a/collector-agent/Test/test_util.py +++ b/collector-agent/Test/test_util.py @@ -21,7 +21,7 @@ # -*- coding: UTF-8 -*- -from Span_pb2 import PAcceptEvent, PSpan +from Span_pb2 import PAcceptEvent, PSpan, PSpanEvent class TestUtil(TestCase): @@ -84,3 +84,9 @@ def test_span(self): span = PSpan() span.serviceType =100 print(span) + + def test_span_ev(self): + spanEv = PSpanEvent() + spanEv.depth = 1 + spanEv.sequence = 1 + print(spanEv) From 6c1c0ba97b19b828859644d12e9587b2bd11fff1 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 12 Nov 2019 14:48:19 +0800 Subject: [PATCH 11/45] [11-12] fix grpc depth capture --- collector-agent/CollectorAgent/GrpcAgentImplement.py | 4 ++-- .../{PBSpanFactory.py => GrpcSpanFactory.py} | 8 ++++---- collector-agent/CollectorAgent/Readme.md | 8 ++++++++ collector-agent/Events/StreamServerLayer.py | 1 + collector-agent/PHPAgent/SpanFactory.py | 5 +++-- collector-agent/run.py | 3 ++- 6 files changed, 20 insertions(+), 9 deletions(-) rename collector-agent/CollectorAgent/{PBSpanFactory.py => GrpcSpanFactory.py} (97%) diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 03d39dad8..bce0a1f38 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -3,7 +3,7 @@ # Created by eeliu at 10/16/19 from CollectorAgent.AgentClient import AgentClient from CollectorAgent.MetaClient import MetaClient -from CollectorAgent.PBSpanFactory import PBSpanFactory +from CollectorAgent.GrpcSpanFactory import GrpcSpanFactory from CollectorAgent.SpanClient import SpanClient from Common.AgentHost import AgentHost from Common.Logger import TCLogger @@ -40,7 +40,7 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): self.span_client = SpanClient(self._generate_span, self.span_addr, self.agent_meta, self.max_pending_sz) self.sequenceId = 0 - self.span_factory = PBSpanFactory(self) + self.span_factory = GrpcSpanFactory(self) def start(self): pass diff --git a/collector-agent/CollectorAgent/PBSpanFactory.py b/collector-agent/CollectorAgent/GrpcSpanFactory.py similarity index 97% rename from collector-agent/CollectorAgent/PBSpanFactory.py rename to collector-agent/CollectorAgent/GrpcSpanFactory.py index e137d6002..b882f405c 100644 --- a/collector-agent/CollectorAgent/PBSpanFactory.py +++ b/collector-agent/CollectorAgent/GrpcSpanFactory.py @@ -11,7 +11,7 @@ from Span_pb2 import PSpan, PTransactionId, PAcceptEvent, PParentInfo, PSpanEvent, PNextEvent, PMessageEvent -class PBSpanFactory(SpanFactory): +class GrpcSpanFactory(SpanFactory): def create_span(self, stackMap): tSpan = PSpan() tSpan.apiId =self.agent.updateApiMeta(stackMap['name'], API_WEB_REQUEST) @@ -25,6 +25,8 @@ def create_span(self, stackMap): if 'psid' in stackMap: tSpan.parentSpanId = int(stackMap['psid']) + else: + tSpan.parentSpanId = -1 if 'tid' in stackMap: agentId, startTime, id = stackMap['tid'].split('^') @@ -151,8 +153,6 @@ def attach_span_event(self, tSpan, span_event): def set_sequenceid(self, span_ev, id): span_ev.sequence = id - TCLogger.debug("id %d", id) def set_depth(self, span_ev, depth): - span_ev.depth = depth - TCLogger.debug("span_ev %s",span_ev) \ No newline at end of file + span_ev.depth = depth \ No newline at end of file diff --git a/collector-agent/CollectorAgent/Readme.md b/collector-agent/CollectorAgent/Readme.md index 144ccd1c8..55498f682 100644 --- a/collector-agent/CollectorAgent/Readme.md +++ b/collector-agent/CollectorAgent/Readme.md @@ -62,3 +62,11 @@ FT|front type(PHP) > type = 0 id,time,name + +### sequenceid depth + +sequenceid: 0 -> max +depth: 1 -> max + + + diff --git a/collector-agent/Events/StreamServerLayer.py b/collector-agent/Events/StreamServerLayer.py index 3830c5342..54cfb93b1 100644 --- a/collector-agent/Events/StreamServerLayer.py +++ b/collector-agent/Events/StreamServerLayer.py @@ -20,6 +20,7 @@ from gevent import socket as asy_socket from Common import * +from Common.Logger import TCLogger class StreamServerLayer(object): diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index b250d7ddc..052f90409 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -20,14 +20,15 @@ def attach_span_event(self,span,span_event): raise NotImplemented def make_span(self,stackMap): - self.sequenceid = 1 + self.sequenceid = 0 span = self.create_span(stackMap) if 'calls' in stackMap: for called in stackMap['calls']: self.make_span_ev(span,called) + TCLogger.debug("send span:%s",span) return span - def make_span_ev(self, span, stackMap, depth=0): + def make_span_ev(self, span, stackMap, depth=1): span_ev = self.create_span_event(stackMap) self.set_sequenceid(span_ev,self.sequenceid) self.sequenceid += 1 diff --git a/collector-agent/run.py b/collector-agent/run.py index 0a620f50f..bd61c9f4f 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -43,7 +43,8 @@ def run(self): gevent.signal(signal.SIGQUIT, _stop_event.set) gevent.signal(signal.SIGTERM, _stop_event.set) gevent.signal(signal.SIGINT, _stop_event.set) - _stop_event.wait() + while True: + gevent.sleep(10) self.app_management.stop_all() self.php_agent.stop() TCLogger.warning("collector agent exit with SIGNAL") From 5f1da7beacbe2128f83e23996c79c5f55d49d314 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 12 Nov 2019 15:32:03 +0800 Subject: [PATCH 12/45] [11-12] rename --- .../CollectorAgent/{APIMeta.py => GrpcAPIMeta.py} | 8 ++++---- .../{AgentClient.py => GrpcAgent.py} | 8 ++++---- .../CollectorAgent/GrpcAgentImplement.py | 8 ++++---- ...entStateManager.py => GrpcAgentStateManager.py} | 2 +- .../CollectorAgent/{SpanClient.py => GrpcSpan.py} | 2 +- .../CollectorAgent/ThriftAgentImplement.py | 14 +++++++------- collector-agent/Test/test_grpc_protocol.py | 8 ++++---- 7 files changed, 25 insertions(+), 25 deletions(-) rename collector-agent/CollectorAgent/{APIMeta.py => GrpcAPIMeta.py} (94%) rename collector-agent/CollectorAgent/{AgentClient.py => GrpcAgent.py} (93%) rename collector-agent/CollectorAgent/{AgentStateManager.py => GrpcAgentStateManager.py} (98%) rename collector-agent/CollectorAgent/{SpanClient.py => GrpcSpan.py} (97%) diff --git a/collector-agent/CollectorAgent/APIMeta.py b/collector-agent/CollectorAgent/GrpcAPIMeta.py similarity index 94% rename from collector-agent/CollectorAgent/APIMeta.py rename to collector-agent/CollectorAgent/GrpcAPIMeta.py index a283ceaf4..2b8bc380e 100644 --- a/collector-agent/CollectorAgent/APIMeta.py +++ b/collector-agent/CollectorAgent/GrpcAPIMeta.py @@ -24,13 +24,13 @@ from Proto.Trift.Trace.ttypes import TApiMetaData, TStringMetaData -class APIMeta(object): +class GrpcAPIMeta(object): API_META_INDEX = 1 def __init__(self,name=None,line = -1,type = API_UNDEFINED,agentStartTime = -1,agentId = -1,agentName='Default name'): assert name is not None self.name = name - self.apiId = APIMeta.API_META_INDEX - APIMeta.API_META_INDEX += 1 + self.apiId = GrpcAPIMeta.API_META_INDEX + GrpcAPIMeta.API_META_INDEX += 1 self.type = type self.agentStartTime = agentStartTime self.agentId = agentId @@ -42,7 +42,7 @@ def toPacket(self): apiId = self.apiId, type= self.type, apiInfo=self.name) - TCLogger.debug("generator APIMeta:%s", apiMeta) + TCLogger.debug("generator GrpcAPIMeta:%s", apiMeta) body = CollectorPro.obj2bin(apiMeta, API_META_DATA) packet = Packet(PacketType.APPLICATION_REQUEST,CollectorPro.getCurReqCount() ,len(body),body) return packet diff --git a/collector-agent/CollectorAgent/AgentClient.py b/collector-agent/CollectorAgent/GrpcAgent.py similarity index 93% rename from collector-agent/CollectorAgent/AgentClient.py rename to collector-agent/CollectorAgent/GrpcAgent.py index 8059423d8..0f6b148c5 100644 --- a/collector-agent/CollectorAgent/AgentClient.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -12,7 +12,7 @@ from PinpointAgent.Type import PHP from Stat_pb2 import PAgentInfo, PPing -class AgentClient(GrpcClient): +class GrpcAgent(GrpcClient): PINGID=0 def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_timeout=10): super().__init__(address,meta,maxPending) @@ -22,9 +22,9 @@ def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_tim self.stub = Service_pb2_grpc.AgentStub(self.channel) self.agentinfo = PAgentInfo(hostname=hostname, ip=ip, ports=ports, pid=pid, endTimestamp=-1, serviceType=PHP) - self.pingid = AgentClient.PINGID - AgentClient.PINGID += 1 - self.ping_meta = meta.append(('socketid', str(AgentClient.PINGID))) + self.pingid = GrpcAgent.PINGID + GrpcAgent.PINGID += 1 + self.ping_meta = meta.append(('socketid', str(GrpcAgent.PINGID))) self.ping_timeout = ping_timeout diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index bce0a1f38..55a97e5d3 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -1,10 +1,10 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/16/19 -from CollectorAgent.AgentClient import AgentClient +from CollectorAgent.GrpcAgent import GrpcAgent from CollectorAgent.MetaClient import MetaClient from CollectorAgent.GrpcSpanFactory import GrpcSpanFactory -from CollectorAgent.SpanClient import SpanClient +from CollectorAgent.GrpcSpan import GrpcSpan from Common.AgentHost import AgentHost from Common.Logger import TCLogger from PinpointAgent.PinpointAgent import PinpointAgent @@ -35,9 +35,9 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): import os self.agentHost = AgentHost() - self.agent_client = AgentClient(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), self.agent_addr, self.agent_meta) + self.agent_client = GrpcAgent(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), self.agent_addr, self.agent_meta) self.meta_client = MetaClient(self.agent_addr, self.agent_meta) - self.span_client = SpanClient(self._generate_span, self.span_addr, self.agent_meta, self.max_pending_sz) + self.span_client = GrpcSpan(self._generate_span, self.span_addr, self.agent_meta, self.max_pending_sz) self.sequenceId = 0 self.span_factory = GrpcSpanFactory(self) diff --git a/collector-agent/CollectorAgent/AgentStateManager.py b/collector-agent/CollectorAgent/GrpcAgentStateManager.py similarity index 98% rename from collector-agent/CollectorAgent/AgentStateManager.py rename to collector-agent/CollectorAgent/GrpcAgentStateManager.py index 68a6165fa..5c44ead28 100644 --- a/collector-agent/CollectorAgent/AgentStateManager.py +++ b/collector-agent/CollectorAgent/GrpcAgentStateManager.py @@ -26,7 +26,7 @@ -class AgentStateManager(object): +class GrpcAgentStateManager(object): def __init__(self, agentId,startTimeStamp,host): self.state=TAgentStat() self.cup_load=TCpuLoad() diff --git a/collector-agent/CollectorAgent/SpanClient.py b/collector-agent/CollectorAgent/GrpcSpan.py similarity index 97% rename from collector-agent/CollectorAgent/SpanClient.py rename to collector-agent/CollectorAgent/GrpcSpan.py index f06bba2d5..57b9b94f6 100644 --- a/collector-agent/CollectorAgent/SpanClient.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -7,7 +7,7 @@ from Span_pb2 import PSpan -class SpanClient(GrpcClient): +class GrpcSpan(GrpcClient): def __init__(self,span_callback_fn,address,meta=None,maxPending=-1): super().__init__(address, meta, maxPending) diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index 642295cb6..7b798c321 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -29,8 +29,8 @@ from PinpointAgent.Type import PHP, API_DEFAULT, AgentSocketCode from Events import * from CollectorAgent.TCGenerator import * -from CollectorAgent.APIMeta import * -from CollectorAgent.AgentStateManager import AgentStateManager +from CollectorAgent.GrpcAPIMeta import * +from CollectorAgent.GrpcAgentStateManager import GrpcAgentStateManager class ThriftAgentImplement(PinpointAgent): @@ -82,7 +82,7 @@ def __init__(self,ac,app_id,app_name,serviceType=PHP): pid=os.getpid() ) - self.agentState = AgentStateManager(self.app_id, self.startTimeStamp,self.statHost) + self.agentState = GrpcAgentStateManager(self.app_id, self.startTimeStamp, self.statHost) self.postponed_queue = [] self.scanLocalInfo() self.api_metas = {} @@ -113,9 +113,9 @@ def updateApiMeta(self, name, api_type=API_DEFAULT): if name in self.api_metas: return self.api_metas[name] else: - meta = APIMeta(name=name, type=api_type, - agentStartTime=self.startTimeStamp, agentId=self.app_id, - agentName=self.app_name) + meta = GrpcAPIMeta(name=name, type=api_type, + agentStartTime=self.startTimeStamp, agentId=self.app_id, + agentName=self.app_name) self.sendMsgToCollector(meta.toPacket().getSerializedData()) self.api_metas[name] = meta return meta @@ -123,7 +123,7 @@ def updateApiMeta(self, name, api_type=API_DEFAULT): def sendMeta(self, meta): ''' - :param APIMeta meta: + :param GrpcAPIMeta meta: :return: ''' TCLogger.debug("meta: %s", meta.name) diff --git a/collector-agent/Test/test_grpc_protocol.py b/collector-agent/Test/test_grpc_protocol.py index 22df50813..f334d76bf 100644 --- a/collector-agent/Test/test_grpc_protocol.py +++ b/collector-agent/Test/test_grpc_protocol.py @@ -7,9 +7,9 @@ import time import logging from unittest import TestCase -from CollectorAgent.AgentClient import AgentClient +from CollectorAgent.GrpcAgent import GrpcAgent from CollectorAgent.MetaClient import MetaClient -from CollectorAgent.SpanClient import SpanClient +from CollectorAgent.GrpcSpan import GrpcSpan from Span_pb2 import PTransactionId, PSpan, PSpanMessage @@ -29,7 +29,7 @@ def setUp(self) -> None: self.agent_meta = [('agentid', 'test-id'), ('applicationname', 'test-name'), ('starttime', starttime)] - self.agent = AgentClient('dev-1230', '10.10.12.23', '2345', 4569, 'dev-pinpoint:9991', self.agent_meta) + self.agent = GrpcAgent('dev-1230', '10.10.12.23', '2345', 4569, 'dev-pinpoint:9991', self.agent_meta) def _generate_span(self): @@ -47,7 +47,7 @@ def _generate_span(self): return msg def test_sendspan(self): - spanclient = SpanClient(self._generate_span,'dev-pinpoint:9993',self.agent_meta,10) + spanclient = GrpcSpan(self._generate_span, 'dev-pinpoint:9993', self.agent_meta, 10) time.sleep(5) def test_metaData(self): From d2c0a820a11217ab49f414f1a411e6c06b818631 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 12 Nov 2019 16:57:23 +0800 Subject: [PATCH 13/45] [11-12] add span reconnection --- .../CollectorAgent/GrpcAgentImplement.py | 4 ++-- .../{MetaClient.py => GrpcMeta.py} | 2 +- collector-agent/CollectorAgent/GrpcSpan.py | 20 +++++++++++++------ collector-agent/Test/test_grpc_protocol.py | 4 ++-- 4 files changed, 19 insertions(+), 11 deletions(-) rename collector-agent/CollectorAgent/{MetaClient.py => GrpcMeta.py} (99%) diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 55a97e5d3..3ce10a1a6 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -2,7 +2,7 @@ # -*- coding: UTF-8 -*- # Created by eeliu at 10/16/19 from CollectorAgent.GrpcAgent import GrpcAgent -from CollectorAgent.MetaClient import MetaClient +from CollectorAgent.GrpcMeta import GrpcMeta from CollectorAgent.GrpcSpanFactory import GrpcSpanFactory from CollectorAgent.GrpcSpan import GrpcSpan from Common.AgentHost import AgentHost @@ -36,7 +36,7 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): import os self.agentHost = AgentHost() self.agent_client = GrpcAgent(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), self.agent_addr, self.agent_meta) - self.meta_client = MetaClient(self.agent_addr, self.agent_meta) + self.meta_client = GrpcMeta(self.agent_addr, self.agent_meta) self.span_client = GrpcSpan(self._generate_span, self.span_addr, self.agent_meta, self.max_pending_sz) self.sequenceId = 0 diff --git a/collector-agent/CollectorAgent/MetaClient.py b/collector-agent/CollectorAgent/GrpcMeta.py similarity index 99% rename from collector-agent/CollectorAgent/MetaClient.py rename to collector-agent/CollectorAgent/GrpcMeta.py index d678b32fd..7e2712608 100644 --- a/collector-agent/CollectorAgent/MetaClient.py +++ b/collector-agent/CollectorAgent/GrpcMeta.py @@ -7,7 +7,7 @@ from Span_pb2 import PSqlMetaData, PApiMetaData, PStringMetaData -class MetaClient(GrpcClient): +class GrpcMeta(GrpcClient): def __init__(self,address,meta=None): super().__init__(address, meta,-1) self.meta_stub=Service_pb2_grpc.MetadataStub(self.channel) diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 57b9b94f6..0f025b322 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -11,24 +11,33 @@ class GrpcSpan(GrpcClient): def __init__(self,span_callback_fn,address,meta=None,maxPending=-1): super().__init__(address, meta, maxPending) - self.is_ok = False + # self.is_ok = True assert (callable(span_callback_fn)) self.span_callback_fn = span_callback_fn self.span_stub = Service_pb2_grpc.SpanStub(self.channel) self._start_span() + self.is_ok = True def channel_set_ready(self): + # self.is_ok = True self.is_ok = True + self._start_span() + + def channel_set_idle(self): - self.is_ok = True + # self.is_ok = True + self._start_span() def channel_set_error(self): self.is_ok = False + self._start_span() + def _span_response(self,result): - TCLogger.debug(result) + TCLogger.debug("send span is over. Agent try to connect span server ...") + def _get_span(self): while True: @@ -41,9 +50,8 @@ def _get_span(self): TCLogger.error(" get span failed, checking the span_callback_fn") except Exception as e: TCLogger.error("get_span catch %s",e) - import sys - sys.exit(-1) + def _start_span(self): self.future = self.span_stub.SendSpan.future(self._get_span()) - self.future.add_done_callback(self._span_response) \ No newline at end of file + self.future.add_done_callback(self._span_response) diff --git a/collector-agent/Test/test_grpc_protocol.py b/collector-agent/Test/test_grpc_protocol.py index f334d76bf..e98bc5b6f 100644 --- a/collector-agent/Test/test_grpc_protocol.py +++ b/collector-agent/Test/test_grpc_protocol.py @@ -8,7 +8,7 @@ import logging from unittest import TestCase from CollectorAgent.GrpcAgent import GrpcAgent -from CollectorAgent.MetaClient import MetaClient +from CollectorAgent.GrpcMeta import GrpcMeta from CollectorAgent.GrpcSpan import GrpcSpan from Span_pb2 import PTransactionId, PSpan, PSpanMessage @@ -54,7 +54,7 @@ def test_metaData(self): apis=(['aa',10,0],['ada',12,0],['aa',31,2],['aaf',11,3]) strings = ('aaaaaaaaaaaa','bbbbbbbbbbb','cccccccc') sqls=('ssss','bbbbb','ssssssss') - meta_client = MetaClient('dev-pinpoint:9991',self.agent_meta) + meta_client = GrpcMeta('dev-pinpoint:9991', self.agent_meta) id = 0 for api in apis: id = meta_client.update_api_meta(*api) From 0b16f3565c0c682a00b51c75110ea206fa4e0824 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 12 Nov 2019 17:42:11 +0800 Subject: [PATCH 14/45] [11-12] add consistency test --- collector-agent/Test/conf/collector_grpc.conf | 2 +- .../Test/conf/collector_thrift.conf | 2 +- collector-agent/Test/test_implement.py | 30 +++++++++++-------- collector-agent/conf/collector.conf | 2 +- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/collector-agent/Test/conf/collector_grpc.conf b/collector-agent/Test/conf/collector_grpc.conf index 99f85f2b1..fafe4c7f2 100644 --- a/collector-agent/Test/conf/collector_grpc.conf +++ b/collector-agent/Test/conf/collector_grpc.conf @@ -11,7 +11,7 @@ collector.grpc.discardpolicy.maxpendingthreshold=1024 [Common] Web_Port=8001 -Log_Level=DEBUG +Log_Level=ERROR [Agent] Address=/tmp/collector-agent.sock \ No newline at end of file diff --git a/collector-agent/Test/conf/collector_thrift.conf b/collector-agent/Test/conf/collector_thrift.conf index 528a8b66a..33f70b475 100644 --- a/collector-agent/Test/conf/collector_thrift.conf +++ b/collector-agent/Test/conf/collector_thrift.conf @@ -10,7 +10,7 @@ CollectorTcpPort=9994 [Common] Web_Port=8001 -Log_Level=DEBUG +Log_Level=ERROR [Agent] Address=/tmp/collector-agent.sock \ No newline at end of file diff --git a/collector-agent/Test/test_implement.py b/collector-agent/Test/test_implement.py index 3f9817af5..8631d61a0 100644 --- a/collector-agent/Test/test_implement.py +++ b/collector-agent/Test/test_implement.py @@ -46,20 +46,24 @@ def run_app_manager(self): from Common.Config import CAConfig collector_conf = CollectorAgentConf(CAConfig) app_management = AppManagement(collector_conf) - while True: + i =10000 + while i >0: # stime =1573438683 - span = '{"name":"PHP Request","FT":1500,' \ - '"server":"10.34.130.79:28081",' \ - '"sid":"3345567788","psid":"3345567789","tid":"phpmyadmin^1560951035971^1",' \ - '"S":1573438683,"E":20,' \ - '"clues":["46:200"],' \ - '"uri":"/index.html",' \ - '"ERR":{"msg":"23456789op[xdcfvgbhnjmk"},' \ - '"EC":1, "estr":"DIY",' \ - '"calls":[{"name":"hello","S":1573438683,"E":8,"calls":[{"name":"hello2","1573438683":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":1573438683,"E":4}]}]}],' \ - '"client":"10.10.10.10"}' + # span = '{"name":"PHP Request","FT":1500,' \ + # '"server":"10.34.130.79:28081",' \ + # '"sid":"3345567788","psid":"3345567789","tid":"phpmyadmin^1560951035971^1",' \ + # '"S":1573438683,"E":20,' \ + # '"clues":["46:200"],' \ + # '"uri":"/index.html",' \ + # '"ERR":{"msg":"23456789op[xdcfvgbhnjmk"},' \ + # '"EC":1, "estr":"DIY",' \ + # '"calls":[{"name":"hello","S":1573438683,"E":8,"calls":[{"name":"hello2","1573438683":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":1573438683,"E":4}]}]}],' \ + # '"client":"10.10.10.10"}' + span ='''{"AP":"t=10 D=10 i=10 b=10","E":1,"FT":1500,"S":1573549175197,"appid":"app-2","appname":"APP-2","calls":[{"E":1,"S":0,"calls":[{"E":0,"S":1,"clues":["-1:Array()","14:ture"],"name":"date","stp":"1501"}],"clues":["-1:Array","14:ture"],"name":"AppDate::outputDate","stp":"1501"}],"client":"10.34.130.156","clues":["46:200"],"name":"PHP Request","server":"10.34.130.134:8001","sid":"213111260","stp":"1500","tid":"app-2^1573547333369^13794","uri":"/index.php?type=get_date"}''' app_management.handle_front_agent_data(None, None, span.encode()) - time.sleep(3) + i-= 1 + # time.sleep(3) # gevent.sleep(1) - + while True: + gevent.sleep(1) # GRPC_TRACE=all;GRPC_VERBOSITY=DEBUG \ No newline at end of file diff --git a/collector-agent/conf/collector.conf b/collector-agent/conf/collector.conf index 90cd0ae63..1f5eafdd4 100644 --- a/collector-agent/conf/collector.conf +++ b/collector-agent/conf/collector.conf @@ -14,7 +14,7 @@ collector.grpc.stat.ip=collectorHost collector.grpc.stat.port=9992 collector.grpc.span.ip=collectorHost collector.grpc.span.port=9993 -collector.grpc.discardpolicy.maxpendingthreshold=1024 +collector.grpc.discardpolicy.maxpendingthreshold=10000 [Common] # your web server (nginx&apache) port Web_Port=8001 From 99599180dcd38c63d484f5c3b2468d5e8ce205c8 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Fri, 15 Nov 2019 15:14:41 +0800 Subject: [PATCH 15/45] [11-15] fix "msg " bug in exception --- collector-agent/CollectorAgent/GrpcSpanFactory.py | 7 ++++--- collector-agent/run.py | 5 +---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/collector-agent/CollectorAgent/GrpcSpanFactory.py b/collector-agent/CollectorAgent/GrpcSpanFactory.py index b882f405c..5b4db41aa 100644 --- a/collector-agent/CollectorAgent/GrpcSpanFactory.py +++ b/collector-agent/CollectorAgent/GrpcSpanFactory.py @@ -3,12 +3,12 @@ # Created by eeliu at 11/7/19 from google.protobuf.wrappers_pb2 import StringValue -from Annotation_pb2 import PIntStringValue, PAnnotation, PAnnotationValue, PLongIntIntByteByteStringValue +from Annotation_pb2 import PAnnotation, PAnnotationValue, PLongIntIntByteByteStringValue from CollectorAgent.TCGenerator import ThriftProtocolUtil from Common.Logger import TCLogger from PHPAgent.SpanFactory import SpanFactory from PinpointAgent.Type import API_WEB_REQUEST, PHP, PHP_METHOD_CALL, PROXY_HTTP_HEADER -from Span_pb2 import PSpan, PTransactionId, PAcceptEvent, PParentInfo, PSpanEvent, PNextEvent, PMessageEvent +from Span_pb2 import PSpan, PSpanEvent class GrpcSpanFactory(SpanFactory): @@ -64,6 +64,7 @@ def create_span(self, stackMap): parent_info.acceptorHost = stackMap['Ah'] if 'ERR' in stackMap: + tSpan.err = 1 id = self.agent.updateStringMeta('ERR') value = StringValue(value=stackMap['ERR']['msg']) tSpan.exceptionInfo.intValue = id @@ -109,7 +110,7 @@ def create_span_event(self, stackMap): if 'EXP' in stackMap: id = self.agent.updateStringMeta('EXP') - value = StringValue(value=stackMap['EXP']['msg']) + value = StringValue(value=stackMap['EXP']) spanEv.exceptionInfo.intValue = id spanEv.exceptionInfo.stringValue.CopyFrom(value) diff --git a/collector-agent/run.py b/collector-agent/run.py index bd61c9f4f..5bfedde8b 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -39,12 +39,9 @@ def __init__(self): self.php_agent.start() def run(self): - _stop_event = Event() - gevent.signal(signal.SIGQUIT, _stop_event.set) - gevent.signal(signal.SIGTERM, _stop_event.set) - gevent.signal(signal.SIGINT, _stop_event.set) while True: gevent.sleep(10) + # break by a signal self.app_management.stop_all() self.php_agent.stop() TCLogger.warning("collector agent exit with SIGNAL") From d0e75f63af03a2052c90ebf8dddc80d932bf4e32 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Fri, 3 Jan 2020 17:30:30 +0800 Subject: [PATCH 16/45] [1-2] add run_first.sh --- collector-agent/Proto/grpc/Annotation_pb2.py | 536 ------- .../Proto/grpc/Annotation_pb2_grpc.py | 3 - collector-agent/Proto/grpc/Cmd_pb2.py | 800 ---------- collector-agent/Proto/grpc/Cmd_pb2_grpc.py | 3 - collector-agent/Proto/grpc/Service_pb2.py | 221 --- .../Proto/grpc/Service_pb2_grpc.py | 336 ----- collector-agent/Proto/grpc/Span_pb2.py | 952 ------------ collector-agent/Proto/grpc/Span_pb2_grpc.py | 3 - collector-agent/Proto/grpc/Stat_pb2.py | 1300 ----------------- collector-agent/Proto/grpc/Stat_pb2_grpc.py | 3 - collector-agent/Proto/grpc/ThreadDump_pb2.py | 502 ------- .../Proto/grpc/ThreadDump_pb2_grpc.py | 3 - collector-agent/run_first.sh | 3 + 13 files changed, 3 insertions(+), 4662 deletions(-) delete mode 100644 collector-agent/Proto/grpc/Annotation_pb2.py delete mode 100644 collector-agent/Proto/grpc/Annotation_pb2_grpc.py delete mode 100644 collector-agent/Proto/grpc/Cmd_pb2.py delete mode 100644 collector-agent/Proto/grpc/Cmd_pb2_grpc.py delete mode 100644 collector-agent/Proto/grpc/Service_pb2.py delete mode 100644 collector-agent/Proto/grpc/Service_pb2_grpc.py delete mode 100644 collector-agent/Proto/grpc/Span_pb2.py delete mode 100644 collector-agent/Proto/grpc/Span_pb2_grpc.py delete mode 100644 collector-agent/Proto/grpc/Stat_pb2.py delete mode 100644 collector-agent/Proto/grpc/Stat_pb2_grpc.py delete mode 100644 collector-agent/Proto/grpc/ThreadDump_pb2.py delete mode 100644 collector-agent/Proto/grpc/ThreadDump_pb2_grpc.py create mode 100755 collector-agent/run_first.sh diff --git a/collector-agent/Proto/grpc/Annotation_pb2.py b/collector-agent/Proto/grpc/Annotation_pb2.py deleted file mode 100644 index 8f8f34c34..000000000 --- a/collector-agent/Proto/grpc/Annotation_pb2.py +++ /dev/null @@ -1,536 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: Annotation.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='Annotation.proto', - package='', - syntax='proto3', - serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\017AnnotationProtoP\001'), - serialized_pb=_b('\n\x10\x41nnotation.proto\x1a\x1egoogle/protobuf/wrappers.proto\"V\n\x0fPIntStringValue\x12\x10\n\x08intValue\x18\x01 \x01(\x05\x12\x31\n\x0bstringValue\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\x91\x01\n\x15PIntStringStringValue\x12\x10\n\x08intValue\x18\x01 \x01(\x05\x12\x32\n\x0cstringValue1\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12\x32\n\x0cstringValue2\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xb4\x01\n\x1ePLongIntIntByteByteStringValue\x12\x11\n\tlongValue\x18\x01 \x01(\x03\x12\x11\n\tintValue1\x18\x02 \x01(\x05\x12\x11\n\tintValue2\x18\x03 \x01(\x05\x12\x12\n\nbyteValue1\x18\x04 \x01(\x11\x12\x12\n\nbyteValue2\x18\x05 \x01(\x11\x12\x31\n\x0bstringValue\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"j\n\x1aPIntBooleanIntBooleanValue\x12\x11\n\tintValue1\x18\x01 \x01(\x05\x12\x12\n\nboolValue1\x18\x02 \x01(\x08\x12\x11\n\tintValue2\x18\x03 \x01(\x05\x12\x12\n\nboolValue2\x18\x04 \x01(\x08\"|\n\x12PStringStringValue\x12\x32\n\x0cstringValue1\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12\x32\n\x0cstringValue2\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xeb\x03\n\x10PAnnotationValue\x12\x15\n\x0bstringValue\x18\x01 \x01(\tH\x00\x12\x13\n\tboolValue\x18\x02 \x01(\x08H\x00\x12\x12\n\x08intValue\x18\x03 \x01(\x05H\x00\x12\x13\n\tlongValue\x18\x04 \x01(\x03H\x00\x12\x14\n\nshortValue\x18\x05 \x01(\x11H\x00\x12\x15\n\x0b\x64oubleValue\x18\x06 \x01(\x01H\x00\x12\x15\n\x0b\x62inaryValue\x18\x07 \x01(\x0cH\x00\x12\x13\n\tbyteValue\x18\x08 \x01(\x11H\x00\x12*\n\x0eintStringValue\x18\t \x01(\x0b\x32\x10.PIntStringValueH\x00\x12\x30\n\x11stringStringValue\x18\n \x01(\x0b\x32\x13.PStringStringValueH\x00\x12\x36\n\x14intStringStringValue\x18\x0b \x01(\x0b\x32\x16.PIntStringStringValueH\x00\x12H\n\x1dlongIntIntByteByteStringValue\x18\x0c \x01(\x0b\x32\x1f.PLongIntIntByteByteStringValueH\x00\x12@\n\x19intBooleanIntBooleanValue\x18\r \x01(\x0b\x32\x1b.PIntBooleanIntBooleanValueH\x00\x42\x07\n\x05\x66ield\"<\n\x0bPAnnotation\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12 \n\x05value\x18\x02 \x01(\x0b\x32\x11.PAnnotationValueB6\n!com.navercorp.pinpoint.grpc.traceB\x0f\x41nnotationProtoP\x01\x62\x06proto3') - , - dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) - - - - -_PINTSTRINGVALUE = _descriptor.Descriptor( - name='PIntStringValue', - full_name='PIntStringValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='intValue', full_name='PIntStringValue.intValue', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stringValue', full_name='PIntStringValue.stringValue', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=52, - serialized_end=138, -) - - -_PINTSTRINGSTRINGVALUE = _descriptor.Descriptor( - name='PIntStringStringValue', - full_name='PIntStringStringValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='intValue', full_name='PIntStringStringValue.intValue', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stringValue1', full_name='PIntStringStringValue.stringValue1', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stringValue2', full_name='PIntStringStringValue.stringValue2', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=141, - serialized_end=286, -) - - -_PLONGINTINTBYTEBYTESTRINGVALUE = _descriptor.Descriptor( - name='PLongIntIntByteByteStringValue', - full_name='PLongIntIntByteByteStringValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='longValue', full_name='PLongIntIntByteByteStringValue.longValue', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='intValue1', full_name='PLongIntIntByteByteStringValue.intValue1', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='intValue2', full_name='PLongIntIntByteByteStringValue.intValue2', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='byteValue1', full_name='PLongIntIntByteByteStringValue.byteValue1', index=3, - number=4, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='byteValue2', full_name='PLongIntIntByteByteStringValue.byteValue2', index=4, - number=5, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stringValue', full_name='PLongIntIntByteByteStringValue.stringValue', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=289, - serialized_end=469, -) - - -_PINTBOOLEANINTBOOLEANVALUE = _descriptor.Descriptor( - name='PIntBooleanIntBooleanValue', - full_name='PIntBooleanIntBooleanValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='intValue1', full_name='PIntBooleanIntBooleanValue.intValue1', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='boolValue1', full_name='PIntBooleanIntBooleanValue.boolValue1', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='intValue2', full_name='PIntBooleanIntBooleanValue.intValue2', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='boolValue2', full_name='PIntBooleanIntBooleanValue.boolValue2', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=471, - serialized_end=577, -) - - -_PSTRINGSTRINGVALUE = _descriptor.Descriptor( - name='PStringStringValue', - full_name='PStringStringValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='stringValue1', full_name='PStringStringValue.stringValue1', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stringValue2', full_name='PStringStringValue.stringValue2', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=579, - serialized_end=703, -) - - -_PANNOTATIONVALUE = _descriptor.Descriptor( - name='PAnnotationValue', - full_name='PAnnotationValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='stringValue', full_name='PAnnotationValue.stringValue', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='boolValue', full_name='PAnnotationValue.boolValue', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='intValue', full_name='PAnnotationValue.intValue', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='longValue', full_name='PAnnotationValue.longValue', index=3, - number=4, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='shortValue', full_name='PAnnotationValue.shortValue', index=4, - number=5, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='doubleValue', full_name='PAnnotationValue.doubleValue', index=5, - number=6, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='binaryValue', full_name='PAnnotationValue.binaryValue', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='byteValue', full_name='PAnnotationValue.byteValue', index=7, - number=8, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='intStringValue', full_name='PAnnotationValue.intStringValue', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stringStringValue', full_name='PAnnotationValue.stringStringValue', index=9, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='intStringStringValue', full_name='PAnnotationValue.intStringStringValue', index=10, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='longIntIntByteByteStringValue', full_name='PAnnotationValue.longIntIntByteByteStringValue', index=11, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='intBooleanIntBooleanValue', full_name='PAnnotationValue.intBooleanIntBooleanValue', index=12, - number=13, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='field', full_name='PAnnotationValue.field', - index=0, containing_type=None, fields=[]), - ], - serialized_start=706, - serialized_end=1197, -) - - -_PANNOTATION = _descriptor.Descriptor( - name='PAnnotation', - full_name='PAnnotation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='PAnnotation.key', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value', full_name='PAnnotation.value', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1199, - serialized_end=1259, -) - -_PINTSTRINGVALUE.fields_by_name['stringValue'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE -_PINTSTRINGSTRINGVALUE.fields_by_name['stringValue1'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE -_PINTSTRINGSTRINGVALUE.fields_by_name['stringValue2'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE -_PLONGINTINTBYTEBYTESTRINGVALUE.fields_by_name['stringValue'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE -_PSTRINGSTRINGVALUE.fields_by_name['stringValue1'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE -_PSTRINGSTRINGVALUE.fields_by_name['stringValue2'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE -_PANNOTATIONVALUE.fields_by_name['intStringValue'].message_type = _PINTSTRINGVALUE -_PANNOTATIONVALUE.fields_by_name['stringStringValue'].message_type = _PSTRINGSTRINGVALUE -_PANNOTATIONVALUE.fields_by_name['intStringStringValue'].message_type = _PINTSTRINGSTRINGVALUE -_PANNOTATIONVALUE.fields_by_name['longIntIntByteByteStringValue'].message_type = _PLONGINTINTBYTEBYTESTRINGVALUE -_PANNOTATIONVALUE.fields_by_name['intBooleanIntBooleanValue'].message_type = _PINTBOOLEANINTBOOLEANVALUE -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['stringValue']) -_PANNOTATIONVALUE.fields_by_name['stringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['boolValue']) -_PANNOTATIONVALUE.fields_by_name['boolValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['intValue']) -_PANNOTATIONVALUE.fields_by_name['intValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['longValue']) -_PANNOTATIONVALUE.fields_by_name['longValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['shortValue']) -_PANNOTATIONVALUE.fields_by_name['shortValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['doubleValue']) -_PANNOTATIONVALUE.fields_by_name['doubleValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['binaryValue']) -_PANNOTATIONVALUE.fields_by_name['binaryValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['byteValue']) -_PANNOTATIONVALUE.fields_by_name['byteValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['intStringValue']) -_PANNOTATIONVALUE.fields_by_name['intStringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['stringStringValue']) -_PANNOTATIONVALUE.fields_by_name['stringStringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['intStringStringValue']) -_PANNOTATIONVALUE.fields_by_name['intStringStringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['longIntIntByteByteStringValue']) -_PANNOTATIONVALUE.fields_by_name['longIntIntByteByteStringValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATIONVALUE.oneofs_by_name['field'].fields.append( - _PANNOTATIONVALUE.fields_by_name['intBooleanIntBooleanValue']) -_PANNOTATIONVALUE.fields_by_name['intBooleanIntBooleanValue'].containing_oneof = _PANNOTATIONVALUE.oneofs_by_name['field'] -_PANNOTATION.fields_by_name['value'].message_type = _PANNOTATIONVALUE -DESCRIPTOR.message_types_by_name['PIntStringValue'] = _PINTSTRINGVALUE -DESCRIPTOR.message_types_by_name['PIntStringStringValue'] = _PINTSTRINGSTRINGVALUE -DESCRIPTOR.message_types_by_name['PLongIntIntByteByteStringValue'] = _PLONGINTINTBYTEBYTESTRINGVALUE -DESCRIPTOR.message_types_by_name['PIntBooleanIntBooleanValue'] = _PINTBOOLEANINTBOOLEANVALUE -DESCRIPTOR.message_types_by_name['PStringStringValue'] = _PSTRINGSTRINGVALUE -DESCRIPTOR.message_types_by_name['PAnnotationValue'] = _PANNOTATIONVALUE -DESCRIPTOR.message_types_by_name['PAnnotation'] = _PANNOTATION -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PIntStringValue = _reflection.GeneratedProtocolMessageType('PIntStringValue', (_message.Message,), { - 'DESCRIPTOR' : _PINTSTRINGVALUE, - '__module__' : 'Annotation_pb2' - # @@protoc_insertion_point(class_scope:PIntStringValue) - }) -_sym_db.RegisterMessage(PIntStringValue) - -PIntStringStringValue = _reflection.GeneratedProtocolMessageType('PIntStringStringValue', (_message.Message,), { - 'DESCRIPTOR' : _PINTSTRINGSTRINGVALUE, - '__module__' : 'Annotation_pb2' - # @@protoc_insertion_point(class_scope:PIntStringStringValue) - }) -_sym_db.RegisterMessage(PIntStringStringValue) - -PLongIntIntByteByteStringValue = _reflection.GeneratedProtocolMessageType('PLongIntIntByteByteStringValue', (_message.Message,), { - 'DESCRIPTOR' : _PLONGINTINTBYTEBYTESTRINGVALUE, - '__module__' : 'Annotation_pb2' - # @@protoc_insertion_point(class_scope:PLongIntIntByteByteStringValue) - }) -_sym_db.RegisterMessage(PLongIntIntByteByteStringValue) - -PIntBooleanIntBooleanValue = _reflection.GeneratedProtocolMessageType('PIntBooleanIntBooleanValue', (_message.Message,), { - 'DESCRIPTOR' : _PINTBOOLEANINTBOOLEANVALUE, - '__module__' : 'Annotation_pb2' - # @@protoc_insertion_point(class_scope:PIntBooleanIntBooleanValue) - }) -_sym_db.RegisterMessage(PIntBooleanIntBooleanValue) - -PStringStringValue = _reflection.GeneratedProtocolMessageType('PStringStringValue', (_message.Message,), { - 'DESCRIPTOR' : _PSTRINGSTRINGVALUE, - '__module__' : 'Annotation_pb2' - # @@protoc_insertion_point(class_scope:PStringStringValue) - }) -_sym_db.RegisterMessage(PStringStringValue) - -PAnnotationValue = _reflection.GeneratedProtocolMessageType('PAnnotationValue', (_message.Message,), { - 'DESCRIPTOR' : _PANNOTATIONVALUE, - '__module__' : 'Annotation_pb2' - # @@protoc_insertion_point(class_scope:PAnnotationValue) - }) -_sym_db.RegisterMessage(PAnnotationValue) - -PAnnotation = _reflection.GeneratedProtocolMessageType('PAnnotation', (_message.Message,), { - 'DESCRIPTOR' : _PANNOTATION, - '__module__' : 'Annotation_pb2' - # @@protoc_insertion_point(class_scope:PAnnotation) - }) -_sym_db.RegisterMessage(PAnnotation) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Annotation_pb2_grpc.py b/collector-agent/Proto/grpc/Annotation_pb2_grpc.py deleted file mode 100644 index a89435267..000000000 --- a/collector-agent/Proto/grpc/Annotation_pb2_grpc.py +++ /dev/null @@ -1,3 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -import grpc - diff --git a/collector-agent/Proto/grpc/Cmd_pb2.py b/collector-agent/Proto/grpc/Cmd_pb2.py deleted file mode 100644 index fa46ca9f9..000000000 --- a/collector-agent/Proto/grpc/Cmd_pb2.py +++ /dev/null @@ -1,800 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: Cmd.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf.internal import enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 -import ThreadDump_pb2 as ThreadDump__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='Cmd.proto', - package='v1', - syntax='proto3', - serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\010CmdProtoP\001'), - serialized_pb=_b('\n\tCmd.proto\x12\x02v1\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x10ThreadDump.proto\"w\n\x0bPCmdMessage\x12\x34\n\x10handshakeMessage\x18\x01 \x01(\x0b\x32\x18.v1.PCmdServiceHandshakeH\x00\x12\'\n\x0b\x66\x61ilMessage\x18\x02 \x01(\x0b\x32\x10.v1.PCmdResponseH\x00\x42\t\n\x07message\"8\n\x14PCmdServiceHandshake\x12 \n\x18supportCommandServiceKey\x18\x01 \x03(\x05\"a\n\x0cPCmdResponse\x12\x12\n\nresponseId\x18\x01 \x01(\x05\x12\x0e\n\x06status\x18\x02 \x01(\x05\x12-\n\x07message\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"k\n\x12PCmdStreamResponse\x12\x12\n\nresponseId\x18\x01 \x01(\x05\x12\x12\n\nsequenceId\x18\x02 \x01(\x05\x12-\n\x07message\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\x97\x02\n\x0bPCmdRequest\x12\x11\n\trequestId\x18\x01 \x01(\x05\x12$\n\x0b\x63ommandEcho\x18\xc6\x05 \x01(\x0b\x32\x0c.v1.PCmdEchoH\x00\x12>\n\x18\x63ommandActiveThreadCount\x18\xda\x05 \x01(\x0b\x32\x19.v1.PCmdActiveThreadCountH\x00\x12<\n\x17\x63ommandActiveThreadDump\x18\xe4\x05 \x01(\x0b\x32\x18.v1.PCmdActiveThreadDumpH\x00\x12\x46\n\x1c\x63ommandActiveThreadLightDump\x18\xee\x05 \x01(\x0b\x32\x1d.v1.PCmdActiveThreadLightDumpH\x00\x42\t\n\x07\x63ommand\"\x1b\n\x08PCmdEcho\x12\x0f\n\x07message\x18\x01 \x01(\t\"M\n\x10PCmdEchoResponse\x12(\n\x0e\x63ommonResponse\x18\x01 \x01(\x0b\x32\x10.v1.PCmdResponse\x12\x0f\n\x07message\x18\x02 \x01(\t\"O\n\x14PCmdActiveThreadDump\x12\r\n\x05limit\x18\x01 \x01(\x05\x12\x12\n\nthreadName\x18\x02 \x03(\t\x12\x14\n\x0clocalTraceId\x18\x03 \x03(\x03\"\x9e\x01\n\x17PCmdActiveThreadDumpRes\x12(\n\x0e\x63ommonResponse\x18\x01 \x01(\x0b\x32\x10.v1.PCmdResponse\x12)\n\nthreadDump\x18\x02 \x03(\x0b\x32\x15.v1.PActiveThreadDump\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0f\n\x07subType\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\"T\n\x19PCmdActiveThreadLightDump\x12\r\n\x05limit\x18\x01 \x01(\x05\x12\x12\n\nthreadName\x18\x02 \x03(\t\x12\x14\n\x0clocalTraceId\x18\x03 \x03(\x03\"\xa8\x01\n\x1cPCmdActiveThreadLightDumpRes\x12(\n\x0e\x63ommonResponse\x18\x01 \x01(\x0b\x32\x10.v1.PCmdResponse\x12.\n\nthreadDump\x18\x02 \x03(\x0b\x32\x1a.v1.PActiveThreadLightDump\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0f\n\x07subType\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\"\x17\n\x15PCmdActiveThreadCount\"\x9b\x01\n\x18PCmdActiveThreadCountRes\x12\x34\n\x14\x63ommonStreamResponse\x18\x01 \x01(\x0b\x32\x16.v1.PCmdStreamResponse\x12\x1b\n\x13histogramSchemaType\x18\x02 \x01(\x05\x12\x19\n\x11\x61\x63tiveThreadCount\x18\x03 \x03(\x05\x12\x11\n\ttimeStamp\x18\x04 \x01(\x03*\x89\x01\n\x0cPCommandType\x12\x08\n\x04NONE\x10\x00\x12\x08\n\x04PING\x10\x64\x12\x08\n\x04PONG\x10\x65\x12\t\n\x04\x45\x43HO\x10\xc6\x05\x12\x18\n\x13\x41\x43TIVE_THREAD_COUNT\x10\xda\x05\x12\x17\n\x12\x41\x43TIVE_THREAD_DUMP\x10\xe4\x05\x12\x1d\n\x18\x41\x43TIVE_THREAD_LIGHT_DUMP\x10\xee\x05\x42/\n!com.navercorp.pinpoint.grpc.traceB\x08\x43mdProtoP\x01\x62\x06proto3') - , - dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,ThreadDump__pb2.DESCRIPTOR,]) - -_PCOMMANDTYPE = _descriptor.EnumDescriptor( - name='PCommandType', - full_name='v1.PCommandType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='NONE', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PING', index=1, number=100, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PONG', index=2, number=101, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ECHO', index=3, number=710, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ACTIVE_THREAD_COUNT', index=4, number=730, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ACTIVE_THREAD_DUMP', index=5, number=740, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ACTIVE_THREAD_LIGHT_DUMP', index=6, number=750, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=1527, - serialized_end=1664, -) -_sym_db.RegisterEnumDescriptor(_PCOMMANDTYPE) - -PCommandType = enum_type_wrapper.EnumTypeWrapper(_PCOMMANDTYPE) -NONE = 0 -PING = 100 -PONG = 101 -ECHO = 710 -ACTIVE_THREAD_COUNT = 730 -ACTIVE_THREAD_DUMP = 740 -ACTIVE_THREAD_LIGHT_DUMP = 750 - - - -_PCMDMESSAGE = _descriptor.Descriptor( - name='PCmdMessage', - full_name='v1.PCmdMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='handshakeMessage', full_name='v1.PCmdMessage.handshakeMessage', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='failMessage', full_name='v1.PCmdMessage.failMessage', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='message', full_name='v1.PCmdMessage.message', - index=0, containing_type=None, fields=[]), - ], - serialized_start=67, - serialized_end=186, -) - - -_PCMDSERVICEHANDSHAKE = _descriptor.Descriptor( - name='PCmdServiceHandshake', - full_name='v1.PCmdServiceHandshake', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='supportCommandServiceKey', full_name='v1.PCmdServiceHandshake.supportCommandServiceKey', index=0, - number=1, type=5, cpp_type=1, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=188, - serialized_end=244, -) - - -_PCMDRESPONSE = _descriptor.Descriptor( - name='PCmdResponse', - full_name='v1.PCmdResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='responseId', full_name='v1.PCmdResponse.responseId', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='status', full_name='v1.PCmdResponse.status', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='message', full_name='v1.PCmdResponse.message', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=246, - serialized_end=343, -) - - -_PCMDSTREAMRESPONSE = _descriptor.Descriptor( - name='PCmdStreamResponse', - full_name='v1.PCmdStreamResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='responseId', full_name='v1.PCmdStreamResponse.responseId', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sequenceId', full_name='v1.PCmdStreamResponse.sequenceId', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='message', full_name='v1.PCmdStreamResponse.message', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=345, - serialized_end=452, -) - - -_PCMDREQUEST = _descriptor.Descriptor( - name='PCmdRequest', - full_name='v1.PCmdRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='requestId', full_name='v1.PCmdRequest.requestId', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='commandEcho', full_name='v1.PCmdRequest.commandEcho', index=1, - number=710, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='commandActiveThreadCount', full_name='v1.PCmdRequest.commandActiveThreadCount', index=2, - number=730, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='commandActiveThreadDump', full_name='v1.PCmdRequest.commandActiveThreadDump', index=3, - number=740, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='commandActiveThreadLightDump', full_name='v1.PCmdRequest.commandActiveThreadLightDump', index=4, - number=750, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='command', full_name='v1.PCmdRequest.command', - index=0, containing_type=None, fields=[]), - ], - serialized_start=455, - serialized_end=734, -) - - -_PCMDECHO = _descriptor.Descriptor( - name='PCmdEcho', - full_name='v1.PCmdEcho', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='message', full_name='v1.PCmdEcho.message', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=736, - serialized_end=763, -) - - -_PCMDECHORESPONSE = _descriptor.Descriptor( - name='PCmdEchoResponse', - full_name='v1.PCmdEchoResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='commonResponse', full_name='v1.PCmdEchoResponse.commonResponse', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='message', full_name='v1.PCmdEchoResponse.message', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=765, - serialized_end=842, -) - - -_PCMDACTIVETHREADDUMP = _descriptor.Descriptor( - name='PCmdActiveThreadDump', - full_name='v1.PCmdActiveThreadDump', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='limit', full_name='v1.PCmdActiveThreadDump.limit', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadName', full_name='v1.PCmdActiveThreadDump.threadName', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='localTraceId', full_name='v1.PCmdActiveThreadDump.localTraceId', index=2, - number=3, type=3, cpp_type=2, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=844, - serialized_end=923, -) - - -_PCMDACTIVETHREADDUMPRES = _descriptor.Descriptor( - name='PCmdActiveThreadDumpRes', - full_name='v1.PCmdActiveThreadDumpRes', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='commonResponse', full_name='v1.PCmdActiveThreadDumpRes.commonResponse', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadDump', full_name='v1.PCmdActiveThreadDumpRes.threadDump', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='type', full_name='v1.PCmdActiveThreadDumpRes.type', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='subType', full_name='v1.PCmdActiveThreadDumpRes.subType', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='version', full_name='v1.PCmdActiveThreadDumpRes.version', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=926, - serialized_end=1084, -) - - -_PCMDACTIVETHREADLIGHTDUMP = _descriptor.Descriptor( - name='PCmdActiveThreadLightDump', - full_name='v1.PCmdActiveThreadLightDump', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='limit', full_name='v1.PCmdActiveThreadLightDump.limit', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadName', full_name='v1.PCmdActiveThreadLightDump.threadName', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='localTraceId', full_name='v1.PCmdActiveThreadLightDump.localTraceId', index=2, - number=3, type=3, cpp_type=2, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1086, - serialized_end=1170, -) - - -_PCMDACTIVETHREADLIGHTDUMPRES = _descriptor.Descriptor( - name='PCmdActiveThreadLightDumpRes', - full_name='v1.PCmdActiveThreadLightDumpRes', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='commonResponse', full_name='v1.PCmdActiveThreadLightDumpRes.commonResponse', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadDump', full_name='v1.PCmdActiveThreadLightDumpRes.threadDump', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='type', full_name='v1.PCmdActiveThreadLightDumpRes.type', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='subType', full_name='v1.PCmdActiveThreadLightDumpRes.subType', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='version', full_name='v1.PCmdActiveThreadLightDumpRes.version', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1173, - serialized_end=1341, -) - - -_PCMDACTIVETHREADCOUNT = _descriptor.Descriptor( - name='PCmdActiveThreadCount', - full_name='v1.PCmdActiveThreadCount', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1343, - serialized_end=1366, -) - - -_PCMDACTIVETHREADCOUNTRES = _descriptor.Descriptor( - name='PCmdActiveThreadCountRes', - full_name='v1.PCmdActiveThreadCountRes', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='commonStreamResponse', full_name='v1.PCmdActiveThreadCountRes.commonStreamResponse', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='histogramSchemaType', full_name='v1.PCmdActiveThreadCountRes.histogramSchemaType', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='activeThreadCount', full_name='v1.PCmdActiveThreadCountRes.activeThreadCount', index=2, - number=3, type=5, cpp_type=1, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='timeStamp', full_name='v1.PCmdActiveThreadCountRes.timeStamp', index=3, - number=4, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1369, - serialized_end=1524, -) - -_PCMDMESSAGE.fields_by_name['handshakeMessage'].message_type = _PCMDSERVICEHANDSHAKE -_PCMDMESSAGE.fields_by_name['failMessage'].message_type = _PCMDRESPONSE -_PCMDMESSAGE.oneofs_by_name['message'].fields.append( - _PCMDMESSAGE.fields_by_name['handshakeMessage']) -_PCMDMESSAGE.fields_by_name['handshakeMessage'].containing_oneof = _PCMDMESSAGE.oneofs_by_name['message'] -_PCMDMESSAGE.oneofs_by_name['message'].fields.append( - _PCMDMESSAGE.fields_by_name['failMessage']) -_PCMDMESSAGE.fields_by_name['failMessage'].containing_oneof = _PCMDMESSAGE.oneofs_by_name['message'] -_PCMDRESPONSE.fields_by_name['message'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE -_PCMDSTREAMRESPONSE.fields_by_name['message'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE -_PCMDREQUEST.fields_by_name['commandEcho'].message_type = _PCMDECHO -_PCMDREQUEST.fields_by_name['commandActiveThreadCount'].message_type = _PCMDACTIVETHREADCOUNT -_PCMDREQUEST.fields_by_name['commandActiveThreadDump'].message_type = _PCMDACTIVETHREADDUMP -_PCMDREQUEST.fields_by_name['commandActiveThreadLightDump'].message_type = _PCMDACTIVETHREADLIGHTDUMP -_PCMDREQUEST.oneofs_by_name['command'].fields.append( - _PCMDREQUEST.fields_by_name['commandEcho']) -_PCMDREQUEST.fields_by_name['commandEcho'].containing_oneof = _PCMDREQUEST.oneofs_by_name['command'] -_PCMDREQUEST.oneofs_by_name['command'].fields.append( - _PCMDREQUEST.fields_by_name['commandActiveThreadCount']) -_PCMDREQUEST.fields_by_name['commandActiveThreadCount'].containing_oneof = _PCMDREQUEST.oneofs_by_name['command'] -_PCMDREQUEST.oneofs_by_name['command'].fields.append( - _PCMDREQUEST.fields_by_name['commandActiveThreadDump']) -_PCMDREQUEST.fields_by_name['commandActiveThreadDump'].containing_oneof = _PCMDREQUEST.oneofs_by_name['command'] -_PCMDREQUEST.oneofs_by_name['command'].fields.append( - _PCMDREQUEST.fields_by_name['commandActiveThreadLightDump']) -_PCMDREQUEST.fields_by_name['commandActiveThreadLightDump'].containing_oneof = _PCMDREQUEST.oneofs_by_name['command'] -_PCMDECHORESPONSE.fields_by_name['commonResponse'].message_type = _PCMDRESPONSE -_PCMDACTIVETHREADDUMPRES.fields_by_name['commonResponse'].message_type = _PCMDRESPONSE -_PCMDACTIVETHREADDUMPRES.fields_by_name['threadDump'].message_type = ThreadDump__pb2._PACTIVETHREADDUMP -_PCMDACTIVETHREADLIGHTDUMPRES.fields_by_name['commonResponse'].message_type = _PCMDRESPONSE -_PCMDACTIVETHREADLIGHTDUMPRES.fields_by_name['threadDump'].message_type = ThreadDump__pb2._PACTIVETHREADLIGHTDUMP -_PCMDACTIVETHREADCOUNTRES.fields_by_name['commonStreamResponse'].message_type = _PCMDSTREAMRESPONSE -DESCRIPTOR.message_types_by_name['PCmdMessage'] = _PCMDMESSAGE -DESCRIPTOR.message_types_by_name['PCmdServiceHandshake'] = _PCMDSERVICEHANDSHAKE -DESCRIPTOR.message_types_by_name['PCmdResponse'] = _PCMDRESPONSE -DESCRIPTOR.message_types_by_name['PCmdStreamResponse'] = _PCMDSTREAMRESPONSE -DESCRIPTOR.message_types_by_name['PCmdRequest'] = _PCMDREQUEST -DESCRIPTOR.message_types_by_name['PCmdEcho'] = _PCMDECHO -DESCRIPTOR.message_types_by_name['PCmdEchoResponse'] = _PCMDECHORESPONSE -DESCRIPTOR.message_types_by_name['PCmdActiveThreadDump'] = _PCMDACTIVETHREADDUMP -DESCRIPTOR.message_types_by_name['PCmdActiveThreadDumpRes'] = _PCMDACTIVETHREADDUMPRES -DESCRIPTOR.message_types_by_name['PCmdActiveThreadLightDump'] = _PCMDACTIVETHREADLIGHTDUMP -DESCRIPTOR.message_types_by_name['PCmdActiveThreadLightDumpRes'] = _PCMDACTIVETHREADLIGHTDUMPRES -DESCRIPTOR.message_types_by_name['PCmdActiveThreadCount'] = _PCMDACTIVETHREADCOUNT -DESCRIPTOR.message_types_by_name['PCmdActiveThreadCountRes'] = _PCMDACTIVETHREADCOUNTRES -DESCRIPTOR.enum_types_by_name['PCommandType'] = _PCOMMANDTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PCmdMessage = _reflection.GeneratedProtocolMessageType('PCmdMessage', (_message.Message,), { - 'DESCRIPTOR' : _PCMDMESSAGE, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdMessage) - }) -_sym_db.RegisterMessage(PCmdMessage) - -PCmdServiceHandshake = _reflection.GeneratedProtocolMessageType('PCmdServiceHandshake', (_message.Message,), { - 'DESCRIPTOR' : _PCMDSERVICEHANDSHAKE, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdServiceHandshake) - }) -_sym_db.RegisterMessage(PCmdServiceHandshake) - -PCmdResponse = _reflection.GeneratedProtocolMessageType('PCmdResponse', (_message.Message,), { - 'DESCRIPTOR' : _PCMDRESPONSE, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdResponse) - }) -_sym_db.RegisterMessage(PCmdResponse) - -PCmdStreamResponse = _reflection.GeneratedProtocolMessageType('PCmdStreamResponse', (_message.Message,), { - 'DESCRIPTOR' : _PCMDSTREAMRESPONSE, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdStreamResponse) - }) -_sym_db.RegisterMessage(PCmdStreamResponse) - -PCmdRequest = _reflection.GeneratedProtocolMessageType('PCmdRequest', (_message.Message,), { - 'DESCRIPTOR' : _PCMDREQUEST, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdRequest) - }) -_sym_db.RegisterMessage(PCmdRequest) - -PCmdEcho = _reflection.GeneratedProtocolMessageType('PCmdEcho', (_message.Message,), { - 'DESCRIPTOR' : _PCMDECHO, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdEcho) - }) -_sym_db.RegisterMessage(PCmdEcho) - -PCmdEchoResponse = _reflection.GeneratedProtocolMessageType('PCmdEchoResponse', (_message.Message,), { - 'DESCRIPTOR' : _PCMDECHORESPONSE, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdEchoResponse) - }) -_sym_db.RegisterMessage(PCmdEchoResponse) - -PCmdActiveThreadDump = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadDump', (_message.Message,), { - 'DESCRIPTOR' : _PCMDACTIVETHREADDUMP, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadDump) - }) -_sym_db.RegisterMessage(PCmdActiveThreadDump) - -PCmdActiveThreadDumpRes = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadDumpRes', (_message.Message,), { - 'DESCRIPTOR' : _PCMDACTIVETHREADDUMPRES, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadDumpRes) - }) -_sym_db.RegisterMessage(PCmdActiveThreadDumpRes) - -PCmdActiveThreadLightDump = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadLightDump', (_message.Message,), { - 'DESCRIPTOR' : _PCMDACTIVETHREADLIGHTDUMP, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadLightDump) - }) -_sym_db.RegisterMessage(PCmdActiveThreadLightDump) - -PCmdActiveThreadLightDumpRes = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadLightDumpRes', (_message.Message,), { - 'DESCRIPTOR' : _PCMDACTIVETHREADLIGHTDUMPRES, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadLightDumpRes) - }) -_sym_db.RegisterMessage(PCmdActiveThreadLightDumpRes) - -PCmdActiveThreadCount = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadCount', (_message.Message,), { - 'DESCRIPTOR' : _PCMDACTIVETHREADCOUNT, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadCount) - }) -_sym_db.RegisterMessage(PCmdActiveThreadCount) - -PCmdActiveThreadCountRes = _reflection.GeneratedProtocolMessageType('PCmdActiveThreadCountRes', (_message.Message,), { - 'DESCRIPTOR' : _PCMDACTIVETHREADCOUNTRES, - '__module__' : 'Cmd_pb2' - # @@protoc_insertion_point(class_scope:v1.PCmdActiveThreadCountRes) - }) -_sym_db.RegisterMessage(PCmdActiveThreadCountRes) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Cmd_pb2_grpc.py b/collector-agent/Proto/grpc/Cmd_pb2_grpc.py deleted file mode 100644 index a89435267..000000000 --- a/collector-agent/Proto/grpc/Cmd_pb2_grpc.py +++ /dev/null @@ -1,3 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -import grpc - diff --git a/collector-agent/Proto/grpc/Service_pb2.py b/collector-agent/Proto/grpc/Service_pb2.py deleted file mode 100644 index 58149d442..000000000 --- a/collector-agent/Proto/grpc/Service_pb2.py +++ /dev/null @@ -1,221 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: Service.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -import Span_pb2 as Span__pb2 -import Stat_pb2 as Stat__pb2 -import ThreadDump_pb2 as ThreadDump__pb2 -import Cmd_pb2 as Cmd__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='Service.proto', - package='v1', - syntax='proto3', - serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\014ServiceProtoP\001'), - serialized_pb=_b('\n\rService.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\nSpan.proto\x1a\nStat.proto\x1a\x10ThreadDump.proto\x1a\tCmd.proto2@\n\x04Span\x12\x38\n\x08SendSpan\x12\x10.v1.PSpanMessage\x1a\x16.google.protobuf.Empty\"\x00(\x01\x32\x65\n\x05\x41gent\x12\x31\n\x10RequestAgentInfo\x12\x0e.v1.PAgentInfo\x1a\x0b.v1.PResult\"\x00\x12)\n\x0bPingSession\x12\t.v1.PPing\x1a\t.v1.PPing\"\x00(\x01\x30\x01\x32\xb5\x01\n\x08Metadata\x12\x35\n\x12RequestSqlMetaData\x12\x10.v1.PSqlMetaData\x1a\x0b.v1.PResult\"\x00\x12\x35\n\x12RequestApiMetaData\x12\x10.v1.PApiMetaData\x1a\x0b.v1.PResult\"\x00\x12;\n\x15RequestStringMetaData\x12\x13.v1.PStringMetaData\x1a\x0b.v1.PResult\"\x00\x32\x45\n\x04Stat\x12=\n\rSendAgentStat\x12\x10.v1.PStatMessage\x1a\x16.google.protobuf.Empty\"\x00(\x01\x32\x9a\x03\n\x16ProfilerCommandService\x12\x37\n\rHandleCommand\x12\x0f.v1.PCmdMessage\x1a\x0f.v1.PCmdRequest\"\x00(\x01\x30\x01\x12=\n\x0b\x43ommandEcho\x12\x14.v1.PCmdEchoResponse\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x1e\x43ommandStreamActiveThreadCount\x12\x1c.v1.PCmdActiveThreadCountRes\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12P\n\x17\x43ommandActiveThreadDump\x12\x1b.v1.PCmdActiveThreadDumpRes\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x1c\x43ommandActiveThreadLightDump\x12 .v1.PCmdActiveThreadLightDumpRes\x1a\x16.google.protobuf.Empty\"\x00\x42\x33\n!com.navercorp.pinpoint.grpc.traceB\x0cServiceProtoP\x01\x62\x06proto3') - , - dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,Span__pb2.DESCRIPTOR,Stat__pb2.DESCRIPTOR,ThreadDump__pb2.DESCRIPTOR,Cmd__pb2.DESCRIPTOR,]) - - - -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - - -DESCRIPTOR._options = None - -_SPAN = _descriptor.ServiceDescriptor( - name='Span', - full_name='v1.Span', - file=DESCRIPTOR, - index=0, - serialized_options=None, - serialized_start=103, - serialized_end=167, - methods=[ - _descriptor.MethodDescriptor( - name='SendSpan', - full_name='v1.Span.SendSpan', - index=0, - containing_service=None, - input_type=Span__pb2._PSPANMESSAGE, - output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, - serialized_options=None, - ), -]) -_sym_db.RegisterServiceDescriptor(_SPAN) - -DESCRIPTOR.services_by_name['Span'] = _SPAN - - -_AGENT = _descriptor.ServiceDescriptor( - name='Agent', - full_name='v1.Agent', - file=DESCRIPTOR, - index=1, - serialized_options=None, - serialized_start=169, - serialized_end=270, - methods=[ - _descriptor.MethodDescriptor( - name='RequestAgentInfo', - full_name='v1.Agent.RequestAgentInfo', - index=0, - containing_service=None, - input_type=Stat__pb2._PAGENTINFO, - output_type=Span__pb2._PRESULT, - serialized_options=None, - ), - _descriptor.MethodDescriptor( - name='PingSession', - full_name='v1.Agent.PingSession', - index=1, - containing_service=None, - input_type=Stat__pb2._PPING, - output_type=Stat__pb2._PPING, - serialized_options=None, - ), -]) -_sym_db.RegisterServiceDescriptor(_AGENT) - -DESCRIPTOR.services_by_name['Agent'] = _AGENT - - -_METADATA = _descriptor.ServiceDescriptor( - name='Metadata', - full_name='v1.Metadata', - file=DESCRIPTOR, - index=2, - serialized_options=None, - serialized_start=273, - serialized_end=454, - methods=[ - _descriptor.MethodDescriptor( - name='RequestSqlMetaData', - full_name='v1.Metadata.RequestSqlMetaData', - index=0, - containing_service=None, - input_type=Span__pb2._PSQLMETADATA, - output_type=Span__pb2._PRESULT, - serialized_options=None, - ), - _descriptor.MethodDescriptor( - name='RequestApiMetaData', - full_name='v1.Metadata.RequestApiMetaData', - index=1, - containing_service=None, - input_type=Span__pb2._PAPIMETADATA, - output_type=Span__pb2._PRESULT, - serialized_options=None, - ), - _descriptor.MethodDescriptor( - name='RequestStringMetaData', - full_name='v1.Metadata.RequestStringMetaData', - index=2, - containing_service=None, - input_type=Span__pb2._PSTRINGMETADATA, - output_type=Span__pb2._PRESULT, - serialized_options=None, - ), -]) -_sym_db.RegisterServiceDescriptor(_METADATA) - -DESCRIPTOR.services_by_name['Metadata'] = _METADATA - - -_STAT = _descriptor.ServiceDescriptor( - name='Stat', - full_name='v1.Stat', - file=DESCRIPTOR, - index=3, - serialized_options=None, - serialized_start=456, - serialized_end=525, - methods=[ - _descriptor.MethodDescriptor( - name='SendAgentStat', - full_name='v1.Stat.SendAgentStat', - index=0, - containing_service=None, - input_type=Stat__pb2._PSTATMESSAGE, - output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, - serialized_options=None, - ), -]) -_sym_db.RegisterServiceDescriptor(_STAT) - -DESCRIPTOR.services_by_name['Stat'] = _STAT - - -_PROFILERCOMMANDSERVICE = _descriptor.ServiceDescriptor( - name='ProfilerCommandService', - full_name='v1.ProfilerCommandService', - file=DESCRIPTOR, - index=4, - serialized_options=None, - serialized_start=528, - serialized_end=938, - methods=[ - _descriptor.MethodDescriptor( - name='HandleCommand', - full_name='v1.ProfilerCommandService.HandleCommand', - index=0, - containing_service=None, - input_type=Cmd__pb2._PCMDMESSAGE, - output_type=Cmd__pb2._PCMDREQUEST, - serialized_options=None, - ), - _descriptor.MethodDescriptor( - name='CommandEcho', - full_name='v1.ProfilerCommandService.CommandEcho', - index=1, - containing_service=None, - input_type=Cmd__pb2._PCMDECHORESPONSE, - output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, - serialized_options=None, - ), - _descriptor.MethodDescriptor( - name='CommandStreamActiveThreadCount', - full_name='v1.ProfilerCommandService.CommandStreamActiveThreadCount', - index=2, - containing_service=None, - input_type=Cmd__pb2._PCMDACTIVETHREADCOUNTRES, - output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, - serialized_options=None, - ), - _descriptor.MethodDescriptor( - name='CommandActiveThreadDump', - full_name='v1.ProfilerCommandService.CommandActiveThreadDump', - index=3, - containing_service=None, - input_type=Cmd__pb2._PCMDACTIVETHREADDUMPRES, - output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, - serialized_options=None, - ), - _descriptor.MethodDescriptor( - name='CommandActiveThreadLightDump', - full_name='v1.ProfilerCommandService.CommandActiveThreadLightDump', - index=4, - containing_service=None, - input_type=Cmd__pb2._PCMDACTIVETHREADLIGHTDUMPRES, - output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, - serialized_options=None, - ), -]) -_sym_db.RegisterServiceDescriptor(_PROFILERCOMMANDSERVICE) - -DESCRIPTOR.services_by_name['ProfilerCommandService'] = _PROFILERCOMMANDSERVICE - -# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Service_pb2_grpc.py b/collector-agent/Proto/grpc/Service_pb2_grpc.py deleted file mode 100644 index 225e51480..000000000 --- a/collector-agent/Proto/grpc/Service_pb2_grpc.py +++ /dev/null @@ -1,336 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -import grpc - -import Cmd_pb2 as Cmd__pb2 -import Span_pb2 as Span__pb2 -import Stat_pb2 as Stat__pb2 -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 - - -class SpanStub(object): - # missing associated documentation comment in .proto file - pass - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.SendSpan = channel.stream_unary( - '/v1.Span/SendSpan', - request_serializer=Span__pb2.PSpanMessage.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) - - -class SpanServicer(object): - # missing associated documentation comment in .proto file - pass - - def SendSpan(self, request_iterator, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_SpanServicer_to_server(servicer, server): - rpc_method_handlers = { - 'SendSpan': grpc.stream_unary_rpc_method_handler( - servicer.SendSpan, - request_deserializer=Span__pb2.PSpanMessage.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'v1.Span', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - -class AgentStub(object): - # missing associated documentation comment in .proto file - pass - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.RequestAgentInfo = channel.unary_unary( - '/v1.Agent/RequestAgentInfo', - request_serializer=Stat__pb2.PAgentInfo.SerializeToString, - response_deserializer=Span__pb2.PResult.FromString, - ) - self.PingSession = channel.stream_stream( - '/v1.Agent/PingSession', - request_serializer=Stat__pb2.PPing.SerializeToString, - response_deserializer=Stat__pb2.PPing.FromString, - ) - - -class AgentServicer(object): - # missing associated documentation comment in .proto file - pass - - def RequestAgentInfo(self, request, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def PingSession(self, request_iterator, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_AgentServicer_to_server(servicer, server): - rpc_method_handlers = { - 'RequestAgentInfo': grpc.unary_unary_rpc_method_handler( - servicer.RequestAgentInfo, - request_deserializer=Stat__pb2.PAgentInfo.FromString, - response_serializer=Span__pb2.PResult.SerializeToString, - ), - 'PingSession': grpc.stream_stream_rpc_method_handler( - servicer.PingSession, - request_deserializer=Stat__pb2.PPing.FromString, - response_serializer=Stat__pb2.PPing.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'v1.Agent', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - -class MetadataStub(object): - # missing associated documentation comment in .proto file - pass - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.RequestSqlMetaData = channel.unary_unary( - '/v1.Metadata/RequestSqlMetaData', - request_serializer=Span__pb2.PSqlMetaData.SerializeToString, - response_deserializer=Span__pb2.PResult.FromString, - ) - self.RequestApiMetaData = channel.unary_unary( - '/v1.Metadata/RequestApiMetaData', - request_serializer=Span__pb2.PApiMetaData.SerializeToString, - response_deserializer=Span__pb2.PResult.FromString, - ) - self.RequestStringMetaData = channel.unary_unary( - '/v1.Metadata/RequestStringMetaData', - request_serializer=Span__pb2.PStringMetaData.SerializeToString, - response_deserializer=Span__pb2.PResult.FromString, - ) - - -class MetadataServicer(object): - # missing associated documentation comment in .proto file - pass - - def RequestSqlMetaData(self, request, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def RequestApiMetaData(self, request, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def RequestStringMetaData(self, request, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_MetadataServicer_to_server(servicer, server): - rpc_method_handlers = { - 'RequestSqlMetaData': grpc.unary_unary_rpc_method_handler( - servicer.RequestSqlMetaData, - request_deserializer=Span__pb2.PSqlMetaData.FromString, - response_serializer=Span__pb2.PResult.SerializeToString, - ), - 'RequestApiMetaData': grpc.unary_unary_rpc_method_handler( - servicer.RequestApiMetaData, - request_deserializer=Span__pb2.PApiMetaData.FromString, - response_serializer=Span__pb2.PResult.SerializeToString, - ), - 'RequestStringMetaData': grpc.unary_unary_rpc_method_handler( - servicer.RequestStringMetaData, - request_deserializer=Span__pb2.PStringMetaData.FromString, - response_serializer=Span__pb2.PResult.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'v1.Metadata', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - -class StatStub(object): - # missing associated documentation comment in .proto file - pass - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.SendAgentStat = channel.stream_unary( - '/v1.Stat/SendAgentStat', - request_serializer=Stat__pb2.PStatMessage.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) - - -class StatServicer(object): - # missing associated documentation comment in .proto file - pass - - def SendAgentStat(self, request_iterator, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_StatServicer_to_server(servicer, server): - rpc_method_handlers = { - 'SendAgentStat': grpc.stream_unary_rpc_method_handler( - servicer.SendAgentStat, - request_deserializer=Stat__pb2.PStatMessage.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'v1.Stat', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - -class ProfilerCommandServiceStub(object): - # missing associated documentation comment in .proto file - pass - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.HandleCommand = channel.stream_stream( - '/v1.ProfilerCommandService/HandleCommand', - request_serializer=Cmd__pb2.PCmdMessage.SerializeToString, - response_deserializer=Cmd__pb2.PCmdRequest.FromString, - ) - self.CommandEcho = channel.unary_unary( - '/v1.ProfilerCommandService/CommandEcho', - request_serializer=Cmd__pb2.PCmdEchoResponse.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) - self.CommandStreamActiveThreadCount = channel.stream_unary( - '/v1.ProfilerCommandService/CommandStreamActiveThreadCount', - request_serializer=Cmd__pb2.PCmdActiveThreadCountRes.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) - self.CommandActiveThreadDump = channel.unary_unary( - '/v1.ProfilerCommandService/CommandActiveThreadDump', - request_serializer=Cmd__pb2.PCmdActiveThreadDumpRes.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) - self.CommandActiveThreadLightDump = channel.unary_unary( - '/v1.ProfilerCommandService/CommandActiveThreadLightDump', - request_serializer=Cmd__pb2.PCmdActiveThreadLightDumpRes.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) - - -class ProfilerCommandServiceServicer(object): - # missing associated documentation comment in .proto file - pass - - def HandleCommand(self, request_iterator, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def CommandEcho(self, request, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def CommandStreamActiveThreadCount(self, request_iterator, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def CommandActiveThreadDump(self, request, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def CommandActiveThreadLightDump(self, request, context): - # missing associated documentation comment in .proto file - pass - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_ProfilerCommandServiceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'HandleCommand': grpc.stream_stream_rpc_method_handler( - servicer.HandleCommand, - request_deserializer=Cmd__pb2.PCmdMessage.FromString, - response_serializer=Cmd__pb2.PCmdRequest.SerializeToString, - ), - 'CommandEcho': grpc.unary_unary_rpc_method_handler( - servicer.CommandEcho, - request_deserializer=Cmd__pb2.PCmdEchoResponse.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - 'CommandStreamActiveThreadCount': grpc.stream_unary_rpc_method_handler( - servicer.CommandStreamActiveThreadCount, - request_deserializer=Cmd__pb2.PCmdActiveThreadCountRes.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - 'CommandActiveThreadDump': grpc.unary_unary_rpc_method_handler( - servicer.CommandActiveThreadDump, - request_deserializer=Cmd__pb2.PCmdActiveThreadDumpRes.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - 'CommandActiveThreadLightDump': grpc.unary_unary_rpc_method_handler( - servicer.CommandActiveThreadLightDump, - request_deserializer=Cmd__pb2.PCmdActiveThreadLightDumpRes.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'v1.ProfilerCommandService', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) diff --git a/collector-agent/Proto/grpc/Span_pb2.py b/collector-agent/Proto/grpc/Span_pb2.py deleted file mode 100644 index 98799b1d4..000000000 --- a/collector-agent/Proto/grpc/Span_pb2.py +++ /dev/null @@ -1,952 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: Span.proto - -import sys -from typing import Union - -from google.protobuf.internal.python_message import GeneratedProtocolMessageType -from google.protobuf.pyext.cpp_message import GeneratedProtocolMessageType - -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -import Annotation_pb2 as Annotation__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='Span.proto', - package='v1', - syntax='proto3', - serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\tSpanProtoP\001'), - serialized_pb=_b('\n\nSpan.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x10\x41nnotation.proto\"W\n\x0cPSpanMessage\x12\x19\n\x04span\x18\x01 \x01(\x0b\x32\t.v1.PSpanH\x00\x12#\n\tspanChunk\x18\x02 \x01(\x0b\x32\x0e.v1.PSpanChunkH\x00\x42\x07\n\x05\x66ield\"\xa1\x03\n\x05PSpan\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12)\n\rtransactionId\x18\x02 \x01(\x0b\x32\x12.v1.PTransactionId\x12\x0e\n\x06spanId\x18\x03 \x01(\x10\x12\x14\n\x0cparentSpanId\x18\x04 \x01(\x10\x12\x11\n\tstartTime\x18\x05 \x01(\x03\x12\x0f\n\x07\x65lapsed\x18\x06 \x01(\x05\x12\r\n\x05\x61piId\x18\x07 \x01(\x05\x12\x13\n\x0bserviceType\x18\x08 \x01(\x05\x12%\n\x0b\x61\x63\x63\x65ptEvent\x18\t \x01(\x0b\x32\x10.v1.PAcceptEvent\x12 \n\nannotation\x18\n \x03(\x0b\x32\x0c.PAnnotation\x12\x0c\n\x04\x66lag\x18\x0b \x01(\x05\x12\x0b\n\x03\x65rr\x18\x0c \x01(\x11\x12!\n\tspanEvent\x18\r \x03(\x0b\x32\x0e.v1.PSpanEvent\x12\'\n\rexceptionInfo\x18\x0e \x01(\x0b\x32\x10.PIntStringValue\x12\x1e\n\x16\x61pplicationServiceType\x18\x0f \x01(\x05\x12\x1e\n\x16loggingTransactionInfo\x18\x10 \x01(\x05\"K\n\x0ePTransactionId\x12\x0f\n\x07\x61gentId\x18\x01 \x01(\t\x12\x16\n\x0e\x61gentStartTime\x18\x02 \x01(\x03\x12\x10\n\x08sequence\x18\x03 \x01(\x03\"f\n\x0cPAcceptEvent\x12\x0b\n\x03rpc\x18\x01 \x01(\t\x12\x10\n\x08\x65ndPoint\x18\x02 \x01(\t\x12\x12\n\nremoteAddr\x18\x03 \x01(\t\x12#\n\nparentInfo\x18\x04 \x01(\x0b\x32\x0f.v1.PParentInfo\"a\n\x0bPParentInfo\x12\x1d\n\x15parentApplicationName\x18\x01 \x01(\t\x12\x1d\n\x15parentApplicationType\x18\x02 \x01(\x05\x12\x14\n\x0c\x61\x63\x63\x65ptorHost\x18\x03 \x01(\t\"2\n\rPLocalAsyncId\x12\x0f\n\x07\x61syncId\x18\x01 \x01(\x05\x12\x10\n\x08sequence\x18\x02 \x01(\x05\"\xfd\x01\n\nPSpanEvent\x12\x10\n\x08sequence\x18\x01 \x01(\x05\x12\r\n\x05\x64\x65pth\x18\x02 \x01(\x05\x12\x14\n\x0cstartElapsed\x18\x03 \x01(\x05\x12\x12\n\nendElapsed\x18\x04 \x01(\x05\x12\x13\n\x0bserviceType\x18\x05 \x01(\x11\x12 \n\nannotation\x18\x06 \x03(\x0b\x32\x0c.PAnnotation\x12\r\n\x05\x61piId\x18\n \x01(\x11\x12\'\n\rexceptionInfo\x18\x0b \x01(\x0b\x32\x10.PIntStringValue\x12!\n\tnextEvent\x18\x0c \x01(\x0b\x32\x0e.v1.PNextEvent\x12\x12\n\nasyncEvent\x18\r \x01(\x05\"@\n\nPNextEvent\x12)\n\x0cmessageEvent\x18\x01 \x01(\x0b\x32\x11.v1.PMessageEventH\x00\x42\x07\n\x05\x66ield\"L\n\rPMessageEvent\x12\x12\n\nnextSpanId\x18\x01 \x01(\x10\x12\x10\n\x08\x65ndPoint\x18\x02 \x01(\t\x12\x15\n\rdestinationId\x18\x03 \x01(\t\"\xe7\x01\n\nPSpanChunk\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12)\n\rtransactionId\x18\x02 \x01(\x0b\x32\x12.v1.PTransactionId\x12\x0e\n\x06spanId\x18\x03 \x01(\x10\x12\x10\n\x08\x65ndPoint\x18\x04 \x01(\t\x12!\n\tspanEvent\x18\x05 \x03(\x0b\x32\x0e.v1.PSpanEvent\x12\x1e\n\x16\x61pplicationServiceType\x18\x06 \x01(\x05\x12\x0f\n\x07keyTime\x18\x07 \x01(\x03\x12\'\n\x0clocalAsyncId\x18\x08 \x01(\x0b\x32\x11.v1.PLocalAsyncId\"+\n\x07PResult\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\"*\n\x0cPSqlMetaData\x12\r\n\x05sqlId\x18\x01 \x01(\x05\x12\x0b\n\x03sql\x18\x02 \x01(\t\"J\n\x0cPApiMetaData\x12\r\n\x05\x61piId\x18\x01 \x01(\x05\x12\x0f\n\x07\x61piInfo\x18\x02 \x01(\t\x12\x0c\n\x04line\x18\x03 \x01(\x05\x12\x0c\n\x04type\x18\x04 \x01(\x05\"8\n\x0fPStringMetaData\x12\x10\n\x08stringId\x18\x01 \x01(\x05\x12\x13\n\x0bstringValue\x18\x02 \x01(\tB0\n!com.navercorp.pinpoint.grpc.traceB\tSpanProtoP\x01\x62\x06proto3') - , - dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,Annotation__pb2.DESCRIPTOR,]) - - - - -_PSPANMESSAGE = _descriptor.Descriptor( - name='PSpanMessage', - full_name='v1.PSpanMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='span', full_name='v1.PSpanMessage.span', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='spanChunk', full_name='v1.PSpanMessage.spanChunk', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='field', full_name='v1.PSpanMessage.field', - index=0, containing_type=None, fields=[]), - ], - serialized_start=65, - serialized_end=152, -) - - -_PSPAN = _descriptor.Descriptor( - name='PSpan', - full_name='v1.PSpan', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='version', full_name='v1.PSpan.version', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='transactionId', full_name='v1.PSpan.transactionId', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='spanId', full_name='v1.PSpan.spanId', index=2, - number=3, type=16, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='parentSpanId', full_name='v1.PSpan.parentSpanId', index=3, - number=4, type=16, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='startTime', full_name='v1.PSpan.startTime', index=4, - number=5, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='elapsed', full_name='v1.PSpan.elapsed', index=5, - number=6, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='apiId', full_name='v1.PSpan.apiId', index=6, - number=7, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='serviceType', full_name='v1.PSpan.serviceType', index=7, - number=8, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='acceptEvent', full_name='v1.PSpan.acceptEvent', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='annotation', full_name='v1.PSpan.annotation', index=9, - number=10, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='flag', full_name='v1.PSpan.flag', index=10, - number=11, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='err', full_name='v1.PSpan.err', index=11, - number=12, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='spanEvent', full_name='v1.PSpan.spanEvent', index=12, - number=13, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='exceptionInfo', full_name='v1.PSpan.exceptionInfo', index=13, - number=14, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='applicationServiceType', full_name='v1.PSpan.applicationServiceType', index=14, - number=15, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='loggingTransactionInfo', full_name='v1.PSpan.loggingTransactionInfo', index=15, - number=16, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=155, - serialized_end=572, -) - - -_PTRANSACTIONID = _descriptor.Descriptor( - name='PTransactionId', - full_name='v1.PTransactionId', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='agentId', full_name='v1.PTransactionId.agentId', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='agentStartTime', full_name='v1.PTransactionId.agentStartTime', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sequence', full_name='v1.PTransactionId.sequence', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=574, - serialized_end=649, -) - - -_PACCEPTEVENT = _descriptor.Descriptor( - name='PAcceptEvent', - full_name='v1.PAcceptEvent', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='rpc', full_name='v1.PAcceptEvent.rpc', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='endPoint', full_name='v1.PAcceptEvent.endPoint', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='remoteAddr', full_name='v1.PAcceptEvent.remoteAddr', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='parentInfo', full_name='v1.PAcceptEvent.parentInfo', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=651, - serialized_end=753, -) - - -_PPARENTINFO = _descriptor.Descriptor( - name='PParentInfo', - full_name='v1.PParentInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='parentApplicationName', full_name='v1.PParentInfo.parentApplicationName', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='parentApplicationType', full_name='v1.PParentInfo.parentApplicationType', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='acceptorHost', full_name='v1.PParentInfo.acceptorHost', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=755, - serialized_end=852, -) - - -_PLOCALASYNCID = _descriptor.Descriptor( - name='PLocalAsyncId', - full_name='v1.PLocalAsyncId', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='asyncId', full_name='v1.PLocalAsyncId.asyncId', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sequence', full_name='v1.PLocalAsyncId.sequence', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=854, - serialized_end=904, -) - - -_PSPANEVENT = _descriptor.Descriptor( - name='PSpanEvent', - full_name='v1.PSpanEvent', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='sequence', full_name='v1.PSpanEvent.sequence', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='depth', full_name='v1.PSpanEvent.depth', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='startElapsed', full_name='v1.PSpanEvent.startElapsed', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='endElapsed', full_name='v1.PSpanEvent.endElapsed', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='serviceType', full_name='v1.PSpanEvent.serviceType', index=4, - number=5, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='annotation', full_name='v1.PSpanEvent.annotation', index=5, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='apiId', full_name='v1.PSpanEvent.apiId', index=6, - number=10, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='exceptionInfo', full_name='v1.PSpanEvent.exceptionInfo', index=7, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='nextEvent', full_name='v1.PSpanEvent.nextEvent', index=8, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='asyncEvent', full_name='v1.PSpanEvent.asyncEvent', index=9, - number=13, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=907, - serialized_end=1160, -) - - -_PNEXTEVENT = _descriptor.Descriptor( - name='PNextEvent', - full_name='v1.PNextEvent', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='messageEvent', full_name='v1.PNextEvent.messageEvent', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='field', full_name='v1.PNextEvent.field', - index=0, containing_type=None, fields=[]), - ], - serialized_start=1162, - serialized_end=1226, -) - - -_PMESSAGEEVENT = _descriptor.Descriptor( - name='PMessageEvent', - full_name='v1.PMessageEvent', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='nextSpanId', full_name='v1.PMessageEvent.nextSpanId', index=0, - number=1, type=16, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='endPoint', full_name='v1.PMessageEvent.endPoint', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='destinationId', full_name='v1.PMessageEvent.destinationId', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1228, - serialized_end=1304, -) - - -_PSPANCHUNK = _descriptor.Descriptor( - name='PSpanChunk', - full_name='v1.PSpanChunk', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='version', full_name='v1.PSpanChunk.version', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='transactionId', full_name='v1.PSpanChunk.transactionId', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='spanId', full_name='v1.PSpanChunk.spanId', index=2, - number=3, type=16, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='endPoint', full_name='v1.PSpanChunk.endPoint', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='spanEvent', full_name='v1.PSpanChunk.spanEvent', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='applicationServiceType', full_name='v1.PSpanChunk.applicationServiceType', index=5, - number=6, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='keyTime', full_name='v1.PSpanChunk.keyTime', index=6, - number=7, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='localAsyncId', full_name='v1.PSpanChunk.localAsyncId', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1307, - serialized_end=1538, -) - - -_PRESULT = _descriptor.Descriptor( - name='PResult', - full_name='v1.PResult', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='success', full_name='v1.PResult.success', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='message', full_name='v1.PResult.message', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1540, - serialized_end=1583, -) - - -_PSQLMETADATA = _descriptor.Descriptor( - name='PSqlMetaData', - full_name='v1.PSqlMetaData', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='sqlId', full_name='v1.PSqlMetaData.sqlId', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sql', full_name='v1.PSqlMetaData.sql', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1585, - serialized_end=1627, -) - - -_PAPIMETADATA = _descriptor.Descriptor( - name='PApiMetaData', - full_name='v1.PApiMetaData', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='apiId', full_name='v1.PApiMetaData.apiId', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='apiInfo', full_name='v1.PApiMetaData.apiInfo', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='line', full_name='v1.PApiMetaData.line', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='type', full_name='v1.PApiMetaData.type', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1629, - serialized_end=1703, -) - - -_PSTRINGMETADATA = _descriptor.Descriptor( - name='PStringMetaData', - full_name='v1.PStringMetaData', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='stringId', full_name='v1.PStringMetaData.stringId', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stringValue', full_name='v1.PStringMetaData.stringValue', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1705, - serialized_end=1761, -) - -_PSPANMESSAGE.fields_by_name['span'].message_type = _PSPAN -_PSPANMESSAGE.fields_by_name['spanChunk'].message_type = _PSPANCHUNK -_PSPANMESSAGE.oneofs_by_name['field'].fields.append( - _PSPANMESSAGE.fields_by_name['span']) -_PSPANMESSAGE.fields_by_name['span'].containing_oneof = _PSPANMESSAGE.oneofs_by_name['field'] -_PSPANMESSAGE.oneofs_by_name['field'].fields.append( - _PSPANMESSAGE.fields_by_name['spanChunk']) -_PSPANMESSAGE.fields_by_name['spanChunk'].containing_oneof = _PSPANMESSAGE.oneofs_by_name['field'] -_PSPAN.fields_by_name['transactionId'].message_type = _PTRANSACTIONID -_PSPAN.fields_by_name['acceptEvent'].message_type = _PACCEPTEVENT -_PSPAN.fields_by_name['annotation'].message_type = Annotation__pb2._PANNOTATION -_PSPAN.fields_by_name['spanEvent'].message_type = _PSPANEVENT -_PSPAN.fields_by_name['exceptionInfo'].message_type = Annotation__pb2._PINTSTRINGVALUE -_PACCEPTEVENT.fields_by_name['parentInfo'].message_type = _PPARENTINFO -_PSPANEVENT.fields_by_name['annotation'].message_type = Annotation__pb2._PANNOTATION -_PSPANEVENT.fields_by_name['exceptionInfo'].message_type = Annotation__pb2._PINTSTRINGVALUE -_PSPANEVENT.fields_by_name['nextEvent'].message_type = _PNEXTEVENT -_PNEXTEVENT.fields_by_name['messageEvent'].message_type = _PMESSAGEEVENT -_PNEXTEVENT.oneofs_by_name['field'].fields.append( - _PNEXTEVENT.fields_by_name['messageEvent']) -_PNEXTEVENT.fields_by_name['messageEvent'].containing_oneof = _PNEXTEVENT.oneofs_by_name['field'] -_PSPANCHUNK.fields_by_name['transactionId'].message_type = _PTRANSACTIONID -_PSPANCHUNK.fields_by_name['spanEvent'].message_type = _PSPANEVENT -_PSPANCHUNK.fields_by_name['localAsyncId'].message_type = _PLOCALASYNCID -DESCRIPTOR.message_types_by_name['PSpanMessage'] = _PSPANMESSAGE -DESCRIPTOR.message_types_by_name['PSpan'] = _PSPAN -DESCRIPTOR.message_types_by_name['PTransactionId'] = _PTRANSACTIONID -DESCRIPTOR.message_types_by_name['PAcceptEvent'] = _PACCEPTEVENT -DESCRIPTOR.message_types_by_name['PParentInfo'] = _PPARENTINFO -DESCRIPTOR.message_types_by_name['PLocalAsyncId'] = _PLOCALASYNCID -DESCRIPTOR.message_types_by_name['PSpanEvent'] = _PSPANEVENT -DESCRIPTOR.message_types_by_name['PNextEvent'] = _PNEXTEVENT -DESCRIPTOR.message_types_by_name['PMessageEvent'] = _PMESSAGEEVENT -DESCRIPTOR.message_types_by_name['PSpanChunk'] = _PSPANCHUNK -DESCRIPTOR.message_types_by_name['PResult'] = _PRESULT -DESCRIPTOR.message_types_by_name['PSqlMetaData'] = _PSQLMETADATA -DESCRIPTOR.message_types_by_name['PApiMetaData'] = _PAPIMETADATA -DESCRIPTOR.message_types_by_name['PStringMetaData'] = _PSTRINGMETADATA -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PSpanMessage = _reflection.GeneratedProtocolMessageType('PSpanMessage', (_message.Message,), { - 'DESCRIPTOR' : _PSPANMESSAGE, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PSpanMessage) - }) -_sym_db.RegisterMessage(PSpanMessage) - -PSpan = _reflection.GeneratedProtocolMessageType('PSpan', (_message.Message,), { - 'DESCRIPTOR' : _PSPAN, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PSpan) - }) # type: Union[GeneratedProtocolMessageType, GeneratedProtocolMessageType] -_sym_db.RegisterMessage(PSpan) - -PTransactionId = _reflection.GeneratedProtocolMessageType('PTransactionId', (_message.Message,), { - 'DESCRIPTOR' : _PTRANSACTIONID, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PTransactionId) - }) -_sym_db.RegisterMessage(PTransactionId) - -PAcceptEvent = _reflection.GeneratedProtocolMessageType('PAcceptEvent', (_message.Message,), { - 'DESCRIPTOR' : _PACCEPTEVENT, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PAcceptEvent) - }) -_sym_db.RegisterMessage(PAcceptEvent) - -PParentInfo = _reflection.GeneratedProtocolMessageType('PParentInfo', (_message.Message,), { - 'DESCRIPTOR' : _PPARENTINFO, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PParentInfo) - }) -_sym_db.RegisterMessage(PParentInfo) - -PLocalAsyncId = _reflection.GeneratedProtocolMessageType('PLocalAsyncId', (_message.Message,), { - 'DESCRIPTOR' : _PLOCALASYNCID, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PLocalAsyncId) - }) -_sym_db.RegisterMessage(PLocalAsyncId) - -PSpanEvent = _reflection.GeneratedProtocolMessageType('PSpanEvent', (_message.Message,), { - 'DESCRIPTOR' : _PSPANEVENT, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PSpanEvent) - }) -_sym_db.RegisterMessage(PSpanEvent) - -PNextEvent = _reflection.GeneratedProtocolMessageType('PNextEvent', (_message.Message,), { - 'DESCRIPTOR' : _PNEXTEVENT, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PNextEvent) - }) -_sym_db.RegisterMessage(PNextEvent) - -PMessageEvent = _reflection.GeneratedProtocolMessageType('PMessageEvent', (_message.Message,), { - 'DESCRIPTOR' : _PMESSAGEEVENT, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PMessageEvent) - }) -_sym_db.RegisterMessage(PMessageEvent) - -PSpanChunk = _reflection.GeneratedProtocolMessageType('PSpanChunk', (_message.Message,), { - 'DESCRIPTOR' : _PSPANCHUNK, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PSpanChunk) - }) -_sym_db.RegisterMessage(PSpanChunk) - -PResult = _reflection.GeneratedProtocolMessageType('PResult', (_message.Message,), { - 'DESCRIPTOR' : _PRESULT, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PResult) - }) -_sym_db.RegisterMessage(PResult) - -PSqlMetaData = _reflection.GeneratedProtocolMessageType('PSqlMetaData', (_message.Message,), { - 'DESCRIPTOR' : _PSQLMETADATA, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PSqlMetaData) - }) -_sym_db.RegisterMessage(PSqlMetaData) - -PApiMetaData = _reflection.GeneratedProtocolMessageType('PApiMetaData', (_message.Message,), { - 'DESCRIPTOR' : _PAPIMETADATA, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PApiMetaData) - }) -_sym_db.RegisterMessage(PApiMetaData) - -PStringMetaData = _reflection.GeneratedProtocolMessageType('PStringMetaData', (_message.Message,), { - 'DESCRIPTOR' : _PSTRINGMETADATA, - '__module__' : 'Span_pb2' - # @@protoc_insertion_point(class_scope:v1.PStringMetaData) - }) -_sym_db.RegisterMessage(PStringMetaData) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Span_pb2_grpc.py b/collector-agent/Proto/grpc/Span_pb2_grpc.py deleted file mode 100644 index a89435267..000000000 --- a/collector-agent/Proto/grpc/Span_pb2_grpc.py +++ /dev/null @@ -1,3 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -import grpc - diff --git a/collector-agent/Proto/grpc/Stat_pb2.py b/collector-agent/Proto/grpc/Stat_pb2.py deleted file mode 100644 index 391ffa066..000000000 --- a/collector-agent/Proto/grpc/Stat_pb2.py +++ /dev/null @@ -1,1300 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: Stat.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf.internal import enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -import ThreadDump_pb2 as ThreadDump__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='Stat.proto', - package='v1', - syntax='proto3', - serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\tStatProtoP\001\242\002\003PIN'), - serialized_pb=_b('\n\nStat.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x10ThreadDump.proto\"\x07\n\x05PPing\"k\n\x0cPStatMessage\x12#\n\tagentStat\x18\x01 \x01(\x0b\x32\x0e.v1.PAgentStatH\x00\x12-\n\x0e\x61gentStatBatch\x18\x02 \x01(\x0b\x32\x13.v1.PAgentStatBatchH\x00\x42\x07\n\x05\x66ield\"\x8c\x02\n\nPAgentInfo\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\n\n\x02ip\x18\x02 \x01(\t\x12\r\n\x05ports\x18\x03 \x01(\t\x12\x13\n\x0bserviceType\x18\x04 \x01(\x05\x12\x0b\n\x03pid\x18\x05 \x01(\x05\x12\x14\n\x0c\x61gentVersion\x18\x06 \x01(\t\x12\x11\n\tvmVersion\x18\x07 \x01(\t\x12\x14\n\x0c\x65ndTimestamp\x18\x08 \x01(\x03\x12\x11\n\tendStatus\x18\t \x01(\x05\x12+\n\x0eserverMetaData\x18\n \x01(\x0b\x32\x13.v1.PServerMetaData\x12\x1d\n\x07jvmInfo\x18\x0b \x01(\x0b\x32\x0c.v1.PJvmInfo\x12\x11\n\tcontainer\x18\x0c \x01(\x08\"[\n\x0fPServerMetaData\x12\x12\n\nserverInfo\x18\x01 \x01(\t\x12\r\n\x05vmArg\x18\x02 \x03(\t\x12%\n\x0bserviceInfo\x18\x03 \x03(\x0b\x32\x10.v1.PServiceInfo\"7\n\x0cPServiceInfo\x12\x13\n\x0bserviceName\x18\x01 \x01(\t\x12\x12\n\nserviceLib\x18\x02 \x03(\t\"N\n\x08PJvmInfo\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x11\n\tvmVersion\x18\x02 \x01(\t\x12\x1e\n\x06gcType\x18\x03 \x01(\x0e\x32\x0e.v1.PJvmGcType\"\x9c\x03\n\nPAgentStat\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\x12\x17\n\x0f\x63ollectInterval\x18\x02 \x01(\x03\x12\x16\n\x02gc\x18\x03 \x01(\x0b\x32\n.v1.PJvmGc\x12\x1d\n\x07\x63puLoad\x18\x04 \x01(\x0b\x32\x0c.v1.PCpuLoad\x12%\n\x0btransaction\x18\x05 \x01(\x0b\x32\x10.v1.PTransaction\x12%\n\x0b\x61\x63tiveTrace\x18\x06 \x01(\x0b\x32\x10.v1.PActiveTrace\x12+\n\x0e\x64\x61taSourceList\x18\x07 \x01(\x0b\x32\x13.v1.PDataSourceList\x12\'\n\x0cresponseTime\x18\x08 \x01(\x0b\x32\x11.v1.PResponseTime\x12\x1f\n\x08\x64\x65\x61\x64lock\x18\t \x01(\x0b\x32\r.v1.PDeadlock\x12+\n\x0e\x66ileDescriptor\x18\n \x01(\x0b\x32\x13.v1.PFileDescriptor\x12\'\n\x0c\x64irectBuffer\x18\x0b \x01(\x0b\x32\x11.v1.PDirectBuffer\x12\x10\n\x08metadata\x18\x0c \x01(\t\"4\n\x0fPAgentStatBatch\x12!\n\tagentStat\x18\x01 \x03(\x0b\x32\x0e.v1.PAgentStat\"\x8e\x01\n\x0bPDataSource\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x17\n\x0fserviceTypeCode\x18\x02 \x01(\x05\x12\x14\n\x0c\x64\x61tabaseName\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x1c\n\x14\x61\x63tiveConnectionSize\x18\x05 \x01(\x05\x12\x19\n\x11maxConnectionSize\x18\x06 \x01(\x05\"6\n\x0fPDataSourceList\x12#\n\ndataSource\x18\x01 \x03(\x0b\x32\x0f.v1.PDataSource\"2\n\x0fPFileDescriptor\x12\x1f\n\x17openFileDescriptorCount\x18\x01 \x01(\x03\"\xee\x01\n\x06PJvmGc\x12\x1c\n\x04type\x18\x01 \x01(\x0e\x32\x0e.v1.PJvmGcType\x12\x19\n\x11jvmMemoryHeapUsed\x18\x02 \x01(\x03\x12\x18\n\x10jvmMemoryHeapMax\x18\x03 \x01(\x03\x12\x1c\n\x14jvmMemoryNonHeapUsed\x18\x04 \x01(\x03\x12\x1b\n\x13jvmMemoryNonHeapMax\x18\x05 \x01(\x03\x12\x15\n\rjvmGcOldCount\x18\x06 \x01(\x03\x12\x14\n\x0cjvmGcOldTime\x18\x07 \x01(\x03\x12)\n\rjvmGcDetailed\x18\x08 \x01(\x0b\x32\x12.v1.PJvmGcDetailed\"\xed\x01\n\x0ePJvmGcDetailed\x12\x15\n\rjvmGcNewCount\x18\x01 \x01(\x03\x12\x14\n\x0cjvmGcNewTime\x18\x02 \x01(\x03\x12\x1c\n\x14jvmPoolCodeCacheUsed\x18\x03 \x01(\x01\x12\x19\n\x11jvmPoolNewGenUsed\x18\x04 \x01(\x01\x12\x19\n\x11jvmPoolOldGenUsed\x18\x05 \x01(\x01\x12 \n\x18jvmPoolSurvivorSpaceUsed\x18\x06 \x01(\x01\x12\x1a\n\x12jvmPoolPermGenUsed\x18\x07 \x01(\x01\x12\x1c\n\x14jvmPoolMetaspaceUsed\x18\x08 \x01(\x01\"5\n\x08PCpuLoad\x12\x12\n\njvmCpuLoad\x18\x01 \x01(\x01\x12\x15\n\rsystemCpuLoad\x18\x02 \x01(\x01\"\xc3\x01\n\x0cPTransaction\x12\x17\n\x0fsampledNewCount\x18\x02 \x01(\x03\x12 \n\x18sampledContinuationCount\x18\x03 \x01(\x03\x12\x19\n\x11unsampledNewCount\x18\x04 \x01(\x03\x12\"\n\x1aunsampledContinuationCount\x18\x05 \x01(\x03\x12\x17\n\x0fskippedNewCount\x18\x06 \x01(\x03\x12 \n\x18skippedContinuationCount\x18\x07 \x01(\x03\"_\n\x15PActiveTraceHistogram\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x1b\n\x13histogramSchemaType\x18\x02 \x01(\x05\x12\x18\n\x10\x61\x63tiveTraceCount\x18\x03 \x03(\x05\"<\n\x0cPActiveTrace\x12,\n\thistogram\x18\x01 \x01(\x0b\x32\x19.v1.PActiveTraceHistogram\")\n\rPResponseTime\x12\x0b\n\x03\x61vg\x18\x01 \x01(\x03\x12\x0b\n\x03max\x18\x02 \x01(\x03\"?\n\tPDeadlock\x12\r\n\x05\x63ount\x18\x01 \x01(\x05\x12#\n\nthreadDump\x18\x02 \x03(\x0b\x32\x0f.v1.PThreadDump\"m\n\rPDirectBuffer\x12\x13\n\x0b\x64irectCount\x18\x01 \x01(\x03\x12\x18\n\x10\x64irectMemoryUsed\x18\x02 \x01(\x03\x12\x13\n\x0bmappedCount\x18\x03 \x01(\x03\x12\x18\n\x10mappedMemoryUsed\x18\x04 \x01(\x03*\x80\x01\n\nPJvmGcType\x12\x17\n\x13JVM_GC_TYPE_UNKNOWN\x10\x00\x12\x16\n\x12JVM_GC_TYPE_SERIAL\x10\x01\x12\x18\n\x14JVM_GC_TYPE_PARALLEL\x10\x02\x12\x13\n\x0fJVM_GC_TYPE_CMS\x10\x03\x12\x12\n\x0eJVM_GC_TYPE_G1\x10\x04\x42\x36\n!com.navercorp.pinpoint.grpc.traceB\tStatProtoP\x01\xa2\x02\x03PINb\x06proto3') - , - dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,ThreadDump__pb2.DESCRIPTOR,]) - -_PJVMGCTYPE = _descriptor.EnumDescriptor( - name='PJvmGcType', - full_name='v1.PJvmGcType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='JVM_GC_TYPE_UNKNOWN', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='JVM_GC_TYPE_SERIAL', index=1, number=1, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='JVM_GC_TYPE_PARALLEL', index=2, number=2, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='JVM_GC_TYPE_CMS', index=3, number=3, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='JVM_GC_TYPE_G1', index=4, number=4, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=2519, - serialized_end=2647, -) -_sym_db.RegisterEnumDescriptor(_PJVMGCTYPE) - -PJvmGcType = enum_type_wrapper.EnumTypeWrapper(_PJVMGCTYPE) -JVM_GC_TYPE_UNKNOWN = 0 -JVM_GC_TYPE_SERIAL = 1 -JVM_GC_TYPE_PARALLEL = 2 -JVM_GC_TYPE_CMS = 3 -JVM_GC_TYPE_G1 = 4 - - - -_PPING = _descriptor.Descriptor( - name='PPing', - full_name='v1.PPing', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=65, - serialized_end=72, -) - - -_PSTATMESSAGE = _descriptor.Descriptor( - name='PStatMessage', - full_name='v1.PStatMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='agentStat', full_name='v1.PStatMessage.agentStat', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='agentStatBatch', full_name='v1.PStatMessage.agentStatBatch', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='field', full_name='v1.PStatMessage.field', - index=0, containing_type=None, fields=[]), - ], - serialized_start=74, - serialized_end=181, -) - - -_PAGENTINFO = _descriptor.Descriptor( - name='PAgentInfo', - full_name='v1.PAgentInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='hostname', full_name='v1.PAgentInfo.hostname', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='ip', full_name='v1.PAgentInfo.ip', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='ports', full_name='v1.PAgentInfo.ports', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='serviceType', full_name='v1.PAgentInfo.serviceType', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='pid', full_name='v1.PAgentInfo.pid', index=4, - number=5, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='agentVersion', full_name='v1.PAgentInfo.agentVersion', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='vmVersion', full_name='v1.PAgentInfo.vmVersion', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='endTimestamp', full_name='v1.PAgentInfo.endTimestamp', index=7, - number=8, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='endStatus', full_name='v1.PAgentInfo.endStatus', index=8, - number=9, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='serverMetaData', full_name='v1.PAgentInfo.serverMetaData', index=9, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmInfo', full_name='v1.PAgentInfo.jvmInfo', index=10, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='container', full_name='v1.PAgentInfo.container', index=11, - number=12, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=184, - serialized_end=452, -) - - -_PSERVERMETADATA = _descriptor.Descriptor( - name='PServerMetaData', - full_name='v1.PServerMetaData', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='serverInfo', full_name='v1.PServerMetaData.serverInfo', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='vmArg', full_name='v1.PServerMetaData.vmArg', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='serviceInfo', full_name='v1.PServerMetaData.serviceInfo', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=454, - serialized_end=545, -) - - -_PSERVICEINFO = _descriptor.Descriptor( - name='PServiceInfo', - full_name='v1.PServiceInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='serviceName', full_name='v1.PServiceInfo.serviceName', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='serviceLib', full_name='v1.PServiceInfo.serviceLib', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=547, - serialized_end=602, -) - - -_PJVMINFO = _descriptor.Descriptor( - name='PJvmInfo', - full_name='v1.PJvmInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='version', full_name='v1.PJvmInfo.version', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='vmVersion', full_name='v1.PJvmInfo.vmVersion', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='gcType', full_name='v1.PJvmInfo.gcType', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=604, - serialized_end=682, -) - - -_PAGENTSTAT = _descriptor.Descriptor( - name='PAgentStat', - full_name='v1.PAgentStat', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='timestamp', full_name='v1.PAgentStat.timestamp', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='collectInterval', full_name='v1.PAgentStat.collectInterval', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='gc', full_name='v1.PAgentStat.gc', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='cpuLoad', full_name='v1.PAgentStat.cpuLoad', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='transaction', full_name='v1.PAgentStat.transaction', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='activeTrace', full_name='v1.PAgentStat.activeTrace', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='dataSourceList', full_name='v1.PAgentStat.dataSourceList', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='responseTime', full_name='v1.PAgentStat.responseTime', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='deadlock', full_name='v1.PAgentStat.deadlock', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='fileDescriptor', full_name='v1.PAgentStat.fileDescriptor', index=9, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='directBuffer', full_name='v1.PAgentStat.directBuffer', index=10, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='metadata', full_name='v1.PAgentStat.metadata', index=11, - number=12, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=685, - serialized_end=1097, -) - - -_PAGENTSTATBATCH = _descriptor.Descriptor( - name='PAgentStatBatch', - full_name='v1.PAgentStatBatch', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='agentStat', full_name='v1.PAgentStatBatch.agentStat', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1099, - serialized_end=1151, -) - - -_PDATASOURCE = _descriptor.Descriptor( - name='PDataSource', - full_name='v1.PDataSource', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='v1.PDataSource.id', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='serviceTypeCode', full_name='v1.PDataSource.serviceTypeCode', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='databaseName', full_name='v1.PDataSource.databaseName', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='url', full_name='v1.PDataSource.url', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='activeConnectionSize', full_name='v1.PDataSource.activeConnectionSize', index=4, - number=5, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='maxConnectionSize', full_name='v1.PDataSource.maxConnectionSize', index=5, - number=6, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1154, - serialized_end=1296, -) - - -_PDATASOURCELIST = _descriptor.Descriptor( - name='PDataSourceList', - full_name='v1.PDataSourceList', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='dataSource', full_name='v1.PDataSourceList.dataSource', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1298, - serialized_end=1352, -) - - -_PFILEDESCRIPTOR = _descriptor.Descriptor( - name='PFileDescriptor', - full_name='v1.PFileDescriptor', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='openFileDescriptorCount', full_name='v1.PFileDescriptor.openFileDescriptorCount', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1354, - serialized_end=1404, -) - - -_PJVMGC = _descriptor.Descriptor( - name='PJvmGc', - full_name='v1.PJvmGc', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='v1.PJvmGc.type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmMemoryHeapUsed', full_name='v1.PJvmGc.jvmMemoryHeapUsed', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmMemoryHeapMax', full_name='v1.PJvmGc.jvmMemoryHeapMax', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmMemoryNonHeapUsed', full_name='v1.PJvmGc.jvmMemoryNonHeapUsed', index=3, - number=4, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmMemoryNonHeapMax', full_name='v1.PJvmGc.jvmMemoryNonHeapMax', index=4, - number=5, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmGcOldCount', full_name='v1.PJvmGc.jvmGcOldCount', index=5, - number=6, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmGcOldTime', full_name='v1.PJvmGc.jvmGcOldTime', index=6, - number=7, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmGcDetailed', full_name='v1.PJvmGc.jvmGcDetailed', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1407, - serialized_end=1645, -) - - -_PJVMGCDETAILED = _descriptor.Descriptor( - name='PJvmGcDetailed', - full_name='v1.PJvmGcDetailed', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='jvmGcNewCount', full_name='v1.PJvmGcDetailed.jvmGcNewCount', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmGcNewTime', full_name='v1.PJvmGcDetailed.jvmGcNewTime', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmPoolCodeCacheUsed', full_name='v1.PJvmGcDetailed.jvmPoolCodeCacheUsed', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmPoolNewGenUsed', full_name='v1.PJvmGcDetailed.jvmPoolNewGenUsed', index=3, - number=4, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmPoolOldGenUsed', full_name='v1.PJvmGcDetailed.jvmPoolOldGenUsed', index=4, - number=5, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmPoolSurvivorSpaceUsed', full_name='v1.PJvmGcDetailed.jvmPoolSurvivorSpaceUsed', index=5, - number=6, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmPoolPermGenUsed', full_name='v1.PJvmGcDetailed.jvmPoolPermGenUsed', index=6, - number=7, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='jvmPoolMetaspaceUsed', full_name='v1.PJvmGcDetailed.jvmPoolMetaspaceUsed', index=7, - number=8, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1648, - serialized_end=1885, -) - - -_PCPULOAD = _descriptor.Descriptor( - name='PCpuLoad', - full_name='v1.PCpuLoad', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='jvmCpuLoad', full_name='v1.PCpuLoad.jvmCpuLoad', index=0, - number=1, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='systemCpuLoad', full_name='v1.PCpuLoad.systemCpuLoad', index=1, - number=2, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1887, - serialized_end=1940, -) - - -_PTRANSACTION = _descriptor.Descriptor( - name='PTransaction', - full_name='v1.PTransaction', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='sampledNewCount', full_name='v1.PTransaction.sampledNewCount', index=0, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sampledContinuationCount', full_name='v1.PTransaction.sampledContinuationCount', index=1, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='unsampledNewCount', full_name='v1.PTransaction.unsampledNewCount', index=2, - number=4, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='unsampledContinuationCount', full_name='v1.PTransaction.unsampledContinuationCount', index=3, - number=5, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='skippedNewCount', full_name='v1.PTransaction.skippedNewCount', index=4, - number=6, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='skippedContinuationCount', full_name='v1.PTransaction.skippedContinuationCount', index=5, - number=7, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1943, - serialized_end=2138, -) - - -_PACTIVETRACEHISTOGRAM = _descriptor.Descriptor( - name='PActiveTraceHistogram', - full_name='v1.PActiveTraceHistogram', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='version', full_name='v1.PActiveTraceHistogram.version', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='histogramSchemaType', full_name='v1.PActiveTraceHistogram.histogramSchemaType', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='activeTraceCount', full_name='v1.PActiveTraceHistogram.activeTraceCount', index=2, - number=3, type=5, cpp_type=1, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2140, - serialized_end=2235, -) - - -_PACTIVETRACE = _descriptor.Descriptor( - name='PActiveTrace', - full_name='v1.PActiveTrace', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='histogram', full_name='v1.PActiveTrace.histogram', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2237, - serialized_end=2297, -) - - -_PRESPONSETIME = _descriptor.Descriptor( - name='PResponseTime', - full_name='v1.PResponseTime', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='avg', full_name='v1.PResponseTime.avg', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='max', full_name='v1.PResponseTime.max', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2299, - serialized_end=2340, -) - - -_PDEADLOCK = _descriptor.Descriptor( - name='PDeadlock', - full_name='v1.PDeadlock', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='count', full_name='v1.PDeadlock.count', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadDump', full_name='v1.PDeadlock.threadDump', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2342, - serialized_end=2405, -) - - -_PDIRECTBUFFER = _descriptor.Descriptor( - name='PDirectBuffer', - full_name='v1.PDirectBuffer', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='directCount', full_name='v1.PDirectBuffer.directCount', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='directMemoryUsed', full_name='v1.PDirectBuffer.directMemoryUsed', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='mappedCount', full_name='v1.PDirectBuffer.mappedCount', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='mappedMemoryUsed', full_name='v1.PDirectBuffer.mappedMemoryUsed', index=3, - number=4, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2407, - serialized_end=2516, -) - -_PSTATMESSAGE.fields_by_name['agentStat'].message_type = _PAGENTSTAT -_PSTATMESSAGE.fields_by_name['agentStatBatch'].message_type = _PAGENTSTATBATCH -_PSTATMESSAGE.oneofs_by_name['field'].fields.append( - _PSTATMESSAGE.fields_by_name['agentStat']) -_PSTATMESSAGE.fields_by_name['agentStat'].containing_oneof = _PSTATMESSAGE.oneofs_by_name['field'] -_PSTATMESSAGE.oneofs_by_name['field'].fields.append( - _PSTATMESSAGE.fields_by_name['agentStatBatch']) -_PSTATMESSAGE.fields_by_name['agentStatBatch'].containing_oneof = _PSTATMESSAGE.oneofs_by_name['field'] -_PAGENTINFO.fields_by_name['serverMetaData'].message_type = _PSERVERMETADATA -_PAGENTINFO.fields_by_name['jvmInfo'].message_type = _PJVMINFO -_PSERVERMETADATA.fields_by_name['serviceInfo'].message_type = _PSERVICEINFO -_PJVMINFO.fields_by_name['gcType'].enum_type = _PJVMGCTYPE -_PAGENTSTAT.fields_by_name['gc'].message_type = _PJVMGC -_PAGENTSTAT.fields_by_name['cpuLoad'].message_type = _PCPULOAD -_PAGENTSTAT.fields_by_name['transaction'].message_type = _PTRANSACTION -_PAGENTSTAT.fields_by_name['activeTrace'].message_type = _PACTIVETRACE -_PAGENTSTAT.fields_by_name['dataSourceList'].message_type = _PDATASOURCELIST -_PAGENTSTAT.fields_by_name['responseTime'].message_type = _PRESPONSETIME -_PAGENTSTAT.fields_by_name['deadlock'].message_type = _PDEADLOCK -_PAGENTSTAT.fields_by_name['fileDescriptor'].message_type = _PFILEDESCRIPTOR -_PAGENTSTAT.fields_by_name['directBuffer'].message_type = _PDIRECTBUFFER -_PAGENTSTATBATCH.fields_by_name['agentStat'].message_type = _PAGENTSTAT -_PDATASOURCELIST.fields_by_name['dataSource'].message_type = _PDATASOURCE -_PJVMGC.fields_by_name['type'].enum_type = _PJVMGCTYPE -_PJVMGC.fields_by_name['jvmGcDetailed'].message_type = _PJVMGCDETAILED -_PACTIVETRACE.fields_by_name['histogram'].message_type = _PACTIVETRACEHISTOGRAM -_PDEADLOCK.fields_by_name['threadDump'].message_type = ThreadDump__pb2._PTHREADDUMP -DESCRIPTOR.message_types_by_name['PPing'] = _PPING -DESCRIPTOR.message_types_by_name['PStatMessage'] = _PSTATMESSAGE -DESCRIPTOR.message_types_by_name['PAgentInfo'] = _PAGENTINFO -DESCRIPTOR.message_types_by_name['PServerMetaData'] = _PSERVERMETADATA -DESCRIPTOR.message_types_by_name['PServiceInfo'] = _PSERVICEINFO -DESCRIPTOR.message_types_by_name['PJvmInfo'] = _PJVMINFO -DESCRIPTOR.message_types_by_name['PAgentStat'] = _PAGENTSTAT -DESCRIPTOR.message_types_by_name['PAgentStatBatch'] = _PAGENTSTATBATCH -DESCRIPTOR.message_types_by_name['PDataSource'] = _PDATASOURCE -DESCRIPTOR.message_types_by_name['PDataSourceList'] = _PDATASOURCELIST -DESCRIPTOR.message_types_by_name['PFileDescriptor'] = _PFILEDESCRIPTOR -DESCRIPTOR.message_types_by_name['PJvmGc'] = _PJVMGC -DESCRIPTOR.message_types_by_name['PJvmGcDetailed'] = _PJVMGCDETAILED -DESCRIPTOR.message_types_by_name['PCpuLoad'] = _PCPULOAD -DESCRIPTOR.message_types_by_name['PTransaction'] = _PTRANSACTION -DESCRIPTOR.message_types_by_name['PActiveTraceHistogram'] = _PACTIVETRACEHISTOGRAM -DESCRIPTOR.message_types_by_name['PActiveTrace'] = _PACTIVETRACE -DESCRIPTOR.message_types_by_name['PResponseTime'] = _PRESPONSETIME -DESCRIPTOR.message_types_by_name['PDeadlock'] = _PDEADLOCK -DESCRIPTOR.message_types_by_name['PDirectBuffer'] = _PDIRECTBUFFER -DESCRIPTOR.enum_types_by_name['PJvmGcType'] = _PJVMGCTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PPing = _reflection.GeneratedProtocolMessageType('PPing', (_message.Message,), { - 'DESCRIPTOR' : _PPING, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PPing) - }) -_sym_db.RegisterMessage(PPing) - -PStatMessage = _reflection.GeneratedProtocolMessageType('PStatMessage', (_message.Message,), { - 'DESCRIPTOR' : _PSTATMESSAGE, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PStatMessage) - }) -_sym_db.RegisterMessage(PStatMessage) - -PAgentInfo = _reflection.GeneratedProtocolMessageType('PAgentInfo', (_message.Message,), { - 'DESCRIPTOR' : _PAGENTINFO, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PAgentInfo) - }) -_sym_db.RegisterMessage(PAgentInfo) - -PServerMetaData = _reflection.GeneratedProtocolMessageType('PServerMetaData', (_message.Message,), { - 'DESCRIPTOR' : _PSERVERMETADATA, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PServerMetaData) - }) -_sym_db.RegisterMessage(PServerMetaData) - -PServiceInfo = _reflection.GeneratedProtocolMessageType('PServiceInfo', (_message.Message,), { - 'DESCRIPTOR' : _PSERVICEINFO, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PServiceInfo) - }) -_sym_db.RegisterMessage(PServiceInfo) - -PJvmInfo = _reflection.GeneratedProtocolMessageType('PJvmInfo', (_message.Message,), { - 'DESCRIPTOR' : _PJVMINFO, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PJvmInfo) - }) -_sym_db.RegisterMessage(PJvmInfo) - -PAgentStat = _reflection.GeneratedProtocolMessageType('PAgentStat', (_message.Message,), { - 'DESCRIPTOR' : _PAGENTSTAT, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PAgentStat) - }) -_sym_db.RegisterMessage(PAgentStat) - -PAgentStatBatch = _reflection.GeneratedProtocolMessageType('PAgentStatBatch', (_message.Message,), { - 'DESCRIPTOR' : _PAGENTSTATBATCH, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PAgentStatBatch) - }) -_sym_db.RegisterMessage(PAgentStatBatch) - -PDataSource = _reflection.GeneratedProtocolMessageType('PDataSource', (_message.Message,), { - 'DESCRIPTOR' : _PDATASOURCE, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PDataSource) - }) -_sym_db.RegisterMessage(PDataSource) - -PDataSourceList = _reflection.GeneratedProtocolMessageType('PDataSourceList', (_message.Message,), { - 'DESCRIPTOR' : _PDATASOURCELIST, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PDataSourceList) - }) -_sym_db.RegisterMessage(PDataSourceList) - -PFileDescriptor = _reflection.GeneratedProtocolMessageType('PFileDescriptor', (_message.Message,), { - 'DESCRIPTOR' : _PFILEDESCRIPTOR, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PFileDescriptor) - }) -_sym_db.RegisterMessage(PFileDescriptor) - -PJvmGc = _reflection.GeneratedProtocolMessageType('PJvmGc', (_message.Message,), { - 'DESCRIPTOR' : _PJVMGC, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PJvmGc) - }) -_sym_db.RegisterMessage(PJvmGc) - -PJvmGcDetailed = _reflection.GeneratedProtocolMessageType('PJvmGcDetailed', (_message.Message,), { - 'DESCRIPTOR' : _PJVMGCDETAILED, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PJvmGcDetailed) - }) -_sym_db.RegisterMessage(PJvmGcDetailed) - -PCpuLoad = _reflection.GeneratedProtocolMessageType('PCpuLoad', (_message.Message,), { - 'DESCRIPTOR' : _PCPULOAD, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PCpuLoad) - }) -_sym_db.RegisterMessage(PCpuLoad) - -PTransaction = _reflection.GeneratedProtocolMessageType('PTransaction', (_message.Message,), { - 'DESCRIPTOR' : _PTRANSACTION, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PTransaction) - }) -_sym_db.RegisterMessage(PTransaction) - -PActiveTraceHistogram = _reflection.GeneratedProtocolMessageType('PActiveTraceHistogram', (_message.Message,), { - 'DESCRIPTOR' : _PACTIVETRACEHISTOGRAM, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PActiveTraceHistogram) - }) -_sym_db.RegisterMessage(PActiveTraceHistogram) - -PActiveTrace = _reflection.GeneratedProtocolMessageType('PActiveTrace', (_message.Message,), { - 'DESCRIPTOR' : _PACTIVETRACE, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PActiveTrace) - }) -_sym_db.RegisterMessage(PActiveTrace) - -PResponseTime = _reflection.GeneratedProtocolMessageType('PResponseTime', (_message.Message,), { - 'DESCRIPTOR' : _PRESPONSETIME, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PResponseTime) - }) -_sym_db.RegisterMessage(PResponseTime) - -PDeadlock = _reflection.GeneratedProtocolMessageType('PDeadlock', (_message.Message,), { - 'DESCRIPTOR' : _PDEADLOCK, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PDeadlock) - }) -_sym_db.RegisterMessage(PDeadlock) - -PDirectBuffer = _reflection.GeneratedProtocolMessageType('PDirectBuffer', (_message.Message,), { - 'DESCRIPTOR' : _PDIRECTBUFFER, - '__module__' : 'Stat_pb2' - # @@protoc_insertion_point(class_scope:v1.PDirectBuffer) - }) -_sym_db.RegisterMessage(PDirectBuffer) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/Stat_pb2_grpc.py b/collector-agent/Proto/grpc/Stat_pb2_grpc.py deleted file mode 100644 index a89435267..000000000 --- a/collector-agent/Proto/grpc/Stat_pb2_grpc.py +++ /dev/null @@ -1,3 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -import grpc - diff --git a/collector-agent/Proto/grpc/ThreadDump_pb2.py b/collector-agent/Proto/grpc/ThreadDump_pb2.py deleted file mode 100644 index 3a06331d6..000000000 --- a/collector-agent/Proto/grpc/ThreadDump_pb2.py +++ /dev/null @@ -1,502 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: ThreadDump.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf.internal import enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='ThreadDump.proto', - package='v1', - syntax='proto3', - serialized_options=_b('\n!com.navercorp.pinpoint.grpc.traceB\017ThreadDumpProtoP\001'), - serialized_pb=_b('\n\x10ThreadDump.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\"6\n\x0cPMonitorInfo\x12\x12\n\nstackDepth\x18\x01 \x01(\x05\x12\x12\n\nstackFrame\x18\x02 \x01(\t\"\xea\x02\n\x0bPThreadDump\x12\x12\n\nthreadName\x18\x01 \x01(\t\x12\x10\n\x08threadId\x18\x02 \x01(\x03\x12\x13\n\x0b\x62lockedTime\x18\x03 \x01(\x03\x12\x14\n\x0c\x62lockedCount\x18\x04 \x01(\x03\x12\x12\n\nwaitedTime\x18\x05 \x01(\x03\x12\x13\n\x0bwaitedCount\x18\x06 \x01(\x03\x12\x10\n\x08lockName\x18\x07 \x01(\t\x12\x13\n\x0blockOwnerId\x18\x08 \x01(\x03\x12\x15\n\rlockOwnerName\x18\t \x01(\t\x12\x10\n\x08inNative\x18\n \x01(\x08\x12\x11\n\tsuspended\x18\x0b \x01(\x08\x12%\n\x0bthreadState\x18\x0c \x01(\x0e\x32\x10.v1.PThreadState\x12\x12\n\nstackTrace\x18\r \x03(\t\x12\'\n\rlockedMonitor\x18\x0e \x03(\x0b\x32\x10.v1.PMonitorInfo\x12\x1a\n\x12lockedSynchronizer\x18\x0f \x03(\t\"_\n\x10PThreadLightDump\x12\x12\n\nthreadName\x18\x01 \x01(\t\x12\x10\n\x08threadId\x18\x02 \x01(\x03\x12%\n\x0bthreadState\x18\x03 \x01(\x0e\x32\x10.v1.PThreadState\"\x9d\x01\n\x11PActiveThreadDump\x12\x11\n\tstartTime\x18\x01 \x01(\x03\x12\x14\n\x0clocalTraceId\x18\x02 \x01(\x03\x12#\n\nthreadDump\x18\x03 \x01(\x0b\x32\x0f.v1.PThreadDump\x12\x0f\n\x07sampled\x18\x04 \x01(\x08\x12\x15\n\rtransactionId\x18\x05 \x01(\t\x12\x12\n\nentryPoint\x18\x06 \x01(\t\"\xa7\x01\n\x16PActiveThreadLightDump\x12\x11\n\tstartTime\x18\x01 \x01(\x03\x12\x14\n\x0clocalTraceId\x18\x02 \x01(\x03\x12(\n\nthreadDump\x18\x03 \x01(\x0b\x32\x14.v1.PThreadLightDump\x12\x0f\n\x07sampled\x18\x04 \x01(\x08\x12\x15\n\rtransactionId\x18\x05 \x01(\t\x12\x12\n\nentryPoint\x18\x06 \x01(\t*\xca\x01\n\x0cPThreadState\x12\x14\n\x10THREAD_STATE_NEW\x10\x00\x12\x19\n\x15THREAD_STATE_RUNNABLE\x10\x01\x12\x18\n\x14THREAD_STATE_BLOCKED\x10\x02\x12\x18\n\x14THREAD_STATE_WAITING\x10\x03\x12\x1e\n\x1aTHREAD_STATE_TIMED_WAITING\x10\x04\x12\x1b\n\x17THREAD_STATE_TERMINATED\x10\x05\x12\x18\n\x14THREAD_STATE_UNKNOWN\x10\x06**\n\x0fPThreadDumpType\x12\n\n\x06TARGET\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x42\x36\n!com.navercorp.pinpoint.grpc.traceB\x0fThreadDumpProtoP\x01\x62\x06proto3') - , - dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) - -_PTHREADSTATE = _descriptor.EnumDescriptor( - name='PThreadState', - full_name='v1.PThreadState', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='THREAD_STATE_NEW', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='THREAD_STATE_RUNNABLE', index=1, number=1, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='THREAD_STATE_BLOCKED', index=2, number=2, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='THREAD_STATE_WAITING', index=3, number=3, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='THREAD_STATE_TIMED_WAITING', index=4, number=4, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='THREAD_STATE_TERMINATED', index=5, number=5, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='THREAD_STATE_UNKNOWN', index=6, number=6, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=934, - serialized_end=1136, -) -_sym_db.RegisterEnumDescriptor(_PTHREADSTATE) - -PThreadState = enum_type_wrapper.EnumTypeWrapper(_PTHREADSTATE) -_PTHREADDUMPTYPE = _descriptor.EnumDescriptor( - name='PThreadDumpType', - full_name='v1.PThreadDumpType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='TARGET', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PENDING', index=1, number=1, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=1138, - serialized_end=1180, -) -_sym_db.RegisterEnumDescriptor(_PTHREADDUMPTYPE) - -PThreadDumpType = enum_type_wrapper.EnumTypeWrapper(_PTHREADDUMPTYPE) -THREAD_STATE_NEW = 0 -THREAD_STATE_RUNNABLE = 1 -THREAD_STATE_BLOCKED = 2 -THREAD_STATE_WAITING = 3 -THREAD_STATE_TIMED_WAITING = 4 -THREAD_STATE_TERMINATED = 5 -THREAD_STATE_UNKNOWN = 6 -TARGET = 0 -PENDING = 1 - - - -_PMONITORINFO = _descriptor.Descriptor( - name='PMonitorInfo', - full_name='v1.PMonitorInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='stackDepth', full_name='v1.PMonitorInfo.stackDepth', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stackFrame', full_name='v1.PMonitorInfo.stackFrame', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=85, - serialized_end=139, -) - - -_PTHREADDUMP = _descriptor.Descriptor( - name='PThreadDump', - full_name='v1.PThreadDump', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='threadName', full_name='v1.PThreadDump.threadName', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadId', full_name='v1.PThreadDump.threadId', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='blockedTime', full_name='v1.PThreadDump.blockedTime', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='blockedCount', full_name='v1.PThreadDump.blockedCount', index=3, - number=4, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='waitedTime', full_name='v1.PThreadDump.waitedTime', index=4, - number=5, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='waitedCount', full_name='v1.PThreadDump.waitedCount', index=5, - number=6, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='lockName', full_name='v1.PThreadDump.lockName', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='lockOwnerId', full_name='v1.PThreadDump.lockOwnerId', index=7, - number=8, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='lockOwnerName', full_name='v1.PThreadDump.lockOwnerName', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='inNative', full_name='v1.PThreadDump.inNative', index=9, - number=10, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='suspended', full_name='v1.PThreadDump.suspended', index=10, - number=11, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadState', full_name='v1.PThreadDump.threadState', index=11, - number=12, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stackTrace', full_name='v1.PThreadDump.stackTrace', index=12, - number=13, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='lockedMonitor', full_name='v1.PThreadDump.lockedMonitor', index=13, - number=14, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='lockedSynchronizer', full_name='v1.PThreadDump.lockedSynchronizer', index=14, - number=15, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=142, - serialized_end=504, -) - - -_PTHREADLIGHTDUMP = _descriptor.Descriptor( - name='PThreadLightDump', - full_name='v1.PThreadLightDump', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='threadName', full_name='v1.PThreadLightDump.threadName', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadId', full_name='v1.PThreadLightDump.threadId', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadState', full_name='v1.PThreadLightDump.threadState', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=506, - serialized_end=601, -) - - -_PACTIVETHREADDUMP = _descriptor.Descriptor( - name='PActiveThreadDump', - full_name='v1.PActiveThreadDump', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='startTime', full_name='v1.PActiveThreadDump.startTime', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='localTraceId', full_name='v1.PActiveThreadDump.localTraceId', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadDump', full_name='v1.PActiveThreadDump.threadDump', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sampled', full_name='v1.PActiveThreadDump.sampled', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='transactionId', full_name='v1.PActiveThreadDump.transactionId', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='entryPoint', full_name='v1.PActiveThreadDump.entryPoint', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=604, - serialized_end=761, -) - - -_PACTIVETHREADLIGHTDUMP = _descriptor.Descriptor( - name='PActiveThreadLightDump', - full_name='v1.PActiveThreadLightDump', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='startTime', full_name='v1.PActiveThreadLightDump.startTime', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='localTraceId', full_name='v1.PActiveThreadLightDump.localTraceId', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='threadDump', full_name='v1.PActiveThreadLightDump.threadDump', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sampled', full_name='v1.PActiveThreadLightDump.sampled', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='transactionId', full_name='v1.PActiveThreadLightDump.transactionId', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='entryPoint', full_name='v1.PActiveThreadLightDump.entryPoint', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=764, - serialized_end=931, -) - -_PTHREADDUMP.fields_by_name['threadState'].enum_type = _PTHREADSTATE -_PTHREADDUMP.fields_by_name['lockedMonitor'].message_type = _PMONITORINFO -_PTHREADLIGHTDUMP.fields_by_name['threadState'].enum_type = _PTHREADSTATE -_PACTIVETHREADDUMP.fields_by_name['threadDump'].message_type = _PTHREADDUMP -_PACTIVETHREADLIGHTDUMP.fields_by_name['threadDump'].message_type = _PTHREADLIGHTDUMP -DESCRIPTOR.message_types_by_name['PMonitorInfo'] = _PMONITORINFO -DESCRIPTOR.message_types_by_name['PThreadDump'] = _PTHREADDUMP -DESCRIPTOR.message_types_by_name['PThreadLightDump'] = _PTHREADLIGHTDUMP -DESCRIPTOR.message_types_by_name['PActiveThreadDump'] = _PACTIVETHREADDUMP -DESCRIPTOR.message_types_by_name['PActiveThreadLightDump'] = _PACTIVETHREADLIGHTDUMP -DESCRIPTOR.enum_types_by_name['PThreadState'] = _PTHREADSTATE -DESCRIPTOR.enum_types_by_name['PThreadDumpType'] = _PTHREADDUMPTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PMonitorInfo = _reflection.GeneratedProtocolMessageType('PMonitorInfo', (_message.Message,), { - 'DESCRIPTOR' : _PMONITORINFO, - '__module__' : 'ThreadDump_pb2' - # @@protoc_insertion_point(class_scope:v1.PMonitorInfo) - }) -_sym_db.RegisterMessage(PMonitorInfo) - -PThreadDump = _reflection.GeneratedProtocolMessageType('PThreadDump', (_message.Message,), { - 'DESCRIPTOR' : _PTHREADDUMP, - '__module__' : 'ThreadDump_pb2' - # @@protoc_insertion_point(class_scope:v1.PThreadDump) - }) -_sym_db.RegisterMessage(PThreadDump) - -PThreadLightDump = _reflection.GeneratedProtocolMessageType('PThreadLightDump', (_message.Message,), { - 'DESCRIPTOR' : _PTHREADLIGHTDUMP, - '__module__' : 'ThreadDump_pb2' - # @@protoc_insertion_point(class_scope:v1.PThreadLightDump) - }) -_sym_db.RegisterMessage(PThreadLightDump) - -PActiveThreadDump = _reflection.GeneratedProtocolMessageType('PActiveThreadDump', (_message.Message,), { - 'DESCRIPTOR' : _PACTIVETHREADDUMP, - '__module__' : 'ThreadDump_pb2' - # @@protoc_insertion_point(class_scope:v1.PActiveThreadDump) - }) -_sym_db.RegisterMessage(PActiveThreadDump) - -PActiveThreadLightDump = _reflection.GeneratedProtocolMessageType('PActiveThreadLightDump', (_message.Message,), { - 'DESCRIPTOR' : _PACTIVETHREADLIGHTDUMP, - '__module__' : 'ThreadDump_pb2' - # @@protoc_insertion_point(class_scope:v1.PActiveThreadLightDump) - }) -_sym_db.RegisterMessage(PActiveThreadLightDump) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/collector-agent/Proto/grpc/ThreadDump_pb2_grpc.py b/collector-agent/Proto/grpc/ThreadDump_pb2_grpc.py deleted file mode 100644 index a89435267..000000000 --- a/collector-agent/Proto/grpc/ThreadDump_pb2_grpc.py +++ /dev/null @@ -1,3 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -import grpc - diff --git a/collector-agent/run_first.sh b/collector-agent/run_first.sh new file mode 100755 index 000000000..b9e9d436f --- /dev/null +++ b/collector-agent/run_first.sh @@ -0,0 +1,3 @@ +#!/bin/bash +pip install grpcio-tools +python -m grpc_tools.protoc -I./Proto/grpc --python_out=./Proto/grpc --grpc_python_out=./Proto/grpc ./Proto/grpc/*.proto From bb2be8a20e788359956eaf0c5c99a789347a2250 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Wed, 8 Jan 2020 18:12:34 +0800 Subject: [PATCH 17/45] init shared_memory before request --- PHP/pinpoint_php_ext/pinpoint_php.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/PHP/pinpoint_php_ext/pinpoint_php.cpp b/PHP/pinpoint_php_ext/pinpoint_php.cpp index 28781dd0e..c2695808c 100644 --- a/PHP/pinpoint_php_ext/pinpoint_php.cpp +++ b/PHP/pinpoint_php_ext/pinpoint_php.cpp @@ -500,6 +500,7 @@ PHP_MINIT_FUNCTION(pinpoint_php) zend_error_cb = apm_error_cb; PPG(agent_info).start_time = get_current_msec_stamp(); + checking_and_init(); return SUCCESS; } From a19d4e31c4b990fb265a4034675435bd0c7ca9f4 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 14 Jan 2020 17:43:30 +0800 Subject: [PATCH 18/45] process by queue is failed --- collector-agent/CollectorAgent/GrpcAgent.py | 54 ++++--- .../CollectorAgent/GrpcAgentImplement.py | 70 ++++++--- collector-agent/CollectorAgent/GrpcClient.py | 8 +- collector-agent/CollectorAgent/GrpcMeta.py | 2 +- collector-agent/CollectorAgent/GrpcSpan.py | 141 ++++++++++++++---- .../CollectorAgent/ThriftAgentImplement.py | 2 +- collector-agent/Common/Logger.py | 4 +- collector-agent/Events/StreamClientLayer.py | 1 - collector-agent/Events/StreamServerLayer.py | 6 +- collector-agent/Events/util.py | 10 ++ collector-agent/PHPAgent/FrontAgent.py | 38 +++-- collector-agent/PHPAgent/SpanFactory.py | 4 +- .../PinpointAgent/AppManagement.py | 7 +- collector-agent/Test/test_common.py | 105 +++++++++++++ collector-agent/Test/test_mq.py | 1 + collector-agent/conf/collector.conf | 2 +- .../{run_first.sh => init_python_env.sh} | 1 + collector-agent/requirements.txt | 6 +- collector-agent/run.py | 3 +- collector-agent/run.sh | 8 + 20 files changed, 373 insertions(+), 100 deletions(-) create mode 100644 collector-agent/Events/util.py create mode 100644 collector-agent/Test/test_mq.py rename collector-agent/{run_first.sh => init_python_env.sh} (79%) create mode 100755 collector-agent/run.sh diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index 0f6b148c5..d33462da6 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -6,7 +6,6 @@ import Service_pb2_grpc import threading import time -from functools import partial from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger from PinpointAgent.Type import PHP @@ -26,48 +25,61 @@ def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_tim GrpcAgent.PINGID += 1 self.ping_meta = meta.append(('socketid', str(GrpcAgent.PINGID))) self.ping_timeout = ping_timeout - + self._registerAgent() + self.is_ok = False def channel_set_ready(self): - self._start_ping_thread() + self.is_ok =True + #pass + # self._register_agent() def channel_set_idle(self): - self._register_agent() + # self._register_agent() + self.is_ok =False def channel_set_error(self): - self._register_agent() + self.is_ok =False + # self._register_agent() + - def _register_agent(self): + def _registerAgent(self): assert isinstance(self.agentinfo,PAgentInfo) - call_future = self.stub.RequestAgentInfo.future(self.agentinfo) - call_future.add_done_callback(self.reponse_agentinfo_callback) - TCLogger.debug("register agent %s",self.agentinfo) + call_future = self.stub.RequestAgentInfo.future(self.agentinfo,wait_for_ready=True) + call_future.add_done_callback(self.reponseAgentInfoCallback) + TCLogger.debug("register agent %s and meta %s %d",self.agentinfo,self.meta,threading.get_ident()) - def reponse_agentinfo_callback(self, future): + def reponseAgentInfoCallback(self, future): if future.exception(): - TCLogger.error("agent catch exception %s",future.exception()) + TCLogger.error("agent catch exception %s. it will sleep 3 and try again",future.exception()) return if future.result(): TCLogger.debug("agent register done:%s",future.result()) + self.is_ok = True + self._startPingThread() - def _ping_PPing(self): - while True: + def _pingPPing(self): + while self.is_ok: ping = PPing() - TCLogger.debug("%s send ping",self) + TCLogger.debug("%s send ping %d",self,threading.get_ident()) yield ping time.sleep(self.ping_timeout) - def _start_ping_thread(self): + + def _startPingThread(self): # create ping stub - iter_reponse = self.stub.PingSession(self._ping_PPing(),metadata=self.ping_meta) - self.ping_reponse_task = threading.Thread(target=self._ping_response, args=(iter_reponse,)) + iter_reponse = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) + self.ping_reponse_task = threading.Thread(target=self._pingResponse, args=(iter_reponse,)) + self.ping_reponse_task.setName("collect-agent-ping-thread") self.ping_reponse_task.start() - def _ping_response(self,response_iter): - for response in response_iter: - TCLogger.debug('get ping response %s',response) - TCLogger.warning('Agent [%s] ping thread stopped',self) + def _pingResponse(self, response_iter): + try: + for response in response_iter: + TCLogger.debug('get ping response %s',response) + except Exception as e: + TCLogger.error("ping response abort with exception %s",e) + self._registerAgent() def __str__(self): return 'agentclient: hostname:%s ip:%s pid:%d address:%s'%(self.hostname,self.ip,self.pid,self.address) \ No newline at end of file diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 3ce10a1a6..d94bc5ff1 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -1,17 +1,20 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/16/19 +from queue import Full + + from CollectorAgent.GrpcAgent import GrpcAgent from CollectorAgent.GrpcMeta import GrpcMeta from CollectorAgent.GrpcSpanFactory import GrpcSpanFactory from CollectorAgent.GrpcSpan import GrpcSpan from Common.AgentHost import AgentHost from Common.Logger import TCLogger +from Events.util import try_to_recycle_the_event_hub from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP, SUPPORT_GRPC, API_DEFAULT -from Span_pb2 import PSpanMessage, PSpan -from queue import Queue - +from Span_pb2 import PSpanMessage +from multiprocessing import Process,Queue class GrpcAgentImplement(PinpointAgent): def __init__(self, ac, app_id, app_name, serviceType=PHP): @@ -22,8 +25,7 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): ('agentid', app_id), ('applicationname',app_name)] self.startTimeStamp = ac.startTimestamp - # maybe change in future - self.queue = Queue(10000) + self.app_name = app_name self.max_pending_sz = ac.max_pending_size self.app_id = app_id @@ -35,35 +37,63 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): import os self.agentHost = AgentHost() + self.span_queue = Queue(10000) + self.max_span_sender_size = 10 + self.span_process = [] + self._startSpanSenderProcess() + self.agent_client = GrpcAgent(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), self.agent_addr, self.agent_meta) self.meta_client = GrpcMeta(self.agent_addr, self.agent_meta) - self.span_client = GrpcSpan(self._generate_span, self.span_addr, self.agent_meta, self.max_pending_sz) - self.sequenceId = 0 self.span_factory = GrpcSpanFactory(self) def start(self): pass + def sendSpan(self, stack): pSpan = self.span_factory.make_span(stack) spanMesg = PSpanMessage(span = pSpan) - if self.span_client.is_ok: - self.queue.put(spanMesg) - elif self.queue.qsize() > self.span_client.max_pending_size: - TCLogger.warning("span channel is busy. Drop %s",pSpan) - return - else: - self.queue.put(spanMesg) + + try: + self.span_queue.put(spanMesg,False) + TCLogger.debug("inqueue size:%d",self.span_queue.qsize()) + except Exception as e: + TCLogger.info("send queue is full,span process count:%s",len(self.span_process)) + if len(self.span_process)< self.max_span_sender_size: + self._startSpanSenderProcess() + else: + TCLogger.warn("span_processes extend to max size") + + return True + + def _startSpanSenderProcess(self): + + def spanSenderMain(queue): + + # stop gevent + # try_to_recycle_the_event_hub() + + # start grpcspan + span_client = GrpcSpan(self.span_addr, self.agent_meta, self.max_pending_sz) + span_client.startSender(queue) + + sender_process = Process(target=spanSenderMain,args=(self.span_queue,)) + sender_process.name = "span sender process" + sender_process.start() + self.span_process.append(sender_process) + TCLogger.info("Successfully create a Span Sender") + def stop(self): - # close all channel - self.queue.qsize() - def _generate_span(self): - # here return a PSpanMessage - span = self.queue.get() - return span + for pro in self.span_process: + assert isinstance(pro,Process) + pro.terminate() + for pro in self.span_process: + assert isinstance(pro, Process) + pro.join() + def updateApiMeta(self,name,type=API_DEFAULT): return self.meta_client.update_api_meta(name,-1,type) diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 9fccd9e5c..8c3f88273 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -52,7 +52,7 @@ class _ClientCallDetails( pass class GrpcClient(object): - def __init__(self,address,meta=None,maxPending=-1): + def __init__(self,address,meta=None,maxPending=-1,try_reconnect=True): self.address = address self.meta = None self.max_pending_size = maxPending @@ -64,8 +64,9 @@ def __init__(self,address,meta=None,maxPending=-1): intercept_channel = grpc.intercept_channel(channel, self._interceptor_add_header(meta)) channel = intercept_channel + self.channel = channel - self.channel.subscribe(self._channel_state_change) + self.channel.subscribe(self._channel_state_change,try_reconnect) def _interceptor_add_header(self,header): @@ -88,8 +89,7 @@ def _channel_state_change(self, activity): self.channel_set_ready() elif activity == grpc.ChannelConnectivity.IDLE: self.channel_set_idle() - - TCLogger.debug("channel state change %s dst:%s",activity,self.address) + # TCLogger.debug("channel state change %s dst:%s",activity,self.address) def channel_set_ready(self): raise NotImplemented() diff --git a/collector-agent/CollectorAgent/GrpcMeta.py b/collector-agent/CollectorAgent/GrpcMeta.py index 7e2712608..dff3351a1 100644 --- a/collector-agent/CollectorAgent/GrpcMeta.py +++ b/collector-agent/CollectorAgent/GrpcMeta.py @@ -77,9 +77,9 @@ def _response(self,future): def channel_set_ready(self): self.is_ok = True - self._register_all_meta() def channel_set_idle(self): + self._register_all_meta() self.is_ok = True def channel_set_error(self): diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 0f025b322..71dc75fcb 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -1,57 +1,148 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/31/19 +from queue import Empty + import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger +import time + from Span_pb2 import PSpan class GrpcSpan(GrpcClient): - def __init__(self,span_callback_fn,address,meta=None,maxPending=-1): + def __init__(self,address,meta=None,maxPending=-1,timeout=10,max_span_sender = 10): super().__init__(address, meta, maxPending) # self.is_ok = True - assert (callable(span_callback_fn)) - self.span_callback_fn = span_callback_fn self.span_stub = Service_pb2_grpc.SpanStub(self.channel) - self._start_span() - self.is_ok = True - + self.span_count = 0 + self.is_ok = False + self.droped_span_count = 0 + self.log_span_transit_count= 0 def channel_set_ready(self): - # self.is_ok = True self.is_ok = True - self._start_span() - def channel_set_idle(self): - # self.is_ok = True - self._start_span() + self.is_ok = False def channel_set_error(self): self.is_ok = False - self._start_span() + def startSender(self,queue): + # while True: + # span = queue.get() + # TCLogger.debug("log_span_transit_count:%d rest:%d", self.log_span_transit_count, queue.qsize()) + # self.log_span_transit_count += 1 + + + + # def get_span(): + # while True: + # # yield PSpan() + # # TCLogger.debug("log_span_transit_count:%d ",self.log_span_transit_count) + # # self.log_span_transit_count+=1 + # span = queue.get() + # self.log_span_transit_count+=1 + # TCLogger.debug("log_span_transit_count:%d rest:%d",self.log_span_transit_count,queue.qsize()) + # if span is not None: + # yield span + # else: + # TCLogger.error("why span queue return None") + # + # while True: + # try: + # response = self.span_stub.SendSpan(get_span()) + # TCLogger.warn("Send %d span %s",response) + # except Exception as e: + # import traceback + # traceback.print_exc() + # time.sleep(10) - def _span_response(self,result): - TCLogger.debug("send span is over. Agent try to connect span server ...") + spans = [] + + def get_N_span(queue,N): + try: + while N >0: + spans.append(queue.get(block=False)) + N -= 1 + except Empty as e: + TCLogger.debug("get span from queue timeout") - def _get_span(self): while True: try: - span = self.span_callback_fn() - if span is not None: - # TCLogger.debug("send span:%s",span) - yield span - else: - TCLogger.error(" get span failed, checking the span_callback_fn") + get_N_span(queue,10240) + TCLogger.warn("get %s spans %d",len(spans),queue.qsize()) + response = self.span_stub.SendSpan(iter(spans)) + TCLogger.warn("log_span_transit_count %d span %s",len(spans),response) + spans.clear() except Exception as e: - TCLogger.error("get_span catch %s",e) + import traceback + traceback.print_exc() + time.sleep(10) + + - def _start_span(self): - self.future = self.span_stub.SendSpan.future(self._get_span()) - self.future.add_done_callback(self._span_response) + # + # def sendSpan(self, spanMesg): + # if self.is_ok: + # if self.queue.qsize() > self.max_pending_size: + # # TCLogger.warning("span channel is busy. Drop span count =%d", self.droped_span_count) + # # self.droped_span_count+=1 + # + # # return False + # self.startSpan() + # + # self.queue.put(spanMesg) + # TCLogger.debug("span channel is OK,msg:%d", self.queue.qsize()) + # return True + # elif self.span_channel_wait == True: + # return False + # else: + # # Channel is not available,try to wait and try again + # TCLogger.info("span channel is crash, sleep:%sS and try to reconnect", self.span_recover_time_out) + # self.timer = self.loop.timer(self.span_recover_time_out) + # self.timer.start(self.startSpan) + # self.span_channel_wait = True + # return False + # + # + # def _spanResponse(self, result): + # TCLogger.debug("send span is over. As %s",result) + # self.is_ok = False + # self.span_channel_wait = False + # + # def _getSpan(self): + # TCLogger.debug("stream get span, self id: %d",threading.get_ident()) + # while True: + # span = self._pullSpanQueue() + # try: + # if span is not None: + # self.span_count+=1 + # TCLogger.debug("send span count:%d",self.span_count) + # yield span + # else: + # TCLogger.error("get span failed, checking the _generate_span") + # break + # except Exception as e: + # TCLogger.error("get_span catch %s",e) + # + # def _pullSpanQueue(self): + # span = self.queue.get() + # return span + # + # def startSpan(self): + # + # # self.future = self.span_stub.SendSpan.future(self._getSpan()) + # # self.is_ok = True + # # self.future.add_done_callback(self._spanResponse) + # TCLogger.debug("start span address: %s",self.address) + # thread = threading.Thread(target=self._getSpan,args={}) + # thread.setName("span thread") + # thread.start() + # self.span_threads.append(thread) \ No newline at end of file diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index 7b798c321..ab461784b 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -154,7 +154,7 @@ def sendSpan(self,stack): self.spanLayer.sendData(body) # self.spanLayer.sendData(packet.getSerializedData()) TCLogger.debug("send TSpan:%s",tSpan) - + return True def scanLocalInfo(self): ah = AgentHost() self.agentInfo.hostname = ah.hostname diff --git a/collector-agent/Common/Logger.py b/collector-agent/Common/Logger.py index f3a1bf856..db37270f7 100644 --- a/collector-agent/Common/Logger.py +++ b/collector-agent/Common/Logger.py @@ -26,7 +26,7 @@ def _create_logger(name): TCLogger = _create_logger("TC") PALogger = _create_logger("PA") -def set_logger_file(fullpath,format=logging.Formatter('[%(asctime)s] [%(levelname)s] [%(filename)s:%(lineno)s] %(message)s')): +def set_logger_file(fullpath,format=logging.Formatter('[%(asctime)s] [%(process)d] [%(levelname)s] [%(filename)s:%(lineno)s] %(message)s')): fileHandler = logging.FileHandler(fullpath+'/collector.agent.log') fileHandler.setFormatter(format) TCLogger.addHandler(fileHandler) @@ -39,7 +39,7 @@ def set_logger_level(level): TCLogger.setLevel(level) PALogger.setLevel(level) -def logger_enable_console(format=logging.Formatter('[%(asctime)s] [%(levelname)s] [%(filename)s:%(lineno)s] %(message)s')): +def logger_enable_console(format=logging.Formatter('[%(asctime)s] [%(process)d] [%(levelname)s] [%(filename)s:%(lineno)s] %(message)s')): streamHandler = logging.StreamHandler() streamHandler.setFormatter(format) TCLogger.addHandler(streamHandler) diff --git a/collector-agent/Events/StreamClientLayer.py b/collector-agent/Events/StreamClientLayer.py index 60eebfbfb..4b1724180 100644 --- a/collector-agent/Events/StreamClientLayer.py +++ b/collector-agent/Events/StreamClientLayer.py @@ -24,7 +24,6 @@ from gevent import socket as asy_socket from gevent.event import Event ## write signal -from Common import * from Common.Logger import TCLogger from Events.TrainsLayer import * diff --git a/collector-agent/Events/StreamServerLayer.py b/collector-agent/Events/StreamServerLayer.py index 54cfb93b1..227ee86fb 100644 --- a/collector-agent/Events/StreamServerLayer.py +++ b/collector-agent/Events/StreamServerLayer.py @@ -63,7 +63,7 @@ def _recvFromPeer(self): return 0 TCLogger.warning("peer error:%s ", error) return -1 - return recv_total + return recv_total+self.rest_data_sz def close(self): self.socket.close() @@ -112,13 +112,13 @@ def _listenhandler(self): sock = self.listen # client_socket client_socket, address = sock.accept() + client_socket.setblocking(False) # sock = gsocket(_socket = client_socket) except asy_socket.error as error: TCLogger.warning("accept:%s",error) + return - client_socket.setblocking(False) TCLogger.info("new connect fd:%s ",client_socket.fileno()) - client_in_event= self.loop.io(client_socket.fileno(), 1) client_out_event = self.loop.io(client_socket.fileno(), 2) diff --git a/collector-agent/Events/util.py b/collector-agent/Events/util.py new file mode 100644 index 000000000..fb3685db4 --- /dev/null +++ b/collector-agent/Events/util.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 1/14/20 + +import gevent +def try_to_recycle_the_event_hub(): + gevent.reinit() + # loop = gevent.config.loop(default=True) + # loop.destory() + # gevent.joinall() \ No newline at end of file diff --git a/collector-agent/PHPAgent/FrontAgent.py b/collector-agent/PHPAgent/FrontAgent.py index 8f595a637..a6767099a 100644 --- a/collector-agent/PHPAgent/FrontAgent.py +++ b/collector-agent/PHPAgent/FrontAgent.py @@ -37,30 +37,42 @@ def __init__(self, ac, msgCallback): ''' self.address =ac.Address - if os.path.exists(self.address): - os.remove(self.address) - self.listen_socket = gsocket.socket(gsocket.AF_UNIX, gsocket.SOCK_STREAM) - self.listen_socket.bind(self.address) - self.listen_socket.listen(256) + self.listen_socket = self._bindSocket(self.address) self.server = StreamServerLayer(self.listen_socket, self._recvData, self._phpClientSayHello) self.msgHandleCallback = msgCallback self.hello_cb = [] + def _bindSocket(self,address): + if address[0] =='/': # treat as unix socket + if os.path.exists(address): + os.remove(address) + listen_socket = gsocket.socket(gsocket.AF_UNIX, gsocket.SOCK_STREAM) + listen_socket.bind(address) + listen_socket.listen(256) + return listen_socket + elif '@' in address: # treat as tcp port + ip,port = address.split('@') + listen_socket = gsocket.socket(gsocket.AF_INET, gsocket.SOCK_STREAM) + listen_socket.bind((ip,int(port))) + listen_socket.listen(256) + return listen_socket + def _recvData(self, client, buf, bsz): - p = 0 + used = 0 ### if bsz < FrontAgent.HEADERSIZE: return bsz - while p < bsz: - type, len = struct.unpack('!ii', buf[p:p + FrontAgent.HEADERSIZE].tobytes()) - p += FrontAgent.HEADERSIZE - if p+len > bsz: - return p - FrontAgent.HEADERSIZE - body = buf[p:p + len].tobytes() + while used < bsz: + type, len = struct.unpack('!ii', buf[used:used + FrontAgent.HEADERSIZE].tobytes()) + if used + len + FrontAgent.HEADERSIZE > bsz: + # should return the rest data + return bsz - used + used += FrontAgent.HEADERSIZE + body = buf[used:used + len].tobytes() self.msgHandleCallback(client, type, body) - p+= len + used+= len return 0 diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index 052f90409..6efeef37a 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -25,7 +25,7 @@ def make_span(self,stackMap): if 'calls' in stackMap: for called in stackMap['calls']: self.make_span_ev(span,called) - TCLogger.debug("send span:%s",span) + # TCLogger.debug("send span:%s",span) return span def make_span_ev(self, span, stackMap, depth=1): @@ -34,7 +34,7 @@ def make_span_ev(self, span, stackMap, depth=1): self.sequenceid += 1 self.set_depth(span_ev,depth) self.attach_span_event(span,span_ev) - TCLogger.debug(span_ev) + # TCLogger.debug(span_ev) if 'calls' in stackMap: for called in stackMap['calls']: self.make_span_ev(span, called, depth + 1) diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 0d449c8c0..88cf67f7b 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -55,8 +55,11 @@ def stop_all(self): def handle_front_agent_data(self,client,type,body): content = body.decode('utf-8') - stack = json.loads(content) - + try: + stack = json.loads(content) + except Exception as e: + TCLogger.error("json is crash") + return if 'appid' not in stack: appid = self.default_appid else: diff --git a/collector-agent/Test/test_common.py b/collector-agent/Test/test_common.py index 750d7a99e..7054fb5f0 100644 --- a/collector-agent/Test/test_common.py +++ b/collector-agent/Test/test_common.py @@ -1,3 +1,108 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- # Created by eeliu at 10/16/19 + +# from queue import Queue +# import threading,time +# +# queue = Queue() +# def product(): +# obj =100000 +# while obj>0: +# queue.put(obj) +# print("pro: queue size:%d"%(queue.qsize())) +# obj-=1 +# time.sleep(3) +# +# def consumer(): +# while True: +# obj = queue.get() +# print("con: %d"%obj) +# +# def consumer1(): +# while True: +# obj = queue.get() +# print("con: %d"%obj) +# +# if __name__ == '__main__': +# +# pro = threading.Thread(target=product,args=()) +# con = threading.Thread(target=consumer, args=()) +# con1 = threading.Thread(target=consumer, args=()) +# con2 = threading.Thread(target=consumer1, args=()) +# +# pro.start() +# con.start() +# con2.start() +# con1.start() +# pro.join() +# con.join() +# con2.join() +# con1.join() + + +# from multiprocessing import Process, Queue +# import os + +# def run_in_process(queue): +# while True: +# obj = queue.get() +# print("%s %d \n"%(obj,os.getpid())) + +# if __name__ == '__main__': +# queue = Queue() + +# pro1 = Process(target=run_in_process,args=(queue,)) +# pro2 = Process(target=run_in_process,args=(queue,)) +# pro1.start() +# pro2.start() +# while True: +# queue.put('a') + + +import zmq +import random +import time +import os +from multiprocessing import Process + +def push_main(): + context = zmq.Context() + + # Socket to send messages on + sender = context.socket(zmq.PUSH) + sender.bind("tcp://*:5557") + i = 0 + while True: + sender.send(b'hello: %d'%(i)) + print("send %d\n"%(i)) + i+=1 + +def pull_main(): + context = zmq.Context() + + # Socket to receive messages on + receiver = context.socket(zmq.PULL) + receiver.connect("tcp://localhost:5557") + + # Process tasks forever + while True: + s = receiver.recv() + # time.sleep(1) + print("recv %d %s\n"%(os.getpid(),s)) + +if __name__ == '__main__': + push_process = Process(target=push_main) + pull_process1 = Process(target=pull_main) + pull_process2 = Process(target=pull_main) + + push_process.start() + pull_process1.start() + pull_process2.start() + push_process.join() + pull_process1.join() + pull_process2.join() + + + + diff --git a/collector-agent/Test/test_mq.py b/collector-agent/Test/test_mq.py new file mode 100644 index 000000000..c92cc72be --- /dev/null +++ b/collector-agent/Test/test_mq.py @@ -0,0 +1 @@ +import zmq \ No newline at end of file diff --git a/collector-agent/conf/collector.conf b/collector-agent/conf/collector.conf index 1f5eafdd4..64f0916a7 100644 --- a/collector-agent/conf/collector.conf +++ b/collector-agent/conf/collector.conf @@ -23,4 +23,4 @@ Log_Level=ERROR LOG_DIR=/your log dir/ [Agent] # the same as below "pinpoint_php.CollectorHost" -Address=/tmp/collector-agent.sock +Address=0.0.0.0@8080 diff --git a/collector-agent/run_first.sh b/collector-agent/init_python_env.sh similarity index 79% rename from collector-agent/run_first.sh rename to collector-agent/init_python_env.sh index b9e9d436f..ea78715d4 100755 --- a/collector-agent/run_first.sh +++ b/collector-agent/init_python_env.sh @@ -1,3 +1,4 @@ #!/bin/bash pip install grpcio-tools python -m grpc_tools.protoc -I./Proto/grpc --python_out=./Proto/grpc --grpc_python_out=./Proto/grpc ./Proto/grpc/*.proto +# /home/test/tools/Python-3.8.0/Tools/gdb/ \ No newline at end of file diff --git a/collector-agent/requirements.txt b/collector-agent/requirements.txt index e0f771f8c..2f7405927 100644 --- a/collector-agent/requirements.txt +++ b/collector-agent/requirements.txt @@ -1,8 +1,10 @@ gevent==1.4.0 greenlet==0.4.15 -grpcio==1.25.0rc1 -grpcio-tools==1.25.0rc1 +grpcio==1.26.0 +grpcio-tools==1.26.0 protobuf==3.9.1 psutil==5.6.3 six==1.12.0 thrift==0.11.0 +pyzmq==18.1.1 + diff --git a/collector-agent/run.py b/collector-agent/run.py index 5bfedde8b..09adb2aa9 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -19,8 +19,7 @@ proto_class = os.getcwd()+'/Proto/grpc' sys.path.append(proto_class) -from gevent.event import Event -import gevent,signal +import gevent from CollectorAgent.CollectorAgentConf import CollectorAgentConf from Common.Config import CAConfig diff --git a/collector-agent/run.sh b/collector-agent/run.sh new file mode 100755 index 000000000..fcb60164c --- /dev/null +++ b/collector-agent/run.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +PPATH=$(dirname "$0") +#export GRPC_TRACE=all +#export GRPC_VERBOSITY=INFO +#export GODEBUG=http2debug=1 +export GRPC_ENABLE_FORK_SUPPORT=1 +python $PPATH/run.py From defe5a109dda879d4f107cc9b1778c827ffe4e80 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Thu, 16 Jan 2020 09:37:41 +0800 Subject: [PATCH 19/45] backup should be merged in further --- .../CollectorAgent/GrpcAgentImplement.py | 112 ++++++++++++------ collector-agent/CollectorAgent/GrpcSpan.py | 21 ++-- collector-agent/Test/poll_files.py | 26 ++++ collector-agent/run.sh | 2 +- 4 files changed, 113 insertions(+), 48 deletions(-) create mode 100644 collector-agent/Test/poll_files.py diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index d94bc5ff1..9207cc2be 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -17,6 +17,42 @@ from multiprocessing import Process,Queue class GrpcAgentImplement(PinpointAgent): + + class SpanSender(object): + def __init__(self,span_addr,agent_meta): + self.span_addr, self.agent_meta = (span_addr,agent_meta) + self.span_queue = Queue(500) + self.sender_process = Process(target=self.spanSenderMain, args=(self.span_queue,)) + self.sender_process.name = "span sender process" + + TCLogger.info("Successfully create a Span Sender") + + def start(self): + self.sender_process.start() + + def sender(self,spanMesg): + + try: + self.span_queue.put(spanMesg,False) + # TCLogger.debug("inqueue size:%d", self.span_queue.qsize()) + except Full as e: + # TCLogger.error("send span failed: with queue is FUll%s", e) + return False + except Exception as e: + TCLogger.error("send span failed: %s",e) + return False; + return True + + def stopSelf(self): + self.sender_process.terminate() + self.sender_process.join() + + def spanSenderMain(self,queue): + + span_client = GrpcSpan(self.span_addr, self.agent_meta) + span_client.startSender(queue) + + def __init__(self, ac, app_id, app_name, serviceType=PHP): assert ac.collector_type == SUPPORT_GRPC @@ -37,10 +73,11 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): import os self.agentHost = AgentHost() - self.span_queue = Queue(10000) - self.max_span_sender_size = 10 - self.span_process = [] - self._startSpanSenderProcess() + self.max_span_sender_size = 5 + self.span_sender_list = [] + self.sender_index= 0 + self._startSpanSender() + self.iter_sender_list = iter(self.span_sender_list) self.agent_client = GrpcAgent(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), self.agent_addr, self.agent_meta) self.meta_client = GrpcMeta(self.agent_addr, self.agent_meta) @@ -51,48 +88,55 @@ def start(self): pass + def _sendSpan(self,spanMesg): + + # for span_sender in self.span_sender_list: + # if span_sender.sender(spanMesg): + # return True + + max_checking = len(self.span_sender_list) + + while self.span_sender_list[self.sender_index].sender(spanMesg) == False: + TCLogger.debug("index %d is busy",self.sender_index) + self.sender_index += 1 + if self.sender_index >= len(self.span_sender_list): + self.sender_index = 0 + max_checking -=1 + if max_checking == 0: + return False + + + TCLogger.debug(" use index:%d",self.sender_index) + self.sender_index += 1 + if self.sender_index >= len(self.span_sender_list): + self.sender_index = 0 + + return True + def sendSpan(self, stack): pSpan = self.span_factory.make_span(stack) spanMesg = PSpanMessage(span = pSpan) - - try: - self.span_queue.put(spanMesg,False) - TCLogger.debug("inqueue size:%d",self.span_queue.qsize()) - except Exception as e: - TCLogger.info("send queue is full,span process count:%s",len(self.span_process)) - if len(self.span_process)< self.max_span_sender_size: - self._startSpanSenderProcess() + if self._sendSpan(spanMesg): + return True + else: + TCLogger.info("send is block, try to create span process count:%s",len(self.span_sender_list)) + if len(self.span_sender_list)< self.max_span_sender_size: + self._startSpanSender() else: TCLogger.warn("span_processes extend to max size") return True - def _startSpanSenderProcess(self): - - def spanSenderMain(queue): - - # stop gevent - # try_to_recycle_the_event_hub() + def _startSpanSender(self): + spanSender = GrpcAgentImplement.SpanSender(self.span_addr, self.agent_meta) + spanSender.start() + self.span_sender_list.append(spanSender) - # start grpcspan - span_client = GrpcSpan(self.span_addr, self.agent_meta, self.max_pending_sz) - span_client.startSender(queue) - - sender_process = Process(target=spanSenderMain,args=(self.span_queue,)) - sender_process.name = "span sender process" - sender_process.start() - self.span_process.append(sender_process) - TCLogger.info("Successfully create a Span Sender") def stop(self): - - for pro in self.span_process: - assert isinstance(pro,Process) - pro.terminate() - for pro in self.span_process: - assert isinstance(pro, Process) - pro.join() + for sender in self.span_sender_list: + sender.stopSelf() def updateApiMeta(self,name,type=API_DEFAULT): diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 71dc75fcb..ca90b98d9 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -12,8 +12,8 @@ class GrpcSpan(GrpcClient): - def __init__(self,address,meta=None,maxPending=-1,timeout=10,max_span_sender = 10): - super().__init__(address, meta, maxPending) + def __init__(self,address,meta=None): + super().__init__(address, meta) # self.is_ok = True self.span_stub = Service_pb2_grpc.SpanStub(self.channel) @@ -33,18 +33,13 @@ def channel_set_error(self): self.is_ok = False def startSender(self,queue): - # while True: - # span = queue.get() - # TCLogger.debug("log_span_transit_count:%d rest:%d", self.log_span_transit_count, queue.qsize()) - # self.log_span_transit_count += 1 - - # def get_span(): # while True: # # yield PSpan() # # TCLogger.debug("log_span_transit_count:%d ",self.log_span_transit_count) # # self.log_span_transit_count+=1 + # TCLogger.debug("try to get") # span = queue.get() # self.log_span_transit_count+=1 # TCLogger.debug("log_span_transit_count:%d rest:%d",self.log_span_transit_count,queue.qsize()) @@ -62,20 +57,20 @@ def startSender(self,queue): # traceback.print_exc() # time.sleep(10) - + # spans = [] - + # def get_N_span(queue,N): try: while N >0: - spans.append(queue.get(block=False)) + spans.append(queue.get(timeout=2)) N -= 1 except Empty as e: TCLogger.debug("get span from queue timeout") - + # queue.task_done() while True: try: - get_N_span(queue,10240) + get_N_span(queue,1024) TCLogger.warn("get %s spans %d",len(spans),queue.qsize()) response = self.span_stub.SendSpan(iter(spans)) TCLogger.warn("log_span_transit_count %d span %s",len(spans),response) diff --git a/collector-agent/Test/poll_files.py b/collector-agent/Test/poll_files.py new file mode 100644 index 000000000..64e8df7f5 --- /dev/null +++ b/collector-agent/Test/poll_files.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 1/15/20 + +import sys +import time +import logging +from watchdog.observers import Observer +from watchdog.events import LoggingEventHandler + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO, + format='%(asctime)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + path =sys.argv[1] if len(sys.argv) > 1 else '.' + event_handler = LoggingEventHandler() + observer = Observer() + observer.schedule(event_handler, path, recursive=True) + observer.start() + try: + while True: + time.sleep(1) + + except KeyboardInterrupt: + observer.stop() + observer.join() \ No newline at end of file diff --git a/collector-agent/run.sh b/collector-agent/run.sh index fcb60164c..145af6a4c 100755 --- a/collector-agent/run.sh +++ b/collector-agent/run.sh @@ -5,4 +5,4 @@ PPATH=$(dirname "$0") #export GRPC_VERBOSITY=INFO #export GODEBUG=http2debug=1 export GRPC_ENABLE_FORK_SUPPORT=1 -python $PPATH/run.py +python -m plop.collector -f flamegraph $PPATH/run.py From 06a62c1ff7577e97a1d7d216b2cd04b5c624bf68 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Fri, 17 Jan 2020 14:51:53 +0800 Subject: [PATCH 20/45] Extend thread to process --- .../CollectorAgent/GrpcAgentImplement.py | 16 ++----- collector-agent/CollectorAgent/GrpcSpan.py | 47 +++++-------------- 2 files changed, 16 insertions(+), 47 deletions(-) diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 9207cc2be..92a0fff2e 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -21,7 +21,7 @@ class GrpcAgentImplement(PinpointAgent): class SpanSender(object): def __init__(self,span_addr,agent_meta): self.span_addr, self.agent_meta = (span_addr,agent_meta) - self.span_queue = Queue(500) + self.span_queue = Queue(5000) self.sender_process = Process(target=self.spanSenderMain, args=(self.span_queue,)) self.sender_process.name = "span sender process" @@ -34,9 +34,9 @@ def sender(self,spanMesg): try: self.span_queue.put(spanMesg,False) - # TCLogger.debug("inqueue size:%d", self.span_queue.qsize()) + TCLogger.debug("inqueue size:%d", self.span_queue.qsize()) except Full as e: - # TCLogger.error("send span failed: with queue is FUll%s", e) + TCLogger.error("send span failed: with queue is FUll%s", e) return False except Exception as e: TCLogger.error("send span failed: %s",e) @@ -73,7 +73,7 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): import os self.agentHost = AgentHost() - self.max_span_sender_size = 5 + self.max_span_sender_size = 2 self.span_sender_list = [] self.sender_index= 0 self._startSpanSender() @@ -90,14 +90,10 @@ def start(self): def _sendSpan(self,spanMesg): - # for span_sender in self.span_sender_list: - # if span_sender.sender(spanMesg): - # return True - max_checking = len(self.span_sender_list) while self.span_sender_list[self.sender_index].sender(spanMesg) == False: - TCLogger.debug("index %d is busy",self.sender_index) + TCLogger.debug("sender index %d is busy",self.sender_index) self.sender_index += 1 if self.sender_index >= len(self.span_sender_list): self.sender_index = 0 @@ -105,8 +101,6 @@ def _sendSpan(self,spanMesg): if max_checking == 0: return False - - TCLogger.debug(" use index:%d",self.sender_index) self.sender_index += 1 if self.sender_index >= len(self.span_sender_list): self.sender_index = 0 diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index ca90b98d9..989d0078f 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -33,52 +33,27 @@ def channel_set_error(self): self.is_ok = False def startSender(self,queue): - - # def get_span(): - # while True: - # # yield PSpan() - # # TCLogger.debug("log_span_transit_count:%d ",self.log_span_transit_count) - # # self.log_span_transit_count+=1 - # TCLogger.debug("try to get") - # span = queue.get() - # self.log_span_transit_count+=1 - # TCLogger.debug("log_span_transit_count:%d rest:%d",self.log_span_transit_count,queue.qsize()) - # if span is not None: - # yield span - # else: - # TCLogger.error("why span queue return None") - # - # while True: - # try: - # response = self.span_stub.SendSpan(get_span()) - # TCLogger.warn("Send %d span %s",response) - # except Exception as e: - # import traceback - # traceback.print_exc() - # time.sleep(10) - - # spans = [] - # def get_N_span(queue,N): + i = 0 try: - while N >0: + while N > i: spans.append(queue.get(timeout=2)) - N -= 1 + i+=1 except Empty as e: TCLogger.debug("get span from queue timeout") - # queue.task_done() + return True if i>0 else False + while True: try: - get_N_span(queue,1024) - TCLogger.warn("get %s spans %d",len(spans),queue.qsize()) - response = self.span_stub.SendSpan(iter(spans)) - TCLogger.warn("log_span_transit_count %d span %s",len(spans),response) - spans.clear() + if not get_N_span(queue,10240): + continue + self.span_stub.SendSpan(iter(spans)) except Exception as e: - import traceback - traceback.print_exc() + TCLogger.error("span channel, can't work:exception:%s",e) time.sleep(10) + finally: + spans.clear() From 3bf31368eb03b096b2a39a7e66936ef7dc06428b Mon Sep 17 00:00:00 2001 From: liumingyi Date: Sun, 19 Jan 2020 13:46:34 +0800 Subject: [PATCH 21/45] For test --- collector-agent/CollectorAgent/GrpcAgent.py | 38 ++++++++++++------- .../CollectorAgent/GrpcAgentImplement.py | 26 ++++++------- collector-agent/CollectorAgent/GrpcClient.py | 2 +- collector-agent/CollectorAgent/GrpcSpan.py | 10 +++-- .../CollectorAgent/ThriftAgentImplement.py | 2 +- collector-agent/Events/StreamServerLayer.py | 1 - .../PinpointAgent/AppManagement.py | 2 +- .../PinpointAgent/PinpointAgent.py | 2 +- collector-agent/init_python_env.sh | 3 +- collector-agent/requirements.txt | 3 +- 10 files changed, 49 insertions(+), 40 deletions(-) diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index d33462da6..dfbed96c8 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -13,7 +13,7 @@ class GrpcAgent(GrpcClient): PINGID=0 - def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_timeout=10): + def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,timeout=10): super().__init__(address,meta,maxPending) self.hostname = hostname self.ip = ip @@ -24,14 +24,12 @@ def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,ping_tim self.pingid = GrpcAgent.PINGID GrpcAgent.PINGID += 1 self.ping_meta = meta.append(('socketid', str(GrpcAgent.PINGID))) - self.ping_timeout = ping_timeout - self._registerAgent() + self.timeout = timeout + self._register() self.is_ok = False def channel_set_ready(self): self.is_ok =True - #pass - # self._register_agent() def channel_set_idle(self): # self._register_agent() @@ -39,18 +37,33 @@ def channel_set_idle(self): def channel_set_error(self): self.is_ok =False - # self._register_agent() + + + def _register(self): + # start a thread to handle register + self.agent_thread = threading.Thread(target=self._registerAgent) + self.agent_thread.start() def _registerAgent(self): - assert isinstance(self.agentinfo,PAgentInfo) - call_future = self.stub.RequestAgentInfo.future(self.agentinfo,wait_for_ready=True) - call_future.add_done_callback(self.reponseAgentInfoCallback) - TCLogger.debug("register agent %s and meta %s %d",self.agentinfo,self.meta,threading.get_ident()) + while True: + try: + self.stub.RequestAgentInfo(self.agentinfo, wait_for_ready=True) + except Exception as e: + TCLogger.warn("pinpoint collector is not available") + continue + + iter_response = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) + try: + for response in iter_response: + TCLogger.debug('get ping response %s', response) + except Exception as e: + TCLogger.error("ping response abort with exception %s", e) + time.sleep(self.timeout) def reponseAgentInfoCallback(self, future): if future.exception(): - TCLogger.error("agent catch exception %s. it will sleep 3 and try again",future.exception()) + TCLogger.error("agent catch exception %s.",future.exception()) return if future.result(): @@ -63,14 +76,13 @@ def _pingPPing(self): ping = PPing() TCLogger.debug("%s send ping %d",self,threading.get_ident()) yield ping - time.sleep(self.ping_timeout) + time.sleep(self.timeout) def _startPingThread(self): # create ping stub iter_reponse = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) self.ping_reponse_task = threading.Thread(target=self._pingResponse, args=(iter_reponse,)) - self.ping_reponse_task.setName("collect-agent-ping-thread") self.ping_reponse_task.start() def _pingResponse(self, response_iter): diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 92a0fff2e..942702fee 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -3,14 +3,13 @@ # Created by eeliu at 10/16/19 from queue import Full - +from setproctitle import setproctitle from CollectorAgent.GrpcAgent import GrpcAgent from CollectorAgent.GrpcMeta import GrpcMeta from CollectorAgent.GrpcSpanFactory import GrpcSpanFactory from CollectorAgent.GrpcSpan import GrpcSpan from Common.AgentHost import AgentHost from Common.Logger import TCLogger -from Events.util import try_to_recycle_the_event_hub from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP, SUPPORT_GRPC, API_DEFAULT from Span_pb2 import PSpanMessage @@ -19,12 +18,13 @@ class GrpcAgentImplement(PinpointAgent): class SpanSender(object): - def __init__(self,span_addr,agent_meta): - self.span_addr, self.agent_meta = (span_addr,agent_meta) + def __init__(self,span_addr,appid,appname,starttime): + self.agent_meta = [('starttime',str(starttime) ),('agentid', appid),('applicationname', appname)] + self.agent_id = appid + self.agent_name = appname + self.span_addr = span_addr self.span_queue = Queue(5000) self.sender_process = Process(target=self.spanSenderMain, args=(self.span_queue,)) - self.sender_process.name = "span sender process" - TCLogger.info("Successfully create a Span Sender") def start(self): @@ -34,13 +34,12 @@ def sender(self,spanMesg): try: self.span_queue.put(spanMesg,False) - TCLogger.debug("inqueue size:%d", self.span_queue.qsize()) except Full as e: TCLogger.error("send span failed: with queue is FUll%s", e) return False except Exception as e: TCLogger.error("send span failed: %s",e) - return False; + return False return True def stopSelf(self): @@ -48,7 +47,7 @@ def stopSelf(self): self.sender_process.join() def spanSenderMain(self,queue): - + setproctitle("python run.py [%s-%s] spanSender" % ( self.agent_id, self.agent_name)) span_client = GrpcSpan(self.span_addr, self.agent_meta) span_client.startSender(queue) @@ -62,9 +61,7 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): ('applicationname',app_name)] self.startTimeStamp = ac.startTimestamp - self.app_name = app_name self.max_pending_sz = ac.max_pending_size - self.app_id = app_id self.write_queue_ofs = 0 self.span_buff=([],[]) self.agent_addr = ac.CollectorAgentIp+':' + str(ac.CollectorAgentPort) @@ -107,9 +104,9 @@ def _sendSpan(self,spanMesg): return True - def sendSpan(self, stack): + def sendSpan(self, stack,body): pSpan = self.span_factory.make_span(stack) - spanMesg = PSpanMessage(span = pSpan) + spanMesg = PSpanMessage(span=pSpan) if self._sendSpan(spanMesg): return True else: @@ -122,12 +119,11 @@ def sendSpan(self, stack): return True def _startSpanSender(self): - spanSender = GrpcAgentImplement.SpanSender(self.span_addr, self.agent_meta) + spanSender = GrpcAgentImplement.SpanSender(self.span_addr, self.app_id,self.app_name,self.startTimeStamp) spanSender.start() self.span_sender_list.append(spanSender) - def stop(self): for sender in self.span_sender_list: sender.stopSelf() diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 8c3f88273..910fd9a4f 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -89,7 +89,7 @@ def _channel_state_change(self, activity): self.channel_set_ready() elif activity == grpc.ChannelConnectivity.IDLE: self.channel_set_idle() - # TCLogger.debug("channel state change %s dst:%s",activity,self.address) + TCLogger.debug("channel state change %s dst:%s",activity,self.address) def channel_set_ready(self): raise NotImplemented() diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 989d0078f..bde545ada 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -7,8 +7,8 @@ from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger import time +import traceback -from Span_pb2 import PSpan class GrpcSpan(GrpcClient): @@ -38,19 +38,21 @@ def get_N_span(queue,N): i = 0 try: while N > i: - spans.append(queue.get(timeout=2)) + spans.append(queue.get(timeout=0.005)) i+=1 except Empty as e: - TCLogger.debug("get span from queue timeout") + pass + # TCLogger.debug("get span from queue timeout") return True if i>0 else False while True: try: - if not get_N_span(queue,10240): + if not get_N_span(queue,1024): continue self.span_stub.SendSpan(iter(spans)) except Exception as e: TCLogger.error("span channel, can't work:exception:%s",e) + traceback.print_exc(); time.sleep(10) finally: spans.clear() diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index ab461784b..45d130147 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -141,7 +141,7 @@ def updateStringMeta(self,name): self.string_metas[name] = meta return meta - def sendSpan(self,stack): + def sendSpan(self,stack,body): ''' :param dict stack: :return: diff --git a/collector-agent/Events/StreamServerLayer.py b/collector-agent/Events/StreamServerLayer.py index 227ee86fb..46e367aee 100644 --- a/collector-agent/Events/StreamServerLayer.py +++ b/collector-agent/Events/StreamServerLayer.py @@ -140,7 +140,6 @@ def handleClientRead(self, client): :param self.Client client: :return: ''' - TCLogger.debug("client:%d read event",client.socket.fileno()) while True: len = client.recv(self.in_msg_cb) if len > 0:## read again diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 88cf67f7b..615000172 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -72,7 +72,7 @@ def handle_front_agent_data(self,client,type,body): ft = stack['FT'] app = self.find_app(appid,appname,ft) - app.sendSpan(stack) + app.sendSpan(stack,body) def tell_whoami(self): return { diff --git a/collector-agent/PinpointAgent/PinpointAgent.py b/collector-agent/PinpointAgent/PinpointAgent.py index 2f6eee9c8..c7c15d8b4 100644 --- a/collector-agent/PinpointAgent/PinpointAgent.py +++ b/collector-agent/PinpointAgent/PinpointAgent.py @@ -27,7 +27,7 @@ def __init__(self,app_id,app_name,serviceType=PHP): def start(self): raise NotImplementedError() - def sendSpan(self,stack): + def sendSpan(self,stack,body): raise NotImplementedError() def stop(self): diff --git a/collector-agent/init_python_env.sh b/collector-agent/init_python_env.sh index ea78715d4..607993753 100755 --- a/collector-agent/init_python_env.sh +++ b/collector-agent/init_python_env.sh @@ -1,4 +1,3 @@ #!/bin/bash pip install grpcio-tools -python -m grpc_tools.protoc -I./Proto/grpc --python_out=./Proto/grpc --grpc_python_out=./Proto/grpc ./Proto/grpc/*.proto -# /home/test/tools/Python-3.8.0/Tools/gdb/ \ No newline at end of file +python -m grpc_tools.protoc -I./Proto/grpc --python_out=./Proto/grpc --grpc_python_out=./Proto/grpc ./Proto/grpc/*.proto \ No newline at end of file diff --git a/collector-agent/requirements.txt b/collector-agent/requirements.txt index 2f7405927..c5b373b4d 100644 --- a/collector-agent/requirements.txt +++ b/collector-agent/requirements.txt @@ -6,5 +6,6 @@ protobuf==3.9.1 psutil==5.6.3 six==1.12.0 thrift==0.11.0 -pyzmq==18.1.1 +setproctitle==1.1.10 + From 01c00aedb492d00e87bd10dd96e55af749995ef5 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 20 Jan 2020 10:09:28 +0800 Subject: [PATCH 22/45] PR --- collector-agent/CollectorAgent/GrpcSpan.py | 66 +------------------ .../CollectorAgent/ThriftAgentImplement.py | 6 -- collector-agent/conf/collector.conf | 2 +- 3 files changed, 3 insertions(+), 71 deletions(-) diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index bde545ada..b7fd13d7f 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -52,69 +52,7 @@ def get_N_span(queue,N): self.span_stub.SendSpan(iter(spans)) except Exception as e: TCLogger.error("span channel, can't work:exception:%s",e) - traceback.print_exc(); + traceback.print_exc() time.sleep(10) finally: - spans.clear() - - - - - # - # def sendSpan(self, spanMesg): - # if self.is_ok: - # if self.queue.qsize() > self.max_pending_size: - # # TCLogger.warning("span channel is busy. Drop span count =%d", self.droped_span_count) - # # self.droped_span_count+=1 - # - # # return False - # self.startSpan() - # - # self.queue.put(spanMesg) - # TCLogger.debug("span channel is OK,msg:%d", self.queue.qsize()) - # return True - # elif self.span_channel_wait == True: - # return False - # else: - # # Channel is not available,try to wait and try again - # TCLogger.info("span channel is crash, sleep:%sS and try to reconnect", self.span_recover_time_out) - # self.timer = self.loop.timer(self.span_recover_time_out) - # self.timer.start(self.startSpan) - # self.span_channel_wait = True - # return False - # - # - # def _spanResponse(self, result): - # TCLogger.debug("send span is over. As %s",result) - # self.is_ok = False - # self.span_channel_wait = False - # - # def _getSpan(self): - # TCLogger.debug("stream get span, self id: %d",threading.get_ident()) - # while True: - # span = self._pullSpanQueue() - # try: - # if span is not None: - # self.span_count+=1 - # TCLogger.debug("send span count:%d",self.span_count) - # yield span - # else: - # TCLogger.error("get span failed, checking the _generate_span") - # break - # except Exception as e: - # TCLogger.error("get_span catch %s",e) - # - # def _pullSpanQueue(self): - # span = self.queue.get() - # return span - # - # def startSpan(self): - # - # # self.future = self.span_stub.SendSpan.future(self._getSpan()) - # # self.is_ok = True - # # self.future.add_done_callback(self._spanResponse) - # TCLogger.debug("start span address: %s",self.address) - # thread = threading.Thread(target=self._getSpan,args={}) - # thread.setName("span thread") - # thread.start() - # self.span_threads.append(thread) \ No newline at end of file + spans.clear() \ No newline at end of file diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index 45d130147..f8c2d75c5 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -15,13 +15,7 @@ #------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- -# import json import os -# import struct -# import time -# -# import gevent - from CollectorAgent.TPackets import ControlMessageDecoder, ControlMessage, HandShakeMessage from CollectorAgent.ThriftSpanFactory import ThriftSpanFactory from Common.AgentHost import AgentHost diff --git a/collector-agent/conf/collector.conf b/collector-agent/conf/collector.conf index 64f0916a7..1f5eafdd4 100644 --- a/collector-agent/conf/collector.conf +++ b/collector-agent/conf/collector.conf @@ -23,4 +23,4 @@ Log_Level=ERROR LOG_DIR=/your log dir/ [Agent] # the same as below "pinpoint_php.CollectorHost" -Address=0.0.0.0@8080 +Address=/tmp/collector-agent.sock From c73d9a43e7a1bd88a96eb9fbaffe3a5c6d4b3e0c Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 20 Jan 2020 13:13:48 +0800 Subject: [PATCH 23/45] add copyright --- PHP/pinpoint_php_ext/pinpoint_php.cpp | 2 +- .../CollectorAgent/CollectorAgentConf.py | 44 +++++++++++------- collector-agent/CollectorAgent/Grpc.py | 32 +++++++++++++ collector-agent/CollectorAgent/GrpcAPIMeta.py | 43 +++++++++++------- collector-agent/CollectorAgent/GrpcAgent.py | 30 +++++++++++++ .../CollectorAgent/GrpcAgentImplement.py | 34 ++++++++++++++ .../CollectorAgent/GrpcAgentStateManager.py | 44 +++++++++++------- collector-agent/CollectorAgent/GrpcClient.py | 34 ++++++++++++++ collector-agent/CollectorAgent/GrpcMeta.py | 34 ++++++++++++++ collector-agent/CollectorAgent/GrpcSpan.py | 34 ++++++++++++++ .../CollectorAgent/GrpcSpanFactory.py | 31 +++++++++++++ collector-agent/CollectorAgent/Protocol.py | 43 +++++++++++------- collector-agent/CollectorAgent/TCGenerator.py | 45 ++++++++++++------- collector-agent/CollectorAgent/TPackets.py | 43 +++++++++++------- .../CollectorAgent/ThriftAgentImplement.py | 44 +++++++++++------- .../CollectorAgent/ThriftSpanFactory.py | 34 ++++++++++++++ collector-agent/Common/AgentHost.py | 43 +++++++++++------- collector-agent/Common/Config.py | 43 +++++++++++------- collector-agent/Common/Logger.py | 43 +++++++++++------- collector-agent/Events/DgramLayer.py | 43 +++++++++++------- collector-agent/Events/GTimer.py | 34 ++++++++++++++ collector-agent/Events/State.py | 43 +++++++++++------- collector-agent/Events/StreamClientLayer.py | 43 +++++++++++------- collector-agent/Events/StreamServerLayer.py | 43 +++++++++++------- collector-agent/Events/TrainsLayer.py | 43 +++++++++++------- collector-agent/Events/__init__.py | 43 +++++++++++------- collector-agent/Events/util.py | 34 ++++++++++++++ collector-agent/PHPAgent/FrontAgent.py | 43 +++++++++++------- collector-agent/PHPAgent/PHPAgentConf.py | 43 +++++++++++------- collector-agent/PHPAgent/SpanFactory.py | 34 ++++++++++++++ collector-agent/PHPAgent/Type.py | 43 +++++++++++------- collector-agent/PHPAgent/__init__.py | 43 +++++++++++------- .../PinpointAgent/AppManagement.py | 34 ++++++++++++++ .../PinpointAgent/PinpointAgent.py | 44 +++++++++++------- collector-agent/PinpointAgent/Type.py | 44 +++++++++++------- collector-agent/PinpointAgent/__init__.py | 44 +++++++++++------- collector-agent/Test/test_mq.py | 16 +++++++ collector-agent/Test/test_util.py | 32 ++++++------- collector-agent/run.py | 32 ++++++------- 39 files changed, 1102 insertions(+), 376 deletions(-) diff --git a/PHP/pinpoint_php_ext/pinpoint_php.cpp b/PHP/pinpoint_php_ext/pinpoint_php.cpp index c2695808c..af07414b5 100644 --- a/PHP/pinpoint_php_ext/pinpoint_php.cpp +++ b/PHP/pinpoint_php_ext/pinpoint_php.cpp @@ -534,7 +534,7 @@ PHP_RINIT_FUNCTION(pinpoint_php) { #if defined(COMPILE_DL_PINPIOINT_PHP) && defined(ZTS) - ZEND_TSRMLS_CACHE_UPDATE();2 + ZEND_TSRMLS_CACHE_UPDATE(); #endif if(PPG(root) == NULL){ diff --git a/collector-agent/CollectorAgent/CollectorAgentConf.py b/collector-agent/CollectorAgent/CollectorAgentConf.py index bf244bf6a..7bacd0fd3 100644 --- a/collector-agent/CollectorAgent/CollectorAgentConf.py +++ b/collector-agent/CollectorAgent/CollectorAgentConf.py @@ -1,20 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ import time import Common diff --git a/collector-agent/CollectorAgent/Grpc.py b/collector-agent/CollectorAgent/Grpc.py index 81e2b0b9e..57404742a 100644 --- a/collector-agent/CollectorAgent/Grpc.py +++ b/collector-agent/CollectorAgent/Grpc.py @@ -1,5 +1,37 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 10/21/19+ diff --git a/collector-agent/CollectorAgent/GrpcAPIMeta.py b/collector-agent/CollectorAgent/GrpcAPIMeta.py index 2b8bc380e..391f06c6d 100644 --- a/collector-agent/CollectorAgent/GrpcAPIMeta.py +++ b/collector-agent/CollectorAgent/GrpcAPIMeta.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from CollectorAgent.Protocol import CollectorPro from CollectorAgent.TPackets import Packet from PinpointAgent.Type import PacketType, STRING_META_DATA, API_META_DATA, API_UNDEFINED diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index dfbed96c8..a0d5beda9 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -1,5 +1,35 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + # Created by eeliu at 10/21/19 from grpc import Future diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 942702fee..0f5a34ca0 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 10/16/19 from queue import Full diff --git a/collector-agent/CollectorAgent/GrpcAgentStateManager.py b/collector-agent/CollectorAgent/GrpcAgentStateManager.py index 5c44ead28..a0cf43868 100644 --- a/collector-agent/CollectorAgent/GrpcAgentStateManager.py +++ b/collector-agent/CollectorAgent/GrpcAgentStateManager.py @@ -1,20 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ import psutil from CollectorAgent.Protocol import CollectorPro diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 910fd9a4f..6a0cd8cb7 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 10/18/19 import collections import grpc diff --git a/collector-agent/CollectorAgent/GrpcMeta.py b/collector-agent/CollectorAgent/GrpcMeta.py index dff3351a1..523d9cbf9 100644 --- a/collector-agent/CollectorAgent/GrpcMeta.py +++ b/collector-agent/CollectorAgent/GrpcMeta.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 11/5/19 import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index b7fd13d7f..e1d344e3a 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 10/31/19 from queue import Empty diff --git a/collector-agent/CollectorAgent/GrpcSpanFactory.py b/collector-agent/CollectorAgent/GrpcSpanFactory.py index 5b4db41aa..9d6675620 100644 --- a/collector-agent/CollectorAgent/GrpcSpanFactory.py +++ b/collector-agent/CollectorAgent/GrpcSpanFactory.py @@ -1,6 +1,37 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + # Created by eeliu at 11/7/19 + from google.protobuf.wrappers_pb2 import StringValue from Annotation_pb2 import PAnnotation, PAnnotationValue, PLongIntIntByteByteStringValue diff --git a/collector-agent/CollectorAgent/Protocol.py b/collector-agent/CollectorAgent/Protocol.py index e786a7d53..fe2cf4dd8 100644 --- a/collector-agent/CollectorAgent/Protocol.py +++ b/collector-agent/CollectorAgent/Protocol.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ import random import struct diff --git a/collector-agent/CollectorAgent/TCGenerator.py b/collector-agent/CollectorAgent/TCGenerator.py index fb28d9274..f7b202d48 100644 --- a/collector-agent/CollectorAgent/TCGenerator.py +++ b/collector-agent/CollectorAgent/TCGenerator.py @@ -1,22 +1,37 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + # keyWord ={ # 1:'agentId', # 2:'applicationName', diff --git a/collector-agent/CollectorAgent/TPackets.py b/collector-agent/CollectorAgent/TPackets.py index 723e7a723..4133cafd0 100644 --- a/collector-agent/CollectorAgent/TPackets.py +++ b/collector-agent/CollectorAgent/TPackets.py @@ -1,22 +1,35 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from CollectorAgent.Protocol import * from PinpointAgent.Type import ControlMessageProtocolConstant, PacketType, AgentSocketCode diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index f8c2d75c5..258c01003 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -1,20 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ import os from CollectorAgent.TPackets import ControlMessageDecoder, ControlMessage, HandShakeMessage from CollectorAgent.ThriftSpanFactory import ThriftSpanFactory diff --git a/collector-agent/CollectorAgent/ThriftSpanFactory.py b/collector-agent/CollectorAgent/ThriftSpanFactory.py index f7350abba..e53b4030e 100644 --- a/collector-agent/CollectorAgent/ThriftSpanFactory.py +++ b/collector-agent/CollectorAgent/ThriftSpanFactory.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 11/7/19 from CollectorAgent.Protocol import TransactionId from CollectorAgent.TCGenerator import ThriftProtocolUtil diff --git a/collector-agent/Common/AgentHost.py b/collector-agent/Common/AgentHost.py index 01326198d..52296353d 100644 --- a/collector-agent/Common/AgentHost.py +++ b/collector-agent/Common/AgentHost.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ import socket class AgentHost(object): diff --git a/collector-agent/Common/Config.py b/collector-agent/Common/Config.py index 764364487..a13f83f23 100644 --- a/collector-agent/Common/Config.py +++ b/collector-agent/Common/Config.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ import os import configparser as ConfigParser diff --git a/collector-agent/Common/Logger.py b/collector-agent/Common/Logger.py index db37270f7..4f92812c0 100644 --- a/collector-agent/Common/Logger.py +++ b/collector-agent/Common/Logger.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ import logging def _create_logger(name): diff --git a/collector-agent/Events/DgramLayer.py b/collector-agent/Events/DgramLayer.py index 2c1a8263d..05b8d8d03 100644 --- a/collector-agent/Events/DgramLayer.py +++ b/collector-agent/Events/DgramLayer.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from __future__ import print_function import errno from gevent import socket as asy_socket diff --git a/collector-agent/Events/GTimer.py b/collector-agent/Events/GTimer.py index c44f945c6..2f0e65ff6 100644 --- a/collector-agent/Events/GTimer.py +++ b/collector-agent/Events/GTimer.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 10/21/19 class GTimer(object): diff --git a/collector-agent/Events/State.py b/collector-agent/Events/State.py index 29dc710cc..6de61db37 100644 --- a/collector-agent/Events/State.py +++ b/collector-agent/Events/State.py @@ -1,18 +1,31 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ OK =1 diff --git a/collector-agent/Events/StreamClientLayer.py b/collector-agent/Events/StreamClientLayer.py index 4b1724180..918d0edeb 100644 --- a/collector-agent/Events/StreamClientLayer.py +++ b/collector-agent/Events/StreamClientLayer.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from __future__ import print_function import errno diff --git a/collector-agent/Events/StreamServerLayer.py b/collector-agent/Events/StreamServerLayer.py index 46e367aee..89f8c6d9c 100644 --- a/collector-agent/Events/StreamServerLayer.py +++ b/collector-agent/Events/StreamServerLayer.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from gevent import get_hub from gevent import socket as asy_socket diff --git a/collector-agent/Events/TrainsLayer.py b/collector-agent/Events/TrainsLayer.py index 49b900be6..aa8729211 100644 --- a/collector-agent/Events/TrainsLayer.py +++ b/collector-agent/Events/TrainsLayer.py @@ -1,18 +1,3 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- @@ -23,6 +8,34 @@ E_READ = 4 E_CLOSED = 8 +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from gevent import get_hub class TrainLayer(object): diff --git a/collector-agent/Events/__init__.py b/collector-agent/Events/__init__.py index 2e477ec85..006b96969 100644 --- a/collector-agent/Events/__init__.py +++ b/collector-agent/Events/__init__.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from Events.DgramLayer import DgramLayer from Events.StreamClientLayer import StreamClientLayer from Events.StreamServerLayer import StreamServerLayer diff --git a/collector-agent/Events/util.py b/collector-agent/Events/util.py index fb3685db4..74817fb9c 100644 --- a/collector-agent/Events/util.py +++ b/collector-agent/Events/util.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 1/14/20 import gevent diff --git a/collector-agent/PHPAgent/FrontAgent.py b/collector-agent/PHPAgent/FrontAgent.py index a6767099a..932fcf07c 100644 --- a/collector-agent/PHPAgent/FrontAgent.py +++ b/collector-agent/PHPAgent/FrontAgent.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # coding:utf-8 +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ import json import os import struct diff --git a/collector-agent/PHPAgent/PHPAgentConf.py b/collector-agent/PHPAgent/PHPAgentConf.py index 735b0daa4..2f3cef1e5 100644 --- a/collector-agent/PHPAgent/PHPAgentConf.py +++ b/collector-agent/PHPAgent/PHPAgentConf.py @@ -1,22 +1,35 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ class PHPAgentConf(object): def __init__(self,config): self.Address = config.get('Agent','Address') diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index 6efeef37a..341b80ad9 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 11/6/19 from Common.Logger import TCLogger from Span_pb2 import PSpanMessage diff --git a/collector-agent/PHPAgent/Type.py b/collector-agent/PHPAgent/Type.py index 213c6da90..1f09d6ad5 100644 --- a/collector-agent/PHPAgent/Type.py +++ b/collector-agent/PHPAgent/Type.py @@ -1,19 +1,32 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ RESPONSE_AGENT_INFO = 0 diff --git a/collector-agent/PHPAgent/__init__.py b/collector-agent/PHPAgent/__init__.py index d6b03eaa8..54cc07190 100644 --- a/collector-agent/PHPAgent/__init__.py +++ b/collector-agent/PHPAgent/__init__.py @@ -1,21 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python #coding:utf-8 +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from PHPAgent.FrontAgent import FrontAgent from PHPAgent.PHPAgentConf import PHPAgentConf diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 615000172..511deb643 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -1,5 +1,39 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + + + # Created by eeliu at 9/4/19 import json diff --git a/collector-agent/PinpointAgent/PinpointAgent.py b/collector-agent/PinpointAgent/PinpointAgent.py index c7c15d8b4..af11f1052 100644 --- a/collector-agent/PinpointAgent/PinpointAgent.py +++ b/collector-agent/PinpointAgent/PinpointAgent.py @@ -1,20 +1,34 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ from PinpointAgent.Type import PHP diff --git a/collector-agent/PinpointAgent/Type.py b/collector-agent/PinpointAgent/Type.py index 13dd44e61..81181f312 100644 --- a/collector-agent/PinpointAgent/Type.py +++ b/collector-agent/PinpointAgent/Type.py @@ -1,18 +1,32 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + # encoding: utf-8 APPLICATION_SEND = 1 diff --git a/collector-agent/PinpointAgent/__init__.py b/collector-agent/PinpointAgent/__init__.py index caf15ae98..c266edf43 100644 --- a/collector-agent/PinpointAgent/__init__.py +++ b/collector-agent/PinpointAgent/__init__.py @@ -1,21 +1,35 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + # from PinpointAgent.PinpointAgent import PinpointAgent # from PinpointAgent.AppManagement import AppManagement # __all__=['PinpointAgent','AppManagement'] diff --git a/collector-agent/Test/test_mq.py b/collector-agent/Test/test_mq.py index c92cc72be..86ad9df8b 100644 --- a/collector-agent/Test/test_mq.py +++ b/collector-agent/Test/test_mq.py @@ -1 +1,17 @@ +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + import zmq \ No newline at end of file diff --git a/collector-agent/Test/test_util.py b/collector-agent/Test/test_util.py index 0bcc6d921..42280fa37 100644 --- a/collector-agent/Test/test_util.py +++ b/collector-agent/Test/test_util.py @@ -1,18 +1,20 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + #!/usr/bin/env python from unittest import TestCase diff --git a/collector-agent/run.py b/collector-agent/run.py index 09adb2aa9..20aaa942e 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -1,18 +1,20 @@ -#------------------------------------------------------------------------------- -# Copyright 2019 NAVER Corp -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy -# of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -#------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + #!/usr/bin/env python # -*- coding: UTF-8 -*- import os,sys From 6edadacd8178dc9aecaa9279fba2254091346b7d Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 20 Jan 2020 15:08:00 +0800 Subject: [PATCH 24/45] remove all copyright --- .../CollectorAgent/CollectorAgentConf.py | 14 +------------ collector-agent/CollectorAgent/Grpc.py | 19 ++++++----------- collector-agent/CollectorAgent/GrpcAPIMeta.py | 14 +------------ collector-agent/CollectorAgent/GrpcAgent.py | 17 ++++----------- .../CollectorAgent/GrpcAgentImplement.py | 21 +++++++------------ .../CollectorAgent/GrpcAgentStateManager.py | 14 +------------ collector-agent/CollectorAgent/GrpcClient.py | 21 +++++++------------ collector-agent/CollectorAgent/GrpcMeta.py | 21 +++++++------------ collector-agent/CollectorAgent/GrpcSpan.py | 21 +++++++------------ .../CollectorAgent/GrpcSpanFactory.py | 17 ++++----------- collector-agent/CollectorAgent/Protocol.py | 14 +------------ collector-agent/CollectorAgent/TCGenerator.py | 19 ++++++----------- collector-agent/CollectorAgent/TPackets.py | 14 +------------ .../CollectorAgent/ThriftAgentImplement.py | 14 +------------ .../CollectorAgent/ThriftSpanFactory.py | 21 +++++++------------ collector-agent/Common/AgentHost.py | 14 +------------ collector-agent/Common/Config.py | 14 +------------ collector-agent/Common/Logger.py | 14 +------------ collector-agent/Events/DgramLayer.py | 14 +------------ collector-agent/Events/GTimer.py | 21 +++++++------------ collector-agent/Events/State.py | 14 +------------ collector-agent/Events/StreamClientLayer.py | 14 +------------ collector-agent/Events/StreamServerLayer.py | 14 +------------ collector-agent/Events/TrainsLayer.py | 14 +------------ collector-agent/Events/__init__.py | 14 +------------ collector-agent/Events/util.py | 21 +++++++------------ collector-agent/PHPAgent/FrontAgent.py | 14 +------------ collector-agent/PHPAgent/PHPAgentConf.py | 14 +------------ collector-agent/PHPAgent/SpanFactory.py | 21 +++++++------------ collector-agent/PHPAgent/Type.py | 14 +------------ collector-agent/PHPAgent/__init__.py | 14 +------------ .../PinpointAgent/AppManagement.py | 21 +++++++------------ .../PinpointAgent/PinpointAgent.py | 14 +------------ collector-agent/PinpointAgent/Type.py | 15 ++----------- collector-agent/PinpointAgent/__init__.py | 17 ++++----------- 35 files changed, 118 insertions(+), 455 deletions(-) diff --git a/collector-agent/CollectorAgent/CollectorAgentConf.py b/collector-agent/CollectorAgent/CollectorAgentConf.py index 7bacd0fd3..25108dd6b 100644 --- a/collector-agent/CollectorAgent/CollectorAgentConf.py +++ b/collector-agent/CollectorAgent/CollectorAgentConf.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ import time import Common diff --git a/collector-agent/CollectorAgent/Grpc.py b/collector-agent/CollectorAgent/Grpc.py index 57404742a..2257343ff 100644 --- a/collector-agent/CollectorAgent/Grpc.py +++ b/collector-agent/CollectorAgent/Grpc.py @@ -1,6 +1,10 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +20,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + diff --git a/collector-agent/CollectorAgent/GrpcAPIMeta.py b/collector-agent/CollectorAgent/GrpcAPIMeta.py index 391f06c6d..65bfae69c 100644 --- a/collector-agent/CollectorAgent/GrpcAPIMeta.py +++ b/collector-agent/CollectorAgent/GrpcAPIMeta.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from CollectorAgent.Protocol import CollectorPro from CollectorAgent.TPackets import Packet from PinpointAgent.Type import PacketType, STRING_META_DATA, API_META_DATA, API_UNDEFINED diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index a0d5beda9..508e3fd73 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +18,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + # Created by eeliu at 10/21/19 from grpc import Future diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 0f5a34ca0..4aa8287d0 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/CollectorAgent/GrpcAgentStateManager.py b/collector-agent/CollectorAgent/GrpcAgentStateManager.py index a0cf43868..10004997a 100644 --- a/collector-agent/CollectorAgent/GrpcAgentStateManager.py +++ b/collector-agent/CollectorAgent/GrpcAgentStateManager.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ import psutil from CollectorAgent.Protocol import CollectorPro diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 6a0cd8cb7..4408b3b3f 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/CollectorAgent/GrpcMeta.py b/collector-agent/CollectorAgent/GrpcMeta.py index 523d9cbf9..b609d6466 100644 --- a/collector-agent/CollectorAgent/GrpcMeta.py +++ b/collector-agent/CollectorAgent/GrpcMeta.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index e1d344e3a..4da21bad4 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/CollectorAgent/GrpcSpanFactory.py b/collector-agent/CollectorAgent/GrpcSpanFactory.py index 9d6675620..699a45869 100644 --- a/collector-agent/CollectorAgent/GrpcSpanFactory.py +++ b/collector-agent/CollectorAgent/GrpcSpanFactory.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +18,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + # Created by eeliu at 11/7/19 diff --git a/collector-agent/CollectorAgent/Protocol.py b/collector-agent/CollectorAgent/Protocol.py index fe2cf4dd8..df9a3c555 100644 --- a/collector-agent/CollectorAgent/Protocol.py +++ b/collector-agent/CollectorAgent/Protocol.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ import random import struct diff --git a/collector-agent/CollectorAgent/TCGenerator.py b/collector-agent/CollectorAgent/TCGenerator.py index f7b202d48..74f9b7ebe 100644 --- a/collector-agent/CollectorAgent/TCGenerator.py +++ b/collector-agent/CollectorAgent/TCGenerator.py @@ -2,6 +2,9 @@ # -*- coding: UTF-8 -*- + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -17,19 +20,9 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + # keyWord ={ diff --git a/collector-agent/CollectorAgent/TPackets.py b/collector-agent/CollectorAgent/TPackets.py index 4133cafd0..b1dfc415b 100644 --- a/collector-agent/CollectorAgent/TPackets.py +++ b/collector-agent/CollectorAgent/TPackets.py @@ -2,6 +2,7 @@ # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -17,19 +18,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from CollectorAgent.Protocol import * from PinpointAgent.Type import ControlMessageProtocolConstant, PacketType, AgentSocketCode diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index 258c01003..bb12c9cd1 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ import os from CollectorAgent.TPackets import ControlMessageDecoder, ControlMessage, HandShakeMessage from CollectorAgent.ThriftSpanFactory import ThriftSpanFactory diff --git a/collector-agent/CollectorAgent/ThriftSpanFactory.py b/collector-agent/CollectorAgent/ThriftSpanFactory.py index e53b4030e..83f5bba2f 100644 --- a/collector-agent/CollectorAgent/ThriftSpanFactory.py +++ b/collector-agent/CollectorAgent/ThriftSpanFactory.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/Common/AgentHost.py b/collector-agent/Common/AgentHost.py index 52296353d..de7ce3881 100644 --- a/collector-agent/Common/AgentHost.py +++ b/collector-agent/Common/AgentHost.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ import socket class AgentHost(object): diff --git a/collector-agent/Common/Config.py b/collector-agent/Common/Config.py index a13f83f23..cd360a295 100644 --- a/collector-agent/Common/Config.py +++ b/collector-agent/Common/Config.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ import os import configparser as ConfigParser diff --git a/collector-agent/Common/Logger.py b/collector-agent/Common/Logger.py index 4f92812c0..ac613f5fb 100644 --- a/collector-agent/Common/Logger.py +++ b/collector-agent/Common/Logger.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ import logging def _create_logger(name): diff --git a/collector-agent/Events/DgramLayer.py b/collector-agent/Events/DgramLayer.py index 05b8d8d03..939866e26 100644 --- a/collector-agent/Events/DgramLayer.py +++ b/collector-agent/Events/DgramLayer.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from __future__ import print_function import errno from gevent import socket as asy_socket diff --git a/collector-agent/Events/GTimer.py b/collector-agent/Events/GTimer.py index 2f0e65ff6..b067b1391 100644 --- a/collector-agent/Events/GTimer.py +++ b/collector-agent/Events/GTimer.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/Events/State.py b/collector-agent/Events/State.py index 6de61db37..c91b8444c 100644 --- a/collector-agent/Events/State.py +++ b/collector-agent/Events/State.py @@ -1,5 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -15,17 +16,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ OK =1 diff --git a/collector-agent/Events/StreamClientLayer.py b/collector-agent/Events/StreamClientLayer.py index 918d0edeb..ba9a5bf89 100644 --- a/collector-agent/Events/StreamClientLayer.py +++ b/collector-agent/Events/StreamClientLayer.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from __future__ import print_function import errno diff --git a/collector-agent/Events/StreamServerLayer.py b/collector-agent/Events/StreamServerLayer.py index 89f8c6d9c..b650499b0 100644 --- a/collector-agent/Events/StreamServerLayer.py +++ b/collector-agent/Events/StreamServerLayer.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from gevent import get_hub from gevent import socket as asy_socket diff --git a/collector-agent/Events/TrainsLayer.py b/collector-agent/Events/TrainsLayer.py index aa8729211..be5814622 100644 --- a/collector-agent/Events/TrainsLayer.py +++ b/collector-agent/Events/TrainsLayer.py @@ -8,6 +8,7 @@ E_READ = 4 E_CLOSED = 8 + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,19 +24,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from gevent import get_hub class TrainLayer(object): diff --git a/collector-agent/Events/__init__.py b/collector-agent/Events/__init__.py index 006b96969..8bc29e61b 100644 --- a/collector-agent/Events/__init__.py +++ b/collector-agent/Events/__init__.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from Events.DgramLayer import DgramLayer from Events.StreamClientLayer import StreamClientLayer from Events.StreamServerLayer import StreamServerLayer diff --git a/collector-agent/Events/util.py b/collector-agent/Events/util.py index 74817fb9c..6e8900287 100644 --- a/collector-agent/Events/util.py +++ b/collector-agent/Events/util.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/PHPAgent/FrontAgent.py b/collector-agent/PHPAgent/FrontAgent.py index 932fcf07c..4a2d8da46 100644 --- a/collector-agent/PHPAgent/FrontAgent.py +++ b/collector-agent/PHPAgent/FrontAgent.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # coding:utf-8 + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ import json import os import struct diff --git a/collector-agent/PHPAgent/PHPAgentConf.py b/collector-agent/PHPAgent/PHPAgentConf.py index 2f3cef1e5..a4b553f80 100644 --- a/collector-agent/PHPAgent/PHPAgentConf.py +++ b/collector-agent/PHPAgent/PHPAgentConf.py @@ -2,6 +2,7 @@ # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -17,19 +18,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ class PHPAgentConf(object): def __init__(self,config): self.Address = config.get('Agent','Address') diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index 341b80ad9..8ea1e66e8 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/PHPAgent/Type.py b/collector-agent/PHPAgent/Type.py index 1f09d6ad5..6a32ff326 100644 --- a/collector-agent/PHPAgent/Type.py +++ b/collector-agent/PHPAgent/Type.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,17 +17,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ RESPONSE_AGENT_INFO = 0 diff --git a/collector-agent/PHPAgent/__init__.py b/collector-agent/PHPAgent/__init__.py index 54cc07190..5d883f942 100644 --- a/collector-agent/PHPAgent/__init__.py +++ b/collector-agent/PHPAgent/__init__.py @@ -1,6 +1,7 @@ #!/usr/bin/env python #coding:utf-8 + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from PHPAgent.FrontAgent import FrontAgent from PHPAgent.PHPAgentConf import PHPAgentConf diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 511deb643..103b2e46c 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -3,6 +3,10 @@ + + + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -18,19 +22,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + + + diff --git a/collector-agent/PinpointAgent/PinpointAgent.py b/collector-agent/PinpointAgent/PinpointAgent.py index af11f1052..64c3f85ee 100644 --- a/collector-agent/PinpointAgent/PinpointAgent.py +++ b/collector-agent/PinpointAgent/PinpointAgent.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ from PinpointAgent.Type import PHP diff --git a/collector-agent/PinpointAgent/Type.py b/collector-agent/PinpointAgent/Type.py index 81181f312..2d8b90ed5 100644 --- a/collector-agent/PinpointAgent/Type.py +++ b/collector-agent/PinpointAgent/Type.py @@ -1,3 +1,5 @@ + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -13,19 +15,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ # encoding: utf-8 diff --git a/collector-agent/PinpointAgent/__init__.py b/collector-agent/PinpointAgent/__init__.py index c266edf43..666a6e3b4 100644 --- a/collector-agent/PinpointAgent/__init__.py +++ b/collector-agent/PinpointAgent/__init__.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -16,19 +18,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + + # from PinpointAgent.PinpointAgent import PinpointAgent # from PinpointAgent.AppManagement import AppManagement From 566e29dcca0426e0aa2afcf1966e4b829cb08b31 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 20 Jan 2020 15:14:18 +0800 Subject: [PATCH 25/45] remove all copyright --- .../CollectorAgent/CollectorAgentConf.py | 63 +++--- collector-agent/CollectorAgent/Grpc.py | 12 +- collector-agent/CollectorAgent/GrpcAPIMeta.py | 32 ++-- collector-agent/CollectorAgent/GrpcAgent.py | 39 ++-- .../CollectorAgent/GrpcAgentImplement.py | 72 +++---- .../CollectorAgent/GrpcAgentStateManager.py | 23 +-- collector-agent/CollectorAgent/GrpcClient.py | 45 ++--- collector-agent/CollectorAgent/GrpcMeta.py | 52 ++--- collector-agent/CollectorAgent/GrpcSpan.py | 37 ++-- .../CollectorAgent/GrpcSpanFactory.py | 20 +- collector-agent/CollectorAgent/Protocol.py | 75 ++++---- collector-agent/CollectorAgent/TCGenerator.py | 20 +- collector-agent/CollectorAgent/TPackets.py | 99 +++++----- .../CollectorAgent/ThriftAgentImplement.py | 180 ++++++++---------- .../CollectorAgent/ThriftSpanFactory.py | 24 +-- collector-agent/Common/Config.py | 4 +- collector-agent/Events/DgramLayer.py | 2 + collector-agent/Events/GTimer.py | 17 +- collector-agent/Events/State.py | 1 + collector-agent/Events/StreamServerLayer.py | 1 - collector-agent/Events/TrainsLayer.py | 1 - collector-agent/Events/util.py | 17 +- collector-agent/PHPAgent/FrontAgent.py | 5 +- collector-agent/PHPAgent/PHPAgentConf.py | 1 - collector-agent/PHPAgent/SpanFactory.py | 14 -- .../PinpointAgent/AppManagement.py | 13 -- collector-agent/PinpointAgent/Type.py | 34 ++-- collector-agent/PinpointAgent/__init__.py | 2 - collector-agent/Test/test_mq.py | 17 +- collector-agent/Test/test_util.py | 24 +-- collector-agent/run.py | 21 +- 31 files changed, 381 insertions(+), 586 deletions(-) diff --git a/collector-agent/CollectorAgent/CollectorAgentConf.py b/collector-agent/CollectorAgent/CollectorAgentConf.py index 25108dd6b..f9e12aafd 100644 --- a/collector-agent/CollectorAgent/CollectorAgentConf.py +++ b/collector-agent/CollectorAgent/CollectorAgentConf.py @@ -19,93 +19,92 @@ # ------------------------------------------------------------------------------ import time -import Common +from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement +from CollectorAgent.ThriftAgentImplement import ThriftAgentImplement from Common.Logger import set_logger_file, set_logger_level, logger_enable_console from PinpointAgent.Type import SUPPORT_THRIFT, SUPPORT_GRPC -from CollectorAgent.ThriftAgentImplement import ThriftAgentImplement -from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement + AGENT_VERSION = '1.8.0-RC1' class CollectorAgentConf(object): - def __init__(self,config): + def __init__(self, config): ''' :param ConfigParser config: ''' - self.CollectorSpanIp ='' - self.CollectorSpanPort ='' - self.CollectorStatIp ='' - self.CollectorStatPort ='' - self.CollectorAgentIp ='' + self.CollectorSpanIp = '' + self.CollectorSpanPort = '' + self.CollectorStatIp = '' + self.CollectorStatPort = '' + self.CollectorAgentIp = '' self.CollectorAgentPort = '' - self.max_pending_size ='' + self.max_pending_size = '' self.collector_type = -1 self.collector_implement = None self.startTimestamp = int(time.time() * 1000) self.config = config - if config.has_option('Collector','collector.grpc.agent.ip') and \ - config.has_option('Collector','collector.grpc.stat.ip') and \ - config.has_option('Collector', 'collector.grpc.span.ip'): + if config.has_option('Collector', 'collector.grpc.agent.ip') and \ + config.has_option('Collector', 'collector.grpc.stat.ip') and \ + config.has_option('Collector', 'collector.grpc.span.ip'): self.CollectorSpanIp = config.get('Collector', - 'collector.grpc.span.ip') + 'collector.grpc.span.ip') self.CollectorSpanPort = config.getint('Collector', - 'collector.grpc.span.port') + 'collector.grpc.span.port') self.CollectorStatIp = config.get('Collector', 'collector.grpc.stat.ip') self.CollectorStatPort = config.getint('Collector', - 'collector.grpc.stat.port') + 'collector.grpc.stat.port') self.CollectorAgentIp = config.get('Collector', - 'collector.grpc.agent.ip') + 'collector.grpc.agent.ip') self.CollectorAgentPort = config.getint('Collector', - 'collector.grpc.agent.port') + 'collector.grpc.agent.port') self.max_pending_size = config.getint('Collector', - 'collector.grpc.discardpolicy.maxpendingthreshold') + 'collector.grpc.discardpolicy.maxpendingthreshold') self.collector_type = SUPPORT_GRPC self.collector_implement = GrpcAgentImplement else: self.CollectorSpanIp = config.get('Collector', - 'CollectorSpanIp') + 'CollectorSpanIp') self.CollectorSpanPort = config.getint('Collector', - 'CollectorSpanPort') + 'CollectorSpanPort') self.CollectorStatIp = config.get('Collector', 'CollectorStatIp') self.CollectorStatPort = config.getint('Collector', - 'CollectorStatPort') + 'CollectorStatPort') self.CollectorAgentIp = config.get('Collector', - 'CollectorTcpIp') + 'CollectorTcpIp') self.CollectorAgentPort = config.getint('Collector', - 'CollectorTcpPort') + 'CollectorTcpPort') self.collector_type = SUPPORT_THRIFT self.collector_implement = ThriftAgentImplement self.AgentID = config.get('Collector', - 'AgentID') + 'AgentID') self.ApplicationName = config.get('Collector', - 'ApplicationName') + 'ApplicationName') self.version = AGENT_VERSION - log_dir = config.get('Common','LOG_DIR',fallback=None) - log_level = config.get('Common', 'Log_Level',fallback='DEBUG') + log_dir = config.get('Common', 'LOG_DIR', fallback=None) + log_level = config.get('Common', 'Log_Level', fallback='DEBUG') if log_dir is not None: set_logger_file(log_dir) else: logger_enable_console() set_logger_level(log_level) - def getSpanHost(self): - return ( self.CollectorSpanIp,self.CollectorSpanPort) + return (self.CollectorSpanIp, self.CollectorSpanPort) def getStatHost(self): - return ( self.CollectorStatIp,self.CollectorStatPort) + return (self.CollectorStatIp, self.CollectorStatPort) def getTcpHost(self): return (self.CollectorAgentIp, self.CollectorAgentPort) def getWebPort(self): - return self.config.get('Common','Web_Port') + return self.config.get('Common', 'Web_Port') def clean(self): pass diff --git a/collector-agent/CollectorAgent/Grpc.py b/collector-agent/CollectorAgent/Grpc.py index 2257343ff..3cd3695e8 100644 --- a/collector-agent/CollectorAgent/Grpc.py +++ b/collector-agent/CollectorAgent/Grpc.py @@ -1,10 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -21,14 +17,10 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - - - # Created by eeliu at 10/21/19+ # ready means channel is free to use -CH_READY=1 +CH_READY = 1 # wait .... -CH_NOT_READY=0 \ No newline at end of file +CH_NOT_READY = 0 diff --git a/collector-agent/CollectorAgent/GrpcAPIMeta.py b/collector-agent/CollectorAgent/GrpcAPIMeta.py index 65bfae69c..9e8e0ddcb 100644 --- a/collector-agent/CollectorAgent/GrpcAPIMeta.py +++ b/collector-agent/CollectorAgent/GrpcAPIMeta.py @@ -19,15 +19,15 @@ # ------------------------------------------------------------------------------ from CollectorAgent.Protocol import CollectorPro from CollectorAgent.TPackets import Packet -from PinpointAgent.Type import PacketType, STRING_META_DATA, API_META_DATA, API_UNDEFINED - from Common.Logger import TCLogger +from PinpointAgent.Type import PacketType, STRING_META_DATA, API_META_DATA, API_UNDEFINED from Proto.Trift.Trace.ttypes import TApiMetaData, TStringMetaData class GrpcAPIMeta(object): API_META_INDEX = 1 - def __init__(self,name=None,line = -1,type = API_UNDEFINED,agentStartTime = -1,agentId = -1,agentName='Default name'): + + def __init__(self, name=None, line=-1, type=API_UNDEFINED, agentStartTime=-1, agentId=-1, agentName='Default name'): assert name is not None self.name = name self.apiId = GrpcAPIMeta.API_META_INDEX @@ -38,24 +38,25 @@ def __init__(self,name=None,line = -1,type = API_UNDEFINED,agentStartTime = -1,a self.agentName = agentName def toPacket(self): - apiMeta = TApiMetaData(agentId = self.agentId, - agentStartTime =self.agentStartTime, - apiId = self.apiId, - type= self.type, + apiMeta = TApiMetaData(agentId=self.agentId, + agentStartTime=self.agentStartTime, + apiId=self.apiId, + type=self.type, apiInfo=self.name) TCLogger.debug("generator GrpcAPIMeta:%s", apiMeta) - body = CollectorPro.obj2bin(apiMeta, API_META_DATA) - packet = Packet(PacketType.APPLICATION_REQUEST,CollectorPro.getCurReqCount() ,len(body),body) + body = CollectorPro.obj2bin(apiMeta, API_META_DATA) + packet = Packet(PacketType.APPLICATION_REQUEST, CollectorPro.getCurReqCount(), len(body), body) return packet class StringMetaData(object): - API_META_INDEX= 1 + API_META_INDEX = 1 PHP_STRING_MAP = { "EXP": "Exception:", "ERR": "Fatal error:" } - def __init__(self,agentId,agentStartTime,name): + + def __init__(self, agentId, agentStartTime, name): self.agentId = agentId self.agentStartTime = agentStartTime @@ -67,15 +68,14 @@ def __init__(self,agentId,agentStartTime,name): self.value = meta_str self.apiId = StringMetaData.API_META_INDEX self.name = name - StringMetaData.API_META_INDEX +=1 + StringMetaData.API_META_INDEX += 1 def toPacket(self): stringMeta = TStringMetaData(agentId=self.agentId, - agentStartTime= self.agentStartTime, + agentStartTime=self.agentStartTime, stringId=self.apiId, stringValue=self.value) TCLogger.debug("generator stringMate:%s", stringMeta) - body = CollectorPro.obj2bin(stringMeta,STRING_META_DATA) - packet = Packet(PacketType.APPLICATION_REQUEST,CollectorPro.getCurReqCount() ,len(body),body) + body = CollectorPro.obj2bin(stringMeta, STRING_META_DATA) + packet = Packet(PacketType.APPLICATION_REQUEST, CollectorPro.getCurReqCount(), len(body), body) return packet - diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index 508e3fd73..5534b5158 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -19,29 +17,29 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - # Created by eeliu at 10/21/19 -from grpc import Future -import Service_pb2_grpc import threading import time + +import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger from PinpointAgent.Type import PHP from Stat_pb2 import PAgentInfo, PPing + class GrpcAgent(GrpcClient): - PINGID=0 - def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,timeout=10): - super().__init__(address,meta,maxPending) + PINGID = 0 + + def __init__(self, hostname, ip, ports, pid, address, meta=None, maxPending=-1, timeout=10): + super().__init__(address, meta, maxPending) self.hostname = hostname self.ip = ip self.pid = pid self.stub = Service_pb2_grpc.AgentStub(self.channel) self.agentinfo = PAgentInfo(hostname=hostname, ip=ip, ports=ports, pid=pid, endTimestamp=-1, - serviceType=PHP) + serviceType=PHP) self.pingid = GrpcAgent.PINGID GrpcAgent.PINGID += 1 self.ping_meta = meta.append(('socketid', str(GrpcAgent.PINGID))) @@ -50,22 +48,20 @@ def __init__(self,hostname,ip,ports,pid,address,meta=None,maxPending=-1,timeout= self.is_ok = False def channel_set_ready(self): - self.is_ok =True + self.is_ok = True def channel_set_idle(self): # self._register_agent() - self.is_ok =False + self.is_ok = False def channel_set_error(self): - self.is_ok =False - + self.is_ok = False def _register(self): # start a thread to handle register self.agent_thread = threading.Thread(target=self._registerAgent) self.agent_thread.start() - def _registerAgent(self): while True: try: @@ -84,22 +80,21 @@ def _registerAgent(self): def reponseAgentInfoCallback(self, future): if future.exception(): - TCLogger.error("agent catch exception %s.",future.exception()) + TCLogger.error("agent catch exception %s.", future.exception()) return if future.result(): - TCLogger.debug("agent register done:%s",future.result()) + TCLogger.debug("agent register done:%s", future.result()) self.is_ok = True self._startPingThread() def _pingPPing(self): while self.is_ok: ping = PPing() - TCLogger.debug("%s send ping %d",self,threading.get_ident()) + TCLogger.debug("%s send ping %d", self, threading.get_ident()) yield ping time.sleep(self.timeout) - def _startPingThread(self): # create ping stub iter_reponse = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) @@ -109,10 +104,10 @@ def _startPingThread(self): def _pingResponse(self, response_iter): try: for response in response_iter: - TCLogger.debug('get ping response %s',response) + TCLogger.debug('get ping response %s', response) except Exception as e: - TCLogger.error("ping response abort with exception %s",e) + TCLogger.error("ping response abort with exception %s", e) self._registerAgent() def __str__(self): - return 'agentclient: hostname:%s ip:%s pid:%d address:%s'%(self.hostname,self.ip,self.pid,self.address) \ No newline at end of file + return 'agentclient: hostname:%s ip:%s pid:%d address:%s' % (self.hostname, self.ip, self.pid, self.address) diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 4aa8287d0..cd9f952d3 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -1,12 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - - - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,32 +17,28 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - # Created by eeliu at 10/16/19 + +from multiprocessing import Process, Queue from queue import Full from setproctitle import setproctitle + from CollectorAgent.GrpcAgent import GrpcAgent from CollectorAgent.GrpcMeta import GrpcMeta -from CollectorAgent.GrpcSpanFactory import GrpcSpanFactory from CollectorAgent.GrpcSpan import GrpcSpan +from CollectorAgent.GrpcSpanFactory import GrpcSpanFactory from Common.AgentHost import AgentHost from Common.Logger import TCLogger from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP, SUPPORT_GRPC, API_DEFAULT from Span_pb2 import PSpanMessage -from multiprocessing import Process,Queue -class GrpcAgentImplement(PinpointAgent): +class GrpcAgentImplement(PinpointAgent): class SpanSender(object): - def __init__(self,span_addr,appid,appname,starttime): - self.agent_meta = [('starttime',str(starttime) ),('agentid', appid),('applicationname', appname)] + def __init__(self, span_addr, appid, appname, starttime): + self.agent_meta = [('starttime', str(starttime)), ('agentid', appid), ('applicationname', appname)] self.agent_id = appid self.agent_name = appname self.span_addr = span_addr @@ -59,15 +49,15 @@ def __init__(self,span_addr,appid,appname,starttime): def start(self): self.sender_process.start() - def sender(self,spanMesg): + def sender(self, spanMesg): try: - self.span_queue.put(spanMesg,False) + self.span_queue.put(spanMesg, False) except Full as e: TCLogger.error("send span failed: with queue is FUll%s", e) return False except Exception as e: - TCLogger.error("send span failed: %s",e) + TCLogger.error("send span failed: %s", e) return False return True @@ -75,25 +65,24 @@ def stopSelf(self): self.sender_process.terminate() self.sender_process.join() - def spanSenderMain(self,queue): - setproctitle("python run.py [%s-%s] spanSender" % ( self.agent_id, self.agent_name)) + def spanSenderMain(self, queue): + setproctitle("python run.py [%s-%s] spanSender" % (self.agent_id, self.agent_name)) span_client = GrpcSpan(self.span_addr, self.agent_meta) span_client.startSender(queue) - def __init__(self, ac, app_id, app_name, serviceType=PHP): assert ac.collector_type == SUPPORT_GRPC super().__init__(app_id, app_name) - self.agent_meta = [('starttime',str(ac.startTimestamp)), - ('agentid', app_id), - ('applicationname',app_name)] + self.agent_meta = [('starttime', str(ac.startTimestamp)), + ('agentid', app_id), + ('applicationname', app_name)] self.startTimeStamp = ac.startTimestamp self.max_pending_sz = ac.max_pending_size self.write_queue_ofs = 0 - self.span_buff=([],[]) - self.agent_addr = ac.CollectorAgentIp+':' + str(ac.CollectorAgentPort) + self.span_buff = ([], []) + self.agent_addr = ac.CollectorAgentIp + ':' + str(ac.CollectorAgentPort) self.stat_addr = ac.CollectorStatIp + ':' + str(ac.CollectorSpanPort) self.span_addr = ac.CollectorSpanIp + ':' + str(ac.CollectorSpanPort) @@ -101,11 +90,12 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): self.agentHost = AgentHost() self.max_span_sender_size = 2 self.span_sender_list = [] - self.sender_index= 0 + self.sender_index = 0 self._startSpanSender() self.iter_sender_list = iter(self.span_sender_list) - self.agent_client = GrpcAgent(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), self.agent_addr, self.agent_meta) + self.agent_client = GrpcAgent(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), + self.agent_addr, self.agent_meta) self.meta_client = GrpcMeta(self.agent_addr, self.agent_meta) self.span_factory = GrpcSpanFactory(self) @@ -113,17 +103,16 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): def start(self): pass - - def _sendSpan(self,spanMesg): + def _sendSpan(self, spanMesg): max_checking = len(self.span_sender_list) while self.span_sender_list[self.sender_index].sender(spanMesg) == False: - TCLogger.debug("sender index %d is busy",self.sender_index) + TCLogger.debug("sender index %d is busy", self.sender_index) self.sender_index += 1 if self.sender_index >= len(self.span_sender_list): self.sender_index = 0 - max_checking -=1 + max_checking -= 1 if max_checking == 0: return False @@ -133,14 +122,14 @@ def _sendSpan(self,spanMesg): return True - def sendSpan(self, stack,body): + def sendSpan(self, stack, body): pSpan = self.span_factory.make_span(stack) spanMesg = PSpanMessage(span=pSpan) if self._sendSpan(spanMesg): return True else: - TCLogger.info("send is block, try to create span process count:%s",len(self.span_sender_list)) - if len(self.span_sender_list)< self.max_span_sender_size: + TCLogger.info("send is block, try to create span process count:%s", len(self.span_sender_list)) + if len(self.span_sender_list) < self.max_span_sender_size: self._startSpanSender() else: TCLogger.warn("span_processes extend to max size") @@ -148,19 +137,16 @@ def sendSpan(self, stack,body): return True def _startSpanSender(self): - spanSender = GrpcAgentImplement.SpanSender(self.span_addr, self.app_id,self.app_name,self.startTimeStamp) + spanSender = GrpcAgentImplement.SpanSender(self.span_addr, self.app_id, self.app_name, self.startTimeStamp) spanSender.start() self.span_sender_list.append(spanSender) - def stop(self): for sender in self.span_sender_list: sender.stopSelf() - - def updateApiMeta(self,name,type=API_DEFAULT): - return self.meta_client.update_api_meta(name,-1,type) + def updateApiMeta(self, name, type=API_DEFAULT): + return self.meta_client.update_api_meta(name, -1, type) def updateStringMeta(self, name): return self.meta_client.update_string_meta(name) - diff --git a/collector-agent/CollectorAgent/GrpcAgentStateManager.py b/collector-agent/CollectorAgent/GrpcAgentStateManager.py index 10004997a..ecbd9ed72 100644 --- a/collector-agent/CollectorAgent/GrpcAgentStateManager.py +++ b/collector-agent/CollectorAgent/GrpcAgentStateManager.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -20,30 +19,28 @@ import psutil from CollectorAgent.Protocol import CollectorPro -from PinpointAgent.Type import AGENT_STAT_BATCH from Common.Logger import TCLogger -from Proto.Trift.Pinpoint.ttypes import TAgentStat, TCpuLoad, TAgentStatBatch - from Events import DgramLayer, TrainLayer - +from PinpointAgent.Type import AGENT_STAT_BATCH +from Proto.Trift.Pinpoint.ttypes import TAgentStat, TCpuLoad, TAgentStatBatch class GrpcAgentStateManager(object): - def __init__(self, agentId,startTimeStamp,host): - self.state=TAgentStat() - self.cup_load=TCpuLoad() + def __init__(self, agentId, startTimeStamp, host): + self.state = TAgentStat() + self.cup_load = TCpuLoad() self.state.agentId = agentId self.state.startTimestamp = startTimeStamp self.stateBatch = TAgentStatBatch() self.stateBatch.agentId = agentId self.stateBatch.startTimestamp = startTimeStamp - self.stateBatch.agentStats = [] + self.stateBatch.agentStats = [] self.remote = host self.trans_layer = DgramLayer(host, None) self.trans_layer.start() - TrainLayer.registerTimers(self.sendState,20) + TrainLayer.registerTimers(self.sendState, 20) TCLogger.debug("register state timer") def _upDateCurState(self): @@ -54,10 +51,8 @@ def _upDateCurState(self): self.stateBatch.agentStats.append(self.state) - def sendState(self,layer): + def sendState(self, layer): self._upDateCurState() body = CollectorPro.obj2bin(self.stateBatch, AGENT_STAT_BATCH) - TCLogger.debug("send state:%s",self.stateBatch) + TCLogger.debug("send state:%s", self.stateBatch) self.trans_layer.sendData(body) - - diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 4408b3b3f..d7e69bc3e 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -1,12 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - - - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,25 +17,19 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - # Created by eeliu at 10/18/19 + import collections -import grpc +import grpc # copy from grpc example -from CollectorAgent.Grpc import CH_NOT_READY, CH_READY from Common.Logger import TCLogger class _GenericClientInterceptor( - grpc.UnaryUnaryClientInterceptor, grpc.UnaryStreamClientInterceptor, - grpc.StreamUnaryClientInterceptor, grpc.StreamStreamClientInterceptor): + grpc.UnaryUnaryClientInterceptor, grpc.UnaryStreamClientInterceptor, + grpc.StreamUnaryClientInterceptor, grpc.StreamStreamClientInterceptor): def __init__(self, interceptor_function): self._fn = interceptor_function @@ -73,15 +61,17 @@ def intercept_stream_stream(self, continuation, client_call_details, response_it = continuation(new_details, new_request_iterator) return postprocess(response_it) if postprocess else response_it + class _ClientCallDetails( - collections.namedtuple( - '_ClientCallDetails', - ('method', 'timeout', 'metadata', 'credentials')), - grpc.ClientCallDetails): + collections.namedtuple( + '_ClientCallDetails', + ('method', 'timeout', 'metadata', 'credentials')), + grpc.ClientCallDetails): pass + class GrpcClient(object): - def __init__(self,address,meta=None,maxPending=-1,try_reconnect=True): + def __init__(self, address, meta=None, maxPending=-1, try_reconnect=True): self.address = address self.meta = None self.max_pending_size = maxPending @@ -91,14 +81,13 @@ def __init__(self,address,meta=None,maxPending=-1,try_reconnect=True): if meta is not None: self.meta = meta intercept_channel = grpc.intercept_channel(channel, - self._interceptor_add_header(meta)) + self._interceptor_add_header(meta)) channel = intercept_channel self.channel = channel - self.channel.subscribe(self._channel_state_change,try_reconnect) - + self.channel.subscribe(self._channel_state_change, try_reconnect) - def _interceptor_add_header(self,header): + def _interceptor_add_header(self, header): def intercept_call(client_call_details, request_iterator, request_streaming, response_streaming): metadata = [] @@ -109,16 +98,17 @@ def intercept_call(client_call_details, request_iterator, request_streaming, client_call_details.method, client_call_details.timeout, metadata, client_call_details.credentials) return client_call_details, request_iterator, None + return _GenericClientInterceptor(intercept_call) def _channel_state_change(self, activity): if activity == grpc.ChannelConnectivity.TRANSIENT_FAILURE: self.channel_set_error() - elif activity == grpc.ChannelConnectivity.READY: + elif activity == grpc.ChannelConnectivity.READY: self.channel_set_ready() elif activity == grpc.ChannelConnectivity.IDLE: self.channel_set_idle() - TCLogger.debug("channel state change %s dst:%s",activity,self.address) + TCLogger.debug("channel state change %s dst:%s", activity, self.address) def channel_set_ready(self): raise NotImplemented() @@ -131,4 +121,3 @@ def channel_set_error(self): def stop(self): self.channel.close() - diff --git a/collector-agent/CollectorAgent/GrpcMeta.py b/collector-agent/CollectorAgent/GrpcMeta.py index b609d6466..cf380caa2 100644 --- a/collector-agent/CollectorAgent/GrpcMeta.py +++ b/collector-agent/CollectorAgent/GrpcMeta.py @@ -1,12 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - - - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,12 +17,6 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - # Created by eeliu at 11/5/19 import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient @@ -37,17 +25,17 @@ class GrpcMeta(GrpcClient): - def __init__(self,address,meta=None): - super().__init__(address, meta,-1) - self.meta_stub=Service_pb2_grpc.MetadataStub(self.channel) + def __init__(self, address, meta=None): + super().__init__(address, meta, -1) + self.meta_stub = Service_pb2_grpc.MetadataStub(self.channel) self.is_ok = False self.id = 0 self.sql_table = {} self.api_table = {} - self.string_table={} + self.string_table = {} - def _send_sql_meta(self,meta): - assert isinstance(meta,PSqlMetaData) + def _send_sql_meta(self, meta): + assert isinstance(meta, PSqlMetaData) future = self.meta_stub.RequestSqlMetaData.future(meta) future.add_done_callback(self._response) @@ -62,12 +50,12 @@ def _send_string_meta(self, meta): future.add_done_callback(self._response) def update_api_meta(self, apiInfo, line, type): - row_str = ("%s-%d-%d"%(apiInfo,line,type)) + row_str = ("%s-%d-%d" % (apiInfo, line, type)) if row_str in self.api_table: return self.api_table[row_str][0] else: id = self.id - meta = PApiMetaData(apiId=id, apiInfo=apiInfo,line=line,type=type) + meta = PApiMetaData(apiId=id, apiInfo=apiInfo, line=line, type=type) self.api_table[row_str] = [id, meta] self._send_api_meta(meta) self.id += 1 @@ -79,28 +67,28 @@ def update_string_meta(self, value): return self.string_table[value][0] else: id = self.id - meta = PStringMetaData(stringId=id,stringValue=value) + meta = PStringMetaData(stringId=id, stringValue=value) self.string_table[value] = [id, meta] self._send_string_meta(meta) self.id += 1 - TCLogger.debug("register string meta id:%d -> value:[%s]",id,value) + TCLogger.debug("register string meta id:%d -> value:[%s]", id, value) return id - def update_sql_meta(self,sql): + def update_sql_meta(self, sql): if sql in self.sql_table: return self.sql_table[sql][0] else: id = self.id - meta = PSqlMetaData(sqlId=id,sql=sql) - self.sql_table[sql] = [id,meta] + meta = PSqlMetaData(sqlId=id, sql=sql) + self.sql_table[sql] = [id, meta] self._send_sql_meta(meta) - self.id+=1 + self.id += 1 TCLogger.debug("register sql meta id:%d -> sql:[%s]", id, sql) return id - def _response(self,future): + def _response(self, future): if future.exception(): - TCLogger.warning("register meta failed %s",future.exception) + TCLogger.warning("register meta failed %s", future.exception) return TCLogger.debug(future.result()) @@ -116,11 +104,11 @@ def channel_set_error(self): def _register_all_meta(self): # register sql - for key,value in self.sql_table.items(): + for key, value in self.sql_table.items(): self._send_sql_meta(value[1]) # api - for key,value in self.api_table.items(): + for key, value in self.api_table.items(): self._send_api_meta(value[1]) # string - for key,value in self.string_table.items(): - self._send_string_meta(value[1]) \ No newline at end of file + for key, value in self.string_table.items(): + self._send_string_meta(value[1]) diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 4da21bad4..fd26b46f6 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -1,12 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - - - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,25 +17,18 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - # Created by eeliu at 10/31/19 +import time +import traceback from queue import Empty import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger -import time -import traceback - class GrpcSpan(GrpcClient): - def __init__(self,address,meta=None): + def __init__(self, address, meta=None): super().__init__(address, meta) # self.is_ok = True @@ -49,39 +36,39 @@ def __init__(self,address,meta=None): self.span_count = 0 self.is_ok = False self.droped_span_count = 0 - self.log_span_transit_count= 0 + self.log_span_transit_count = 0 def channel_set_ready(self): self.is_ok = True - def channel_set_idle(self): self.is_ok = False def channel_set_error(self): self.is_ok = False - def startSender(self,queue): + def startSender(self, queue): spans = [] - def get_N_span(queue,N): + + def get_N_span(queue, N): i = 0 try: while N > i: spans.append(queue.get(timeout=0.005)) - i+=1 + i += 1 except Empty as e: pass # TCLogger.debug("get span from queue timeout") - return True if i>0 else False + return True if i > 0 else False while True: try: - if not get_N_span(queue,1024): + if not get_N_span(queue, 1024): continue self.span_stub.SendSpan(iter(spans)) except Exception as e: - TCLogger.error("span channel, can't work:exception:%s",e) + TCLogger.error("span channel, can't work:exception:%s", e) traceback.print_exc() time.sleep(10) finally: - spans.clear() \ No newline at end of file + spans.clear() diff --git a/collector-agent/CollectorAgent/GrpcSpanFactory.py b/collector-agent/CollectorAgent/GrpcSpanFactory.py index 699a45869..8657e1f41 100644 --- a/collector-agent/CollectorAgent/GrpcSpanFactory.py +++ b/collector-agent/CollectorAgent/GrpcSpanFactory.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -19,10 +17,9 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - # Created by eeliu at 11/7/19 + from google.protobuf.wrappers_pb2 import StringValue from Annotation_pb2 import PAnnotation, PAnnotationValue, PLongIntIntByteByteStringValue @@ -36,7 +33,7 @@ class GrpcSpanFactory(SpanFactory): def create_span(self, stackMap): tSpan = PSpan() - tSpan.apiId =self.agent.updateApiMeta(stackMap['name'], API_WEB_REQUEST) + tSpan.apiId = self.agent.updateApiMeta(stackMap['name'], API_WEB_REQUEST) tSpan.version = 1 if 'stp' in stackMap: tSpan.serviceType = int(stackMap['stp']) @@ -48,13 +45,13 @@ def create_span(self, stackMap): if 'psid' in stackMap: tSpan.parentSpanId = int(stackMap['psid']) else: - tSpan.parentSpanId = -1 + tSpan.parentSpanId = -1 if 'tid' in stackMap: agentId, startTime, id = stackMap['tid'].split('^') tSpan.transactionId.agentId = agentId tSpan.transactionId.agentStartTime = int(startTime) - tSpan.transactionId.sequence = int(id) + tSpan.transactionId.sequence = int(id) if 'sid' in stackMap: tSpan.spanId = int(stackMap['sid']) @@ -74,7 +71,7 @@ def create_span(self, stackMap): if 'client' in stackMap: accept.remoteAddr = stackMap['client'] - parent_info = accept.parentInfo + parent_info = accept.parentInfo if 'pname' in stackMap: parent_info.parentApplicationName = stackMap['pname'] @@ -95,7 +92,7 @@ def create_span(self, stackMap): if 'clues' in stackMap: for annotation in stackMap['clues']: # list id, value = annotation.split(':', 1) - ann = PAnnotation(key=int(id),value=PAnnotationValue(stringValue=value)) + ann = PAnnotation(key=int(id), value=PAnnotationValue(stringValue=value)) tSpan.annotation.append(ann) try: @@ -136,7 +133,6 @@ def create_span_event(self, stackMap): spanEv.exceptionInfo.intValue = id spanEv.exceptionInfo.stringValue.CopyFrom(value) - nextEv = spanEv.nextEvent msgEv = nextEv.messageEvent @@ -166,7 +162,7 @@ def create_span_event(self, stackMap): if value and value[0] == '[': ## value is a In pass else: ## value is a string - ann = PAnnotation(key=int(id), value =PAnnotationValue(stringValue=value)) + ann = PAnnotation(key=int(id), value=PAnnotationValue(stringValue=value)) spanEv.annotation.append(ann) return spanEv @@ -178,4 +174,4 @@ def set_sequenceid(self, span_ev, id): span_ev.sequence = id def set_depth(self, span_ev, depth): - span_ev.depth = depth \ No newline at end of file + span_ev.depth = depth diff --git a/collector-agent/CollectorAgent/Protocol.py b/collector-agent/CollectorAgent/Protocol.py index df9a3c555..b5d4dea28 100644 --- a/collector-agent/CollectorAgent/Protocol.py +++ b/collector-agent/CollectorAgent/Protocol.py @@ -17,7 +17,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -import random import struct from thrift.protocol import TCompactProtocol @@ -28,6 +27,7 @@ from Proto.Trift.Pinpoint.ttypes import TAgentInfo, TAgentStat, TAgentStatBatch from Proto.Trift.Trace.ttypes import TSpan, TApiMetaData, TResult, TStringMetaData + class CollectorPro(object): # transactionId = 0 # sequenceId = 0 @@ -66,12 +66,13 @@ def typeHelper(type): elif type == RESULT: return TResult() else: - raise Exception("type:%d not found",type) + raise Exception("type:%d not found", type) __ReqCount = 0 + @staticmethod def getCurReqCount(): - CollectorPro.__ReqCount+= 1 + CollectorPro.__ReqCount += 1 return CollectorPro.__ReqCount @staticmethod @@ -89,7 +90,6 @@ def obj2bin(obj, type): # @staticmethod # def tspan2Bin(obj,type): - @staticmethod def bin2obj(val): ''' @@ -98,128 +98,130 @@ def bin2obj(val): :return: ''' - (signature,version,type) = struct.unpack('!BBh',val[0:4].tobytes() ) + (signature, version, type) = struct.unpack('!BBh', val[0:4].tobytes()) obj = CollectorPro.typeHelper(type) tmembuf = TTransport.TMemoryBuffer(val[4:].tobytes()) tbinprot = TCompactProtocol.TCompactProtocol(tmembuf) obj.read(tbinprot) - return (type,obj) + return (type, obj) + class ChannelBufferV2(object): - def __init__(self,buf=b''): + def __init__(self, buf=b''): self.buf = buf self.p = 0 self.len = len(buf) - def putByte(self,b): - self.buf+=struct.pack('B',b) + def putByte(self, b): + self.buf += struct.pack('B', b) # def putStr(self,str): # self.buf+=struct.pack('!i',len(str)) # self.buf+=str - def putI64(self,i64): - self.buf+=struct.pack('!q',i64) + def putI64(self, i64): + self.buf += struct.pack('!q', i64) def getBuf(self): return self.buf def readInt(self): assert self.len >= 4 - b,=struct.unpack('!i',self.buf[self.p:self.p+4]) + b, = struct.unpack('!i', self.buf[self.p:self.p + 4]) self.p += 4 self.len -= 4 return b - def readStr(self,len): + def readStr(self, len): assert self.len >= len - str = self.buf[self.p:self.p+len] + str = self.buf[self.p:self.p + len] self.p += len self.len -= len return str def readI64(self): assert self.len >= 8 - b,=struct.unpack('!q',self.buf[self.p:self.p+8]) + b, = struct.unpack('!q', self.buf[self.p:self.p + 8]) self.p += 8 self.len -= 8 return b def readDouble(self): assert self.len >= 8 - b, = struct.unpack('!d', self.buf[self.p:self.p+8]) + b, = struct.unpack('!d', self.buf[self.p:self.p + 8]) self.p += 8 self.len -= 8 return b def readChar(self): assert self.len >= 1 - b, = struct.unpack('c', self.buf[self.p:self.p+1]) + b, = struct.unpack('c', self.buf[self.p:self.p + 1]) self.p += 1 self.len -= 1 return b def peekChar(self): assert self.len >= 1 - b, = struct.unpack('c', self.buf[self.p:self.p+1]) + b, = struct.unpack('c', self.buf[self.p:self.p + 1]) return b def readByte(self): assert self.len >= 1 - b, = struct.unpack('B', self.buf[self.p:self.p+1]) + b, = struct.unpack('B', self.buf[self.p:self.p + 1]) self.p += 1 self.len -= 1 return b + class AutoBuffer(object): def __init__(self): self.buf = b'' - def putByte(self,b): - self.buf += struct.pack('B',b) + def putByte(self, b): + self.buf += struct.pack('B', b) - def putSVar(self,sLen): - value = (sLen <<1) ^(sLen >>31) + def putSVar(self, sLen): + value = (sLen << 1) ^ (sLen >> 31) self.putVar32(value) - def putVar32(self,v): + def putVar32(self, v): while True: if v & ~0x7F == 0: self.putByte(v) break else: - self.putByte( (v & 0x7F)| 0x80) + self.putByte((v & 0x7F) | 0x80) v = (v >> 7) - def putPrefixedString(self,str): + def putPrefixedString(self, str): if str is None: self.putSVar(-1) else: self.putSVar(len(str)) self.buf += str.encode() - def putVar64(self,v): + def putVar64(self, v): while True: if v & ~0x7f == 0: - self.buf += struct.pack('B',v) + self.buf += struct.pack('B', v) break else: - self.buf += struct.pack('B',(v & 0x7f) | 0x80) - v = v>> 7 + self.buf += struct.pack('B', (v & 0x7f) | 0x80) + v = v >> 7 -class TransactionId(object): - def __init__(self,encoded_str=None,agent_id=None,start_time=None,id=None): +class TransactionId(object): + def __init__(self, encoded_str=None, agent_id=None, start_time=None, id=None): if encoded_str is not None: - agentId ,startTime ,id = encoded_str.split('^') + agentId, startTime, id = encoded_str.split('^') self.startTime = int(startTime) self.id = int(id) self.agentId = agentId return - self.agentId =agent_id + self.agentId = agent_id self.startTime = start_time - self.id=id + self.id = id def getBytes(self): bBuf = AutoBuffer() @@ -230,7 +232,6 @@ def getBytes(self): return bBuf.buf - if __name__ == '__main__': # span = TSpan() # test ={ @@ -241,7 +242,7 @@ def getBytes(self): # setattr(span,test[1],'1234') # print(span) - tid = TransactionId(agent_id='test-agent',start_time=1560951035971,id=1) + tid = TransactionId(agent_id='test-agent', start_time=1560951035971, id=1) buf1 = tid.getBytes() tid = TransactionId(encoded_str='test-agent^1560951035971^1') diff --git a/collector-agent/CollectorAgent/TCGenerator.py b/collector-agent/CollectorAgent/TCGenerator.py index 74f9b7ebe..e5fd5a197 100644 --- a/collector-agent/CollectorAgent/TCGenerator.py +++ b/collector-agent/CollectorAgent/TCGenerator.py @@ -2,9 +2,6 @@ # -*- coding: UTF-8 -*- - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -22,9 +19,6 @@ # ------------------------------------------------------------------------------ - - - # keyWord ={ # 1:'agentId', # 2:'applicationName', @@ -56,15 +50,12 @@ # } # from Intercept import interceptManger -from Common.Logger import TCLogger -from CollectorAgent.Protocol import * -from Proto.Trift.Trace.ttypes import TAnnotation, TAnnotationValue, TIntStringValue,TLongIntIntByteByteStringValue class TCGenerator(object): @staticmethod - def fetchIfExist(jMap,name): + def fetchIfExist(jMap, name): ''' :param dict jMap: @@ -75,9 +66,8 @@ def fetchIfExist(jMap,name): return jMap[name] return None - @staticmethod - def __transactionIDHelper(interManger,id): + def __transactionIDHelper(interManger, id): ''' :param InterceptManager interManger: @@ -99,7 +89,7 @@ def _parseStrField(str): ''' ret = {} for item in str.split(): - key,value = item.split(sep='=') + key, value = item.split(sep='=') ret[key] = value return ret @@ -111,6 +101,4 @@ def _parseDotFormat(time): :return: ''' sec, ms = time.split(sep='.') - return int(sec)*1000+int(ms) - - + return int(sec) * 1000 + int(ms) diff --git a/collector-agent/CollectorAgent/TPackets.py b/collector-agent/CollectorAgent/TPackets.py index b1dfc415b..2836e425a 100644 --- a/collector-agent/CollectorAgent/TPackets.py +++ b/collector-agent/CollectorAgent/TPackets.py @@ -2,7 +2,6 @@ # -*- coding: UTF-8 -*- - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,13 +22,13 @@ class Packet(object): - TYPE_LENGTH = 2 - def __init__(self, hType, hTypeEx1 = None, hTypeEx2= None, body =None): - self.buf = struct.pack( "!h",hType) + + def __init__(self, hType, hTypeEx1=None, hTypeEx2=None, body=None): + self.buf = struct.pack("!h", hType) if hTypeEx1 is not None: - self.buf += struct.pack('!i',hTypeEx1) + self.buf += struct.pack('!i', hTypeEx1) if hTypeEx2 is not None: self.buf += struct.pack('!i', hTypeEx2) @@ -42,10 +41,8 @@ def __init__(self, hType, hTypeEx1 = None, hTypeEx2= None, body =None): def getSerializedData(self): return self.buf - - @staticmethod - def parseNetByteStream(view,size): + def parseNetByteStream(view, size): ''' size must > 2 return type and packet @@ -60,53 +57,49 @@ def parseNetByteStream(view,size): offset = 0 while offset < size: ### parse type - type, = struct.unpack("!h",view[offset:offset+Packet.TYPE_LENGTH]) - if type not in PacketType.PTypeBytesLayOut: - raise Exception("type:%d not found",type) + type, = struct.unpack("!h", view[offset:offset + Packet.TYPE_LENGTH]) + if type not in PacketType.PTypeBytesLayOut: + raise Exception("type:%d not found", type) ### parse type ->sub header - body_header_len,sub_header_len,sub_body_len_offset = PacketType.PTypeBytesLayOut[type] - if size - Packet.TYPE_LENGTH< body_header_len: ## not enough + body_header_len, sub_header_len, sub_body_len_offset = PacketType.PTypeBytesLayOut[type] + if size - Packet.TYPE_LENGTH < body_header_len: ## not enough # yield (Packet.READ_AGAIN,size - offset) - return ## stop iteration + return ## stop iteration offset += 2 header = 0 ### get sub header if sub_header_len == 4: - header, = struct.unpack("!i",view[offset:offset+sub_header_len]) - offset+= sub_header_len + header, = struct.unpack("!i", view[offset:offset + sub_header_len]) + offset += sub_header_len ### parse body_length body_len = 0 if sub_body_len_offset == 2: - body_len, = struct.unpack("!h",view[offset:offset + sub_body_len_offset]) + body_len, = struct.unpack("!h", view[offset:offset + sub_body_len_offset]) elif sub_body_len_offset == 4: - body_len, = struct.unpack("!i", view[offset:offset + sub_body_len_offset]) + body_len, = struct.unpack("!i", view[offset:offset + sub_body_len_offset]) elif sub_body_len_offset == 0: - yield (offset + sub_body_len_offset,type,header,None) - continue ## goto parse type + yield (offset + sub_body_len_offset, type, header, None) + continue ## goto parse type offset += sub_body_len_offset - if size - offset < body_len: ## not enough + if size - offset < body_len: ## not enough # yield (Packet.READ_AGAIN, size - body_header_len - Packet.TYPE_LENGTH) return ## stop iteration else: - if body_len>0: - yield (offset+body_len ,type,header,view[offset:offset+body_len]) + if body_len > 0: + yield (offset + body_len, type, header, view[offset:offset + body_len]) else: - yield (offset , type, header, None) + yield (offset, type, header, None) offset += body_len - - - class HandShakeMessage: handShakeCount = 0 - - def __init__(self,socketId_i,hostName_s,supportServer_b,ip_s,agentId_s, - applicationName_s,serviceType_i,pid_i,version_s,startTimestamp_i64): + def __init__(self, socketId_i, hostName_s, supportServer_b, ip_s, agentId_s, + applicationName_s, serviceType_i, pid_i, version_s, startTimestamp_i64): cMbuf = ControlMessageEncoder() cMbuf.writeString('socketId') @@ -140,7 +133,7 @@ def __init__(self,socketId_i,hostName_s,supportServer_b,ip_s,agentId_s, cMbuf.writeInt64(startTimestamp_i64) cMbuf.endEncoder() - HandShakeMessage.handShakeCount+= 1 + HandShakeMessage.handShakeCount += 1 self.chBuf = cMbuf @@ -149,7 +142,7 @@ def getCount(): return HandShakeMessage.handShakeCount @staticmethod - def getNextStateCode(code,subCode): + def getNextStateCode(code, subCode): SUCCESS = (0, 0, "Success.") SIMPLEX_COMMUNICATION = (0, 1, "Simplex Connection successfully established.") DUPLEX_COMMUNICATION = (0, 2, "Duplex Connection successfully established.") @@ -160,12 +153,12 @@ def getNextStateCode(code,subCode): # PROTOCOL_ERROR = (3, 0, "Illegal protocol error.") # UNKNOWN_ERROR = (4, 0, "Unknown Error.") # UNKNOWN_CODE = (-1, -1, "Unknown Code.") - states =( - (0, 0, "Success.",AgentSocketCode.RUN_SIMPLEX), - (0, 1, "Simplex Connection successfully established.",AgentSocketCode.RUN_SIMPLEX), - (0, 2, "Duplex Connection successfully established.",AgentSocketCode.RUN_DUPLEX), - (1, 1, "Already Simplex Connection established.",AgentSocketCode.RUN_SIMPLEX), - (1, 2, "Already Duplex Connection established.",AgentSocketCode.RUN_DUPLEX) + states = ( + (0, 0, "Success.", AgentSocketCode.RUN_SIMPLEX), + (0, 1, "Simplex Connection successfully established.", AgentSocketCode.RUN_SIMPLEX), + (0, 2, "Duplex Connection successfully established.", AgentSocketCode.RUN_DUPLEX), + (1, 1, "Already Simplex Connection established.", AgentSocketCode.RUN_SIMPLEX), + (1, 2, "Already Duplex Connection established.", AgentSocketCode.RUN_DUPLEX) ) for s in states: @@ -173,13 +166,13 @@ def getNextStateCode(code,subCode): return s[3] raise Exception("state not register") - def getDataLen(self): return len(self.chBuf.getRawData()) def getBinData(self): return self.chBuf.getRawData() + class ControlMessage(object): CONTROL_MESSAGE_UNKNOWN = -1 CONTROL_MESSAGE_NULL = 0 @@ -189,6 +182,7 @@ class ControlMessage(object): CONTROL_MESSAGE_STRING = 4 CONTROL_MESSAGE_LIST = 5 CONTROL_MESSAGE_MAP = 6 + def __init__(self): self.type = ControlMessage.CONTROL_MESSAGE_UNKNOWN self.data = None @@ -201,8 +195,8 @@ def __readStringLength(cbv): shift = 0 while True: b = cbv.readByte() - result |=(b & 0x7F) << shift - if b& 0x80 != 128: + result |= (b & 0x7F) << shift + if b & 0x80 != 128: break shift += 7 return result @@ -248,7 +242,7 @@ def decodingControlMessage(cbv): while cbv.peekChar() != ControlMessageProtocolConstant.CONTROL_CHARACTER_LIST_END: cmg.data.append(ControlMessageDecoder.decodingControlMessage(cbv)) - cbv.readByte() ## drop the EOF + cbv.readByte() ## drop the EOF elif type == ControlMessageProtocolConstant.CONTROL_CHARACTER_MAP_START: cmg.type = ControlMessage.CONTROL_MESSAGE_MAP cmg.data = {} @@ -261,7 +255,6 @@ def decodingControlMessage(cbv): return cmg - class ControlMessageEncoder(object): def __init__(self): self.tmp_buf = struct.pack('c', ControlMessageProtocolConstant.CONTROL_CHARACTER_MAP_START) @@ -270,10 +263,10 @@ def __init__(self): def writeChar(self, b): self.tmp_buf += struct.pack("c", b) - def writeByte(self,i8): + def writeByte(self, i8): self.tmp_buf += struct.pack("b", i8) - def writeInt(self,i): + def writeInt(self, i): self.tmp_buf += struct.pack("!ci", ControlMessageProtocolConstant.TYPE_CHARACTER_INT, i) def writeInt64(self, l64): @@ -297,18 +290,16 @@ def getRawData(self): return self.__buf -def test_yeild(buf,size): - i= 0 - while i=1: + if i >= 1: break - - if __name__ == '__main__': # s = struct.pack("2i13si6s2i", 33, 13, "www.baidu.com", 6, "¶¬¼¾", 0, 0) # p = Packet(1,1234,len(s),s) @@ -321,9 +312,9 @@ def test_yeild(buf,size): # print( f1.next()) # print( f1.next()) - a = bytearray(['1','2','3',"0"]) + a = bytearray(['1', '2', '3', "0"]) pa = memoryview(a) pa[2:4] = pa[0:2] print(a) - print(struct.pack('!hii',12,None,None)) + print(struct.pack('!hii', 12, None, None)) diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index bb12c9cd1..21592ff24 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -18,62 +18,62 @@ # limitations under the License. # ------------------------------------------------------------------------------ import os + +from CollectorAgent.GrpcAPIMeta import * +from CollectorAgent.GrpcAgentStateManager import GrpcAgentStateManager from CollectorAgent.TPackets import ControlMessageDecoder, ControlMessage, HandShakeMessage from CollectorAgent.ThriftSpanFactory import ThriftSpanFactory from Common.AgentHost import AgentHost +from Events import * from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP, API_DEFAULT, AgentSocketCode -from Events import * -from CollectorAgent.TCGenerator import * -from CollectorAgent.GrpcAPIMeta import * -from CollectorAgent.GrpcAgentStateManager import GrpcAgentStateManager class ThriftAgentImplement(PinpointAgent): - PingCount= 0 + PingCount = 0 ReqCount = 0 + def __init__(self, ac, app_id, app_name, serviceType=PHP): - def __init__(self,ac,app_id,app_name,serviceType=PHP): - - super().__init__(app_id,app_name) - self.ac = ac - self.tcpHost = (ac.CollectorAgentIp, ac.CollectorAgentPort) - self.statHost = (ac.CollectorStatIp, ac.CollectorStatPort) - self.spanHost = (ac.CollectorSpanIp, ac.CollectorSpanPort) - TCLogger.debug("CollectorTcp %s CollectorStat %s CollectorSpan %s" % (self.tcpHost, self.statHost, self.spanHost)) + super().__init__(app_id, app_name) + self.ac = ac + self.tcpHost = (ac.CollectorAgentIp, ac.CollectorAgentPort) + self.statHost = (ac.CollectorStatIp, ac.CollectorStatPort) + self.spanHost = (ac.CollectorSpanIp, ac.CollectorSpanPort) + TCLogger.debug( + "CollectorTcp %s CollectorStat %s CollectorSpan %s" % (self.tcpHost, self.statHost, self.spanHost)) self.tcpLayer = StreamClientLayer(self.tcpHost, self.handlerResponse, self.collectorTcpHello) - self.spanLayer = DgramLayer(self.spanHost,None) + self.spanLayer = DgramLayer(self.spanHost, None) self.packetRoute = { - PacketType.APPLICATION_SEND : self.handle_default, - PacketType.APPLICATION_TRACE_SEND : self.handle_default, - PacketType.APPLICATION_TRACE_SEND_ACK : self.handle_default, - PacketType.APPLICATION_REQUEST : self.handle_appResponse, - PacketType.APPLICATION_RESPONSE : self.handle_appliaction_response, - PacketType.APPLICATION_STREAM_CREATE : self.handle_default, - PacketType.APPLICATION_STREAM_CREATE_SUCCESS : self.handle_default, - PacketType.APPLICATION_STREAM_CREATE_FAIL : self.handle_default, - PacketType.APPLICATION_STREAM_CLOSE : self.handle_default, - PacketType.APPLICATION_STREAM_PING : self.handle_default, - PacketType.APPLICATION_STREAM_PONG : self.handle_default, - PacketType.APPLICATION_STREAM_RESPONSE : self.handle_default, - PacketType.CONTROL_CLIENT_CLOSE : self.handle_default, - PacketType.CONTROL_SERVER_CLOSE : self.handle_default, - PacketType.CONTROL_HANDSHAKE : self.handle_default, - PacketType.CONTROL_HANDSHAKE_RESPONSE : self.handle_handshake_response, - PacketType.CONTROL_PING_SIMPLE : self.handle_control_ping, - PacketType.CONTROL_PONG : self.handle_recv_pong + PacketType.APPLICATION_SEND: self.handle_default, + PacketType.APPLICATION_TRACE_SEND: self.handle_default, + PacketType.APPLICATION_TRACE_SEND_ACK: self.handle_default, + PacketType.APPLICATION_REQUEST: self.handle_appResponse, + PacketType.APPLICATION_RESPONSE: self.handle_appliaction_response, + PacketType.APPLICATION_STREAM_CREATE: self.handle_default, + PacketType.APPLICATION_STREAM_CREATE_SUCCESS: self.handle_default, + PacketType.APPLICATION_STREAM_CREATE_FAIL: self.handle_default, + PacketType.APPLICATION_STREAM_CLOSE: self.handle_default, + PacketType.APPLICATION_STREAM_PING: self.handle_default, + PacketType.APPLICATION_STREAM_PONG: self.handle_default, + PacketType.APPLICATION_STREAM_RESPONSE: self.handle_default, + PacketType.CONTROL_CLIENT_CLOSE: self.handle_default, + PacketType.CONTROL_SERVER_CLOSE: self.handle_default, + PacketType.CONTROL_HANDSHAKE: self.handle_default, + PacketType.CONTROL_HANDSHAKE_RESPONSE: self.handle_handshake_response, + PacketType.CONTROL_PING_SIMPLE: self.handle_control_ping, + PacketType.CONTROL_PONG: self.handle_recv_pong } self.socketCode = AgentSocketCode.NONE self.startTimeStamp = self.ac.startTimestamp - self.agentName= app_name + self.agentName = app_name self.agentInfo = TAgentInfo( - agentId =app_id, - applicationName= app_name, - agentVersion= ac.version, - startTimestamp= self.startTimeStamp, + agentId=app_id, + applicationName=app_name, + agentVersion=ac.version, + startTimestamp=self.startTimeStamp, serviceType=self.service_type, pid=os.getpid() ) @@ -86,9 +86,9 @@ def __init__(self,ac,app_id,app_name,serviceType=PHP): self.span_factory = ThriftSpanFactory(self) ## expose to other module - def sendMsgToCollector(self,msg): - if self.socketCode == AgentSocketCode.NONE: ## channel not ready - TCLogger.debug("AgentState not ready,postpone size:%d",len(msg)) + def sendMsgToCollector(self, msg): + if self.socketCode == AgentSocketCode.NONE: ## channel not ready + TCLogger.debug("AgentState not ready,postpone size:%d", len(msg)) self.postponed_queue.append(msg) else: ### send backlog @@ -102,8 +102,6 @@ def _flushPostponed(self): self.tcpLayer.sendData(m[:]) self.postponed_queue = [] - - def updateApiMeta(self, name, api_type=API_DEFAULT): if name in self.api_metas: @@ -125,19 +123,18 @@ def sendMeta(self, meta): TCLogger.debug("meta: %s", meta.name) self.sendMsgToCollector(meta.toPacket().getSerializedData()) - - def updateStringMeta(self,name): + def updateStringMeta(self, name): if name in self.string_metas: return self.string_metas[name] else: - meta = StringMetaData(agentStartTime =self.startTimeStamp, agentId=self.app_id,name=name) + meta = StringMetaData(agentStartTime=self.startTimeStamp, agentId=self.app_id, name=name) self.sendMeta(meta) self.string_metas[name] = meta return meta - def sendSpan(self,stack,body): + def sendSpan(self, stack, body): ''' :param dict stack: :return: @@ -145,12 +142,13 @@ def sendSpan(self,stack,body): ### must reset to zero tSpan = self.span_factory.make_span(stack) - body = CollectorPro.obj2bin(tSpan,SPAN) + body = CollectorPro.obj2bin(tSpan, SPAN) # packet = Packet(PacketType.HEADLESS, len(body), body) self.spanLayer.sendData(body) # self.spanLayer.sendData(packet.getSerializedData()) - TCLogger.debug("send TSpan:%s",tSpan) + TCLogger.debug("send TSpan:%s", tSpan) return True + def scanLocalInfo(self): ah = AgentHost() self.agentInfo.hostname = ah.hostname @@ -161,20 +159,17 @@ def start(self): self.tcpLayer.start() self.spanLayer.start() - def stop(self): self.ac.clean() self.tcpLayer.stop() self.spanLayer.stop() - def handle_default(self, tcp_layer, ptype, header, vBody): - TCLogger.debug('ptype:%d ignore',ptype) + TCLogger.debug('ptype:%d ignore', ptype) return 0 - ## APPLICATION_REQUEST - def handle_appResponse(self,tcp_layer,ptype,header,vBody): + def handle_appResponse(self, tcp_layer, ptype, header, vBody): TCLogger.debug('ptype:%d ignore', ptype) return 0 @@ -193,25 +188,24 @@ def negotiatedDone(self, code, tcp_layer): self._flushPostponed() - ## CONTROL_HANDSHAKE_RESPONSE - def handle_handshake_response(self,tcp_layer,ptype,header,vBody): + def handle_handshake_response(self, tcp_layer, ptype, header, vBody): cbf = ChannelBufferV2(vBody.tobytes()) cmg = ControlMessageDecoder.decodingControlMessage(cbf) if cmg.type == ControlMessage.CONTROL_MESSAGE_MAP: code_CM = cmg.data[b'code'] subCode_CM = cmg.data[b'subCode'] - if code_CM.type == ControlMessage.CONTROL_MESSAGE_LONG and subCode_CM.type == ControlMessage.CONTROL_MESSAGE_LONG: - code = code_CM.data + if code_CM.type == ControlMessage.CONTROL_MESSAGE_LONG and subCode_CM.type == ControlMessage.CONTROL_MESSAGE_LONG: + code = code_CM.data subCode = subCode_CM.data - TCLogger.debug("code %d subcode %d",code,subCode) - self.socketCode = HandShakeMessage.getNextStateCode(code,subCode) + TCLogger.debug("code %d subcode %d", code, subCode) + self.socketCode = HandShakeMessage.getNextStateCode(code, subCode) self.negotiatedDone(self.socketCode, tcp_layer) return 0 - def handle_appliaction_response(self,tcp_layer,ptype,header,vBody): + def handle_appliaction_response(self, tcp_layer, ptype, header, vBody): ''' :param tcp_layer: @@ -220,63 +214,57 @@ def handle_appliaction_response(self,tcp_layer,ptype,header,vBody): :param memoryview vBody: :return: ''' - type,obj = CollectorPro.bin2obj(vBody) - TCLogger.debug("response: %s",obj) - + type, obj = CollectorPro.bin2obj(vBody) + TCLogger.debug("response: %s", obj) def __getPingPacket(self): ## ping context - pingBuf = struct.pack("!ibb",self.socketCode,#ThriftAgent.PingCount, + pingBuf = struct.pack("!ibb", self.socketCode, # ThriftAgent.PingCount, 0, self.socketCode) - packet = Packet(hType = PacketType.CONTROL_PING_PAYLOAD,body=pingBuf) - ThriftAgentImplement.PingCount+= 1 + packet = Packet(hType=PacketType.CONTROL_PING_PAYLOAD, body=pingBuf) + ThriftAgentImplement.PingCount += 1 return packet - - - - ## PacketType.CONTROL_PONG - def handle_recv_pong(self,tcp_layer,ptype,header,vBody): + def handle_recv_pong(self, tcp_layer, ptype, header, vBody): TCLogger.debug("recv pong") return 0 ## PacketType.CONTROL_PING - def handle_control_ping(self,tcp_layer,ptype,header,vBody): + def handle_control_ping(self, tcp_layer, ptype, header, vBody): ping = Packet(PacketType.CONTROL_PONG) tcp_layer.sendData(ping.getSerializedData()) return 0 - - def handlerResponse(self,tcp_layer, view, size): + def handlerResponse(self, tcp_layer, view, size): ''' :param memoryview view: :param int size: :return: ''' - offset = 0 + offset = 0 iterPacket = Packet.parseNetByteStream(view, size) for packet in iterPacket: - offset,ptype,header,vBody = packet - self.packetRoute[ptype](tcp_layer,ptype,header,vBody) + offset, ptype, header, vBody = packet + self.packetRoute[ptype](tcp_layer, ptype, header, vBody) return 0 - def __sendPing(self,tcp_layer): + def __sendPing(self, tcp_layer): ping_data = self.__getPingPacket().getSerializedData() tcp_layer.sendData(ping_data) # TCLogger.debug("send ping len:%d", len(ping_data)) - def __sendAgentInfo(self,tcp_layer): + def __sendAgentInfo(self, tcp_layer): agent_data = self.__getTAgentInfoPacket().getSerializedData() tcp_layer.sendData(agent_data) TCLogger.debug("send agentInfo len:%d", len(agent_data)) - def collectorTcpHello(self,tcp_layer): + def collectorTcpHello(self, tcp_layer): ''' :param StreamClientLayer tcp_layer: :return: @@ -284,20 +272,20 @@ def collectorTcpHello(self,tcp_layer): ### handshakepacket data = self.__getHandShakePacket(tcp_layer).getSerializedData() tcp_layer.sendData(data) - TCLogger.debug("send hand shake len:%d",len(data)) + TCLogger.debug("send hand shake len:%d", len(data)) - def __getHandShakePacket(self,tcp_layer): + def __getHandShakePacket(self, tcp_layer): cmp = HandShakeMessage( - tcp_layer.getRawSocketFd(), - self.agentInfo.hostname, - True, - self.agentInfo.ip, - self.agentInfo.agentId, - self.agentInfo.applicationName, - PHP, - self.agentInfo.pid, - self.agentInfo.agentVersion, - self.startTimeStamp) + tcp_layer.getRawSocketFd(), + self.agentInfo.hostname, + True, + self.agentInfo.ip, + self.agentInfo.agentId, + self.agentInfo.applicationName, + PHP, + self.agentInfo.pid, + self.agentInfo.agentVersion, + self.startTimeStamp) packet = Packet(PacketType.CONTROL_HANDSHAKE, 0, cmp.getDataLen(), @@ -306,9 +294,9 @@ def __getHandShakePacket(self,tcp_layer): def __getTAgentInfoPacket(self): # self.agentInfo - TCLogger.debug("agent:%s",self.agentInfo) + TCLogger.debug("agent:%s", self.agentInfo) body = CollectorPro.obj2bin(self.agentInfo, AGENT_INFO) - packet = Packet(PacketType.APPLICATION_REQUEST,CollectorPro.getCurReqCount(),len(body),body) - ThriftAgentImplement.ReqCount +=1 + packet = Packet(PacketType.APPLICATION_REQUEST, CollectorPro.getCurReqCount(), len(body), body) + ThriftAgentImplement.ReqCount += 1 - return packet \ No newline at end of file + return packet diff --git a/collector-agent/CollectorAgent/ThriftSpanFactory.py b/collector-agent/CollectorAgent/ThriftSpanFactory.py index 83f5bba2f..6281c23c5 100644 --- a/collector-agent/CollectorAgent/ThriftSpanFactory.py +++ b/collector-agent/CollectorAgent/ThriftSpanFactory.py @@ -1,12 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - - - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,12 +17,6 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - # Created by eeliu at 11/7/19 from CollectorAgent.Protocol import TransactionId from CollectorAgent.TCGenerator import ThriftProtocolUtil @@ -40,7 +28,7 @@ class ThriftSpanFactory(SpanFactory): - def create_span(self,stackMap): + def create_span(self, stackMap): tSpan = TSpan() tSpan.apiId = self.agent.updateApiMeta(stackMap['name'], API_WEB_REQUEST).apiId tSpan.agentStartTime = self.agent.startTimeStamp @@ -136,7 +124,7 @@ def create_span(self,stackMap): return tSpan - def create_span_event(self,stackMap): + def create_span_event(self, stackMap): assert 'name' in stackMap spanEv = TSpanEvent() @@ -178,11 +166,11 @@ def create_span_event(self,stackMap): return spanEv - def attach_span_event(self,tSpan,span_event): + def attach_span_event(self, tSpan, span_event): tSpan.spanEventList.append(span_event) - def set_sequenceid(self,span_ev,id): + def set_sequenceid(self, span_ev, id): span_ev.sequence = id - def set_depth(self,span_ev,depth): - span_ev.depth = depth \ No newline at end of file + def set_depth(self, span_ev, depth): + span_ev.depth = depth diff --git a/collector-agent/Common/Config.py b/collector-agent/Common/Config.py index cd360a295..ea6e0eb2e 100644 --- a/collector-agent/Common/Config.py +++ b/collector-agent/Common/Config.py @@ -2,6 +2,7 @@ # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -17,8 +18,9 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ -import os import configparser as ConfigParser +import os + def get_conf(env_name): if not env_name in os.environ: diff --git a/collector-agent/Events/DgramLayer.py b/collector-agent/Events/DgramLayer.py index 939866e26..6e8c60cd7 100644 --- a/collector-agent/Events/DgramLayer.py +++ b/collector-agent/Events/DgramLayer.py @@ -18,7 +18,9 @@ # limitations under the License. # ------------------------------------------------------------------------------ from __future__ import print_function + import errno + from gevent import socket as asy_socket from Common.Logger import TCLogger diff --git a/collector-agent/Events/GTimer.py b/collector-agent/Events/GTimer.py index b067b1391..19d6b99b1 100644 --- a/collector-agent/Events/GTimer.py +++ b/collector-agent/Events/GTimer.py @@ -1,11 +1,5 @@ #!/usr/bin/env python -# -*- coding: UTF-8 -*- - - - - - - +# -*- coding: UTF-8 -*-# Created by eeliu at 10/21/19 # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. @@ -22,15 +16,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - - -# Created by eeliu at 10/21/19 - class GTimer(object): @staticmethod def registerTimers(callback,interval,args=None): diff --git a/collector-agent/Events/State.py b/collector-agent/Events/State.py index c91b8444c..c2fc607a6 100644 --- a/collector-agent/Events/State.py +++ b/collector-agent/Events/State.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # diff --git a/collector-agent/Events/StreamServerLayer.py b/collector-agent/Events/StreamServerLayer.py index b650499b0..8c677260a 100644 --- a/collector-agent/Events/StreamServerLayer.py +++ b/collector-agent/Events/StreamServerLayer.py @@ -20,7 +20,6 @@ from gevent import get_hub from gevent import socket as asy_socket -from Common import * from Common.Logger import TCLogger diff --git a/collector-agent/Events/TrainsLayer.py b/collector-agent/Events/TrainsLayer.py index be5814622..3efc462b9 100644 --- a/collector-agent/Events/TrainsLayer.py +++ b/collector-agent/Events/TrainsLayer.py @@ -8,7 +8,6 @@ E_READ = 4 E_CLOSED = 8 - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # diff --git a/collector-agent/Events/util.py b/collector-agent/Events/util.py index 6e8900287..faaf8134d 100644 --- a/collector-agent/Events/util.py +++ b/collector-agent/Events/util.py @@ -1,11 +1,5 @@ #!/usr/bin/env python -# -*- coding: UTF-8 -*- - - - - - - +# -*- coding: UTF-8 -*-# Created by eeliu at 1/14/20 # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. @@ -22,15 +16,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - - -# Created by eeliu at 1/14/20 - import gevent def try_to_recycle_the_event_hub(): gevent.reinit() diff --git a/collector-agent/PHPAgent/FrontAgent.py b/collector-agent/PHPAgent/FrontAgent.py index 4a2d8da46..2e7667b57 100644 --- a/collector-agent/PHPAgent/FrontAgent.py +++ b/collector-agent/PHPAgent/FrontAgent.py @@ -2,6 +2,7 @@ # coding:utf-8 + # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -24,9 +25,9 @@ from gevent import socket as gsocket from Common.Logger import TCLogger -from PHPAgent.Type import RESPONSE_AGENT_INFO -from PHPAgent.PHPAgentConf import PHPAgentConf from Events import StreamServerLayer +from PHPAgent.PHPAgentConf import PHPAgentConf +from PHPAgent.Type import RESPONSE_AGENT_INFO class FrontAgent(object): diff --git a/collector-agent/PHPAgent/PHPAgentConf.py b/collector-agent/PHPAgent/PHPAgentConf.py index a4b553f80..53368fea1 100644 --- a/collector-agent/PHPAgent/PHPAgentConf.py +++ b/collector-agent/PHPAgent/PHPAgentConf.py @@ -2,7 +2,6 @@ # -*- coding: UTF-8 -*- - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index 8ea1e66e8..f5b3d9a54 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -1,12 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - - - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,15 +17,7 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - # Created by eeliu at 11/6/19 -from Common.Logger import TCLogger -from Span_pb2 import PSpanMessage class SpanFactory(object): diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 103b2e46c..12eb3b318 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -1,12 +1,6 @@ #!/usr/bin/env python # -*- coding: UTF-8 -*- - - - - - - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -23,18 +17,11 @@ # limitations under the License. # ------------------------------------------------------------------------------ - - - - - - # Created by eeliu at 9/4/19 import json from CollectorAgent.CollectorAgentConf import CollectorAgentConf from Common.Logger import TCLogger - from PinpointAgent.PinpointAgent import PinpointAgent from PinpointAgent.Type import PHP diff --git a/collector-agent/PinpointAgent/Type.py b/collector-agent/PinpointAgent/Type.py index 2d8b90ed5..966c5e801 100644 --- a/collector-agent/PinpointAgent/Type.py +++ b/collector-agent/PinpointAgent/Type.py @@ -1,21 +1,3 @@ - - -# ------------------------------------------------------------------------------ -# Copyright 2020. NAVER Corp. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ - # encoding: utf-8 APPLICATION_SEND = 1 @@ -71,6 +53,22 @@ PHP_ARGS = 922 PHP_DESCRIPTION = 923 +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + #collector type SUPPORT_GRPC=1 SUPPORT_THRIFT=2 diff --git a/collector-agent/PinpointAgent/__init__.py b/collector-agent/PinpointAgent/__init__.py index 666a6e3b4..a33deb482 100644 --- a/collector-agent/PinpointAgent/__init__.py +++ b/collector-agent/PinpointAgent/__init__.py @@ -2,7 +2,6 @@ # -*- coding: UTF-8 -*- - # ------------------------------------------------------------------------------ # Copyright 2020. NAVER Corp. # @@ -20,7 +19,6 @@ # ------------------------------------------------------------------------------ - # from PinpointAgent.PinpointAgent import PinpointAgent # from PinpointAgent.AppManagement import AppManagement # __all__=['PinpointAgent','AppManagement'] diff --git a/collector-agent/Test/test_mq.py b/collector-agent/Test/test_mq.py index 86ad9df8b..139597f9c 100644 --- a/collector-agent/Test/test_mq.py +++ b/collector-agent/Test/test_mq.py @@ -1,17 +1,2 @@ -# ------------------------------------------------------------------------------ -# Copyright 2020. NAVER Corp. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ -import zmq \ No newline at end of file + diff --git a/collector-agent/Test/test_util.py b/collector-agent/Test/test_util.py index 42280fa37..10070292c 100644 --- a/collector-agent/Test/test_util.py +++ b/collector-agent/Test/test_util.py @@ -1,19 +1,5 @@ -# ------------------------------------------------------------------------------ -# Copyright 2020. NAVER Corp. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + #!/usr/bin/env python from unittest import TestCase @@ -24,6 +10,14 @@ # -*- coding: UTF-8 -*- from Span_pb2 import PAcceptEvent, PSpan, PSpanEvent +# !/usr/bin/env python +from unittest import TestCase + +from CollectorAgent.TPackets import * +from Span_pb2 import PAcceptEvent, PSpan, PSpanEvent + + +# -*- coding: UTF-8 -*- class TestUtil(TestCase): diff --git a/collector-agent/run.py b/collector-agent/run.py index 20aaa942e..02f3373bc 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -1,23 +1,14 @@ -# ------------------------------------------------------------------------------ -# Copyright 2020. NAVER Corp. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ------------------------------------------------------------------------------ + #!/usr/bin/env python # -*- coding: UTF-8 -*- import os,sys +# !/usr/bin/env python +# -*- coding: UTF-8 -*- +import os +import sys + proto_class = os.getcwd()+'/Proto/grpc' sys.path.append(proto_class) From 10870861963104ee7f03060e5a37af46d73d7105 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 20 Jan 2020 15:34:58 +0800 Subject: [PATCH 26/45] Beautify the Logging --- README.md | 12 ++++++------ collector-agent/CollectorAgent/CollectorAgentConf.py | 2 +- collector-agent/CollectorAgent/GrpcAgent.py | 6 +++--- collector-agent/CollectorAgent/GrpcAgentImplement.py | 9 +++++---- collector-agent/CollectorAgent/GrpcSpan.py | 2 +- collector-agent/CollectorAgent/TPackets.py | 2 -- .../CollectorAgent/ThriftAgentImplement.py | 5 ++--- collector-agent/PHPAgent/SpanFactory.py | 2 -- 8 files changed, 18 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 6cb547dab..0d80d496d 100644 --- a/README.md +++ b/README.md @@ -62,12 +62,12 @@ pinpoint| 1.8.0-RC1 ```ini [Collector] # collectorhost and specific port - CollectorSpanIp=10.10.23.45 - CollectorSpanPort=9905 - CollectorStatIp=10.10.23.45 - CollectorStatPort=9906 - CollectorTcpIp=10.10.23.45 - CollectorTcpPort=9907 + collector.grpc.agent.ip=collectorHost + collector.grpc.agent.port=9991 + collector.grpc.stat.ip=collectorHost + collector.grpc.stat.port=9992 + collector.grpc.span.ip=collectorHost + collector.grpc.span.port=9993 [Common] # your web server (nginx&apache) port Web_Port=8001 diff --git a/collector-agent/CollectorAgent/CollectorAgentConf.py b/collector-agent/CollectorAgent/CollectorAgentConf.py index f9e12aafd..e07d2972e 100644 --- a/collector-agent/CollectorAgent/CollectorAgentConf.py +++ b/collector-agent/CollectorAgent/CollectorAgentConf.py @@ -61,7 +61,7 @@ def __init__(self, config): self.CollectorAgentPort = config.getint('Collector', 'collector.grpc.agent.port') self.max_pending_size = config.getint('Collector', - 'collector.grpc.discardpolicy.maxpendingthreshold') + 'collector.grpc.discardpolicy.maxpendingthreshold',fallback=10000) self.collector_type = SUPPORT_GRPC self.collector_implement = GrpcAgentImplement else: diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index 5534b5158..9d45eeb82 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -67,7 +67,7 @@ def _registerAgent(self): try: self.stub.RequestAgentInfo(self.agentinfo, wait_for_ready=True) except Exception as e: - TCLogger.warn("pinpoint collector is not available") + TCLogger.warn("[%s] pinpoint collector is not available. Try it again",self.agentinfo) continue iter_response = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) @@ -75,7 +75,7 @@ def _registerAgent(self): for response in iter_response: TCLogger.debug('get ping response %s', response) except Exception as e: - TCLogger.error("ping response abort with exception %s", e) + TCLogger.error("[%s] ping response abort with exception %s", e,self.agentinfo) time.sleep(self.timeout) def reponseAgentInfoCallback(self, future): @@ -91,7 +91,7 @@ def reponseAgentInfoCallback(self, future): def _pingPPing(self): while self.is_ok: ping = PPing() - TCLogger.debug("%s send ping %d", self, threading.get_ident()) + TCLogger.debug("%s send ping", self) yield ping time.sleep(self.timeout) diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index cd9f952d3..805ff956f 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -37,12 +37,13 @@ class GrpcAgentImplement(PinpointAgent): class SpanSender(object): - def __init__(self, span_addr, appid, appname, starttime): + def __init__(self, span_addr, appid, appname, starttime,max_pending_sz): self.agent_meta = [('starttime', str(starttime)), ('agentid', appid), ('applicationname', appname)] self.agent_id = appid self.agent_name = appname self.span_addr = span_addr - self.span_queue = Queue(5000) + self.max_pending_sz =max_pending_sz + self.span_queue = Queue(self.max_pending_sz) self.sender_process = Process(target=self.spanSenderMain, args=(self.span_queue,)) TCLogger.info("Successfully create a Span Sender") @@ -54,7 +55,7 @@ def sender(self, spanMesg): try: self.span_queue.put(spanMesg, False) except Full as e: - TCLogger.error("send span failed: with queue is FUll%s", e) + TCLogger.error("send span failed: with queue is FUll. Queue size:%d", e,self.span_queue.maxsize) return False except Exception as e: TCLogger.error("send span failed: %s", e) @@ -137,7 +138,7 @@ def sendSpan(self, stack, body): return True def _startSpanSender(self): - spanSender = GrpcAgentImplement.SpanSender(self.span_addr, self.app_id, self.app_name, self.startTimeStamp) + spanSender = GrpcAgentImplement.SpanSender(self.span_addr, self.app_id, self.app_name, self.startTimeStamp,self.max_pending_sz) spanSender.start() self.span_sender_list.append(spanSender) diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index fd26b46f6..f0327847c 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -28,7 +28,7 @@ class GrpcSpan(GrpcClient): - def __init__(self, address, meta=None): + def __init__(self, address, meta): super().__init__(address, meta) # self.is_ok = True diff --git a/collector-agent/CollectorAgent/TPackets.py b/collector-agent/CollectorAgent/TPackets.py index 2836e425a..38ac2a981 100644 --- a/collector-agent/CollectorAgent/TPackets.py +++ b/collector-agent/CollectorAgent/TPackets.py @@ -36,8 +36,6 @@ def __init__(self, hType, hTypeEx1=None, hTypeEx2=None, body=None): if body is not None: self.buf += body - # TCLogger.debug("current type:%d totalLen:%d", hType, len(self.buf)) - def getSerializedData(self): return self.buf diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index 21592ff24..8ec1825c6 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -21,7 +21,7 @@ from CollectorAgent.GrpcAPIMeta import * from CollectorAgent.GrpcAgentStateManager import GrpcAgentStateManager -from CollectorAgent.TPackets import ControlMessageDecoder, ControlMessage, HandShakeMessage +from CollectorAgent.TPackets import ControlMessageDecoder, ControlMessage, HandShakeMessage, ChannelBufferV2, TAgentInfo from CollectorAgent.ThriftSpanFactory import ThriftSpanFactory from Common.AgentHost import AgentHost from Events import * @@ -182,7 +182,7 @@ def negotiatedDone(self, code, tcp_layer): # # # register TagentInfo TrainLayer.registerTimers(self.__sendAgentInfo, 0, tcp_layer) - TCLogger.debug(" send agentInfo ") + TCLogger.debug("send agentInfo ") # check the postponed @@ -257,7 +257,6 @@ def handlerResponse(self, tcp_layer, view, size): def __sendPing(self, tcp_layer): ping_data = self.__getPingPacket().getSerializedData() tcp_layer.sendData(ping_data) - # TCLogger.debug("send ping len:%d", len(ping_data)) def __sendAgentInfo(self, tcp_layer): agent_data = self.__getTAgentInfoPacket().getSerializedData() diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index f5b3d9a54..53b78957b 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -40,7 +40,6 @@ def make_span(self,stackMap): if 'calls' in stackMap: for called in stackMap['calls']: self.make_span_ev(span,called) - # TCLogger.debug("send span:%s",span) return span def make_span_ev(self, span, stackMap, depth=1): @@ -49,7 +48,6 @@ def make_span_ev(self, span, stackMap, depth=1): self.sequenceid += 1 self.set_depth(span_ev,depth) self.attach_span_event(span,span_ev) - # TCLogger.debug(span_ev) if 'calls' in stackMap: for called in stackMap['calls']: self.make_span_ev(span, called, depth + 1) From 755be019fa73d49760694305e05d78e9fee7e2d6 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 20 Jan 2020 18:00:15 +0800 Subject: [PATCH 27/45] Add sleep when empty --- collector-agent/CollectorAgent/GrpcSpan.py | 1 + 1 file changed, 1 insertion(+) diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index f0327847c..0cec86ef4 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -64,6 +64,7 @@ def get_N_span(queue, N): while True: try: if not get_N_span(queue, 1024): + time.sleep(2) continue self.span_stub.SendSpan(iter(spans)) except Exception as e: From 290ac2e6a726c3f98200c83c1223519c1bc0c9b4 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 21 Jan 2020 11:24:57 +0800 Subject: [PATCH 28/45] remove profile --- README.md | 2 +- collector-agent/run.py | 20 +++++++++++++++++--- collector-agent/run.sh | 3 ++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0d80d496d..863ad75be 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ pinpoint| 1.8.0-RC1 5. export COLLECTOR_CONFIG=/full path of collector.conf/ 6. run collector-agent ``` - $ python run.py (or nohup python run.py&) + $ ./run.sh ``` > Try the aop example diff --git a/collector-agent/run.py b/collector-agent/run.py index 02f3373bc..f61111a9f 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -1,8 +1,22 @@ - - - #!/usr/bin/env python # -*- coding: UTF-8 -*- + +# ------------------------------------------------------------------------------ +# Copyright 2020. NAVER Corp. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ + import os,sys # !/usr/bin/env python # -*- coding: UTF-8 -*- diff --git a/collector-agent/run.sh b/collector-agent/run.sh index 145af6a4c..3be129bb9 100755 --- a/collector-agent/run.sh +++ b/collector-agent/run.sh @@ -5,4 +5,5 @@ PPATH=$(dirname "$0") #export GRPC_VERBOSITY=INFO #export GODEBUG=http2debug=1 export GRPC_ENABLE_FORK_SUPPORT=1 -python -m plop.collector -f flamegraph $PPATH/run.py +#python -m plop.collector -f flamegraph $PPATH/run.py +python $PPATH/run.py From 107e3e7b82b7a9a4abe500420b5b14c33b2e6f38 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 21 Jan 2020 16:00:24 +0800 Subject: [PATCH 29/45] add init_python.evn --- PHP/pinpoint_php_example/app/index_app_3.php | 252 +++++++++++++++++++ README.md | 1 + 2 files changed, 253 insertions(+) create mode 100644 PHP/pinpoint_php_example/app/index_app_3.php diff --git a/PHP/pinpoint_php_example/app/index_app_3.php b/PHP/pinpoint_php_example/app/index_app_3.php new file mode 100644 index 000000000..d11b997d2 --- /dev/null +++ b/PHP/pinpoint_php_example/app/index_app_3.php @@ -0,0 +1,252 @@ + $value) + { + $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; + } + return $headers; + } +} + +//print_r(getallheaders()); + + +//if(isset($_SERVER[PINPOINTID]) && isset($_SERVER[NEXTSPAN])) +//{ +// echo $_SERVER[PINPOINTID] , $_SERVER[NEXTSPAN]; +//} + +switch($type) +{ + case 'get_date': + AppDate::outputDate(); + break; + case 'test_func1': + $instance = new AopFunction(); + echo $instance->test_func1("one", 3); + break; + case 'test_func2_caller': + $instance = new AopFunction(); + $instance->test_func2(); + break; + case 'test_inherit_func': + $instance = new Student(); + $instance->eat(); + $instance = new Teacher(); + $instance->eat(); + $instance = new Doctor(); + $instance->eat(); + $instance->other(); + break; + case 'test_generator_func': + $instance = new TestGenerator(); + foreach ($instance->generator(1, 10, 2) as $number){echo $number;} + break; + case 'test_abstract_func': + $instance = new AbstractStudent("Evy"); + echo $instance->eat(); + echo $instance->drink(); + echo $instance->breath(); + break; + case 'test_interface_func': + $instance = new InterfaceStudent(); + $instance->setVariable("Evy", "Hua"); + $instance->setVariable("Sam", "Wei"); + echo $instance->getHtml("Hello {Evy}"); + echo $instance->other("Evy"); + break; + case 'test_clone': + $instance1 = new TestClone(); + $instance2 = clone $instance1; + $instance2->setColor("green"); + echo $instance2->getColor(); + $instance1->setColor("red"); + echo $instance1->getColor(); + break; + case 'test_recursion': + $instance = new TestRecursion(); + echo $instance->test_cumsum1(3); + echo $instance->test_cumsum2(3); + break; + case 'test_anonymous': + $instance = new TestAnonymous(); + $bell = $instance->createbell(date("Y/m/d")); + $bell(); + break; + case 'test_static': + TestStatic::static_func(123); + break; + case 'test_final_class': + $instance = new TestFinalClass(); + $instance->test(); +// class swtest1 extends TestFinalClass{}; + break; + case 'test_final_func': + $instance = new TestFinalFunc(); + $instance->test("abc"); +// class swtest2 extends app\TestFinalFunc +// { +// public final function test(){ +// echo "123"; +// } +// } + break; + case 'test_trait': + $instance = new TestTrait(); + echo $instance->traitfunc("Evy"); + $instance->test(); + break; + case 'test_callback': + $className = "app\CallBackFunc"; + $funcName = "fnCallback1"; + $instance = new CallBackFunc(); + call_user_func_array(array($className, $funcName), array("hello", "world")); + call_user_func_array(array($instance,"fnCallback2"), array("hello", "world")); + break; + case 'test_level': + $instance = new LevelClass(); + $instance->public_function(123); + $instance = new ExtendLevel(); + $instance->public_function(123); + $instance = new OverRideLevel(); + $instance->public_function(123); + break; + case 'test_args': + $myfile = fopen(__DIR__.'/Args.php', "r"); + $instance = new TestArgs(); + $instance->test_args(null, 123, 3.1415, true, array(1, 2), new SObject(1), new SObjectString("ObjToString"), "abcd", $myfile, constant("GREETING")); + break; + case 'test_return': + $myfile = fopen(__DIR__.'/Args.php', "r"); + $instance = new TestReturn(); + $args = array(null, 123, 3.1415, true, array(1, 2), new SObject(1), new SObjectString("ObjToString"), "abcd", $myfile, constant("GREETING")); + foreach($args as $value){ + var_dump($instance->test_return($value)); + } + break; + case 'test_uncaught_exception': + TestError::throwException(); + break; + case 'test_caught_exception': + TestError::caughtException(); + break; + case 'test_exception_recursion': + TestError::test_cumsum_e1(3); + break; + case 'test_call_undefined_function': + $error = new TestError(); + try { + $error->error(); + $error->test_cumsum_e1(3); + $p = 123; + $error->testRetConst($p, '23'); + $error->testRetParm($p, '23'); + $error->testRetConstAndExp($p); + $error->testRetArgAndExp($p); + $error->testParseError(); + $error->testTypeError("abc"); + $error->testArithmeticError(); + $error->testDivisionByZeroError(); + $error->testAssertionError(); + }catch (Exception $ex){ + echo "Catch exception $ex"; + } + break; + case 'test_call_static': + TestError::Strict(); + break; + case 'test_curl': + $acr = new AccessRemote(); + $acr->gotoUrl($_GET['remote']); + break; + case 'test_pdo': + $pdo = new TestPDO(); + $pdo->connectDb(); + var_dump($pdo->getData1()); + echo "
"; + var_dump($pdo->getData2("select name from user;")); + echo "
"; + var_dump($pdo->getData3("select * from user;")); + break; + case 'test_mysqli': + $pdo = new TestMysqli(); + $pdo->connectDb(); + var_dump($pdo->getData1()); + echo "
"; + var_dump($pdo->getData2("select * from user;")); + break; + case 'test_redis': + $rd = new TestRedis(); + $rd->connect_redis(); + $rd->setdata("cat", "HuaMer"); + $rd->getdata("cat"); + $rd->getkey(); + $rd->deldata("cat"); + break; + case 'test_memcached': + $mc = new TestMemcached(); + $mc->mem_connect(); + $mc->mem_add("cat", "HuaMer"); + $mc->mem_get("cat"); + $mc->mem_replace("cat", "Miao"); + $mc->mem_del("cat"); + break; + default: + echo "not supported type $type"; +} + diff --git a/README.md b/README.md index 863ad75be..dbf8ff5ac 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ pinpoint| 1.8.0-RC1 5. export COLLECTOR_CONFIG=/full path of collector.conf/ 6. run collector-agent ``` + $ ./init_python_env.sh $ ./run.sh ``` From add4be0c146501e35b026030f3bca17ed42fd7e9 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Wed, 22 Jan 2020 18:06:30 +0800 Subject: [PATCH 30/45] rollback to thread mode GRPC worked abnormal under process mode Lock the process when fork --- PHP/pinpoint_php_ext/pinpoint_php.cpp | 10 +++- collector-agent/CollectorAgent/GrpcAgent.py | 2 +- .../CollectorAgent/GrpcAgentImplement.py | 48 +++++++------------ collector-agent/CollectorAgent/GrpcSpan.py | 12 +++-- 4 files changed, 33 insertions(+), 39 deletions(-) diff --git a/PHP/pinpoint_php_ext/pinpoint_php.cpp b/PHP/pinpoint_php_ext/pinpoint_php.cpp index af07414b5..c9ff5e42d 100644 --- a/PHP/pinpoint_php_ext/pinpoint_php.cpp +++ b/PHP/pinpoint_php_ext/pinpoint_php.cpp @@ -96,6 +96,7 @@ static int connect_remote(TransLayer* t_layer,const char* statement); static int recv_msg_from_collector(TransLayer *t_layer); static int handle_msg_from_collector(const char* buf,size_t len); static void handle_agent_info(int type,const char* buf,size_t len); +static void uninit_shared_obj(); static void reset_remote(TransLayer* t_layer); static size_t trans_layer_pool(TransLayer* t_layer); @@ -500,8 +501,8 @@ PHP_MINIT_FUNCTION(pinpoint_php) zend_error_cb = apm_error_cb; PPG(agent_info).start_time = get_current_msec_stamp(); + uninit_shared_obj(); checking_and_init(); - return SUCCESS; } /* }}} */ @@ -894,7 +895,7 @@ inline void asy_send_msg_to_agent(TransLayer* t_layer,const std::string &data) // append to end if(insert_into_chunks(t_layer->chunks,data) != 0 ) { - pp_trace("Send buffer is full. size:[%d]",data.length()); + pp_trace("Send buffer is full. input size:[%d]",data.length()); return ; } @@ -919,6 +920,11 @@ uint64_t get_current_msec_stamp() return tv.tv_sec*1000 + tv.tv_usec /1000; } +void uninit_shared_obj() +{ + remove(PPG(shared_obj).address); +} + /** * sysconf(_SC_PAGESIZE) * diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index 9d45eeb82..3058c8979 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -73,7 +73,7 @@ def _registerAgent(self): iter_response = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) try: for response in iter_response: - TCLogger.debug('get ping response %s', response) + TCLogger.debug('get ping response:%s agentinfo:%s', response,self.meta) except Exception as e: TCLogger.error("[%s] ping response abort with exception %s", e,self.agentinfo) time.sleep(self.timeout) diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 805ff956f..adb762faa 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -19,8 +19,8 @@ # Created by eeliu at 10/16/19 -from multiprocessing import Process, Queue -from queue import Full +from threading import Thread +from queue import Full,Queue from setproctitle import setproctitle @@ -44,18 +44,19 @@ def __init__(self, span_addr, appid, appname, starttime,max_pending_sz): self.span_addr = span_addr self.max_pending_sz =max_pending_sz self.span_queue = Queue(self.max_pending_sz) - self.sender_process = Process(target=self.spanSenderMain, args=(self.span_queue,)) + self.span_client = GrpcSpan(self.span_addr, self.agent_meta) TCLogger.info("Successfully create a Span Sender") def start(self): - self.sender_process.start() + self.sender_thread = Thread(target=self.spanSenderMain, args=(self.span_queue,)) + self.sender_thread.start() - def sender(self, spanMesg): + def sendSpan(self, spanMesg): try: self.span_queue.put(spanMesg, False) except Full as e: - TCLogger.error("send span failed: with queue is FUll. Queue size:%d", e,self.span_queue.maxsize) + TCLogger.error("send span failed: with queue is FUll. Queue size:%d", self.span_queue.qsize()) return False except Exception as e: TCLogger.error("send span failed: %s", e) @@ -63,13 +64,12 @@ def sender(self, spanMesg): return True def stopSelf(self): - self.sender_process.terminate() - self.sender_process.join() + self.span_client.stop() + self.sender_thread.join() def spanSenderMain(self, queue): - setproctitle("python run.py [%s-%s] spanSender" % (self.agent_id, self.agent_name)) - span_client = GrpcSpan(self.span_addr, self.agent_meta) - span_client.startSender(queue) + self.span_client = GrpcSpan(self.span_addr, self.agent_meta) + self.span_client.startSender(queue) def __init__(self, ac, app_id, app_name, serviceType=PHP): @@ -81,8 +81,6 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): self.startTimeStamp = ac.startTimestamp self.max_pending_sz = ac.max_pending_size - self.write_queue_ofs = 0 - self.span_buff = ([], []) self.agent_addr = ac.CollectorAgentIp + ':' + str(ac.CollectorAgentPort) self.stat_addr = ac.CollectorStatIp + ':' + str(ac.CollectorSpanPort) self.span_addr = ac.CollectorSpanIp + ':' + str(ac.CollectorSpanPort) @@ -93,7 +91,6 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): self.span_sender_list = [] self.sender_index = 0 self._startSpanSender() - self.iter_sender_list = iter(self.span_sender_list) self.agent_client = GrpcAgent(self.agentHost.hostname, self.agentHost.ip, ac.getWebPort(), os.getpid(), self.agent_addr, self.agent_meta) @@ -104,33 +101,21 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): def start(self): pass - def _sendSpan(self, spanMesg): - - max_checking = len(self.span_sender_list) - - while self.span_sender_list[self.sender_index].sender(spanMesg) == False: - TCLogger.debug("sender index %d is busy", self.sender_index) - self.sender_index += 1 - if self.sender_index >= len(self.span_sender_list): - self.sender_index = 0 - max_checking -= 1 - if max_checking == 0: - return False - - self.sender_index += 1 - if self.sender_index >= len(self.span_sender_list): - self.sender_index = 0 + def _sendSpan(self, spanMsg): + self.span_sender_list[0].sendSpan(spanMsg) return True def sendSpan(self, stack, body): pSpan = self.span_factory.make_span(stack) spanMesg = PSpanMessage(span=pSpan) + if self._sendSpan(spanMesg): return True + else: - TCLogger.info("send is block, try to create span process count:%s", len(self.span_sender_list)) if len(self.span_sender_list) < self.max_span_sender_size: + TCLogger.warn("try to create a new span_sender") self._startSpanSender() else: TCLogger.warn("span_processes extend to max size") @@ -142,6 +127,7 @@ def _startSpanSender(self): spanSender.start() self.span_sender_list.append(spanSender) + def stop(self): for sender in self.span_sender_list: sender.stopSelf() diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 0cec86ef4..57c1c646b 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -33,10 +33,8 @@ def __init__(self, address, meta): # self.is_ok = True self.span_stub = Service_pb2_grpc.SpanStub(self.channel) - self.span_count = 0 + self.is_running = True self.is_ok = False - self.droped_span_count = 0 - self.log_span_transit_count = 0 def channel_set_ready(self): self.is_ok = True @@ -47,6 +45,11 @@ def channel_set_idle(self): def channel_set_error(self): self.is_ok = False + def stop(self): + super().stop() + self.is_running = False + + def startSender(self, queue): spans = [] @@ -58,10 +61,9 @@ def get_N_span(queue, N): i += 1 except Empty as e: pass - # TCLogger.debug("get span from queue timeout") return True if i > 0 else False - while True: + while self.is_running: try: if not get_N_span(queue, 1024): time.sleep(2) From b6199744bb88dbac29e2ac37f5fb8bc75ba3a72a Mon Sep 17 00:00:00 2001 From: liumingyi Date: Thu, 23 Jan 2020 11:23:06 +0800 Subject: [PATCH 31/45] increase the max cache size --- collector-agent/CollectorAgent/GrpcSpan.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 57c1c646b..b5250e6ca 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -65,7 +65,7 @@ def get_N_span(queue, N): while self.is_running: try: - if not get_N_span(queue, 1024): + if not get_N_span(queue, 10240): time.sleep(2) continue self.span_stub.SendSpan(iter(spans)) @@ -74,4 +74,4 @@ def get_N_span(queue, N): traceback.print_exc() time.sleep(10) finally: - spans.clear() + spans.clear() \ No newline at end of file From 2a36eabc1667409ee2ada505a03b1f6be9e1f375 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Thu, 23 Jan 2020 11:24:27 +0800 Subject: [PATCH 32/45] free the res when module exit --- PHP/pinpoint_php_ext/pinpoint_php.cpp | 5 ++--- README.md | 3 +-- collector-agent/run.sh | 9 --------- 3 files changed, 3 insertions(+), 14 deletions(-) delete mode 100755 collector-agent/run.sh diff --git a/PHP/pinpoint_php_ext/pinpoint_php.cpp b/PHP/pinpoint_php_ext/pinpoint_php.cpp index c9ff5e42d..05868d1f0 100644 --- a/PHP/pinpoint_php_ext/pinpoint_php.cpp +++ b/PHP/pinpoint_php_ext/pinpoint_php.cpp @@ -515,14 +515,13 @@ PHP_MSHUTDOWN_FUNCTION(pinpoint_php) UNREGISTER_INI_ENTRIES(); */ -#if 0 - no needs to call when module shutdown + if(PPG(root)){ delete (Json::Value *)PPG(root); + PPG(root) = NULL; } reset_remote(); -#endif return SUCCESS; } diff --git a/README.md b/README.md index dbf8ff5ac..ef637d10a 100644 --- a/README.md +++ b/README.md @@ -82,8 +82,7 @@ pinpoint| 1.8.0-RC1 5. export COLLECTOR_CONFIG=/full path of collector.conf/ 6. run collector-agent ``` - $ ./init_python_env.sh - $ ./run.sh + $ python run.py ``` > Try the aop example diff --git a/collector-agent/run.sh b/collector-agent/run.sh deleted file mode 100755 index 3be129bb9..000000000 --- a/collector-agent/run.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -PPATH=$(dirname "$0") -#export GRPC_TRACE=all -#export GRPC_VERBOSITY=INFO -#export GODEBUG=http2debug=1 -export GRPC_ENABLE_FORK_SUPPORT=1 -#python -m plop.collector -f flamegraph $PPATH/run.py -python $PPATH/run.py From 629b83c3a9ee86ffc8ef957e42af35e854310010 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 3 Feb 2020 14:38:40 +0800 Subject: [PATCH 33/45] Stopping the thread when exit --- collector-agent/CollectorAgent/GrpcAgent.py | 37 +++++-------------- .../PinpointAgent/AppManagement.py | 2 + collector-agent/run.py | 5 ++- 3 files changed, 16 insertions(+), 28 deletions(-) diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index 3058c8979..e160ab5fa 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -45,13 +45,13 @@ def __init__(self, hostname, ip, ports, pid, address, meta=None, maxPending=-1, self.ping_meta = meta.append(('socketid', str(GrpcAgent.PINGID))) self.timeout = timeout self._register() + self.task_running = False self.is_ok = False def channel_set_ready(self): self.is_ok = True def channel_set_idle(self): - # self._register_agent() self.is_ok = False def channel_set_error(self): @@ -63,7 +63,8 @@ def _register(self): self.agent_thread.start() def _registerAgent(self): - while True: + self.task_running = True + while self.task_running: try: self.stub.RequestAgentInfo(self.agentinfo, wait_for_ready=True) except Exception as e: @@ -78,36 +79,18 @@ def _registerAgent(self): TCLogger.error("[%s] ping response abort with exception %s", e,self.agentinfo) time.sleep(self.timeout) - def reponseAgentInfoCallback(self, future): - if future.exception(): - TCLogger.error("agent catch exception %s.", future.exception()) - return - - if future.result(): - TCLogger.debug("agent register done:%s", future.result()) - self.is_ok = True - self._startPingThread() - def _pingPPing(self): - while self.is_ok: + while self.is_ok and self.task_running: ping = PPing() TCLogger.debug("%s send ping", self) yield ping time.sleep(self.timeout) - def _startPingThread(self): - # create ping stub - iter_reponse = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) - self.ping_reponse_task = threading.Thread(target=self._pingResponse, args=(iter_reponse,)) - self.ping_reponse_task.start() - - def _pingResponse(self, response_iter): - try: - for response in response_iter: - TCLogger.debug('get ping response %s', response) - except Exception as e: - TCLogger.error("ping response abort with exception %s", e) - self._registerAgent() - def __str__(self): return 'agentclient: hostname:%s ip:%s pid:%d address:%s' % (self.hostname, self.ip, self.pid, self.address) + + def stop(self): + if self.task_running: + self.task_running = False + self.agent_thread.join() + print("agent thread exit") \ No newline at end of file diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 12eb3b318..ef07a43fe 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -34,6 +34,7 @@ def __init__(self,collector_conf,service_type=PHP): self.default_appname = self.collector_conf.ApplicationName self.app_map = {} self.default_app = None + self.recv_count = 0 self.create_default_implement(service_type) def create_default_implement(self,service_type): @@ -89,6 +90,7 @@ def handle_front_agent_data(self,client,type,body): ft = stack['FT'] app = self.find_app(appid,appname,ft) app.sendSpan(stack,body) + self.recv_count+=1 def tell_whoami(self): return { diff --git a/collector-agent/run.py b/collector-agent/run.py index f61111a9f..cd6da1a14 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -46,7 +46,10 @@ def __init__(self): def run(self): while True: - gevent.sleep(10) + try: + gevent.sleep(10) + except: + break # break by a signal self.app_management.stop_all() self.php_agent.stop() From ba36bb7a69b155830e80f1939743c8f36665c2e7 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 3 Feb 2020 18:23:22 +0800 Subject: [PATCH 34/45] Add trace logging --- collector-agent/CollectorAgent/GrpcAgentImplement.py | 4 +++- collector-agent/CollectorAgent/GrpcSpan.py | 3 +++ collector-agent/PinpointAgent/AppManagement.py | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index adb762faa..6b3e44c4a 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -45,6 +45,7 @@ def __init__(self, span_addr, appid, appname, starttime,max_pending_sz): self.max_pending_sz =max_pending_sz self.span_queue = Queue(self.max_pending_sz) self.span_client = GrpcSpan(self.span_addr, self.agent_meta) + self.dropped_span_count=0 TCLogger.info("Successfully create a Span Sender") def start(self): @@ -56,7 +57,7 @@ def sendSpan(self, spanMesg): try: self.span_queue.put(spanMesg, False) except Full as e: - TCLogger.error("send span failed: with queue is FUll. Queue size:%d", self.span_queue.qsize()) + self.dropped_span_count+=1 return False except Exception as e: TCLogger.error("send span failed: %s", e) @@ -66,6 +67,7 @@ def sendSpan(self, spanMesg): def stopSelf(self): self.span_client.stop() self.sender_thread.join() + TCLogger.info("grpc agent dropped %d",self.dropped_span_count) def spanSenderMain(self, queue): self.span_client = GrpcSpan(self.span_addr, self.agent_meta) diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index b5250e6ca..408bf6977 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -34,6 +34,7 @@ def __init__(self, address, meta): # self.is_ok = True self.span_stub = Service_pb2_grpc.SpanStub(self.channel) self.is_running = True + self.send_span_count = 0 self.is_ok = False def channel_set_ready(self): @@ -48,6 +49,7 @@ def channel_set_error(self): def stop(self): super().stop() self.is_running = False + TCLogger.info("send %d to pinpoint collector",self.send_span_count) def startSender(self, queue): @@ -68,6 +70,7 @@ def get_N_span(queue, N): if not get_N_span(queue, 10240): time.sleep(2) continue + self.send_span_count+=len(spans) self.span_stub.SendSpan(iter(spans)) except Exception as e: TCLogger.error("span channel, can't work:exception:%s", e) diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index ef07a43fe..8add53536 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -69,6 +69,7 @@ def stop_all(self): assert(isinstance(instance,PinpointAgent)) TCLogger.info("application is stopping [%s]",app_id) instance.stop() + TCLogger.info("recieved %d span from php-fpm",self.recv_count) def handle_front_agent_data(self,client,type,body): content = body.decode('utf-8') From e9fb3d9a87b69749b1c4861b012a096814b7df32 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 4 Feb 2020 10:35:21 +0800 Subject: [PATCH 35/45] fix the compile error --- PHP/pinpoint_php_ext/pinpoint_php.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PHP/pinpoint_php_ext/pinpoint_php.cpp b/PHP/pinpoint_php_ext/pinpoint_php.cpp index 05868d1f0..3cc5be76a 100644 --- a/PHP/pinpoint_php_ext/pinpoint_php.cpp +++ b/PHP/pinpoint_php_ext/pinpoint_php.cpp @@ -521,7 +521,7 @@ PHP_MSHUTDOWN_FUNCTION(pinpoint_php) PPG(root) = NULL; } - reset_remote(); + reset_remote(&PPG(t_layer)); return SUCCESS; } From bcae71527dd7578f15ebccde2efc9c92c4ee871a Mon Sep 17 00:00:00 2001 From: liumingyi Date: Tue, 4 Feb 2020 21:33:02 +0800 Subject: [PATCH 36/45] - fix agent offline - add safe exit --- collector-agent/CollectorAgent/GrpcAgent.py | 38 ++++++++++++------- .../CollectorAgent/GrpcAgentImplement.py | 19 +++++----- collector-agent/CollectorAgent/GrpcSpan.py | 36 +++++++++++------- 3 files changed, 56 insertions(+), 37 deletions(-) diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index e160ab5fa..9f38105f0 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -37,16 +37,18 @@ def __init__(self, hostname, ip, ports, pid, address, meta=None, maxPending=-1, self.hostname = hostname self.ip = ip self.pid = pid + self.is_ok = False + self.timeout = timeout + self.pingid = GrpcAgent.PINGID + GrpcAgent.PINGID += 1 + self.exit_cv = threading.Condition() self.stub = Service_pb2_grpc.AgentStub(self.channel) self.agentinfo = PAgentInfo(hostname=hostname, ip=ip, ports=ports, pid=pid, endTimestamp=-1, serviceType=PHP) - self.pingid = GrpcAgent.PINGID - GrpcAgent.PINGID += 1 self.ping_meta = meta.append(('socketid', str(GrpcAgent.PINGID))) - self.timeout = timeout self._register() + self.exiting = False self.task_running = False - self.is_ok = False def channel_set_ready(self): self.is_ok = True @@ -63,34 +65,44 @@ def _register(self): self.agent_thread.start() def _registerAgent(self): - self.task_running = True + self.task_running = True while self.task_running: try: self.stub.RequestAgentInfo(self.agentinfo, wait_for_ready=True) except Exception as e: TCLogger.warn("[%s] pinpoint collector is not available. Try it again",self.agentinfo) continue - + finally: + with self.exit_cv: + if self.exit_cv.wait(self.timeout): + break iter_response = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) try: for response in iter_response: TCLogger.debug('get ping response:%s agentinfo:%s', response,self.meta) except Exception as e: TCLogger.error("[%s] ping response abort with exception %s", e,self.agentinfo) - time.sleep(self.timeout) - + + def _pingPPing(self): - while self.is_ok and self.task_running: + while self.is_ok: ping = PPing() TCLogger.debug("%s send ping", self) yield ping - time.sleep(self.timeout) + with self.exit_cv: + if self.exit_cv.wait(self.timeout): + TCLogger.debug("generate ping exit") + self.exiting = True + break + def __str__(self): return 'agentclient: hostname:%s ip:%s pid:%d address:%s' % (self.hostname, self.ip, self.pid, self.address) def stop(self): - if self.task_running: - self.task_running = False + TCLogger.debug("agent thread try to stop") + self.task_running = False + with self.exit_cv: + self.exit_cv.notify_all() self.agent_thread.join() - print("agent thread exit") \ No newline at end of file + TCLogger.debug("agent thread exit") \ No newline at end of file diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 6b3e44c4a..3d82cc2e6 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -49,8 +49,8 @@ def __init__(self, span_addr, appid, appname, starttime,max_pending_sz): TCLogger.info("Successfully create a Span Sender") def start(self): - self.sender_thread = Thread(target=self.spanSenderMain, args=(self.span_queue,)) - self.sender_thread.start() + self.span_client.start(self.span_queue) + def sendSpan(self, spanMesg): @@ -66,13 +66,8 @@ def sendSpan(self, spanMesg): def stopSelf(self): self.span_client.stop() - self.sender_thread.join() TCLogger.info("grpc agent dropped %d",self.dropped_span_count) - def spanSenderMain(self, queue): - self.span_client = GrpcSpan(self.span_addr, self.agent_meta) - self.span_client.startSender(queue) - def __init__(self, ac, app_id, app_name, serviceType=PHP): assert ac.collector_type == SUPPORT_GRPC @@ -109,9 +104,12 @@ def _sendSpan(self, spanMsg): return True def sendSpan(self, stack, body): - pSpan = self.span_factory.make_span(stack) - spanMesg = PSpanMessage(span=pSpan) - + try: + pSpan = self.span_factory.make_span(stack) + spanMesg = PSpanMessage(span=pSpan) + except Exception as e: + TCLogger.warn(" interrupted by %s",e) + return False if self._sendSpan(spanMesg): return True @@ -131,6 +129,7 @@ def _startSpanSender(self): def stop(self): + self.agent_client.stop() for sender in self.span_sender_list: sender.stopSelf() diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 408bf6977..d8e3ab20d 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -21,7 +21,7 @@ import time import traceback from queue import Empty - +from threading import Condition,Thread import Service_pb2_grpc from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger @@ -30,12 +30,13 @@ class GrpcSpan(GrpcClient): def __init__(self, address, meta): super().__init__(address, meta) - - # self.is_ok = True self.span_stub = Service_pb2_grpc.SpanStub(self.channel) - self.is_running = True + self.exit_cv = Condition() self.send_span_count = 0 self.is_ok = False + self.task_thead = Thread(target=self.startSender) + self.task_running = False + self.queue = None def channel_set_ready(self): self.is_ok = True @@ -47,15 +48,21 @@ def channel_set_error(self): self.is_ok = False def stop(self): - super().stop() - self.is_running = False + self.task_running = False + with self.exit_cv: + self.exit_cv.notify_all() + self.task_thead.join() TCLogger.info("send %d to pinpoint collector",self.send_span_count) + def start(self,queue): + self.queue = queue + self.task_thead.start() - def startSender(self, queue): - spans = [] + def startSender(self): + self.task_running = True - def get_N_span(queue, N): + spans = [] + def get_maxN_span(queue, N): i = 0 try: while N > i: @@ -65,16 +72,17 @@ def get_N_span(queue, N): pass return True if i > 0 else False - while self.is_running: + while self.task_running: try: - if not get_N_span(queue, 10240): - time.sleep(2) + if not get_maxN_span(self.queue, 10240): + with self.exit_cv: + if self.exit_cv.wait(5): + break continue self.send_span_count+=len(spans) self.span_stub.SendSpan(iter(spans)) except Exception as e: TCLogger.error("span channel, can't work:exception:%s", e) traceback.print_exc() - time.sleep(10) finally: - spans.clear() \ No newline at end of file + spans.clear() From b13afbec106ce03bbd3d9945ae7772daae9b8338 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Wed, 5 Feb 2020 22:14:53 +0800 Subject: [PATCH 37/45] fix reconnection loss --- collector-agent/CollectorAgent/GrpcAgent.py | 16 +++++++++------- .../CollectorAgent/GrpcAgentImplement.py | 3 +++ collector-agent/CollectorAgent/GrpcClient.py | 3 +++ collector-agent/CollectorAgent/GrpcMeta.py | 2 ++ collector-agent/CollectorAgent/GrpcSpan.py | 1 + 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index 9f38105f0..e7c7a6cc7 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -46,8 +46,6 @@ def __init__(self, hostname, ip, ports, pid, address, meta=None, maxPending=-1, self.agentinfo = PAgentInfo(hostname=hostname, ip=ip, ports=ports, pid=pid, endTimestamp=-1, serviceType=PHP) self.ping_meta = meta.append(('socketid', str(GrpcAgent.PINGID))) - self._register() - self.exiting = False self.task_running = False def channel_set_ready(self): @@ -59,7 +57,7 @@ def channel_set_idle(self): def channel_set_error(self): self.is_ok = False - def _register(self): + def start(self): # start a thread to handle register self.agent_thread = threading.Thread(target=self._registerAgent) self.agent_thread.start() @@ -68,20 +66,24 @@ def _registerAgent(self): self.task_running = True while self.task_running: try: - self.stub.RequestAgentInfo(self.agentinfo, wait_for_ready=True) + TCLogger.debug("sending agentinfo %s",self.agentinfo) + self.stub.RequestAgentInfo(self.agentinfo) except Exception as e: - TCLogger.warn("[%s] pinpoint collector is not available. Try it again",self.agentinfo) + TCLogger.warn(" pinpoint collector is not available. Try it again [%s] ",self.agentinfo) continue finally: with self.exit_cv: if self.exit_cv.wait(self.timeout): break + iter_response = self.stub.PingSession(self._pingPPing(), metadata=self.ping_meta) try: for response in iter_response: TCLogger.debug('get ping response:%s agentinfo:%s', response,self.meta) except Exception as e: - TCLogger.error("[%s] ping response abort with exception %s", e,self.agentinfo) + TCLogger.error("ping response abort with exception: [%s] %s",self.agentinfo, e) + + TCLogger.debug('agent thread exit: %s',self.task_running) def _pingPPing(self): @@ -92,7 +94,6 @@ def _pingPPing(self): with self.exit_cv: if self.exit_cv.wait(self.timeout): TCLogger.debug("generate ping exit") - self.exiting = True break @@ -105,4 +106,5 @@ def stop(self): with self.exit_cv: self.exit_cv.notify_all() self.agent_thread.join() + super().stop() TCLogger.debug("agent thread exit") \ No newline at end of file diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 3d82cc2e6..4ac4928ef 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -93,6 +93,8 @@ def __init__(self, ac, app_id, app_name, serviceType=PHP): self.agent_addr, self.agent_meta) self.meta_client = GrpcMeta(self.agent_addr, self.agent_meta) + self.agent_client.start() + self.meta_client.start() self.span_factory = GrpcSpanFactory(self) def start(self): @@ -130,6 +132,7 @@ def _startSpanSender(self): def stop(self): self.agent_client.stop() + self.meta_client.stop() for sender in self.span_sender_list: sender.stopSelf() diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index d7e69bc3e..508850fa0 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -121,3 +121,6 @@ def channel_set_error(self): def stop(self): self.channel.close() + + def start(self): + raise NotImplemented() diff --git a/collector-agent/CollectorAgent/GrpcMeta.py b/collector-agent/CollectorAgent/GrpcMeta.py index cf380caa2..4bf30a7cc 100644 --- a/collector-agent/CollectorAgent/GrpcMeta.py +++ b/collector-agent/CollectorAgent/GrpcMeta.py @@ -112,3 +112,5 @@ def _register_all_meta(self): # string for key, value in self.string_table.items(): self._send_string_meta(value[1]) + def start(self): + pass diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index d8e3ab20d..9fb5841ee 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -52,6 +52,7 @@ def stop(self): with self.exit_cv: self.exit_cv.notify_all() self.task_thead.join() + super().stop() TCLogger.info("send %d to pinpoint collector",self.send_span_count) def start(self,queue): From efd8be446f6722093d2b427ead6f65e10ac92fb8 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Thu, 6 Feb 2020 21:46:38 +0800 Subject: [PATCH 38/45] fix apimeta data loss --- collector-agent/CollectorAgent/GrpcMeta.py | 34 ++++++++++++++++++---- collector-agent/Events/GTimer.py | 34 ++++++++++++++++++---- collector-agent/Test/test_GTimer.py | 34 ++++++++++++++++++++++ 3 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 collector-agent/Test/test_GTimer.py diff --git a/collector-agent/CollectorAgent/GrpcMeta.py b/collector-agent/CollectorAgent/GrpcMeta.py index 4bf30a7cc..1e187c1b8 100644 --- a/collector-agent/CollectorAgent/GrpcMeta.py +++ b/collector-agent/CollectorAgent/GrpcMeta.py @@ -22,7 +22,7 @@ from CollectorAgent.GrpcClient import GrpcClient from Common.Logger import TCLogger from Span_pb2 import PSqlMetaData, PApiMetaData, PStringMetaData - +from Events.GTimer import GTimer class GrpcMeta(GrpcClient): def __init__(self, address, meta=None): @@ -33,6 +33,7 @@ def __init__(self, address, meta=None): self.sql_table = {} self.api_table = {} self.string_table = {} + self.recover_timer = GTimer() def _send_sql_meta(self, meta): assert isinstance(meta, PSqlMetaData) @@ -49,6 +50,19 @@ def _send_string_meta(self, meta): future = self.meta_stub.RequestStringMetaData.future(meta) future.add_done_callback(self._response) + def _channelCheck(fun): + def update(self, *args): + if not self.is_ok: + self.recover_timer.start(self._register_all_meta, 10) + result = fun(self, *args) + return result + return update + + def registerAllMeta(self): + if not self.is_ok: + self.recover_timer.start(self._register_all_meta, 10) + + @_channelCheck def update_api_meta(self, apiInfo, line, type): row_str = ("%s-%d-%d" % (apiInfo, line, type)) if row_str in self.api_table: @@ -61,7 +75,7 @@ def update_api_meta(self, apiInfo, line, type): self.id += 1 TCLogger.debug("register api meta id:%d -> api:[%s]", id, row_str) return id - + @_channelCheck def update_string_meta(self, value): if value in self.string_table: return self.string_table[value][0] @@ -74,6 +88,7 @@ def update_string_meta(self, value): TCLogger.debug("register string meta id:%d -> value:[%s]", id, value) return id + @_channelCheck def update_sql_meta(self, sql): if sql in self.sql_table: return self.sql_table[sql][0] @@ -86,23 +101,29 @@ def update_sql_meta(self, sql): TCLogger.debug("register sql meta id:%d -> sql:[%s]", id, sql) return id + def _response(self, future): if future.exception(): TCLogger.warning("register meta failed %s", future.exception) + self.is_ok = False return TCLogger.debug(future.result()) + self.is_ok = True def channel_set_ready(self): - self.is_ok = True + pass + # self.is_ok = True def channel_set_idle(self): - self._register_all_meta() - self.is_ok = True + pass + # self.is_ok = False def channel_set_error(self): - self.is_ok = False + pass + # self.is_ok = False def _register_all_meta(self): + TCLogger.info("register all meta data") # register sql for key, value in self.sql_table.items(): self._send_sql_meta(value[1]) @@ -112,5 +133,6 @@ def _register_all_meta(self): # string for key, value in self.string_table.items(): self._send_string_meta(value[1]) + def start(self): pass diff --git a/collector-agent/Events/GTimer.py b/collector-agent/Events/GTimer.py index 19d6b99b1..45896f7fa 100644 --- a/collector-agent/Events/GTimer.py +++ b/collector-agent/Events/GTimer.py @@ -16,10 +16,32 @@ # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ +from gevent import get_hub class GTimer(object): - @staticmethod - def registerTimers(callback,interval,args=None): - from gevent import get_hub - loop = get_hub().loop - time = loop.timer(0, interval) - time.start(callback,args) \ No newline at end of file + def __init__(self,only_once = True): + self.loop = get_hub().loop + self.timer = None + self.callback = None + self.only_once = only_once + self.started = False + + def _timerCallback(self,*args): + self.callback(*args) + if self.only_once : + self.timer.stop() + self.started = False + + def start(self, callback, interval, *args): + if self.started: + return + + self.started = True + self.timer = self.loop.timer(0, interval) + self.callback = callback + self.timer.start(self._timerCallback,*args) + + def stop(self): + if not self.only_once and self.timer: + self.timer.stop() + self.started = False + diff --git a/collector-agent/Test/test_GTimer.py b/collector-agent/Test/test_GTimer.py new file mode 100644 index 000000000..ac2cce6fd --- /dev/null +++ b/collector-agent/Test/test_GTimer.py @@ -0,0 +1,34 @@ +import unittest +from Events.GTimer import GTimer +from gevent import time +class TestStringMethods(unittest.TestCase): + def test_once_timer(self): + self.i = 0 + def add_1(args): + self.i+=1 + gt = GTimer() + gt.start(add_1, 0.1) + time.sleep(0.2) + self.assertEqual(self.i,1) + + def test_persist_timer(self): + self.i = 0 + + def add_1(args): + self.i += 1 + + gt = GTimer(only_once = False) + gt.start(add_1, 0.1) + gt.start(add_1, 0.1) + gt.start(add_1, 0.1) + gt.start(add_1, 0.1) + time.sleep(0.3) + self.assertTrue(self.i >= 3 and self.i <=4) + gt.stop() + time.sleep(0.3) + self.assertTrue(self.i >= 3 and self.i <= 4) + gt.start(add_1, 0.1) + time.sleep(0.3) + self.assertTrue(self.i >= 6 and self.i <= 8) + + From 0423f2f46c04d32ffb973d3bcf761bbc2b7e02e5 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Thu, 6 Feb 2020 21:47:49 +0800 Subject: [PATCH 39/45] remove testcase --- collector-agent/Test/conf/collector_grpc.conf | 17 --- .../Test/conf/collector_thrift.conf | 16 --- collector-agent/Test/poll_files.py | 26 ----- collector-agent/Test/test_common.py | 108 ------------------ collector-agent/Test/test_front_agent.py | 54 --------- collector-agent/Test/test_grpc_implement.py | 17 --- collector-agent/Test/test_grpc_protocol.py | 75 ------------ .../Test/test_grpc_protocol_routine.py | 104 ----------------- collector-agent/Test/test_implement.py | 69 ----------- collector-agent/Test/test_mq.py | 2 - .../Test/test_perf_of_unix_socket.py | 51 --------- collector-agent/Test/test_util.py | 88 -------------- 12 files changed, 627 deletions(-) delete mode 100644 collector-agent/Test/conf/collector_grpc.conf delete mode 100644 collector-agent/Test/conf/collector_thrift.conf delete mode 100644 collector-agent/Test/poll_files.py delete mode 100644 collector-agent/Test/test_common.py delete mode 100644 collector-agent/Test/test_front_agent.py delete mode 100644 collector-agent/Test/test_grpc_implement.py delete mode 100644 collector-agent/Test/test_grpc_protocol.py delete mode 100644 collector-agent/Test/test_grpc_protocol_routine.py delete mode 100644 collector-agent/Test/test_implement.py delete mode 100644 collector-agent/Test/test_mq.py delete mode 100644 collector-agent/Test/test_perf_of_unix_socket.py delete mode 100644 collector-agent/Test/test_util.py diff --git a/collector-agent/Test/conf/collector_grpc.conf b/collector-agent/Test/conf/collector_grpc.conf deleted file mode 100644 index fafe4c7f2..000000000 --- a/collector-agent/Test/conf/collector_grpc.conf +++ /dev/null @@ -1,17 +0,0 @@ -[Collector] -AgentID=phpmyadmin -ApplicationName=test-php -collector.grpc.agent.ip=dev-pinpoint -collector.grpc.agent.port=9991 -collector.grpc.stat.ip=dev-pinpoint -collector.grpc.stat.port=9992 -collector.grpc.span.ip=dev-pinpoint -collector.grpc.span.port=9993 -collector.grpc.discardpolicy.maxpendingthreshold=1024 - -[Common] -Web_Port=8001 -Log_Level=ERROR - -[Agent] -Address=/tmp/collector-agent.sock \ No newline at end of file diff --git a/collector-agent/Test/conf/collector_thrift.conf b/collector-agent/Test/conf/collector_thrift.conf deleted file mode 100644 index 33f70b475..000000000 --- a/collector-agent/Test/conf/collector_thrift.conf +++ /dev/null @@ -1,16 +0,0 @@ -[Collector] -AgentID=phpmyadmin -ApplicationName=test-php -CollectorSpanIp=dev-pinpoint -CollectorSpanPort=9996 -CollectorStatIp=dev-pinpoint -CollectorStatPort=9995 -CollectorTcpIp=dev-pinpoint -CollectorTcpPort=9994 - -[Common] -Web_Port=8001 -Log_Level=ERROR - -[Agent] -Address=/tmp/collector-agent.sock \ No newline at end of file diff --git a/collector-agent/Test/poll_files.py b/collector-agent/Test/poll_files.py deleted file mode 100644 index 64e8df7f5..000000000 --- a/collector-agent/Test/poll_files.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# Created by eeliu at 1/15/20 - -import sys -import time -import logging -from watchdog.observers import Observer -from watchdog.events import LoggingEventHandler - -if __name__ == "__main__": - logging.basicConfig(level=logging.INFO, - format='%(asctime)s - %(message)s', - datefmt='%Y-%m-%d %H:%M:%S') - path =sys.argv[1] if len(sys.argv) > 1 else '.' - event_handler = LoggingEventHandler() - observer = Observer() - observer.schedule(event_handler, path, recursive=True) - observer.start() - try: - while True: - time.sleep(1) - - except KeyboardInterrupt: - observer.stop() - observer.join() \ No newline at end of file diff --git a/collector-agent/Test/test_common.py b/collector-agent/Test/test_common.py deleted file mode 100644 index 7054fb5f0..000000000 --- a/collector-agent/Test/test_common.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# Created by eeliu at 10/16/19 - -# from queue import Queue -# import threading,time -# -# queue = Queue() -# def product(): -# obj =100000 -# while obj>0: -# queue.put(obj) -# print("pro: queue size:%d"%(queue.qsize())) -# obj-=1 -# time.sleep(3) -# -# def consumer(): -# while True: -# obj = queue.get() -# print("con: %d"%obj) -# -# def consumer1(): -# while True: -# obj = queue.get() -# print("con: %d"%obj) -# -# if __name__ == '__main__': -# -# pro = threading.Thread(target=product,args=()) -# con = threading.Thread(target=consumer, args=()) -# con1 = threading.Thread(target=consumer, args=()) -# con2 = threading.Thread(target=consumer1, args=()) -# -# pro.start() -# con.start() -# con2.start() -# con1.start() -# pro.join() -# con.join() -# con2.join() -# con1.join() - - -# from multiprocessing import Process, Queue -# import os - -# def run_in_process(queue): -# while True: -# obj = queue.get() -# print("%s %d \n"%(obj,os.getpid())) - -# if __name__ == '__main__': -# queue = Queue() - -# pro1 = Process(target=run_in_process,args=(queue,)) -# pro2 = Process(target=run_in_process,args=(queue,)) -# pro1.start() -# pro2.start() -# while True: -# queue.put('a') - - -import zmq -import random -import time -import os -from multiprocessing import Process - -def push_main(): - context = zmq.Context() - - # Socket to send messages on - sender = context.socket(zmq.PUSH) - sender.bind("tcp://*:5557") - i = 0 - while True: - sender.send(b'hello: %d'%(i)) - print("send %d\n"%(i)) - i+=1 - -def pull_main(): - context = zmq.Context() - - # Socket to receive messages on - receiver = context.socket(zmq.PULL) - receiver.connect("tcp://localhost:5557") - - # Process tasks forever - while True: - s = receiver.recv() - # time.sleep(1) - print("recv %d %s\n"%(os.getpid(),s)) - -if __name__ == '__main__': - push_process = Process(target=push_main) - pull_process1 = Process(target=pull_main) - pull_process2 = Process(target=pull_main) - - push_process.start() - pull_process1.start() - pull_process2.start() - push_process.join() - pull_process1.join() - pull_process2.join() - - - - diff --git a/collector-agent/Test/test_front_agent.py b/collector-agent/Test/test_front_agent.py deleted file mode 100644 index 3bd8e518e..000000000 --- a/collector-agent/Test/test_front_agent.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# Created by eeliu at 10/16/19 - -import sys,os - -from Common.Config import CAConfig -from Common.Logger import TCLogger -from Test.helloworld import helloworld_pb2 - -sys.path.append(os.path.abspath('..')) -sys.path.append(os.path.abspath('./helloworld')) - -from PHPAgent import PHPAgentConf -from PHPAgent.FrontAgent import FrontAgent - - -import grpc - -channel= grpc.insecure_channel('localhost:50051') - -def handleAgentPacket(client,type,str): - ''' - - :param str str: - :return: - ''' - - TCLogger.debug("%d,%s",type,str) - - stub = helloworld_pb2.GreeterStub(channel) - - def process_response(future): - print(future.result().message) - - call_future = stub.SayHello.future(helloworld_pb2.HelloRequest(name='you')) - call_future.add_done_callback(process_response) - - -if __name__ == '__main__': - - ac = PHPAgentConf(CAConfig) - agent = FrontAgent(ac, handleAgentPacket) - agent.start() - - from gevent.event import Event - import gevent,signal - evt = Event() - - gevent.signal(signal.SIGQUIT, evt.set) - gevent.signal(signal.SIGTERM, evt.set) - gevent.signal(signal.SIGINT, evt.set) - - evt.wait() diff --git a/collector-agent/Test/test_grpc_implement.py b/collector-agent/Test/test_grpc_implement.py deleted file mode 100644 index 363d7911d..000000000 --- a/collector-agent/Test/test_grpc_implement.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# Created by eeliu at 10/18/19\ -import time -from CollectorAgent.CollectorAgentConf import CollectorAgentConf -from CollectorAgent.GrpcAgentImplement import GrpcAgentImplement -from Common.Config import CAConfig - - -class FakeManager(object): - pass - -if __name__ == '__main__': - collector_conf = CollectorAgentConf(CAConfig) - agent = GrpcAgentImplement(collector_conf,'test-id','test-id-15') - agent.start() - time.sleep(3) diff --git a/collector-agent/Test/test_grpc_protocol.py b/collector-agent/Test/test_grpc_protocol.py deleted file mode 100644 index e98bc5b6f..000000000 --- a/collector-agent/Test/test_grpc_protocol.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# Created by eeliu at 10/21/19 - - -# -*- coding: UTF-8 -*- -import time -import logging -from unittest import TestCase -from CollectorAgent.GrpcAgent import GrpcAgent -from CollectorAgent.GrpcMeta import GrpcMeta -from CollectorAgent.GrpcSpan import GrpcSpan -from Span_pb2 import PTransactionId, PSpan, PSpanMessage - - -class TestGRPCRoutine(TestCase): - SEQ = 0 - def setUp(self) -> None: - # import sys, os - # sys.path.append(os.path.abspath('..')) - # pass - import sys - logger= logging.getLogger() - logger.level=logging.DEBUG - console_handler=logging.StreamHandler(sys.stdout) - logger.addHandler(console_handler) - self.logger = logger - starttime = str(int(time.time() * 1000)) - self.agent_meta = [('agentid', 'test-id'), - ('applicationname', 'test-name'), - ('starttime', starttime)] - self.agent = GrpcAgent('dev-1230', '10.10.12.23', '2345', 4569, 'dev-pinpoint:9991', self.agent_meta) - - def _generate_span(self): - - tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=TestGRPCRoutine.SEQ) - span =PSpan(version = 1, - transactionId=tid, - startTime= int(time.time()), - elapsed=10, - apiId=1, - serviceType=1500, - applicationServiceType=1500) - TestGRPCRoutine.SEQ+= 1 - msg= PSpanMessage(span=span) - self.logger.debug("generator a span") - return msg - - def test_sendspan(self): - spanclient = GrpcSpan(self._generate_span, 'dev-pinpoint:9993', self.agent_meta, 10) - time.sleep(5) - - def test_metaData(self): - apis=(['aa',10,0],['ada',12,0],['aa',31,2],['aaf',11,3]) - strings = ('aaaaaaaaaaaa','bbbbbbbbbbb','cccccccc') - sqls=('ssss','bbbbb','ssssssss') - meta_client = GrpcMeta('dev-pinpoint:9991', self.agent_meta) - id = 0 - for api in apis: - id = meta_client.update_api_meta(*api) - self.assertEqual(id,3) - for string in strings: - id = meta_client.update_string_meta(string) - self.assertEqual(id, 6) - for sql in sqls: - id = meta_client.update_sql_meta(sql) - self.assertEqual(id, 9) - - id = meta_client.update_sql_meta('ssss') - self.assertEqual(id, 7) - - id = meta_client.update_string_meta('bbbbbbbbbbb') - self.assertEqual(id, 5) - - time.sleep(3) \ No newline at end of file diff --git a/collector-agent/Test/test_grpc_protocol_routine.py b/collector-agent/Test/test_grpc_protocol_routine.py deleted file mode 100644 index b38455a8b..000000000 --- a/collector-agent/Test/test_grpc_protocol_routine.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# Created by eeliu at 10/14/19 -import grpc -import time - -from gevent import monkey -monkey.patch_all() -import grpc.experimental.gevent as grpc_gevent -grpc_gevent.init_gevent() - -from PinpointAgent.Type import PHP -from Proto.grpc import Service_pb2_grpc -from Proto.grpc.Stat_pb2 import PAgentInfo, PPing - - -from Span_pb2 import PSqlMetaData, PApiMetaData, PSpanMessage, PSpan, PTransactionId - - -def agentinfo(): - channel = grpc.insecure_channel('dev-pinpoint:9991') - stub = Service_pb2_grpc.AgentStub(channel) - starttime = str(int(time.time() * 1000)) - agent_meta =[('agentid', 'test-id'), - ('applicationname', 'test-name'), - ('starttime',starttime)] - - response, call = stub.RequestAgentInfo.with_call( - PAgentInfo(hostname='xxx', ip='ip', ports='456', pid=423, endTimestamp=-1, - serviceType=PHP), - metadata=agent_meta - ) - - print(response) - print(call.trailing_metadata()) - - # def ping_reqeust(): - # for i in range(10): - # ping = PPing() - # time.sleep(1) - # print('-') - # yield ping - # - # ping_meta = agent_meta[:] - # ping_meta.append(('socketid', '55')) - # ping_iter = stub.PingSession(ping_reqeust(),metadata=ping_meta) - # - # for ping in ping_iter: - # print(ping) - - - ## send metadata - # channel = grpc.insecure_channel('dev-pinpoint:9991') - # - # meta_stub = Service_pb2_grpc.MetadataStub(channel) - # - # result = meta_stub.RequestApiMetaData(PApiMetaData(apiId=1,apiInfo='name',line=10,type=0),metadata=agent_meta) - # print(result) - # - # ## snd span - channel = grpc.insecure_channel('dev-pinpoint:9993') - span_stub = Service_pb2_grpc.SpanStub(channel) - # - def request_span(): - for i in range(5): - tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=i) - span =PSpan(version = 1, - transactionId=tid, - startTime= int(time.time()), - elapsed=10, - apiId=1, - serviceType=1500, - applicationServiceType=1500) - meg= PSpanMessage(span=span) - yield meg - print("send span") - - def resp(self,*args): - print(args) - - response = span_stub.SendSpan.future(request_span(),metadata=agent_meta) - response.add_done_callback(resp) - - time.sleep(3) - - # print(call.trailing_metadata()) - - - - - # for r in results: - # print(r) - - - # while True: - # response, call = stub.PingSession(PPing(), metadata=agent_meta) - # print(response) - # print(call) - # time.sleep(1) - - - -if __name__ == '__main__': - agentinfo() \ No newline at end of file diff --git a/collector-agent/Test/test_implement.py b/collector-agent/Test/test_implement.py deleted file mode 100644 index 8631d61a0..000000000 --- a/collector-agent/Test/test_implement.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# Created by eeliu at 11/7/19 -import json -import time -from unittest import TestCase - -import gevent - -from CollectorAgent.CollectorAgentConf import CollectorAgentConf -from Common.Logger import TCLogger -from PinpointAgent.AppManagement import AppManagement -import os - -# class FakeCollectorAgentConf: -# def __init__(self): -# self.CollectorSpanIp ='dev-pinpoint' -# self.CollectorSpanPort =9996 -# self.CollectorStatIp ='dev-pinpoint' -# self.CollectorStatPort =9995 -# self.CollectorAgentIp ='dev-pinpoint' -# self.CollectorAgentPort =9994 -# self.max_pending_size =-1 -# self.collector_type = SUPPORT_THRIFT -# self.collector_implement = ThriftAgentImplement -# self.startTimestamp = int(time.time() * 1000) -# self.version = '1.8.0-RC1' -# def getWebPort(self): -# return '8080' - -class TestImplement(TestCase): - def setUp(self) -> None: - path = os.getcwd() - self.grpc_config = path+'/conf/collector_grpc.conf' - self.thrift_config = path+'/conf/collector_thrift.conf' - - def test_thrift(self): - os.environ['COLLECTOR_CONFIG'] = self.thrift_config - self.run_app_manager() - - def test_grpc(self): - os.environ['COLLECTOR_CONFIG'] = self.grpc_config - self.run_app_manager() - - def run_app_manager(self): - from Common.Config import CAConfig - collector_conf = CollectorAgentConf(CAConfig) - app_management = AppManagement(collector_conf) - i =10000 - while i >0: - # stime =1573438683 - # span = '{"name":"PHP Request","FT":1500,' \ - # '"server":"10.34.130.79:28081",' \ - # '"sid":"3345567788","psid":"3345567789","tid":"phpmyadmin^1560951035971^1",' \ - # '"S":1573438683,"E":20,' \ - # '"clues":["46:200"],' \ - # '"uri":"/index.html",' \ - # '"ERR":{"msg":"23456789op[xdcfvgbhnjmk"},' \ - # '"EC":1, "estr":"DIY",' \ - # '"calls":[{"name":"hello","S":1573438683,"E":8,"calls":[{"name":"hello2","1573438683":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":1573438683,"E":4}]}]}],' \ - # '"client":"10.10.10.10"}' - span ='''{"AP":"t=10 D=10 i=10 b=10","E":1,"FT":1500,"S":1573549175197,"appid":"app-2","appname":"APP-2","calls":[{"E":1,"S":0,"calls":[{"E":0,"S":1,"clues":["-1:Array()","14:ture"],"name":"date","stp":"1501"}],"clues":["-1:Array","14:ture"],"name":"AppDate::outputDate","stp":"1501"}],"client":"10.34.130.156","clues":["46:200"],"name":"PHP Request","server":"10.34.130.134:8001","sid":"213111260","stp":"1500","tid":"app-2^1573547333369^13794","uri":"/index.php?type=get_date"}''' - app_management.handle_front_agent_data(None, None, span.encode()) - i-= 1 - # time.sleep(3) - # gevent.sleep(1) - while True: - gevent.sleep(1) -# GRPC_TRACE=all;GRPC_VERBOSITY=DEBUG \ No newline at end of file diff --git a/collector-agent/Test/test_mq.py b/collector-agent/Test/test_mq.py deleted file mode 100644 index 139597f9c..000000000 --- a/collector-agent/Test/test_mq.py +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/collector-agent/Test/test_perf_of_unix_socket.py b/collector-agent/Test/test_perf_of_unix_socket.py deleted file mode 100644 index 9b7756c3e..000000000 --- a/collector-agent/Test/test_perf_of_unix_socket.py +++ /dev/null @@ -1,51 +0,0 @@ -import struct -import time - -from gevent import Timeout -from gevent import socket as gsocket - - -def output_src(socket,address): - print('New connection from %s' % address) - while True: - header = socket.recv(4) - len, = struct.unpack('!i', header) - print(len) - body = socket.recv(len) - print(body) - - -def timer_send_cc(socket): - socket.send("ccc") - -def timer_send(socket): - socket.send("ttt") - -count = 0 - -def client(): - global count - count+=1 - s = gsocket.socket(gsocket.AF_UNIX, gsocket.SOCK_STREAM) - - try: - s.connect(('/tmp/collector-agent.sock')) - except Timeout as t: - print("connect time out: %s"%str(t)) - except Exception as e: - print(str(e)) - json='{"a":1,"c":"123456789"}' - import struct - data = struct.pack('!ii',1,0) - s.send(data) - data =s.recv(1024) - s.close() - - -if __name__ == '__main__': - time_s = time.time() - i = 10000 - while i > 0: - client() - i-=1 - print(" speed:%f"%(time.time() - time_s)) \ No newline at end of file diff --git a/collector-agent/Test/test_util.py b/collector-agent/Test/test_util.py deleted file mode 100644 index 10070292c..000000000 --- a/collector-agent/Test/test_util.py +++ /dev/null @@ -1,88 +0,0 @@ - - - -#!/usr/bin/env python -from unittest import TestCase - -from CollectorAgent.TPackets import * - - -# -*- coding: UTF-8 -*- - -from Span_pb2 import PAcceptEvent, PSpan, PSpanEvent -# !/usr/bin/env python -from unittest import TestCase - -from CollectorAgent.TPackets import * -from Span_pb2 import PAcceptEvent, PSpan, PSpanEvent - - -# -*- coding: UTF-8 -*- - - -class TestUtil(TestCase): - def test_parseNetByteStream(self): - netFlow = struct.pack('!hii9shih',PacketType.CONTROL_HANDSHAKE,2,9,"123456789".encode(),PacketType.APPLICATION_STREAM_CLOSE,12345,0) - view = memoryview(netFlow) - - ipacket = Packet.parseNetByteStream(view,len(netFlow)) - - tp = next(ipacket) - - - self.assertEqual(tp[0], 19) - self.assertEqual(tp[1],PacketType.CONTROL_HANDSHAKE) - self.assertEqual(tp[2], 2) - self.assertEqual(tp[3].tobytes(),"123456789".encode()) - - tp = next(ipacket) - - - self.assertEqual(tp[0], 27) - self.assertEqual(tp[1],PacketType.APPLICATION_STREAM_CLOSE) - self.assertEqual(tp[2],12345) - self.assertEqual(tp[3],None) - - def test_queue(self): - - import threading - from queue import Queue - simple_queue = Queue() - - def worker(): - times = 10000 - while times>0 : - item = simple_queue.get() - if item is None: - raise - times-=1 - print("-1") - - def consumer(): - times = 10000 - while times > 0: - simple_queue.put(consumer) - times -= 1 - print("+1") - - - producer = threading.Thread(target=worker) - cons = threading.Thread(target=consumer) - producer.start() - cons.start() - producer.join() - cons.join() - def test_span(self): - acceptEv = PAcceptEvent() - args ={ - 'acceptEvent':acceptEv - } - span = PSpan() - span.serviceType =100 - print(span) - - def test_span_ev(self): - spanEv = PSpanEvent() - spanEv.depth = 1 - spanEv.sequence = 1 - print(spanEv) From dc52589980a2b045fabcf6fc5a830590593e479b Mon Sep 17 00:00:00 2001 From: liumingyi Date: Thu, 6 Feb 2020 23:31:05 +0800 Subject: [PATCH 40/45] add channel state watch --- collector-agent/CollectorAgent/GrpcAgent.py | 6 +- .../CollectorAgent/GrpcAgentImplement.py | 6 +- collector-agent/CollectorAgent/GrpcClient.py | 20 ++--- collector-agent/CollectorAgent/GrpcMeta.py | 56 ++++++------ collector-agent/CollectorAgent/GrpcSpan.py | 6 +- .../CollectorAgent/GrpcSpanFactory.py | 10 +-- .../CollectorAgent/ThriftAgentImplement.py | 2 +- .../CollectorAgent/ThriftSpanFactory.py | 10 +-- collector-agent/Events/GTimer.py | 2 +- collector-agent/PHPAgent/FrontAgent.py | 6 +- collector-agent/PHPAgent/SpanFactory.py | 28 +++--- .../PinpointAgent/AppManagement.py | 14 +-- collector-agent/Test/test_GTimer.py | 15 ++-- collector-agent/Test/test_grpc_protocol.py | 75 ++++++++++++++++ collector-agent/Test/test_implement.py | 69 +++++++++++++++ collector-agent/Test/test_metaAgent.py | 20 +++++ collector-agent/Test/test_util.py | 88 +++++++++++++++++++ collector-agent/run.py | 7 +- 18 files changed, 342 insertions(+), 98 deletions(-) create mode 100644 collector-agent/Test/test_grpc_protocol.py create mode 100644 collector-agent/Test/test_implement.py create mode 100644 collector-agent/Test/test_metaAgent.py create mode 100644 collector-agent/Test/test_util.py diff --git a/collector-agent/CollectorAgent/GrpcAgent.py b/collector-agent/CollectorAgent/GrpcAgent.py index e7c7a6cc7..15b73ca3d 100644 --- a/collector-agent/CollectorAgent/GrpcAgent.py +++ b/collector-agent/CollectorAgent/GrpcAgent.py @@ -48,13 +48,13 @@ def __init__(self, hostname, ip, ports, pid, address, meta=None, maxPending=-1, self.ping_meta = meta.append(('socketid', str(GrpcAgent.PINGID))) self.task_running = False - def channel_set_ready(self): + def channelSetReady(self): self.is_ok = True - def channel_set_idle(self): + def channelSetIdle(self): self.is_ok = False - def channel_set_error(self): + def channelSetError(self): self.is_ok = False def start(self): diff --git a/collector-agent/CollectorAgent/GrpcAgentImplement.py b/collector-agent/CollectorAgent/GrpcAgentImplement.py index 4ac4928ef..c8280b108 100644 --- a/collector-agent/CollectorAgent/GrpcAgentImplement.py +++ b/collector-agent/CollectorAgent/GrpcAgentImplement.py @@ -107,7 +107,7 @@ def _sendSpan(self, spanMsg): def sendSpan(self, stack, body): try: - pSpan = self.span_factory.make_span(stack) + pSpan = self.span_factory.makeSpan(stack) spanMesg = PSpanMessage(span=pSpan) except Exception as e: TCLogger.warn(" interrupted by %s",e) @@ -137,7 +137,7 @@ def stop(self): sender.stopSelf() def updateApiMeta(self, name, type=API_DEFAULT): - return self.meta_client.update_api_meta(name, -1, type) + return self.meta_client.updateApiMeta(name, -1, type) def updateStringMeta(self, name): - return self.meta_client.update_string_meta(name) + return self.meta_client.updateStringMeta(name) diff --git a/collector-agent/CollectorAgent/GrpcClient.py b/collector-agent/CollectorAgent/GrpcClient.py index 508850fa0..b8ce82ced 100644 --- a/collector-agent/CollectorAgent/GrpcClient.py +++ b/collector-agent/CollectorAgent/GrpcClient.py @@ -81,13 +81,13 @@ def __init__(self, address, meta=None, maxPending=-1, try_reconnect=True): if meta is not None: self.meta = meta intercept_channel = grpc.intercept_channel(channel, - self._interceptor_add_header(meta)) + self._interceptorAddHeader(meta)) channel = intercept_channel self.channel = channel - self.channel.subscribe(self._channel_state_change, try_reconnect) + self.channel.subscribe(self._channelStateChange, try_reconnect) - def _interceptor_add_header(self, header): + def _interceptorAddHeader(self, header): def intercept_call(client_call_details, request_iterator, request_streaming, response_streaming): metadata = [] @@ -101,22 +101,22 @@ def intercept_call(client_call_details, request_iterator, request_streaming, return _GenericClientInterceptor(intercept_call) - def _channel_state_change(self, activity): + def _channelStateChange(self, activity): if activity == grpc.ChannelConnectivity.TRANSIENT_FAILURE: - self.channel_set_error() + self.channelSetError() elif activity == grpc.ChannelConnectivity.READY: - self.channel_set_ready() + self.channelSetReady() elif activity == grpc.ChannelConnectivity.IDLE: - self.channel_set_idle() + self.channelSetIdle() TCLogger.debug("channel state change %s dst:%s", activity, self.address) - def channel_set_ready(self): + def channelSetReady(self): raise NotImplemented() - def channel_set_idle(self): + def channelSetIdle(self): raise NotImplemented() - def channel_set_error(self): + def channelSetError(self): raise NotImplemented() def stop(self): diff --git a/collector-agent/CollectorAgent/GrpcMeta.py b/collector-agent/CollectorAgent/GrpcMeta.py index 1e187c1b8..f81013a18 100644 --- a/collector-agent/CollectorAgent/GrpcMeta.py +++ b/collector-agent/CollectorAgent/GrpcMeta.py @@ -28,42 +28,38 @@ class GrpcMeta(GrpcClient): def __init__(self, address, meta=None): super().__init__(address, meta, -1) self.meta_stub = Service_pb2_grpc.MetadataStub(self.channel) - self.is_ok = False + self.must_snd_meta_now = False self.id = 0 self.sql_table = {} self.api_table = {} self.string_table = {} self.recover_timer = GTimer() - def _send_sql_meta(self, meta): + def _sendSqlMeta(self, meta): assert isinstance(meta, PSqlMetaData) future = self.meta_stub.RequestSqlMetaData.future(meta) future.add_done_callback(self._response) - def _send_api_meta(self, meta): + def _sendApiMeta(self, meta): assert isinstance(meta, PApiMetaData) future = self.meta_stub.RequestApiMetaData.future(meta) future.add_done_callback(self._response) - def _send_string_meta(self, meta): + def _sendStringMeta(self, meta): assert isinstance(meta, PStringMetaData) future = self.meta_stub.RequestStringMetaData.future(meta) future.add_done_callback(self._response) def _channelCheck(fun): def update(self, *args): - if not self.is_ok: - self.recover_timer.start(self._register_all_meta, 10) + if self.must_snd_meta_now: + self.recover_timer.start(self._registerAllMeta, 10) result = fun(self, *args) return result return update - def registerAllMeta(self): - if not self.is_ok: - self.recover_timer.start(self._register_all_meta, 10) - @_channelCheck - def update_api_meta(self, apiInfo, line, type): + def updateApiMeta(self, apiInfo, line, type): row_str = ("%s-%d-%d" % (apiInfo, line, type)) if row_str in self.api_table: return self.api_table[row_str][0] @@ -71,32 +67,33 @@ def update_api_meta(self, apiInfo, line, type): id = self.id meta = PApiMetaData(apiId=id, apiInfo=apiInfo, line=line, type=type) self.api_table[row_str] = [id, meta] - self._send_api_meta(meta) + self._sendApiMeta(meta) self.id += 1 TCLogger.debug("register api meta id:%d -> api:[%s]", id, row_str) return id + @_channelCheck - def update_string_meta(self, value): + def updateStringMeta(self, value): if value in self.string_table: return self.string_table[value][0] else: id = self.id meta = PStringMetaData(stringId=id, stringValue=value) self.string_table[value] = [id, meta] - self._send_string_meta(meta) + self._sendStringMeta(meta) self.id += 1 TCLogger.debug("register string meta id:%d -> value:[%s]", id, value) return id @_channelCheck - def update_sql_meta(self, sql): + def updateSqlMeta(self, sql): if sql in self.sql_table: return self.sql_table[sql][0] else: id = self.id meta = PSqlMetaData(sqlId=id, sql=sql) self.sql_table[sql] = [id, meta] - self._send_sql_meta(meta) + self._sendSqlMeta(meta) self.id += 1 TCLogger.debug("register sql meta id:%d -> sql:[%s]", id, sql) return id @@ -105,34 +102,31 @@ def update_sql_meta(self, sql): def _response(self, future): if future.exception(): TCLogger.warning("register meta failed %s", future.exception) - self.is_ok = False + # self.is_ok = False return - TCLogger.debug(future.result()) - self.is_ok = True + self.must_snd_meta_now = False - def channel_set_ready(self): - pass - # self.is_ok = True - def channel_set_idle(self): + def channelSetReady(self): pass - # self.is_ok = False - def channel_set_error(self): - pass - # self.is_ok = False + def channelSetIdle(self): + self.must_snd_meta_now =True + + def channelSetError(self): + self.must_snd_meta_now =True - def _register_all_meta(self): + def _registerAllMeta(self): TCLogger.info("register all meta data") # register sql for key, value in self.sql_table.items(): - self._send_sql_meta(value[1]) + self._sendSqlMeta(value[1]) # api for key, value in self.api_table.items(): - self._send_api_meta(value[1]) + self._sendApiMeta(value[1]) # string for key, value in self.string_table.items(): - self._send_string_meta(value[1]) + self._sendStringMeta(value[1]) def start(self): pass diff --git a/collector-agent/CollectorAgent/GrpcSpan.py b/collector-agent/CollectorAgent/GrpcSpan.py index 9fb5841ee..c81cd4a7a 100644 --- a/collector-agent/CollectorAgent/GrpcSpan.py +++ b/collector-agent/CollectorAgent/GrpcSpan.py @@ -38,13 +38,13 @@ def __init__(self, address, meta): self.task_running = False self.queue = None - def channel_set_ready(self): + def channelSetReady(self): self.is_ok = True - def channel_set_idle(self): + def channelSetIdle(self): self.is_ok = False - def channel_set_error(self): + def channelSetError(self): self.is_ok = False def stop(self): diff --git a/collector-agent/CollectorAgent/GrpcSpanFactory.py b/collector-agent/CollectorAgent/GrpcSpanFactory.py index 8657e1f41..1879da520 100644 --- a/collector-agent/CollectorAgent/GrpcSpanFactory.py +++ b/collector-agent/CollectorAgent/GrpcSpanFactory.py @@ -31,7 +31,7 @@ class GrpcSpanFactory(SpanFactory): - def create_span(self, stackMap): + def createSpan(self, stackMap): tSpan = PSpan() tSpan.apiId = self.agent.updateApiMeta(stackMap['name'], API_WEB_REQUEST) tSpan.version = 1 @@ -122,7 +122,7 @@ def create_span(self, stackMap): return tSpan - def create_span_event(self, stackMap): + def createSpanEvent(self, stackMap): assert 'name' in stackMap spanEv = PSpanEvent() spanEv.apiId = self.agent.updateApiMeta(stackMap['name']) @@ -167,11 +167,11 @@ def create_span_event(self, stackMap): return spanEv - def attach_span_event(self, tSpan, span_event): + def attachSpanEvent(self, tSpan, span_event): tSpan.spanEvent.append(span_event) - def set_sequenceid(self, span_ev, id): + def setSequenceid(self, span_ev, id): span_ev.sequence = id - def set_depth(self, span_ev, depth): + def setDepth(self, span_ev, depth): span_ev.depth = depth diff --git a/collector-agent/CollectorAgent/ThriftAgentImplement.py b/collector-agent/CollectorAgent/ThriftAgentImplement.py index 8ec1825c6..1e1a390b4 100644 --- a/collector-agent/CollectorAgent/ThriftAgentImplement.py +++ b/collector-agent/CollectorAgent/ThriftAgentImplement.py @@ -141,7 +141,7 @@ def sendSpan(self, stack, body): ''' ### must reset to zero - tSpan = self.span_factory.make_span(stack) + tSpan = self.span_factory.makeSpan(stack) body = CollectorPro.obj2bin(tSpan, SPAN) # packet = Packet(PacketType.HEADLESS, len(body), body) self.spanLayer.sendData(body) diff --git a/collector-agent/CollectorAgent/ThriftSpanFactory.py b/collector-agent/CollectorAgent/ThriftSpanFactory.py index 6281c23c5..d5408ec44 100644 --- a/collector-agent/CollectorAgent/ThriftSpanFactory.py +++ b/collector-agent/CollectorAgent/ThriftSpanFactory.py @@ -28,7 +28,7 @@ class ThriftSpanFactory(SpanFactory): - def create_span(self, stackMap): + def createSpan(self, stackMap): tSpan = TSpan() tSpan.apiId = self.agent.updateApiMeta(stackMap['name'], API_WEB_REQUEST).apiId tSpan.agentStartTime = self.agent.startTimeStamp @@ -124,7 +124,7 @@ def create_span(self, stackMap): return tSpan - def create_span_event(self, stackMap): + def createSpanEvent(self, stackMap): assert 'name' in stackMap spanEv = TSpanEvent() @@ -166,11 +166,11 @@ def create_span_event(self, stackMap): return spanEv - def attach_span_event(self, tSpan, span_event): + def attachSpanEvent(self, tSpan, span_event): tSpan.spanEventList.append(span_event) - def set_sequenceid(self, span_ev, id): + def setSequenceid(self, span_ev, id): span_ev.sequence = id - def set_depth(self, span_ev, depth): + def setDepth(self, span_ev, depth): span_ev.depth = depth diff --git a/collector-agent/Events/GTimer.py b/collector-agent/Events/GTimer.py index 45896f7fa..77506edc0 100644 --- a/collector-agent/Events/GTimer.py +++ b/collector-agent/Events/GTimer.py @@ -36,7 +36,7 @@ def start(self, callback, interval, *args): return self.started = True - self.timer = self.loop.timer(0, interval) + self.timer = self.loop.timer(interval,interval) self.callback = callback self.timer.start(self._timerCallback,*args) diff --git a/collector-agent/PHPAgent/FrontAgent.py b/collector-agent/PHPAgent/FrontAgent.py index 2e7667b57..58453b371 100644 --- a/collector-agent/PHPAgent/FrontAgent.py +++ b/collector-agent/PHPAgent/FrontAgent.py @@ -42,7 +42,7 @@ def __init__(self, ac, msgCallback): self.listen_socket = self._bindSocket(self.address) self.server = StreamServerLayer(self.listen_socket, self._recvData, self._phpClientSayHello) self.msgHandleCallback = msgCallback - self.hello_cb = [] + self.hello_callback = [] def _bindSocket(self,address): if address[0] =='/': # treat as unix socket @@ -79,11 +79,11 @@ def _recvData(self, client, buf, bsz): return 0 def registerPHPAgentHello(self,hello_cb): - self.hello_cb.append(hello_cb) + self.hello_callback.append(hello_cb) def _phpClientSayHello(self, client): response = {} - for cb in self.hello_cb: + for cb in self.hello_callback: data = cb() for key in data: response[key] = data[key] diff --git a/collector-agent/PHPAgent/SpanFactory.py b/collector-agent/PHPAgent/SpanFactory.py index 53b78957b..d82c50065 100644 --- a/collector-agent/PHPAgent/SpanFactory.py +++ b/collector-agent/PHPAgent/SpanFactory.py @@ -25,35 +25,35 @@ def __init__(self,agent): self.sequenceid = 0 self.agent = agent - def create_span(self,stackMap): + def createSpan(self, stackMap): raise NotImplemented - def create_span_event(self,stackMap): + def createSpanEvent(self, stackMap): raise NotImplemented - def attach_span_event(self,span,span_event): + def attachSpanEvent(self, span, span_event): raise NotImplemented - def make_span(self,stackMap): + def makeSpan(self, stackMap): self.sequenceid = 0 - span = self.create_span(stackMap) + span = self.createSpan(stackMap) if 'calls' in stackMap: for called in stackMap['calls']: - self.make_span_ev(span,called) + self.makeSpanEv(span, called) return span - def make_span_ev(self, span, stackMap, depth=1): - span_ev = self.create_span_event(stackMap) - self.set_sequenceid(span_ev,self.sequenceid) + def makeSpanEv(self, span, stackMap, depth=1): + span_ev = self.createSpanEvent(stackMap) + self.setSequenceid(span_ev, self.sequenceid) self.sequenceid += 1 - self.set_depth(span_ev,depth) - self.attach_span_event(span,span_ev) + self.setDepth(span_ev, depth) + self.attachSpanEvent(span, span_ev) if 'calls' in stackMap: for called in stackMap['calls']: - self.make_span_ev(span, called, depth + 1) + self.makeSpanEv(span, called, depth + 1) - def set_sequenceid(self,span_ev,id): + def setSequenceid(self, span_ev, id): raise NotImplemented - def set_depth(self,span_ev,depth): + def setDepth(self, span_ev, depth): raise NotImplemented \ No newline at end of file diff --git a/collector-agent/PinpointAgent/AppManagement.py b/collector-agent/PinpointAgent/AppManagement.py index 8add53536..8cd703b5d 100644 --- a/collector-agent/PinpointAgent/AppManagement.py +++ b/collector-agent/PinpointAgent/AppManagement.py @@ -35,16 +35,16 @@ def __init__(self,collector_conf,service_type=PHP): self.app_map = {} self.default_app = None self.recv_count = 0 - self.create_default_implement(service_type) + self.createDefaultImplement(service_type) - def create_default_implement(self,service_type): + def createDefaultImplement(self, service_type): self.default_app = self.collector_conf.collector_implement(self.collector_conf, self.default_appid, self.default_appname, service_type) self.default_app.start() self.app_map[self.default_appid] = self.default_app - def find_app(self, app_id, app_name,service_type): + def findApp(self, app_id, app_name, service_type): if app_id in self.app_map: app = self.app_map[app_id] ## check app_name @@ -64,14 +64,14 @@ def find_app(self, app_id, app_name,service_type): return app - def stop_all(self): + def stopAll(self): for app_id,instance in self.app_map.items(): assert(isinstance(instance,PinpointAgent)) TCLogger.info("application is stopping [%s]",app_id) instance.stop() TCLogger.info("recieved %d span from php-fpm",self.recv_count) - def handle_front_agent_data(self,client,type,body): + def handleFrontAgentData(self, client, type, body): content = body.decode('utf-8') try: stack = json.loads(content) @@ -89,11 +89,11 @@ def handle_front_agent_data(self,client,type,body): appname = stack['appname'] ft = stack['FT'] - app = self.find_app(appid,appname,ft) + app = self.findApp(appid, appname, ft) app.sendSpan(stack,body) self.recv_count+=1 - def tell_whoami(self): + def tellMeWho(self): return { "time": str(self.collector_conf.startTimestamp), "id": self.default_appid, diff --git a/collector-agent/Test/test_GTimer.py b/collector-agent/Test/test_GTimer.py index ac2cce6fd..b77e49824 100644 --- a/collector-agent/Test/test_GTimer.py +++ b/collector-agent/Test/test_GTimer.py @@ -1,13 +1,13 @@ import unittest from Events.GTimer import GTimer from gevent import time -class TestStringMethods(unittest.TestCase): +class TestGtimer(unittest.TestCase): def test_once_timer(self): self.i = 0 def add_1(args): self.i+=1 gt = GTimer() - gt.start(add_1, 0.1) + gt.start(add_1, 0.1,2) time.sleep(0.2) self.assertEqual(self.i,1) @@ -18,17 +18,16 @@ def add_1(args): self.i += 1 gt = GTimer(only_once = False) - gt.start(add_1, 0.1) - gt.start(add_1, 0.1) - gt.start(add_1, 0.1) - gt.start(add_1, 0.1) + gt.start(add_1, 0.1,2) + gt.start(add_1, 0.1,2) + gt.start(add_1, 0.1,2) + gt.start(add_1, 0.1,2) time.sleep(0.3) self.assertTrue(self.i >= 3 and self.i <=4) gt.stop() time.sleep(0.3) self.assertTrue(self.i >= 3 and self.i <= 4) - gt.start(add_1, 0.1) + gt.start(add_1, 0.1,2) time.sleep(0.3) self.assertTrue(self.i >= 6 and self.i <= 8) - diff --git a/collector-agent/Test/test_grpc_protocol.py b/collector-agent/Test/test_grpc_protocol.py new file mode 100644 index 000000000..212d82ce9 --- /dev/null +++ b/collector-agent/Test/test_grpc_protocol.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 10/21/19 + + +# -*- coding: UTF-8 -*- +import time +import logging +from unittest import TestCase +from CollectorAgent.GrpcAgent import GrpcAgent +from CollectorAgent.GrpcMeta import GrpcMeta +from CollectorAgent.GrpcSpan import GrpcSpan +from Span_pb2 import PTransactionId, PSpan, PSpanMessage + + +class TestGRPCRoutine(TestCase): + SEQ = 0 + def setUp(self) -> None: + # import sys, os + # sys.path.append(os.path.abspath('..')) + # pass + import sys + logger= logging.getLogger() + logger.level=logging.DEBUG + console_handler=logging.StreamHandler(sys.stdout) + logger.addHandler(console_handler) + self.logger = logger + starttime = str(int(time.time() * 1000)) + self.agent_meta = [('agentid', 'test-id'), + ('applicationname', 'test-name'), + ('starttime', starttime)] + self.agent = GrpcAgent('dev-1230', '10.10.12.23', '2345', 4569, 'dev-pinpoint:9991', self.agent_meta) + + def _generate_span(self): + + tid = PTransactionId(agentId='test-id',agentStartTime=int(time.time()),sequence=TestGRPCRoutine.SEQ) + span =PSpan(version = 1, + transactionId=tid, + startTime= int(time.time()), + elapsed=10, + apiId=1, + serviceType=1500, + applicationServiceType=1500) + TestGRPCRoutine.SEQ+= 1 + msg= PSpanMessage(span=span) + self.logger.debug("generator a span") + return msg + + def test_sendspan(self): + spanclient = GrpcSpan(self._generate_span, 'dev-pinpoint:9993', self.agent_meta, 10) + time.sleep(5) + + def test_metaData(self): + apis=(['aa',10,0],['ada',12,0],['aa',31,2],['aaf',11,3]) + strings = ('aaaaaaaaaaaa','bbbbbbbbbbb','cccccccc') + sqls=('ssss','bbbbb','ssssssss') + meta_client = GrpcMeta('dev-pinpoint:9991', self.agent_meta) + id = 0 + for api in apis: + id = meta_client.updateApiMeta(*api) + self.assertEqual(id,3) + for string in strings: + id = meta_client.updateStringMeta(string) + self.assertEqual(id, 6) + for sql in sqls: + id = meta_client.updateSqlMeta(sql) + self.assertEqual(id, 9) + + id = meta_client.updateSqlMeta('ssss') + self.assertEqual(id, 7) + + id = meta_client.updateStringMeta('bbbbbbbbbbb') + self.assertEqual(id, 5) + + time.sleep(3) \ No newline at end of file diff --git a/collector-agent/Test/test_implement.py b/collector-agent/Test/test_implement.py new file mode 100644 index 000000000..290a82010 --- /dev/null +++ b/collector-agent/Test/test_implement.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Created by eeliu at 11/7/19 +import json +import time +from unittest import TestCase + +import gevent + +from CollectorAgent.CollectorAgentConf import CollectorAgentConf +from Common.Logger import TCLogger +from PinpointAgent.AppManagement import AppManagement +import os + +# class FakeCollectorAgentConf: +# def __init__(self): +# self.CollectorSpanIp ='dev-pinpoint' +# self.CollectorSpanPort =9996 +# self.CollectorStatIp ='dev-pinpoint' +# self.CollectorStatPort =9995 +# self.CollectorAgentIp ='dev-pinpoint' +# self.CollectorAgentPort =9994 +# self.max_pending_size =-1 +# self.collector_type = SUPPORT_THRIFT +# self.collector_implement = ThriftAgentImplement +# self.startTimestamp = int(time.time() * 1000) +# self.version = '1.8.0-RC1' +# def getWebPort(self): +# return '8080' + +class TestImplement(TestCase): + def setUp(self) -> None: + path = os.getcwd() + self.grpc_config = path+'/conf/collector_grpc.conf' + self.thrift_config = path+'/conf/collector_thrift.conf' + + def test_thrift(self): + os.environ['COLLECTOR_CONFIG'] = self.thrift_config + self.run_app_manager() + + def test_grpc(self): + os.environ['COLLECTOR_CONFIG'] = self.grpc_config + self.run_app_manager() + + def run_app_manager(self): + from Common.Config import CAConfig + collector_conf = CollectorAgentConf(CAConfig) + app_management = AppManagement(collector_conf) + i =10000 + while i >0: + # stime =1573438683 + # span = '{"name":"PHP Request","FT":1500,' \ + # '"server":"10.34.130.79:28081",' \ + # '"sid":"3345567788","psid":"3345567789","tid":"phpmyadmin^1560951035971^1",' \ + # '"S":1573438683,"E":20,' \ + # '"clues":["46:200"],' \ + # '"uri":"/index.html",' \ + # '"ERR":{"msg":"23456789op[xdcfvgbhnjmk"},' \ + # '"EC":1, "estr":"DIY",' \ + # '"calls":[{"name":"hello","S":1573438683,"E":8,"calls":[{"name":"hello2","1573438683":2,"E":2,"clues":["-1:null","14:2019/06/25"],"calls":[{"name":"hello3","S":1573438683,"E":4}]}]}],' \ + # '"client":"10.10.10.10"}' + span ='''{"AP":"t=10 D=10 i=10 b=10","E":1,"FT":1500,"S":1573549175197,"appid":"app-2","appname":"APP-2","calls":[{"E":1,"S":0,"calls":[{"E":0,"S":1,"clues":["-1:Array()","14:ture"],"name":"date","stp":"1501"}],"clues":["-1:Array","14:ture"],"name":"AppDate::outputDate","stp":"1501"}],"client":"10.34.130.156","clues":["46:200"],"name":"PHP Request","server":"10.34.130.134:8001","sid":"213111260","stp":"1500","tid":"app-2^1573547333369^13794","uri":"/index.php?type=get_date"}''' + app_management.handleFrontAgentData(None, None, span.encode()) + i-= 1 + # time.sleep(3) + # gevent.sleep(1) + while True: + gevent.sleep(1) +# GRPC_TRACE=all;GRPC_VERBOSITY=DEBUG \ No newline at end of file diff --git a/collector-agent/Test/test_metaAgent.py b/collector-agent/Test/test_metaAgent.py new file mode 100644 index 000000000..a4e2f83a3 --- /dev/null +++ b/collector-agent/Test/test_metaAgent.py @@ -0,0 +1,20 @@ +import unittest + +from Common.Logger import set_logger_level, logger_enable_console +from Events.GTimer import GTimer +from CollectorAgent.GrpcMeta import GrpcMeta +from gevent import time +class TestMetaAgent(unittest.TestCase): + def setUp(self) -> None: + set_logger_level("DEBUG") + logger_enable_console() + starttime = str(int(time.time() * 1000)) + self.agent_meta =[('agentid', 'test-id'), + ('applicationname', 'test-name'), + ('starttime',starttime)] + + def test_once_timer(self): + meta = GrpcMeta('dev-pinpoint:9992',self.agent_meta) + meta.start() + time.sleep(1) + meta.stop() diff --git a/collector-agent/Test/test_util.py b/collector-agent/Test/test_util.py new file mode 100644 index 000000000..10070292c --- /dev/null +++ b/collector-agent/Test/test_util.py @@ -0,0 +1,88 @@ + + + +#!/usr/bin/env python +from unittest import TestCase + +from CollectorAgent.TPackets import * + + +# -*- coding: UTF-8 -*- + +from Span_pb2 import PAcceptEvent, PSpan, PSpanEvent +# !/usr/bin/env python +from unittest import TestCase + +from CollectorAgent.TPackets import * +from Span_pb2 import PAcceptEvent, PSpan, PSpanEvent + + +# -*- coding: UTF-8 -*- + + +class TestUtil(TestCase): + def test_parseNetByteStream(self): + netFlow = struct.pack('!hii9shih',PacketType.CONTROL_HANDSHAKE,2,9,"123456789".encode(),PacketType.APPLICATION_STREAM_CLOSE,12345,0) + view = memoryview(netFlow) + + ipacket = Packet.parseNetByteStream(view,len(netFlow)) + + tp = next(ipacket) + + + self.assertEqual(tp[0], 19) + self.assertEqual(tp[1],PacketType.CONTROL_HANDSHAKE) + self.assertEqual(tp[2], 2) + self.assertEqual(tp[3].tobytes(),"123456789".encode()) + + tp = next(ipacket) + + + self.assertEqual(tp[0], 27) + self.assertEqual(tp[1],PacketType.APPLICATION_STREAM_CLOSE) + self.assertEqual(tp[2],12345) + self.assertEqual(tp[3],None) + + def test_queue(self): + + import threading + from queue import Queue + simple_queue = Queue() + + def worker(): + times = 10000 + while times>0 : + item = simple_queue.get() + if item is None: + raise + times-=1 + print("-1") + + def consumer(): + times = 10000 + while times > 0: + simple_queue.put(consumer) + times -= 1 + print("+1") + + + producer = threading.Thread(target=worker) + cons = threading.Thread(target=consumer) + producer.start() + cons.start() + producer.join() + cons.join() + def test_span(self): + acceptEv = PAcceptEvent() + args ={ + 'acceptEvent':acceptEv + } + span = PSpan() + span.serviceType =100 + print(span) + + def test_span_ev(self): + spanEv = PSpanEvent() + spanEv.depth = 1 + spanEv.sequence = 1 + print(spanEv) diff --git a/collector-agent/run.py b/collector-agent/run.py index cd6da1a14..67e7a1afa 100644 --- a/collector-agent/run.py +++ b/collector-agent/run.py @@ -17,7 +17,6 @@ # limitations under the License. # ------------------------------------------------------------------------------ -import os,sys # !/usr/bin/env python # -*- coding: UTF-8 -*- import os @@ -40,8 +39,8 @@ def __init__(self): self.collector_conf = CollectorAgentConf(CAConfig) self.app_management = AppManagement(self.collector_conf) self.pac = PHPAgentConf(CAConfig) - self.php_agent = FrontAgent(self.pac, self.app_management.handle_front_agent_data) - self.php_agent.registerPHPAgentHello(self.app_management.tell_whoami) + self.php_agent = FrontAgent(self.pac, self.app_management.handleFrontAgentData) + self.php_agent.registerPHPAgentHello(self.app_management.tellMeWho) self.php_agent.start() def run(self): @@ -51,7 +50,7 @@ def run(self): except: break # break by a signal - self.app_management.stop_all() + self.app_management.stopAll() self.php_agent.stop() TCLogger.warning("collector agent exit with SIGNAL") From 69bb4165e79e836c78af5b4608398b61da362be7 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Fri, 14 Feb 2020 11:36:51 +0800 Subject: [PATCH 41/45] add more description --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ef637d10a..e979e13c8 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,8 @@ pinpoint| 1.8.0-RC1 ```ini [Collector] # collectorhost and specific port + AgentID=your_id + ApplicationName=your_name collector.grpc.agent.ip=collectorHost collector.grpc.agent.port=9991 collector.grpc.stat.ip=collectorHost @@ -82,6 +84,7 @@ pinpoint| 1.8.0-RC1 5. export COLLECTOR_CONFIG=/full path of collector.conf/ 6. run collector-agent ``` + $ ./init_python_env.sh $ python run.py ``` @@ -106,8 +109,6 @@ pinpoint| 1.8.0-RC1 ### TODO -- [x] DB, redis,memcache plugins ...... -- [x] workerman,php-swoole plugins ## Compatibility @@ -121,6 +122,7 @@ Pinpoint Version | PHP| Python|GCC - More Stability - Higher performance - Easy to Use and Maintain +- Support GRPC ## Contact Us * Submit an [issue](https://github.com/naver/pinpoint-c-agent/issues) @@ -179,7 +181,7 @@ This project is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for full license text. ``` -Copyright 2018 NAVER Corp. +Copyright 2020 NAVER Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 2a4e3224fbe52626ce869e66082a16a2b235fda2 Mon Sep 17 00:00:00 2001 From: liumingyi Date: Mon, 24 Feb 2020 15:09:10 +0800 Subject: [PATCH 42/45] Append related copyrigh --- LICENSE | 2 +- NOTICE | 144 ++++++++++++++++++ .../example/workerman/HandleRequest.php | 3 +- .../example/workerman/http_server.php | 1 + .../example/workerman/tcp_server.php | 1 + 5 files changed, 148 insertions(+), 3 deletions(-) diff --git a/LICENSE b/LICENSE index 7f8889ba5..980a15ac2 100644 --- a/LICENSE +++ b/LICENSE @@ -198,4 +198,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + limitations under the License. diff --git a/NOTICE b/NOTICE index 23b1edacc..a67219141 100644 --- a/NOTICE +++ b/NOTICE @@ -69,3 +69,147 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +======================================================================= +Apache Thrift (http://thrift.apache.org/) +======================================================================= + +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +======================================================================= +grpc (https://grpc.io/) +======================================================================= + +# Copyright 2019 The gRPC Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +======================================================================= +https://github.com/walkor/Workerman +======================================================================= +The MIT License + +Copyright (c) 2009-2015 walkor and contributors (see https://github.com/walkor/workerman/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +======================================================================= +https://github.com/swoole/swoole-src/ +======================================================================= + +/* + +----------------------------------------------------------------------+ + | Swoole | + +----------------------------------------------------------------------+ + | This source file is subject to version 2.0 of the Apache license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.apache.org/licenses/LICENSE-2.0.html | + | If you did not receive a copy of the Apache2.0 license and are unable| + | to obtain it through the world-wide-web, please send a note to | + | license@swoole.com so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Tianfeng Han | + +----------------------------------------------------------------------+ +*/ + + +======================================================================= +https://github.com/open-source-parsers/jsoncpp/ +======================================================================= + +The JsonCpp library's source code, including accompanying documentation, +tests and demonstration applications, are licensed under the following +conditions... + +Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all +jurisdictions which recognize such a disclaimer. In such jurisdictions, +this software is released into the Public Domain. + +In jurisdictions which do not recognize Public Domain property (e.g. Germany as of +2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and +The JsonCpp Authors, and is released under the terms of the MIT License (see below). + +In jurisdictions which recognize Public Domain property, the user of this +software may choose to accept it either as 1) Public Domain, 2) under the +conditions of the MIT License (see below), or 3) under the terms of dual +Public Domain/MIT License conditions described here, as they choose. + +The MIT License is about as close to Public Domain as a license can get, and is +described in clear, concise terms at: + + http://en.wikipedia.org/wiki/MIT_License + +The full text of the MIT License follows: + +======================================================================== +Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +======================================================================== +(END LICENSE TEXT) + +The MIT license is compatible with both the GPL and commercial +software, affording one all of the rights of Public Domain with the +minor nuisance of being required to keep the above copyright notice +and license text in the source code. Note also that by accepting the +Public Domain "license" you can re-license your copy using whatever +license you like. \ No newline at end of file diff --git a/PHP/pinpoint_php_example/example/workerman/HandleRequest.php b/PHP/pinpoint_php_example/example/workerman/HandleRequest.php index 609731101..4ff0bd66d 100644 --- a/PHP/pinpoint_php_example/example/workerman/HandleRequest.php +++ b/PHP/pinpoint_php_example/example/workerman/HandleRequest.php @@ -1,6 +1,5 @@ Date: Mon, 24 Feb 2020 15:54:34 +0800 Subject: [PATCH 43/45] Add notice. --- PHP/pinpoint_php_example/example/swoole/http_server.php | 1 + PHP/pinpoint_php_example/example/swoole/tcp_server.php | 1 + 2 files changed, 2 insertions(+) diff --git a/PHP/pinpoint_php_example/example/swoole/http_server.php b/PHP/pinpoint_php_example/example/swoole/http_server.php index 6b930651b..5684aff14 100644 --- a/PHP/pinpoint_php_example/example/swoole/http_server.php +++ b/PHP/pinpoint_php_example/example/swoole/http_server.php @@ -1,4 +1,5 @@ Date: Tue, 25 Feb 2020 11:05:11 +0800 Subject: [PATCH 44/45] update NOTICE --- NOTICE | 154 ++++++++++++------ .../example/swoole/http_server.php | 2 +- .../example/swoole/tcp_server.php | 2 +- .../example/workerman/HandleRequest.php | 1 - .../example/workerman/http_server.php | 2 +- .../example/workerman/tcp_server.php | 2 +- 6 files changed, 112 insertions(+), 51 deletions(-) diff --git a/NOTICE b/NOTICE index a67219141..ee2c4c918 100644 --- a/NOTICE +++ b/NOTICE @@ -1,5 +1,5 @@ Pinpoint C agent -Copyright 2018 NAVER Corp. +Copyright 2018-present NAVER Corp. This project contains subcomponents with separate copyright notices and license terms. Your use of the source code for these subcomponents is subject to the terms and conditions of the following licenses. @@ -73,44 +73,109 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ======================================================================= -Apache Thrift (http://thrift.apache.org/) +Apache Thrift from http://thrift.apache.org/ ======================================================================= +Apache Thrift +Copyright (C) 2006 - 2019, The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +--- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +-------------------------------------------------- +SOFTWARE DISTRIBUTED WITH THRIFT: + +The Apache Thrift software includes a number of subcomponents with +separate copyright notices and license terms. Your use of the source +code for the these subcomponents is subject to the terms and +conditions of the following licenses. + +-------------------------------------------------- +Portions of the following files are licensed under the MIT License: + + lib/erl/src/Makefile.am + +Please see doc/otp-base-license.txt for the full terms of this license. + +Tue Oct 24 12:28:44 CDT 2006 + +Copyright (c) <2006> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software (OTP Base, fslib, G.A.S) and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------- +For the aclocal/ax_boost_base.m4 and contrib/fb303/aclocal/ax_boost_base.m4 components: + +# Copyright (c) 2007 Thomas Porschberg +# +# Copying and distribution of this file, with or without +# modification, are permitted in any medium without royalty provided +# the copyright notice and this notice are preserved. + +-------------------------------------------------- +For the lib/nodejs/lib/thrift/json_parse.js: + /* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ + json_parse.js + 2015-05-02 + Public Domain. + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + +*/ +(By Douglas Crockford ) +-------------------------------------------------- ======================================================================= -grpc (https://grpc.io/) +grpc/grpc from https://github.com/grpc/grpc ======================================================================= -# Copyright 2019 The gRPC Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +Copyright 2014 gRPC authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. ======================================================================= -https://github.com/walkor/Workerman +walkor/Workerman from https://github.com/walkor/Workerman ======================================================================= + The MIT License Copyright (c) 2009-2015 walkor and contributors (see https://github.com/walkor/workerman/contributors) @@ -134,28 +199,25 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ======================================================================= -https://github.com/swoole/swoole-src/ +swoole/swoole-src from https://github.com/swoole/swoole-src/ ======================================================================= -/* - +----------------------------------------------------------------------+ - | Swoole | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.0 of the Apache license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.apache.org/licenses/LICENSE-2.0.html | - | If you did not receive a copy of the Apache2.0 license and are unable| - | to obtain it through the world-wide-web, please send a note to | - | license@swoole.com so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Tianfeng Han | - +----------------------------------------------------------------------+ -*/ + Copyright Tianfeng.Han [mikan.tenny@gmail.com] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ======================================================================= -https://github.com/open-source-parsers/jsoncpp/ +open-source-parsers/jsoncpp from https://github.com/open-source-parsers/jsoncpp ======================================================================= The JsonCpp library's source code, including accompanying documentation, diff --git a/PHP/pinpoint_php_example/example/swoole/http_server.php b/PHP/pinpoint_php_example/example/swoole/http_server.php index 5684aff14..ce1bc6e1d 100644 --- a/PHP/pinpoint_php_example/example/swoole/http_server.php +++ b/PHP/pinpoint_php_example/example/swoole/http_server.php @@ -1,5 +1,5 @@ Date: Tue, 25 Feb 2020 11:21:50 +0800 Subject: [PATCH 45/45] origin from decorus-kazuma, remove compiling fail in macOS --- PHP/pinpoint_php_ext/common.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PHP/pinpoint_php_ext/common.h b/PHP/pinpoint_php_ext/common.h index 3630b4c4a..236676e84 100644 --- a/PHP/pinpoint_php_ext/common.h +++ b/PHP/pinpoint_php_ext/common.h @@ -18,9 +18,10 @@ #include -//fix #129 +//fix #129 +//origin from https://github.com/naver/pinpoint-c-agent/issues/157 #ifndef uint -#define uint unsigned int +typedef unsigned int uint; #endif typedef struct list{