mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 08:45:18 +01:00 
			
		
		
		
	1. Add a OpenTelemetry-like shim-layer to collect traces 2. Add a simple builtin trace collector and exporter, end users could download the diagnosis report to get the traces. This PR's design is quite lightweight, no hard-dependency, and it is easy to improve or remove. We can try it on gitea.com first to see whether it works well, and fine tune the details. --------- Co-authored-by: silverwind <me@silverwind.io>
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Handlebars
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Handlebars
		
	
	
	
	
	
<div class="item">
 | 
						|
	<div class="tw-flex tw-items-center">
 | 
						|
		<div class="icon tw-ml-2 tw-mr-2">
 | 
						|
			{{if eq .Process.Type "request"}}
 | 
						|
				{{svg "octicon-globe" 16}}
 | 
						|
			{{else if eq .Process.Type "system"}}
 | 
						|
				{{svg "octicon-cpu" 16}}
 | 
						|
			{{else if eq .Process.Type "normal"}}
 | 
						|
				{{svg "octicon-terminal" 16}}
 | 
						|
			{{else}}
 | 
						|
				{{svg "octicon-code" 16}}
 | 
						|
			{{end}}
 | 
						|
		</div>
 | 
						|
		<div class="content tw-flex-1">
 | 
						|
			<div class="header">{{.Process.Description}}</div>
 | 
						|
			<div class="description">{{if ne .Process.Type "none"}}{{DateUtils.TimeSince .Process.Start}}{{end}}</div>
 | 
						|
		</div>
 | 
						|
		<div>
 | 
						|
			{{if or (eq .Process.Type "request") (eq .Process.Type "normal")}}
 | 
						|
				<a class="link-action" data-url="{{.root.Link}}/cancel/{{.Process.PID}}"
 | 
						|
					data-modal-confirm-header="{{ctx.Locale.Tr "admin.monitor.process.cancel"}}"
 | 
						|
					data-modal-confirm-content="{{ctx.Locale.Tr "admin.monitor.process.cancel_desc"}}"
 | 
						|
				>{{svg "octicon-trash" 16 "text-red"}}</a>
 | 
						|
			{{end}}
 | 
						|
		</div>
 | 
						|
	</div>
 | 
						|
	{{if .Process.Stacks}}
 | 
						|
		<div class="divided list tw-ml-2">
 | 
						|
			{{range .Process.Stacks}}
 | 
						|
				<div class="item">
 | 
						|
					<details>
 | 
						|
						<summary>
 | 
						|
							<div class="flex-text-inline">
 | 
						|
								<div class="header tw-ml-2">
 | 
						|
									<span class="icon tw-mr-2">{{svg "octicon-code" 16}}</span>{{.Description}}{{if gt .Count 1}} * {{.Count}}{{end}}
 | 
						|
								</div>
 | 
						|
								<div class="description">
 | 
						|
									{{range .Labels}}
 | 
						|
										<div class="ui label">{{.Name}}<div class="detail">{{.Value}}</div></div>
 | 
						|
									{{end}}
 | 
						|
								</div>
 | 
						|
							</div>
 | 
						|
						</summary>
 | 
						|
						<div class="list">
 | 
						|
							{{range .Entry}}
 | 
						|
								<div class="item tw-flex tw-items-center">
 | 
						|
									<span class="icon tw-mr-4">{{svg "octicon-dot-fill" 16}}</span>
 | 
						|
									<div class="content tw-flex-1">
 | 
						|
										<div class="header"><code>{{.Function}}</code></div>
 | 
						|
										<div class="description"><code>{{.File}}:{{.Line}}</code></div>
 | 
						|
									</div>
 | 
						|
								</div>
 | 
						|
							{{end}}
 | 
						|
						</div>
 | 
						|
					</details>
 | 
						|
				</div>
 | 
						|
			{{end}}
 | 
						|
		</div>
 | 
						|
	{{end}}
 | 
						|
 | 
						|
	{{if .Process.Children}}
 | 
						|
		<div class="divided list">
 | 
						|
			{{range .Process.Children}}
 | 
						|
				{{template "admin/stacktrace-row" dict "Process" . "root" $.root}}
 | 
						|
			{{end}}
 | 
						|
		</div>
 | 
						|
	{{end}}
 | 
						|
 | 
						|
</div>
 |