aboutsummaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2022-07-28 10:56:05 +0200
committerChocobozzz <me@florianbigard.com>2022-07-28 10:56:05 +0200
commitce6b3765a2d31b9b90b7a1435e7180b91cba57b3 (patch)
tree15cb77864dcd9c0975043b36ae04bb4f163013c0 /server
parent8224e13d3b59ff4420d6c323c95d829ca014a442 (diff)
downloadPeerTube-ce6b3765a2d31b9b90b7a1435e7180b91cba57b3.tar.gz
PeerTube-ce6b3765a2d31b9b90b7a1435e7180b91cba57b3.tar.zst
PeerTube-ce6b3765a2d31b9b90b7a1435e7180b91cba57b3.zip
Add more tracing
Diffstat (limited to 'server')
-rw-r--r--server/lib/opentelemetry/tracing.ts4
-rw-r--r--server/models/video/formatter/video-format-utils.ts9
-rw-r--r--server/models/video/video.ts5
3 files changed, 17 insertions, 1 deletions
diff --git a/server/lib/opentelemetry/tracing.ts b/server/lib/opentelemetry/tracing.ts
index 23764e9e4..252a3b664 100644
--- a/server/lib/opentelemetry/tracing.ts
+++ b/server/lib/opentelemetry/tracing.ts
@@ -1,3 +1,4 @@
1import { SequelizeInstrumentation } from 'opentelemetry-instrumentation-sequelize'
1import { diag, DiagLogLevel, trace } from '@opentelemetry/api' 2import { diag, DiagLogLevel, trace } from '@opentelemetry/api'
2import { JaegerExporter } from '@opentelemetry/exporter-jaeger' 3import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
3import { registerInstrumentations } from '@opentelemetry/instrumentation' 4import { registerInstrumentations } from '@opentelemetry/instrumentation'
@@ -60,7 +61,8 @@ function registerOpentelemetryTracing () {
60 return [ cmdName, ...cmdArgs ].join(' ') 61 return [ cmdName, ...cmdArgs ].join(' ')
61 } 62 }
62 }), 63 }),
63 new FsInstrumentation() 64 new FsInstrumentation(),
65 new SequelizeInstrumentation()
64 ] 66 ]
65 }) 67 })
66 68
diff --git a/server/models/video/formatter/video-format-utils.ts b/server/models/video/formatter/video-format-utils.ts
index 6222107d7..fd02f8c64 100644
--- a/server/models/video/formatter/video-format-utils.ts
+++ b/server/models/video/formatter/video-format-utils.ts
@@ -1,5 +1,6 @@
1import { generateMagnetUri } from '@server/helpers/webtorrent' 1import { generateMagnetUri } from '@server/helpers/webtorrent'
2import { getActivityStreamDuration } from '@server/lib/activitypub/activity' 2import { getActivityStreamDuration } from '@server/lib/activitypub/activity'
3import { tracer } from '@server/lib/opentelemetry/tracing'
3import { getLocalVideoFileMetadataUrl } from '@server/lib/video-urls' 4import { getLocalVideoFileMetadataUrl } from '@server/lib/video-urls'
4import { VideoViewsManager } from '@server/lib/views/video-views-manager' 5import { VideoViewsManager } from '@server/lib/views/video-views-manager'
5import { uuidToShort } from '@shared/extra-utils' 6import { uuidToShort } from '@shared/extra-utils'
@@ -71,6 +72,8 @@ function guessAdditionalAttributesFromQuery (query: VideosCommonQueryAfterSaniti
71} 72}
72 73
73function videoModelToFormattedJSON (video: MVideoFormattable, options: VideoFormattingJSONOptions = {}): Video { 74function videoModelToFormattedJSON (video: MVideoFormattable, options: VideoFormattingJSONOptions = {}): Video {
75 const span = tracer.startSpan('peertube.VideoModel.toFormattedJSON')
76
74 const userHistory = isArray(video.UserVideoHistories) ? video.UserVideoHistories[0] : undefined 77 const userHistory = isArray(video.UserVideoHistories) ? video.UserVideoHistories[0] : undefined
75 78
76 const videoObject: Video = { 79 const videoObject: Video = {
@@ -168,10 +171,14 @@ function videoModelToFormattedJSON (video: MVideoFormattable, options: VideoForm
168 videoObject.files = videoFilesModelToFormattedJSON(video, video.VideoFiles) 171 videoObject.files = videoFilesModelToFormattedJSON(video, video.VideoFiles)
169 } 172 }
170 173
174 span.end()
175
171 return videoObject 176 return videoObject
172} 177}
173 178
174function videoModelToFormattedDetailsJSON (video: MVideoFormattableDetails): VideoDetails { 179function videoModelToFormattedDetailsJSON (video: MVideoFormattableDetails): VideoDetails {
180 const span = tracer.startSpan('peertube.VideoModel.toFormattedDetailsJSON')
181
175 const videoJSON = video.toFormattedJSON({ 182 const videoJSON = video.toFormattedJSON({
176 additionalAttributes: { 183 additionalAttributes: {
177 scheduledUpdate: true, 184 scheduledUpdate: true,
@@ -199,6 +206,8 @@ function videoModelToFormattedDetailsJSON (video: MVideoFormattableDetails): Vid
199 trackerUrls: video.getTrackerUrls() 206 trackerUrls: video.getTrackerUrls()
200 } 207 }
201 208
209 span.end()
210
202 return Object.assign(videoJSON, detailsJSON) 211 return Object.assign(videoJSON, detailsJSON)
203} 212}
204 213
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index 924f12a5e..7e9bb4db4 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -27,6 +27,7 @@ import {
27import { getPrivaciesForFederation, isPrivacyForFederation, isStateForFederation } from '@server/helpers/video' 27import { getPrivaciesForFederation, isPrivacyForFederation, isStateForFederation } from '@server/helpers/video'
28import { LiveManager } from '@server/lib/live/live-manager' 28import { LiveManager } from '@server/lib/live/live-manager'
29import { removeHLSFileObjectStorage, removeHLSObjectStorage, removeWebTorrentObjectStorage } from '@server/lib/object-storage' 29import { removeHLSFileObjectStorage, removeHLSObjectStorage, removeWebTorrentObjectStorage } from '@server/lib/object-storage'
30import { tracer } from '@server/lib/opentelemetry/tracing'
30import { getHLSDirectory, getHLSRedundancyDirectory } from '@server/lib/paths' 31import { getHLSDirectory, getHLSRedundancyDirectory } from '@server/lib/paths'
31import { VideoPathManager } from '@server/lib/video-path-manager' 32import { VideoPathManager } from '@server/lib/video-path-manager'
32import { getServerActor } from '@server/models/application/application' 33import { getServerActor } from '@server/models/application/application'
@@ -1535,6 +1536,8 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
1535 options: BuildVideosListQueryOptions, 1536 options: BuildVideosListQueryOptions,
1536 countVideos = true 1537 countVideos = true
1537 ): Promise<ResultList<VideoModel>> { 1538 ): Promise<ResultList<VideoModel>> {
1539 const span = tracer.startSpan('peertube.VideoModel.getAvailableForApi')
1540
1538 function getCount () { 1541 function getCount () {
1539 if (countVideos !== true) return Promise.resolve(undefined) 1542 if (countVideos !== true) return Promise.resolve(undefined)
1540 1543
@@ -1554,6 +1557,8 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
1554 1557
1555 const [ count, rows ] = await Promise.all([ getCount(), getModels() ]) 1558 const [ count, rows ] = await Promise.all([ getCount(), getModels() ])
1556 1559
1560 span.end()
1561
1557 return { 1562 return {
1558 data: rows, 1563 data: rows,
1559 total: count 1564 total: count