#scraper #monitoring #cvmfs #eessi

cvmfs_server_scraper

CVMFS 服务器抓取器

2 个版本

0.0.2 2024 年 6 月 30 日
0.0.1 2024 年 6 月 30 日

#422 in 网页编程

Download history 260/week @ 2024-06-24 38/week @ 2024-07-01 10/week @ 2024-07-08

308 每月下载量

MIT 许可证

71KB
1.5K SLoC

CVMFS 服务器抓取器

此库抓取 CVMFS 服务器上的公共元数据源并验证数据。获取的文件包括

  • cvmfs/info/v1/repositories.json
  • cvmfs/info/v1/meta.json

对于每个存储库,它还会获取

  • cvmfs//.cvmfs_status.json
  • cvmfs//.cvmfspublished

用法

use cvmfs_server_scraper::{Hostname, Server, ServerBackendType, ServerType, scrape_servers, ScrapedServer};
use futures::future::join_all;

#[tokio::main]
async fn main() {
    let servers = vec![
        Server::new(
            ServerType::Stratum1,
            ServerBackendType::CVMFS,
            Hostname("azure-us-east-s1.eessi.science".to_string()),
        ),
        Server::new(
            ServerType::Stratum1,
            ServerBackendType::AutoDetect,
            Hostname("aws-eu-central-s1.eessi.science".to_string()),
        ),
        Server::new(
            ServerType::SyncServer,
            ServerBackendType::S3,
            Hostname("aws-eu-west-s1-sync.eessi.science".to_string()),
        ),
    ];
    let repolist = vec!["software.eessi.io", "dev.eessi.io", "riscv.eessi.io"];
   // Scrape all servers in parallel
   let servers = scrape_servers(servers, repolist).await;
   for server in servers {
       match server {
           ScrapedServer::Populated(populated_server) => {
                println!("{}", populated_server);
                populated_server.display();
                println!();
           }
           ScrapedServer::Failed(failed_server) => {
               panic!("Error! {} failed scraping: {:?}", failed_server.hostname, failed_server.error);
           }
      }
    }
}

关于服务器后端的一些说明

对于给定的服务器,有三种有效的后端选项。这些是

  • CVMFS:此后端需要服务器上存在 cvmfs/info/v1/repositories.json。如果缺少该文件,抓取将失败。
  • S3:甚至不会尝试获取 cvmfs/info/v1/repositories.json。请注意,如果任何服务器使用 S3 作为后端,则必须将存储库列表传递给抓取器,因为目前没有其他方法可以确定 S3 服务器的存储库列表。由于所有服务器都进行异步抓取,因此目前不支持从其他服务器类型(包括可能的 Stratum0)检测到的存储库回退。
  • AutoDetect:此后端尝试获取 cvmfs/info/v1/repositories.json,但如果缺少该文件,则不会失败。如果抓取器无法获取文件,则假定后端为 S3。如果存储库列表为空,抓取器将返回空列表。如果您的 S3 服务器没有存储库,将后端设置为 AutoDetect 将允许抓取器继续而不会失败。

对于已填充的服务器,字段 backend_detected 将设置为检测到的后端,对于显式 S3 或 CVMFS 服务器,它将与请求的类型相同。

抓取哪些存储库?

  • 对于设置为或检测为 CVMFS 的服务器,抓取器将抓取检测到的和明确声明的配置存储库的并集。
  • 对于设置为或检测为 S3 的服务器,只抓取明确声明的存储库(如果服务器类型明确设置为 S3 且没有传递存储库,则抓取器将失败)。

许可证

在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE 文件。

依赖项

~7–19MB
~267K SLoC