Verified Commit ce6b3765 authored by Chocobozzz's avatar Chocobozzz
Browse files

Add more tracing

parent 8224e13d
import { SequelizeInstrumentation } from 'opentelemetry-instrumentation-sequelize'
import { diag, DiagLogLevel, trace } from '@opentelemetry/api'
import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
import { registerInstrumentations } from '@opentelemetry/instrumentation'
......@@ -60,7 +61,8 @@ function registerOpentelemetryTracing () {
return [ cmdName, ...cmdArgs ].join(' ')
}
}),
new FsInstrumentation()
new FsInstrumentation(),
new SequelizeInstrumentation()
]
})
......
import { generateMagnetUri } from '@server/helpers/webtorrent'
import { getActivityStreamDuration } from '@server/lib/activitypub/activity'
import { tracer } from '@server/lib/opentelemetry/tracing'
import { getLocalVideoFileMetadataUrl } from '@server/lib/video-urls'
import { VideoViewsManager } from '@server/lib/views/video-views-manager'
import { uuidToShort } from '@shared/extra-utils'
......@@ -71,6 +72,8 @@ function guessAdditionalAttributesFromQuery (query: VideosCommonQueryAfterSaniti
}
function videoModelToFormattedJSON (video: MVideoFormattable, options: VideoFormattingJSONOptions = {}): Video {
const span = tracer.startSpan('peertube.VideoModel.toFormattedJSON')
const userHistory = isArray(video.UserVideoHistories) ? video.UserVideoHistories[0] : undefined
const videoObject: Video = {
......@@ -168,10 +171,14 @@ function videoModelToFormattedJSON (video: MVideoFormattable, options: VideoForm
videoObject.files = videoFilesModelToFormattedJSON(video, video.VideoFiles)
}
span.end()
return videoObject
}
function videoModelToFormattedDetailsJSON (video: MVideoFormattableDetails): VideoDetails {
const span = tracer.startSpan('peertube.VideoModel.toFormattedDetailsJSON')
const videoJSON = video.toFormattedJSON({
additionalAttributes: {
scheduledUpdate: true,
......@@ -199,6 +206,8 @@ function videoModelToFormattedDetailsJSON (video: MVideoFormattableDetails): Vid
trackerUrls: video.getTrackerUrls()
}
span.end()
return Object.assign(videoJSON, detailsJSON)
}
......
......@@ -27,6 +27,7 @@ import {
import { getPrivaciesForFederation, isPrivacyForFederation, isStateForFederation } from '@server/helpers/video'
import { LiveManager } from '@server/lib/live/live-manager'
import { removeHLSFileObjectStorage, removeHLSObjectStorage, removeWebTorrentObjectStorage } from '@server/lib/object-storage'
import { tracer } from '@server/lib/opentelemetry/tracing'
import { getHLSDirectory, getHLSRedundancyDirectory } from '@server/lib/paths'
import { VideoPathManager } from '@server/lib/video-path-manager'
import { getServerActor } from '@server/models/application/application'
......@@ -1535,6 +1536,8 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
options: BuildVideosListQueryOptions,
countVideos = true
): Promise<ResultList<VideoModel>> {
const span = tracer.startSpan('peertube.VideoModel.getAvailableForApi')
function getCount () {
if (countVideos !== true) return Promise.resolve(undefined)
......@@ -1554,6 +1557,8 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
const [ count, rows ] = await Promise.all([ getCount(), getModels() ])
span.end()
return {
data: rows,
total: count
......
......@@ -1732,7 +1732,7 @@
semver "^7.3.2"
shimmer "^1.2.1"
"@opentelemetry/instrumentation@^0.29.2":
"@opentelemetry/instrumentation@^0.29.0", "@opentelemetry/instrumentation@^0.29.2":
version "0.29.2"
resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.29.2.tgz#70e6d4e1a84508f5e9d8c7c426adcd7b0dba6c95"
integrity sha512-LXx5V0ONNATQFCE8C5uqnxWSm4rcXLssdLHdXjtGdxRmURqj/JO8jYefqXCD0LzsqEQ6yxOx2GZ0dgXvhBVdTw==
......@@ -7027,6 +7027,15 @@ open@7:
is-docker "^2.0.0"
is-wsl "^2.1.1"
opentelemetry-instrumentation-sequelize@^0.29.0:
version "0.29.0"
resolved "https://registry.yarnpkg.com/opentelemetry-instrumentation-sequelize/-/opentelemetry-instrumentation-sequelize-0.29.0.tgz#d8355b7c845473b3d66978b80620dba6f686e257"
integrity sha512-nBhWMhpOtFxR0+W9WwTC+g49UMPqDMusbceGycDJOaq9l7B/IGo8a15UHKm4N4uU/Cr1NTrvyJ0cFXUtSh7i3g==
dependencies:
"@opentelemetry/core" "^1.0.0"
"@opentelemetry/instrumentation" "^0.29.0"
"@opentelemetry/semantic-conventions" "^1.0.0"
opentracing@^0.14.4:
version "0.14.7"
resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5"
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment