---
permalink: /status/
---
<!DOCTYPE html>
<html>
{% capture metaDesc %}镜像站监控，包括网络流量、磁盘状态、磁盘占用和 CPU 与内存的使用情况，以及各个镜像的同步状态{% endcapture %}
	{% include head.html metaDesc=metaDesc notArticle=true %}
<body>
	{% include nav.html %}
	<div id="status-page">
	{% unless site.issue %}
		<div class="spacing hidden-xs"></div>
		<div class="container">
			{% unless site.hide_server_status %}
			<h3 id="server-status"> # 服务器监控 </h3>
			<h4> # 网络流量 </h4>
			<div class="row">
				{% include status-pic.html name="service_traffic_IPv4" %}
				{% include status-pic.html name="service_traffic_IPv6" %}
			</div>
			<h4># 磁盘状态 </h4>
			<div class="row" id="disk-usage">{% raw %}
				<div class="col-xs-12" v-if="diskUsages.length"><strong>磁盘占用</strong>: </div>
				<template v-for="disk in diskUsages">
				<div class="col-xs-1" v-if="disk.desc">{{ disk.desc }}</div>
				<div :class="['col-xs-' + (disk.desc ? '11' : '12')]">
				<div class="progress">
					<div class="progress-bar" role="progressbar" :aria-valuenow="disk.percentage" aria-valuemin="0" aria-valuemax="100" :style="{width: disk.percentage + '%'}">
						<strong>{{ disk.used }} / {{ disk.total }}</strong>
					</div>
				</div>
				</div>
				</template>{% endraw %}
				{% include status-pic.html name="diskstats_iops" %}
				{% include status-pic.html name="diskstats_throughput" %}
			</div>
			<h4># CPU / 内存</h4>
			<div class="row">
				{% include status-pic.html name="cpu" %}
				{% include status-pic.html name="memory" %}
			</div>
			{% endunless %}
			<h3 id="syncing-status"># 同步状态</h3>
			<table class="table table-condensed flat-md">
				<thead class="hidden-xs hidden-sm">
					<tr>
						<th class="col-xs-12 col-md-2">Name</th>
						<th class="col-xs-12 col-md-4" colspan=2>Last Update</th>
						<th class="col-xs-12 col-md-4">Upstream</th>
						<th class="col-xs-12 col-md-1">Status</th>
						<th class="col-xs-12 col-md-1">Size</th>
					</tr>
				</thead>
				<tbody id="mirror-list" data-tuna-roll-cur="-1" data-tuna-roll-max="6">
					{% raw %}
					<tr v-for="mir in rawMirrorList" :class="['row', 'status-'+mir.status, mir.last_ended_ts == mir.last_update_ts ? 'last-succ' : 'last-fail']" :key="mir.name">
						<td class="col-xs-4">Name</td>
						<td class="col-md-2 col-xs-8">{{mir.name}}{{mir.is_master ? '' : ' [slave]'}}</td>
						<td class="col-xs-4">Last Success</td>
						<td class="col-xs-8 hidden-md hidden-lg">{{mir.last_update}}, {{mir.last_update_ago}}</td>
						<template v-if="mir.last_ended_ts != mir.last_update_ts">
						<td class="col-xs-4">Last Attempt</td>
						<td class="col-xs-8 hidden-md hidden-lg">{{mir.last_ended}}, {{mir.last_ended_ago}}</td>
						</template>
						<td class="col-xs-4">Next Sync</td>
						<td class="col-xs-8 hidden-md hidden-lg" v-if="mir.status != 'syncing'">{{mir.next_schedule}}, {{mir.next_schedule_ago}}</td>
						<td class="col-xs-8 hidden-md hidden-lg" v-else>Syncing Now</td>
						<td class="hidden-xs hidden-sm hidden-md hidden-lg"></td>
						<td class="col-md-2 col-xs-3 rolling-3 text-left-md text-right-xs hidden-xs hidden-sm">
							<div v-if="dateTooltip" class="tuna-roll">&nbsp;
								<template v-if="mir.last_ended_ts == mir.last_update_ts">
									<div data-tuna-roll-seq="0 1 2 3">Last Successful Sync</div>
								</template>
								<template v-else>
									<div data-tuna-roll-seq="0 1">Last Successful Sync</div>
									<div data-tuna-roll-seq="2 3">Last Attempted Sync</div>
								</template>
								<div v-if="mir.status == 'syncing'" data-tuna-roll-seq="4 5">Sync Started</div>
								<div v-else data-tuna-roll-seq="4 5">Next Scheduled Sync</div>
							</div>
							<div v-else class="tuna-roll">&nbsp;
								<template v-if="mir.last_ended_ts == mir.last_update_ts">
									<div data-tuna-roll-seq="0 1 2 3">Last Successful Sync</div>
								</template>
								<template v-else>
									<div data-tuna-roll-seq="0">Last Successful Sync</div>
									<div data-tuna-roll-seq="1">Last Attempted Sync</div>
									<div data-tuna-roll-seq="2">Last Successful Sync</div>
									<div data-tuna-roll-seq="3">Last Attempted Sync</div>
								</template>
								<div data-tuna-roll-seq="4 5">Next Scheduled Sync</div>
							</div>
						</td>
						<td class="hidden-xs hidden-sm hidden-md hidden-lg"></td>
						<td class="col-md-2 col-xs-5 rolling-6 hidden-xs hidden-sm">
							<div v-if="dateTooltip" class="tuna-roll">&nbsp;
								<template v-if="mir.last_ended_ts == mir.last_update_ts">
									<div data-tuna-roll-seq="0 1 2 3">{{mir.last_update_ago}}
										<div class="tooltiptext">{{mir.last_update}}</div>
									</div>
								</template>
								<template v-else>
									<div data-tuna-roll-seq="0 1">{{mir.last_update_ago}}
										<div class="tooltiptext">{{mir.last_update}}</div>
									</div>
									<div data-tuna-roll-seq="2 3" v-if="mir.last_ended_ts != mir.last_update_ts">{{mir.last_ended_ago}}
										<div class="tooltiptext">{{mir.last_ended}}</div>
									</div>
								</template>
								<div v-if="mir.status == 'syncing'" data-tuna-roll-seq="4 5">{{mir.last_started_ago}}
									<div class="tooltiptext">{{mir.last_started}}</div>
								</div>
								<div v-else data-tuna-roll-seq="4 5">{{mir.next_schedule_ago}}
									<div class="tooltiptext">{{mir.next_schedule}}</div>
								</div>
							</div>
							<div v-else class="tuna-roll">&nbsp;
								<template v-if="mir.last_ended_ts == mir.last_update_ts">
									<div data-tuna-roll-seq="0 1">{{mir.last_update}}</div>
									<div data-tuna-roll-seq="2 3">{{mir.last_update_ago}}</div>
								</template>
								<template v-else>
									<div data-tuna-roll-seq="0">{{mir.last_update}}</div>
									<div data-tuna-roll-seq="1" v-if="mir.last_ended_ts != mir.last_update_ts">{{mir.last_ended}}</div>
									<div data-tuna-roll-seq="2">{{mir.last_update_ago}}</div>
									<div data-tuna-roll-seq="3" v-if="mir.last_ended_ts != mir.last_update_ts">{{mir.last_ended_ago}}</div>
								</template>
								<template v-if="mir.status == 'syncing'">
									<div data-tuna-roll-seq="4 5">Syncing Now</div>
								</template>
								<template v-else>
									<div data-tuna-roll-seq="4">{{mir.next_schedule}}</div>
									<div data-tuna-roll-seq="5">{{mir.next_schedule_ago}}</div>
								</template>
							</div>
						</td>
						<td class="col-xs-4">Upstream</td>
						<td class="col-md-4 col-xs-8">{{mir.upstream}}</td>
						<td class="col-xs-4">Status</td>
						<td class="col-md-1 col-xs-8">{{mir.status}}</td>
						<td class="col-xs-4">Size</td>
						<td class="col-md-1 col-xs-8">{{mir.size}}</td>
					</tr>
					{% endraw %}
				</tbody>
			</table>
		</div><!--/container -->
		{% endunless %}
	</div><!--/status -->
	{% include footer.html %}
	<script src="/static/js/status.js?{{ site.data['hash'] }}"></script>
	<script src="/static/js/index.js?{{ site.data['hash'] }}"></script>
</body>
</html>
<!--
vim: ts=2 sts=2 sw=2 noexpandtab
-->
