tuna / mirror-web

Source code of the web interface of https://mirrors.tuna.tsinghua.edu.cn/
GNU General Public License v2.0
773 stars 305 forks source link

基于README的下一步快速使用指南交流(包含使用tunasync脚本、目录挂载、模板渲染) #233

Closed xx-zhang closed 3 years ago

xx-zhang commented 3 years ago

rt

shankerwangmiao commented 3 years ago

不一定,一般我们的处理方法是将 _site 目录单独放置,软连接到存放镜像的目录下。

xx-zhang commented 3 years ago

@shankerwangmiao 謝謝.

xx-zhang commented 3 years ago

@shankerwangmiao 怎么让我的子页面也用到首页的模板啊。 image

shankerwangmiao commented 3 years ago

这个需要配合 nginx 的 njs 模块和 fancy_index 模块。

参考配置如下:

load_module modules/ngx_http_js_module.so;
load_module modules/ngx_http_fancyindex_module.so;

map $http_user_agent $isbrowser {
 default 0;
 "~*validation server" 0;
 "~*mozilla" 1;
}

fancyindex_header /fancy-index/before;
fancyindex_footer /fancy-index/after;
fancyindex_exact_size off;
fancyindex_time_format "%d %b %Y %H:%M:%S +0000";
fancyindex_name_length 256;

error_page 404 /404.html;

location /fancy-index {
 internal;
 root /path/to/mirror-web/_site;
 subrequest_output_buffer_size 100k;
 location = /fancy-index/before {
   js_content fancyIndexBeforeRender;
 }
 location = /fancy-index/after {
   js_content fancyIndexAfterRender;
 }
}

js_path /path/to/mirror-web/static/njs;
js_include /path/to/mirror-web/static/njs/all.njs;

location / {
 root /path/to/mirrors;
 fancyindex on;
}
xx-zhang commented 3 years ago

@shankerwangmiao 非常感谢,我自个儿研究一下

xx-zhang commented 3 years ago

@shankerwangmiao 不好意思,再打扰您一个问题。 就是我想更新自己的 static/status, static/tunasync.json等文件,而不是使用默认tsingahua的,应该触发哪个脚本进行替换呢,worker.conf 我是使用的自己定义的,也增加了自己的 /home/script/xxxx.sh 脚本更新了_site下的目录。 再就是worker下有个server 6000的服务,这个不知道做什么的。

shankerwangmiao commented 3 years ago
xx-zhang commented 3 years ago

@shankerwangmiao 非常感谢,fancy_index这个我已经解决了; 您这个 json 配置的说明对我帮助很大,现在使用 ngx插件后界面后跟之前差别不大,是不是代表着可以不起 jelley serve的的服务了

image

xx-zhang commented 3 years ago

@shankerwangmiao 我刚才去看了您 tuna/status 的请求,发现了png是渲染后的,我发现这个必须监控,因为是一个有时序的状态变更表,而且这个功能有必要,所以我想问问您,有没有快速简介的方案,比如 snmp/promethus + grafana 还是 netdata之类的能直接生成这个 png 或者容易调用相关的接口数据接着自己用pyechart渲染,这个方案您之前调研过吗。

shankerwangmiao commented 3 years ago

@shankerwangmiao 非常感谢,fancy_index这个我已经解决了; 您这个 json 配置的说明对我帮助很大,现在使用 ngx插件后界面后跟之前差别不大,是不是代表着可以不起 jelley serve的的服务了

image

Jekyll 本来就是静态页面渲染器,用 jekyll build 渲染好了就可以了。

shankerwangmiao commented 3 years ago

@shankerwangmiao 我刚才去看了您 tuna/status 的请求,发现了png是渲染后的,我发现这个必须监控,因为是一个有时序的状态变更表,而且这个功能有必要,所以我想问问您,有没有快速简介的方案,比如 snmp/promethus + grafana 还是 netdata之类的能直接生成这个 png 或者容易调用相关的接口数据接着自己用pyechart渲染,这个方案您之前调研过吗。

用 grafana 的 image renderer 即可。API 是 `/render/dashboard-solo/db/

`,参数可以使用 GET 请求传入,具体参数有: * `from`、`to`:要渲染的时间段,语法与 Grafana 正常观看 Dashboard 的参数一致 * `panelId`:要渲染的 panel 的 ID * `width`、`height`:渲染的图片宽高(逻辑大小) * `theme`:可以有 `light` 和 `dark` * `scale`:缩放倍数
xx-zhang commented 3 years ago

@shankerwangmiao 多谢,懂了。祝您生活愉快。

xx-zhang commented 3 years ago

@shankerwangmiao 我今天调用 http://127.0.0.1:12345/jobs 时候除了错l; {"error":"failed to list all mirror status: NOAUTH Authentication required."}

