From commits-return-1044-archive-asf-public=cust-asf.ponee.io@zipkin.apache.org Fri May 10 00:58:42 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id 38780180649 for ; Fri, 10 May 2019 02:58:42 +0200 (CEST) Received: (qmail 49718 invoked by uid 500); 10 May 2019 00:58:41 -0000 Mailing-List: contact commits-help@zipkin.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@zipkin.apache.org Delivered-To: mailing list commits@zipkin.apache.org Received: (qmail 49709 invoked by uid 99); 10 May 2019 00:58:41 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 May 2019 00:58:41 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 77BE4872E3; Fri, 10 May 2019 00:58:41 +0000 (UTC) Date: Fri, 10 May 2019 00:58:41 +0000 To: "commits@zipkin.apache.org" Subject: [incubator-zipkin-website] branch asf-site updated: Automatic site generation from 72780f6 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <155744992141.22856.2586923657452990882@gitbox.apache.org> From: abesto@apache.org X-Git-Host: gitbox.apache.org X-Git-Repo: incubator-zipkin-website X-Git-Refname: refs/heads/asf-site X-Git-Reftype: branch X-Git-Oldrev: 5d33df88abd7b68216b3ad784902b6467e10766d X-Git-Newrev: 6acda477e4771bf39f828e6a57b77f7afdf1958d X-Git-Rev: 6acda477e4771bf39f828e6a57b77f7afdf1958d X-Git-NotificationType: ref_changed_plus_diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated This is an automated email from the ASF dual-hosted git repository. abesto pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-zipkin-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 6acda47 Automatic site generation from 72780f6 6acda47 is described below commit 6acda477e4771bf39f828e6a57b77f7afdf1958d Author: jenkins AuthorDate: Fri May 10 00:58:34 2019 +0000 Automatic site generation from 72780f6 --- Gemfile.lock | 2 +- Jenkinsfile | 8 +- pages/extensions_choices.html | 2 +- zipkin-api/DISCLAIMER | 5 - zipkin-api/Jenkinsfile | 78 ------- zipkin-api/LICENSE | 201 ---------------- zipkin-api/NOTICE | 5 - zipkin-api/zipkin-api.yaml | 441 ----------------------------------- zipkin-api/zipkin.proto | 237 ------------------- zipkin-api/zipkin2-api.yaml | 521 ------------------------------------------ 10 files changed, 6 insertions(+), 1494 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1095274..58842ea 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -205,7 +205,7 @@ GEM jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) minitest (5.11.3) - multipart-post (2.0.0) + multipart-post (2.1.0) nokogiri (1.10.3) mini_portile2 (~> 2.4.0) octokit (4.14.0) diff --git a/Jenkinsfile b/Jenkinsfile index ed4f762..9b49bb9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,7 +37,7 @@ pipeline { steps { sh 'env' sh 'pwd' - sh 'ls -lR' + sh 'ls' sh 'alias' sh 'git config --list --local' sh 'git config --list --global' @@ -80,9 +80,9 @@ pipeline { } stage('Publish') { -// when { -// branch 'master' -// } + when { + branch 'master' + } environment { // GH Personal access token @abesto GITUSER = credentials('2d27b827-20c2-4173-ac84-f3abc308fc88') diff --git a/pages/extensions_choices.html b/pages/extensions_choices.html index 04952de..ef04930 100644 --- a/pages/extensions_choices.html +++ b/pages/extensions_choices.html @@ -261,7 +261,7 @@ same data sent to the default Zipkin server.

  • Pitchfork
      -
    • Pitchfork exposes the same HTTP POST endpoints Zipkin does +
    • Pitchfork exposes the same HTTP POST endpoints Zipkin does. It can also consume spans from a Kafka topic or a RabbitMQ queue.
      • http port 9411 accepts /api/v1/spans (thrift, json) and /api/v2/spans (json, proto) POST requests.
      diff --git a/zipkin-api/DISCLAIMER b/zipkin-api/DISCLAIMER deleted file mode 100644 index f73ab06..0000000 --- a/zipkin-api/DISCLAIMER +++ /dev/null @@ -1,5 +0,0 @@ -Apache Zipkin (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. -Incubation is required of all newly accepted projects until a further review indicates -that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. -While incubation status is not necessarily a reflection of the completeness or stability of the code, -it does indicate that the project has yet to be fully endorsed by the ASF. diff --git a/zipkin-api/Jenkinsfile b/zipkin-api/Jenkinsfile deleted file mode 100644 index 9a05384..0000000 --- a/zipkin-api/Jenkinsfile +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -pipeline { - agent { - label 'ubuntu' - } - - tools { - jdk 'JDK 1.8 (latest)' - } - - options { - buildDiscarder(logRotator( - numToKeepStr: '30', - )) - timestamps() - skipStagesAfterUnstable() - timeout time: 30, unit: 'MINUTES' - } - - stages { - stage('SCM Checkout') { - steps { - deleteDir() - checkout scm - } - } - - stage('Check environment') { - steps { - sh 'env' - sh 'pwd' - sh 'ls' - sh 'git status' - } - } - - stage('Publish snapshot') { - when { - branch 'master' - } - steps { - sh './mvnw deploy -Papache-release -Dgpg.skip=true -DskipTests --batch-mode -nsu' - } - } - } - - post { - changed { - script { - if (env.BRANCH_NAME == 'master') { - emailext( - subject: "[${currentBuild.projectName}] master is ${currentBuild.currentResult} (#${currentBuild.number})", - to: 'commits@zipkin.apache.org', - replyTo: 'dev@zipkin.apache.org', - body: "See <${currentBuild.absoluteUrl}>" - ) - } - } - - } - } -} diff --git a/zipkin-api/LICENSE b/zipkin-api/LICENSE deleted file mode 100644 index 8dada3e..0000000 --- a/zipkin-api/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - 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/zipkin-api/NOTICE b/zipkin-api/NOTICE deleted file mode 100644 index d2f1493..0000000 --- a/zipkin-api/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Language independent interchange formats for Apache Zipkin (incubating) -Copyright 2019 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/zipkin-api/zipkin-api.yaml b/zipkin-api/zipkin-api.yaml deleted file mode 100644 index 2f4a190..0000000 --- a/zipkin-api/zipkin-api.yaml +++ /dev/null @@ -1,441 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -swagger: "2.0" -info: - version: "1.0.0" - title: Zipkin API - description: | - Zipkin's Query api is rooted at `api/v1`, on a host that by default listens - on port 9411. It primarily serves the zipkin-ui, although it includes a POST - endpoint that can receive spans. -host: localhost:9411 -basePath: /api/v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json -paths: - /services: - get: - description: | - Returns a list of all service names associated with annotations. - responses: - '200': - description: Succes - schema: - type: array - items: - type: string - '400': - description: Bad Request Error - /spans: - get: - description: Get all the span names logged by a particular service - parameters: - - name: serviceName - in: query - required: true - description: | - Ex zipkin-server (required) - service that logged an annotation in a - trace. The /services endpoint enumerates possible input values. - type: string - responses: - '200': - description: OK - schema: - type: array - items: - type: string - '400': - description: Bad Request Error - post: - description: | - Uploads a list of spans encoded per content-type, for example json - or thrift (TBinaryProtocol big-endian). - consumes: - - application/json - - application/x-thrift - produces: [] - parameters: - - name: span - in: body - description: A list of spans that belong to any trace. - required: true - schema: - $ref: "#/definitions/ListOfSpans" - responses: - '202': - description: Accepted - /traces: - get: - description: | - Invoking this request retrieves traces matching the below filters. - - Results should be filtered against endTs, subject to limit and - lookback. For example, if endTs is 10:20 today, limit is 10, and - lookback is 7 days, traces returned should be those nearest to 10:20 - today, not 10:20 a week ago. - - Time units of endTs and lookback are milliseconds as opposed to - microseconds, the grain of Span.timestamp. Milliseconds is a more - familiar and supported granularity for query, index and windowing - functions - parameters: - - name: serviceName - in: query - required: false - description: | - Ex zipkin-server - service that logged an annotation in a trace. - Required when constraining on parameters except time and duration. - The /services endpoint enumerates possible input values. - type: string - - name: spanName - in: query - required: false - description: | - Ex my_span_name - name of a span in a trace. - Only return traces that contains spans with this name. - type: string - - name: annotationQuery - in: query - type: string - required: false - description: | - Ex. `http.uri=/foo and retried` - If key/value (has an `=`), - constrains against Span.binaryAnnotations of time string. If just - a word, constrains against Span.annotations. Any values are AND - against eachother. This means a span in the trace must match all of - these. - - name: minDuration - in: query - type: integer - description: | - Ex. 100000 (for 100ms). Only return traces whose `Span.duration` is - greater than or equal to minDuration microseconds. - - name: maxDuration - in: query - type: integer - description: | - Only return traces whose Span.duration is less than or equal to - `maxDuration` microseconds. Only valid with minDuration. - - name: endTs - in: query - type: integer - format: int64 - description: | - Only return traces where all Span.timestamp are at or before this - time in epoch milliseconds. Defaults to current time. - - name: lookback - type: integer - format: int64 - in: query - description: | - Only return traces where all Span.timestamp are at or after - (`endTs - * lookback`) in milliseconds. Defaults to `endTs`, limited - to a system parameter `QUERY_LOOKBACK`. - - name: limit - in: query - default: 10 - type: integer - description: | - Maximum number of traces to return. Defaults to 10 - responses: - '200': - description: OK - schema: - $ref: "#/definitions/ListOfTraces" - /trace/{traceId}: - get: - parameters: - - name: traceId - in: path - required: true - description: the 64 or 128-bit big endian, hex-encoded id of the trace as a path parameter. - type: string - - name: raw - in: query - required: false - description: | - Note this flag has no value. Ex. /trace/{traceId}?raw - - Normally, the trace endpoint cleans trace data. For example, it merges - spans by id, adds missing timestamp or duration, corrects clock skew.. - - Specifying this flag is a debug case, when you are debugging zipkin - logic or zipkin instrumentation, and want to see the input to these - adjusters. For example, this might explain or rule out clock skew. - type: boolean - responses: - '200': - description: OK - schema: - $ref: "#/definitions/Trace" - '404': - description: "`traceId` not found" - /dependencies: - get: - description: | - Returns dependency links derived from spans. - - Span names are in lowercase, rpc method for example. Conventionally, - when the span name isn't known, name = "unknown". - parameters: - - name: endTs - in: query - description: | - Only return links from spans where `Span.timestamp` are at or before - this time in epoch milliseconds. - required: true - type: integer - format: int64 - - name: lookback - in: query - description: | - Only return links from spans where all Span.timestamp are at or after - (`endTs - * lookback`) in milliseconds. Defaults to `endTs`, limited - to a system parameter `QUERY_LOOKBACK`. - type: integer - format: int64 - responses: - '200': - description: OK - schema: - type: array - title: ListOfDependencyLinks - items: - $ref: "#/definitions/DependencyLink" -definitions: - Endpoint: - type: object - title: Endpoint - description: The network context of a node in the service graph - required: - - serviceName - properties: - serviceName: - type: string - description: | - Lower-case label of this node in the service graph, such as "favstar". Set - to empty string if unknown. - - This is a primary label for trace lookup and aggregation, so it should be - intuitive and consistent. Many use a name from service discovery. - ipv4: - type: string - format: ipv4 - description: | - The text representation of the primary IPv4 address associated with this - connection. Ex. 192.168.99.100 Absent if unknown. - ipv6: - type: string - format: ipv6 - description: | - The text representation of the primary IPv6 address associated with a - connection. Ex. 2001:db8::c001 Absent if unknown. - - Prefer using the ipv4 field for mapped addresses. - port: - type: integer - description: | - Depending on context, this could be a listen port or the client-side of a - socket. Absent if unknown. Please don't set to zero. - Annotation: - title: Annotation - type: object - required: - - timestamp - - value - description: | - Associates an event that explains latency with a timestamp. - Unlike log statements, annotations are often codes. Ex. "sr" for ServerReceive - properties: - timestamp: - type: integer - description: | - Epoch **microseconds** of this event. - - For example, 1502787600000000 corresponds to 2017-08-15 09:00 UTC - - This value should be set directly by instrumentation, using the most precise - value possible. For example, gettimeofday or multiplying epoch millis by 1000. - value: - type: string - description: | - Usually a short tag indicating an event, like "sr" - - While possible to add larger data, such as garbage collection details, low - cardinality event names both keep the size of spans down and also are easy - to search against. - endpoint: - $ref: "#/definitions/Endpoint" - description: | - The host that recorded this span, primarily for query by service name. - - Instrumentation should always record this. Usually, absent implies late - data. The IP address corresponding to this is usually the site local or - advertised service address. When present, the port indicates the listen - port. - BinaryAnnotation: - title: BinaryAnnotation - type: object - required: - - key - - value - description: | - Adds context to a span, for search, viewing and analysis. - - For example, a key "your_app.version" would let you lookup traces by version. - A tag "sql.query" isn't searchable, but it can help in debugging when viewing - a trace. - properties: - key: - type: string - value: - type: string - endpoint: - $ref: "#/definitions/Endpoint" - description: | - The host that recorded this span, primarily for query by service name. - - There is an exception, when the key is "sa", "ca" or "ma" this is an - address annotation. In such case, the endpoint is not what recorded the - span, rather the remote address. The value field is set to boolean true - in this case. This feature was refactored in v2 format as "remoteEndpoint" - ListOfSpans: - title: ListOfSpans - description: 'A list of spans with possibly different trace ids, in no particular order' - type: array - items: - $ref: "#/definitions/Span" - Trace: - title: Trace - type: array - description: 'List of spans who have the same trace id. Spans in the trace, and annotations in a span are sorted ascending by timestamp. ie first event should be first in the spans list.' - items: - $ref: "#/definitions/Span" - ListOfTraces: - title: ListOfTraces - type: array - items: - $ref: "#/definitions/Trace" - Span: - title: Span - type: object - required: - - traceId - - id - - name - properties: - traceId: - type: string - maxLength: 32 - minLength: 16 - pattern: "[a-z0-9]{16,32}" - description: | - Randomly generated, unique identifier for a trace, set on all spans within it. - - Encoded as 16 or 32 lowercase hex characters in big endian byte order, - corresponding to 64 or 128 bits, - For example, a 128bit trace ID looks like 4e441824ec2b6a44ffdc9bb9a6453df3 - name: - type: string - description: | - The logical operation this span represents in lowercase (e.g. rpc method). - Set to empty string if unknown. - - As these are lookup labels, take care to ensure names are low cardinality. - For example, do not embed variables into the name. - parentId: - type: string - pattern: "[a-z0-9]{16}" - maxLength: 16 - minLength: 16 - description: 'The parent span ID or absent if this the root span in a trace.' - id: - type: string - maxLength: 16 - minLength: 16 - pattern: "[a-z0-9]{16}" - description: | - Unique 64bit identifier for this operation within the trace. - - Encoded as 16 lowercase hex characters. For example ffdc9bb9a6453df3 - timestamp: - type: integer - format: int64 - description: | - Epoch microseconds of the start of this span, possibly absent if - incomplete. - - For example, 1502787600000000 corresponds to 2017-08-15 09:00 UTC - - This value should be set directly by instrumentation, using the most - precise value possible. For example, gettimeofday or multiplying epoch - millis by 1000. - - There are three known edge-cases where this could be reported absent. - * A span was allocated but never started (ex not yet received a timestamp) - * The span's start event was lost - * Data about a completed span (ex tags) were sent after the fact - duration: - type: integer - format: int64 - minimum: 1 - description: | - Duration in **microseconds** of the critical path, if known. Durations of less - than one are rounded up. Duration of children can be longer than their - parents due to asynchronous operations. - - For example 150 milliseconds is 150000 microseconds. - debug: - type: boolean - description: | - True is a request to store this span even if it overrides sampling policy. - - This is true when the `X-B3-Flags` header has a value of 1. - annotations: - title: ListOfAnnotations - type: array - description: 'Associates events that explain latency with the time they happened.' - items: - $ref: '#/definitions/Annotation' - binaryAnnotations: - title: ListOfBinaryAnnotations - type: array - description: 'Binary Annotations are tags that give your span context for search, viewing and analysis.' - items: - $ref: '#/definitions/BinaryAnnotation' - DependencyLink: - title: DependencyLink - type: object - required: - - parent - - child - - callCount - properties: - parent: - type: string - child: - type: string - callCount: - type: integer - errorCount: - type: integer diff --git a/zipkin-api/zipkin.proto b/zipkin-api/zipkin.proto deleted file mode 100644 index 9e65112..0000000 --- a/zipkin-api/zipkin.proto +++ /dev/null @@ -1,237 +0,0 @@ -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you 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. -// -syntax = "proto3"; - -package zipkin.proto3; - -// In Java, the closest model type to this proto is in the "zipkin2" package -option java_package = "zipkin2.proto3"; -option java_multiple_files = true; - -// A span is a single-host view of an operation. A trace is a series of spans -// (often RPC calls) which nest to form a latency tree. Spans are in the same -// trace when they share the same trace ID. The parent_id field establishes the -// position of one span in the tree. -// -// The root span is where parent_id is Absent and usually has the longest -// duration in the trace. However, nested asynchronous work can materialize as -// child spans whose duration exceed the root span. -// -// Spans usually represent remote activity such as RPC calls, or messaging -// producers and consumers. However, they can also represent in-process -// activity in any position of the trace. For example, a root span could -// represent a server receiving an initial client request. A root span could -// also represent a scheduled job that has no remote context. -// -// Encoding notes: -// -// Epoch timestamp are encoded fixed64 as varint would also be 8 bytes, and more -// expensive to encode and size. Duration is stored uint64, as often the numbers -// are quite small. -// -// Default values are ok, as only natural numbers are used. For example, zero is -// an invalid timestamp and an invalid duration, false values for debug or shared -// are ignorable, and zero-length strings also coerce to null. -// -// The next id is 14. -// -// Note fields up to 15 take 1 byte to encode. Take care when adding new fields -// https://developers.google.com/protocol-buffers/docs/proto3#assigning-tags -message Span { - // Randomly generated, unique identifier for a trace, set on all spans within - // it. - // - // This field is required and encoded as 8 or 16 bytes, in big endian byte - // order. - bytes trace_id = 1; - // The parent span ID or absent if this the root span in a trace. - bytes parent_id = 2; - // Unique identifier for this operation within the trace. - // - // This field is required and encoded as 8 opaque bytes. - bytes id = 3; - // When present, kind clarifies timestamp, duration and remote_endpoint. When - // absent, the span is local or incomplete. Unlike client and server, there - // is no direct critical path latency relationship between producer and - // consumer spans. - enum Kind { - // Default value interpreted as absent. - SPAN_KIND_UNSPECIFIED = 0; - // The span represents the client side of an RPC operation, implying the - // following: - // - // timestamp is the moment a request was sent to the server. - // duration is the delay until a response or an error was received. - // remote_endpoint is the server. - CLIENT = 1; - // The span represents the server side of an RPC operation, implying the - // following: - // - // timestamp is the moment a client request was received. - // duration is the delay until a response was sent or an error. - // remote_endpoint is the client. - SERVER = 2; - // The span represents production of a message to a remote broker, implying - // the following: - // - // timestamp is the moment a message was sent to a destination. - // duration is the delay sending the message, such as batching. - // remote_endpoint is the broker. - PRODUCER = 3; - // The span represents consumption of a message from a remote broker, not - // time spent servicing it. For example, a message processor would be an - // in-process child span of a consumer. Consumer spans imply the following: - // - // timestamp is the moment a message was received from an origin. - // duration is the delay consuming the message, such as from backlog. - // remote_endpoint is the broker. - CONSUMER = 4; - } - // When present, used to interpret remote_endpoint - Kind kind = 4; - // The logical operation this span represents in lowercase (e.g. rpc method). - // Leave absent if unknown. - // - // As these are lookup labels, take care to ensure names are low cardinality. - // For example, do not embed variables into the name. - string name = 5; - // Epoch microseconds of the start of this span, possibly absent if - // incomplete. - // - // For example, 1502787600000000 corresponds to 2017-08-15 09:00 UTC - // - // This value should be set directly by instrumentation, using the most - // precise value possible. For example, gettimeofday or multiplying epoch - // millis by 1000. - // - // There are three known edge-cases where this could be reported absent. - // - A span was allocated but never started (ex not yet received a timestamp) - // - The span's start event was lost - // - Data about a completed span (ex tags) were sent after the fact - fixed64 timestamp = 6; - // Duration in microseconds of the critical path, if known. Durations of less - // than one are rounded up. Duration of children can be longer than their - // parents due to asynchronous operations. - // - // For example 150 milliseconds is 150000 microseconds. - uint64 duration = 7; - // The host that recorded this span, primarily for query by service name. - // - // Instrumentation should always record this. Usually, absent implies late - // data. The IP address corresponding to this is usually the site local or - // advertised service address. When present, the port indicates the listen - // port. - Endpoint local_endpoint = 8; - // When an RPC (or messaging) span, indicates the other side of the - // connection. - // - // By recording the remote endpoint, your trace will contain network context - // even if the peer is not tracing. For example, you can record the IP from - // the "X-Forwarded-For" header or the service name and socket of a remote - // peer. - Endpoint remote_endpoint = 9; - // Associates events that explain latency with the time they happened. - repeated Annotation annotations = 10; - // Tags give your span context for search, viewing and analysis. - // - // For example, a key "your_app.version" would let you lookup traces by - // version. A tag "sql.query" isn't searchable, but it can help in debugging - // when viewing a trace. - map tags = 11; - // True is a request to store this span even if it overrides sampling policy. - // - // This is true when the "X-B3-Flags" header has a value of 1. - bool debug = 12; - // True if we are contributing to a span started by another tracer (ex on a - // different host). - bool shared = 13; -} - -// The network context of a node in the service graph. -// -// The next id is 5. -message Endpoint { - // Lower-case label of this node in the service graph, such as "favstar". - // Leave absent if unknown. - // - // This is a primary label for trace lookup and aggregation, so it should be - // intuitive and consistent. Many use a name from service discovery. - string service_name = 1; - // 4 byte representation of the primary IPv4 address associated with this - // connection. Absent if unknown. - bytes ipv4 = 2; - // 16 byte representation of the primary IPv6 address associated with this - // connection. Absent if unknown. - // - // Prefer using the ipv4 field for mapped addresses. - bytes ipv6 = 3; - // Depending on context, this could be a listen port or the client-side of a - // socket. Absent if unknown. - int32 port = 4; -} - -// Associates an event that explains latency with a timestamp. -// Unlike log statements, annotations are often codes. Ex. "ws" for WireSend -// -// The next id is 3. -message Annotation { - // Epoch microseconds of this event. - // - // For example, 1502787600000000 corresponds to 2017-08-15 09:00 UTC - // - // This value should be set directly by instrumentation, using the most - // precise value possible. For example, gettimeofday or multiplying epoch - // millis by 1000. - fixed64 timestamp = 1; - // Usually a short tag indicating an event, like "error" - // - // While possible to add larger data, such as garbage collection details, low - // cardinality event names both keep the size of spans down and also are easy - // to search against. - string value = 2; -} - -// A list of spans with possibly different trace ids, in no particular order. -// -// This is used for all transports: POST, Kafka messages etc. No other fields -// are expected, This message facilitates the mechanics of encoding a list, as -// a field number is required. The name of this type is the same in the OpenApi -// aka Swagger specification. https://zipkin.io/zipkin-api/#/default/post_spans -message ListOfSpans { - repeated Span spans = 1; -} - -// Response for SpanService/Report RPC. This response currently does not return -// any information beyond indicating that the request has finished. That said, -// it may be extended in the future. -message ReportResponse { -} - -// SpanService allows reporting spans using gRPC, as opposed to HTTP POST -// reporting. Implementations are asynchronous and may drop spans for reasons -// of sampling or storage availability. While this is primarily used to store -// spans, other operations may take place such as aggregation of service -// dependencies or data cleaning. -service SpanService { - - // Report the provided spans to the collector. Analogous to the HTTP POST - // /api/v2/spans endpoint. Spans are not required to be complete or belonging - // to the same trace. - rpc Report(ListOfSpans) returns (ReportResponse) {} -} diff --git a/zipkin-api/zipkin2-api.yaml b/zipkin-api/zipkin2-api.yaml deleted file mode 100644 index 9d25da7..0000000 --- a/zipkin-api/zipkin2-api.yaml +++ /dev/null @@ -1,521 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -swagger: "2.0" -info: - version: "1.0.0" - title: Zipkin API - description: | - Zipkin's v2 api currently includes a POST endpoint that can receive spans. -host: localhost:9411 -basePath: /api/v2 -schemes: - - http - - https -consumes: - - application/json -paths: - /services: - get: - description: | - Returns a list of all service names associated with span endpoints. - responses: - '200': - description: Succes - schema: - type: array - items: - type: string - '400': - description: Bad Request Error - /spans: - get: - description: Get all the span names recorded by a particular service - parameters: - - name: serviceName - in: query - required: true - description: | - Ex favstar (required) - Lower-case label of a node in the service - graph. The /services endpoint enumerates possible input values. - type: string - responses: - '200': - description: OK - schema: - type: array - items: - type: string - '400': - description: Bad Request Error - post: - description: | - Uploads a list of spans encoded per content-type, for example json. - consumes: - - application/json - - application/x-protobuf - produces: [] - parameters: - - name: spans - in: body - description: A list of spans that belong to any trace. - required: true - schema: - $ref: "#/definitions/ListOfSpans" - responses: - '202': - description: Accepted - /traces: - get: - description: | - Invoking this request retrieves traces matching the below filters. - - Results should be filtered against endTs, subject to limit and - lookback. For example, if endTs is 10:20 today, limit is 10, and - lookback is 7 days, traces returned should be those nearest to 10:20 - today, not 10:20 a week ago. - - Time units of endTs and lookback are milliseconds as opposed to - microseconds, the grain of Span.timestamp. Milliseconds is a more - familiar and supported granularity for query, index and windowing - functions - parameters: - - name: serviceName - in: query - required: false - description: | - Ex favstar (required) - Lower-case label of a node in the service - graph. The /services endpoint enumerates possible input values. - type: string - - name: spanName - in: query - required: false - description: | - Ex get - name of a span in a trace. - Only return traces that contains spans with this name. - type: string - - name: annotationQuery - in: query - type: string - required: false - description: | - Ex. `http.uri=/foo and retried` - If key/value (has an `=`), - constrains against Span.tags entres. If just a word, constrains - against Span.annotations[].value or Span.tags[].key. Any values are - AND against eachother. This means a span in the trace must match - all of these. - - name: minDuration - in: query - type: integer - description: | - Ex. 100000 (for 100ms). Only return traces whose `Span.duration` is - greater than or equal to minDuration microseconds. - - name: maxDuration - in: query - type: integer - description: | - Only return traces whose Span.duration is less than or equal to - `maxDuration` microseconds. Only valid with minDuration. - - name: endTs - in: query - type: integer - format: int64 - description: | - Only return traces where all Span.timestamp are at or before this - time in epoch milliseconds. Defaults to current time. - - name: lookback - type: integer - format: int64 - in: query - description: | - Only return traces where all Span.timestamp are at or after (endTs - - * lookback) in milliseconds. Defaults to endTs, limited to a - system parameter QUERY_LOOKBACK - - name: limit - in: query - default: 10 - type: integer - description: | - Maximum number of traces to return. Defaults to 10 - responses: - '200': - description: OK - schema: - $ref: "#/definitions/ListOfTraces" - /trace/{traceId}: - get: - parameters: - - name: traceId - in: path - required: true - type: string - maxLength: 32 - minLength: 16 - pattern: "[a-z0-9]{16,32}" - description: | - Trace identifier, set on all spans within it. - - Encoded as 16 or 32 lowercase hex characters corresponding to 64 or 128 bits. - For example, a 128bit trace ID looks like 4e441824ec2b6a44ffdc9bb9a6453df3 - responses: - '200': - description: OK - schema: - $ref: "#/definitions/Trace" - '404': - description: "`traceId` not found" - /dependencies: - get: - description: | - Returns service links derived from spans. - parameters: - - name: endTs - in: query - description: | - only return links from spans where `Span.timestamp` are at or before - this time in epoch milliseconds. - required: true - type: integer - format: int64 - - name: lookback - in: query - description: | - only return links where all Span.timestamp are at or after - (`endTs - * lookback`) in milliseconds. Defaults to `endTs`, limited - to a system parameter `QUERY_LOOKBACK` - type: integer - format: int64 - responses: - '200': - description: OK - schema: - type: array - title: ListOfDependencyLinks - items: - $ref: "#/definitions/DependencyLink" - /autocompleteKeys: - get: - description: | - Returns a subset of keys from Span.tags configured for value autocompletion. - This helps sites populate common keys into the annotationQuery parameter of the - /traces endpoint. For example, a UI can allow users to select site-specific - keys from a drop-down as opposed to typing them in manually. This helps guide - users towards the more correct keys and avoids typos or formatting problems. - responses: - '200': - description: Success is a list of site-specific keys, such as environment. - schema: - type: array - items: - type: string - '400': - description: Bad Request Error - /autocompleteValues: - get: - description: | - Returns all known values of Span.tags for the given autocomplete key. Refer - to the description of /autocompleteKeys for the use case. - parameters: - - name: key - in: query - required: true - description: Name of the autocomplete key from the /autocompleteKeys endpoint. - type: string - responses: - '200': - description: | - Success result is empty when there are no values or the key was not - configured. - schema: - type: array - items: - type: string - '400': - description: Bad Request Error - -definitions: - Endpoint: - type: object - title: Endpoint - description: The network context of a node in the service graph - properties: - serviceName: - type: string - description: | - Lower-case label of this node in the service graph, such as "favstar". Leave - absent if unknown. - - This is a primary label for trace lookup and aggregation, so it should be - intuitive and consistent. Many use a name from service discovery. - ipv4: - type: string - format: ipv4 - description: | - The text representation of the primary IPv4 address associated with this - connection. Ex. 192.168.99.100 Absent if unknown. - ipv6: - type: string - format: ipv6 - description: | - The text representation of the primary IPv6 address associated with a - connection. Ex. 2001:db8::c001 Absent if unknown. - - Prefer using the ipv4 field for mapped addresses. - port: - type: integer - description: | - Depending on context, this could be a listen port or the client-side of a - socket. Absent if unknown. Please don't set to zero. - Annotation: - title: Annotation - type: object - description: | - Associates an event that explains latency with a timestamp. - Unlike log statements, annotations are often codes. Ex. "ws" for WireSend - - Zipkin v1 core annotations such as "cs" and "sr" have been replaced with - Span.Kind, which interprets timestamp and duration. - required: - - timestamp - - value - properties: - timestamp: - type: integer - description: | - Epoch **microseconds** of this event. - - For example, 1502787600000000 corresponds to 2017-08-15 09:00 UTC - - This value should be set directly by instrumentation, using the most precise - value possible. For example, gettimeofday or multiplying epoch millis by 1000. - value: - type: string - description: | - Usually a short tag indicating an event, like "error" - - While possible to add larger data, such as garbage collection details, low - cardinality event names both keep the size of spans down and also are easy - to search against. - Tags: - type: object - title: Tags - description: | - Adds context to a span, for search, viewing and analysis. - - For example, a key "your_app.version" would let you lookup traces by version. - A tag "sql.query" isn't searchable, but it can help in debugging when viewing - a trace. - additionalProperties: - type: string - ListOfSpans: - title: ListOfSpans - description: 'A list of spans with possibly different trace ids, in no particular order' - type: array - items: - $ref: "#/definitions/Span" - Trace: - title: Trace - type: array - description: 'List of spans who have the same trace ID.' - items: - $ref: "#/definitions/Span" - ListOfTraces: - title: ListOfTraces - type: array - items: - $ref: "#/definitions/Trace" - Span: - title: Span - description: | - A span is a single-host view of an operation. A trace is a series of spans - (often RPC calls) which nest to form a latency tree. Spans are in the same - trace when they share the same trace ID. The parent_id field establishes the - position of one span in the tree. - - The root span is where parent_id is Absent and usually has the longest - duration in the trace. However, nested asynchronous work can materialize as - child spans whose duration exceed the root span. - - Spans usually represent remote activity such as RPC calls, or messaging - producers and consumers. However, they can also represent in-process - activity in any position of the trace. For example, a root span could - represent a server receiving an initial client request. A root span could - also represent a scheduled job that has no remote context. - type: object - required: - - traceId - - id - properties: - traceId: - type: string - maxLength: 32 - minLength: 16 - pattern: "[a-z0-9]{16,32}" - description: | - Randomly generated, unique identifier for a trace, set on all spans within it. - - Encoded as 16 or 32 lowercase hex characters corresponding to 64 or 128 bits. - For example, a 128bit trace ID looks like 4e441824ec2b6a44ffdc9bb9a6453df3 - name: - type: string - description: | - The logical operation this span represents in lowercase (e.g. rpc method). - Leave absent if unknown. - - As these are lookup labels, take care to ensure names are low cardinality. - For example, do not embed variables into the name. - parentId: - type: string - pattern: "[a-z0-9]{16}" - maxLength: 16 - minLength: 16 - description: 'The parent span ID or absent if this the root span in a trace.' - id: - type: string - pattern: "[a-z0-9]{16}" - maxLength: 16 - minLength: 16 - description: | - Unique 64bit identifier for this operation within the trace. - - Encoded as 16 lowercase hex characters. For example ffdc9bb9a6453df3 - kind: - type: string - enum: - - CLIENT - - SERVER - - PRODUCER - - CONSUMER - description: | - When present, kind clarifies timestamp, duration and remoteEndpoint. When - absent, the span is local or incomplete. Unlike client and server, there - is no direct critical path latency relationship between producer and - consumer spans. - - * `CLIENT` - * timestamp is the moment a request was sent to the server. (in v1 "cs") - * duration is the delay until a response or an error was received. (in v1 "cr"-"cs") - * remoteEndpoint is the server. (in v1 "sa") - * `SERVER` - * timestamp is the moment a client request was received. (in v1 "sr") - * duration is the delay until a response was sent or an error. (in v1 "ss"-"sr") - * remote_endpoint is the client. (in v1 "ca") - * `PRODUCER` - * timestamp is the moment a message was sent to a destination. (in v1 "ms") - * duration is the delay sending the message, such as batching. - * remoteEndpoint is the broker. - * `CONSUMER` - * timestamp is the moment a message was received from an origin. (in v1 "mr") - * duration is the delay consuming the message, such as from backlog. - * remoteEndpoint - Represents the broker. Leave serviceName absent if unknown. - timestamp: - type: integer - format: int64 - description: | - Epoch microseconds of the start of this span, possibly absent if - incomplete. - - For example, 1502787600000000 corresponds to 2017-08-15 09:00 UTC - - This value should be set directly by instrumentation, using the most - precise value possible. For example, gettimeofday or multiplying epoch - millis by 1000. - - There are three known edge-cases where this could be reported absent. - * A span was allocated but never started (ex not yet received a timestamp) - * The span's start event was lost - * Data about a completed span (ex tags) were sent after the fact - duration: - type: integer - format: int64 - minimum: 1 - description: | - Duration in **microseconds** of the critical path, if known. Durations of less - than one are rounded up. Duration of children can be longer than their - parents due to asynchronous operations. - - For example 150 milliseconds is 150000 microseconds. - debug: - type: boolean - description: | - True is a request to store this span even if it overrides sampling policy. - - This is true when the `X-B3-Flags` header has a value of 1. - shared: - type: boolean - description: 'True if we are contributing to a span started by another tracer (ex on a different host).' - localEndpoint: - $ref: "#/definitions/Endpoint" - description: | - The host that recorded this span, primarily for query by service name. - - Instrumentation should always record this. Usually, absent implies late - data. The IP address corresponding to this is usually the site local or - advertised service address. When present, the port indicates the listen - port. - remoteEndpoint: - $ref: "#/definitions/Endpoint" - description: | - When an RPC (or messaging) span, indicates the other side of the - connection. - - By recording the remote endpoint, your trace will contain network context - even if the peer is not tracing. For example, you can record the IP from - the `X-Forwarded-For` header or the service name and socket of a remote - peer. - annotations: - type: array - uniqueItems: true - items: - $ref: '#/definitions/Annotation' - description: 'Associates events that explain latency with the time they happened.' - tags: - $ref: '#/definitions/Tags' - description: 'Tags give your span context for search, viewing and analysis.' - DependencyLink: - title: DependencyLink - description: | - The count of traced calls between services, or between a service and a broker. - - The direction of the link is parent to child, and can be one of: - * client to server - * producer to broker - * broker to consumer - - Note: This is related to span ID count between a sender and receiver, but there - is nuance that makes it more difficult than counting unique span IDs. Ex. the - parent or child might be uninstrumented: detected via the remote endpoint. There - can also be scenarios where both sides are instrumented. Please use existing tools - such as zipkin-dependencies to derive links as they avoid under or over counting. - type: object - required: - - parent - - child - - callCount - properties: - parent: - type: string - description: 'The service name of the caller: client or message producer or broker.' - child: - type: string - description: 'The service name of the callee: server or message consumer or broker.' - callCount: - type: integer - description: 'Total traced calls made from the parent to the child.' - errorCount: - type: integer - description: 'Total traced calls made from the parent to the child known to be in error.'