补充上 两个配置文件;

本内容属于 tunasync的问题,但是在这里,集中问下。

manager.py

debug = true

[server]
addr = "127.0.0.1"
port = 12345
ssl_cert = ""
ssl_key = ""

[files]
db_type = "redis"
#db_file = "/tmp/tunasync/manager.db"
#db_file = redis://user:password@host:port/db_number
db_file = "redis://sqsjywl123@127.0.0.1:6379/3"
ca_cert = ""

worker.conf

# /home/scripts in this example points to https://github.com/tuna/tunasync-scripts/

[global]
name = "mirror_worker_tsinghua"
log_dir = "/home/tunasync/log/tunasync/{{.Name}}"
mirror_dir = "/home/mirrors"
concurrent = 10
interval = 1

# ensure the exec user be add into `docker` group
[docker]
# in `command provider` can use docker_image and docker_volumes
enable = true

[manager]
api_base = "http://localhost:12345"
token = ""
ca_cert = ""

[cgroup]
enable = false
base_path = "/sys/fs/cgroup"
group = "tunasync"

[server]
hostname = "localhost"
listen_addr = "127.0.0.1"
listen_port = 6000
ssl_cert = ""
ssl_key = ""

[[mirrors]]
name = "centos"
provider = "rsync"
upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/centos/"
use_ipv6 = false
rsync_options = [ "--delete-excluded"]
#exclude_file = "/home/scripts/excludes/centos-exclude.txt"
memory_limit = "1024M"

[[mirrors]]
name = "epel"
provider = "rsync"
upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/epel/"
use_ipv6 = false
rsync_options = [ "--delete-excluded"]
#exclude_file = "/home/scripts/excludes/centos-exclude.txt"
memory_limit = "1024M"

[[mirrors]]
name = "pypi"
provider = "rsync"
upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/pypi/"
use_ipv6 = false
rsync_options = [ "--delete-excluded"]
memory_limit = "1024M"

[[mirrors]]
name = "kali"
provider = "two-stage-rsync"
stage1_profile = "debian"
upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/kali/"
rsync_options = [ "--delete-excluded" ] # delete .~tmp~ folders
memory_limit = "1024M"

[[mirrors]]
name = "kali-images"
provider = "rsync"
upstream = "rsync://mirrors.tuna.tsinghua.edu.cn/kali-images/"
rsync_options = [ "--delete-excluded" ] # delete .~tmp~ folders
memory_limit = "1024M"
xx-zhang commented 3 years ago

关于上面的第一个 我修改了版本为 0.6.9 解决了 jobs获取。

shankerwangmiao commented 3 years ago

two-stage-rsync 是用于同步 apt 仓库的,比如 debian 和 ubuntu 等, 为了保证一致性,apt 仓库有特殊的同步时序。

pypi TUNA 不开放 rsync 服务,你需要从上游同步

xx-zhang commented 3 years ago

@shankerwangmiao 谢谢答疑。理解了。

kali,ubuntu,debian,ubuntukylin等等都是 aot结构的仓库,apt_sync获取的可以用这个。

pypi 我使用您的,pip3安装了bandersnatc后就这样了,在同步。

[[mirrors]]
name = "pypi"
provider = "command"
upstream = "https://pypi.python.org/"
command = "/data/scripts/pypi.sh"
# docker_image = "tunathu/bandersnatch:latest"
interval = 5
shankerwangmiao commented 3 years ago

监控数据是用 telegraf 采集的,存储在 influxdb 里

Lesliewxj commented 3 years ago
  • static/tunasync.json 请反代到 tunasync manager 的 /jobs 接口
  • static/tunet.json 无用,可以去掉
  • static/status/disk.json 磁盘占用情况,请自行定期生成
  • static/status/isoinfo.json 首页“获取下载链接”功能的数据,使用 mirror-web 下的 geninfo/genisolist.py 定期扫描镜像目录生成
  • static/status/{cpu,memory,diskstats_iops,service_traffic_IPv4,diskstats_throughput,service_traffic_IPv6}-day{,-dark}{,@2x,@3x,@4x}.png 是相应数据的统计图,对于每个数据都有浅色和深色两种主题,以及 1 倍到 4 倍分辨率的图像。该图像需要自行渲染。

请问一下如何定期生成磁盘占用情况和网络带宽图的那几张图片,有没有参考的配置文件,非常感谢!

shankerwangmiao commented 3 years ago

这个需要部署相应的监控数据采集体统,然后通过 grafana 进行可视化。然后定时从 grafana 里渲染图片出来。

Lesliewxj commented 3 years ago

这个需要部署相应的监控数据采集体统,然后通过 grafana 进行可视化。然后定时从 grafana 里渲染图片出来。

好的,我先试试,非常感谢。