۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

داشبوردهای Steampipe و معیارهایی برای داده های شما

از Powerpipe برای تجسم و اعتبارسنجی داده ها در پایگاه داده Postgres، SQLite، DuckDB یا MySQL خود استفاده کنید.

از Powerpipe برای تجسم و اعتبارسنجی داده ها در پایگاه داده Postgres، SQLite، DuckDB یا MySQL خود استفاده کنید.

در Steampipe unbundled نشان دادیم که چگونه افزونه های آن، که در اصل فقط با پوشش داده های خارجی بارگذاری شده در Postgres دارای باتری Steampipe، اکنون به صورت مستقل نیز در دسترس است توزیع هایی که می توانید در نمونه های خود از Postgres یا SQLite بارگذاری کنید. اکنون خود Steampipe جدا شده است: سرور داشبورد و اجراکننده معیار آن به یک پروژه منبع باز جدید منتقل شده اند، Powerpipe.

وقتی Powerpipe را راه‌اندازی می‌کنید، به طور پیش‌فرض به یک نمونه محلی Steampipe می‌رسد، بنابراین داشبوردها و معیارهای موجود مثل همیشه کار می‌کنند. حالت‌ها که آنها را هدایت می‌کند، داده‌های خود را از همان افزونه‌ها و با استفاده از همان جستارهای SQL منبع می‌دهند. اما می‌توانید از آرگومان --database Powerpipe برای تعیین رشته اتصال Postgres، SQLite، DuckDB یا MySQL استفاده کنید.

چرا Steampipe را به این روش جدا کنید؟ فلسفه یونیکس معتقد است که یک ابزار نرم افزاری باید یک کار را به خوبی انجام دهد و به راحتی با ابزارهای دیگری که از همان اصل پیروی می کنند ترکیب شود. Steampipe از این طریق شروع شد، اما با ظاهر شدن داشبورد و لایه‌های معیار، مشخص شد که بازسازی درست است. برای مهندسان توسعه‌دهنده که از این ابزار برای تجسم و ارزیابی زیرساخت‌های ابری استفاده می‌کنند، منطقی است که این لایه‌ها را به اجزایی با رابط‌های کاملاً تعریف شده جدا کنند. اما Powerpipe فقط برای آنها نیست. در میان مجموعه ای از مودهای جدید منتشر شده با Powerpipe، یکی وجود دارد که داده های زیست پزشکی را از RNACentral توسط راه یک نقطه پایانی عمومی Postgres. برای مشاهده آن داشبوردها، مد را نصب می‌کنید، سپس Powerpipe را به این صورت راه‌اندازی کنید:

powerpipe server --database postgres://reader:NWDMCE5xdipIjRrp@hh-pgsql-public.ebi.ac.uk:5432/pfmegrnargs

اکنون داشبوردها در http://localhost:9033 قابل مرور هستند.

البته می توانید هر مشتری Postgres را به آن نقطه پایانی متصل کنید. چیزی که Powerpipe برای مهمانی به ارمغان می آورد، رویکردی به عنوان کد برای تجسم و اعتبارسنجی داده ها است. ویجت‌هایی که داشبوردها و معیارها را هدایت می‌کنند به زبانی بیانی نوشته شده‌اند، HCL، که مکمل جستارهای SQL اعلامی است که آن ویجت‌ها را با داده پر می‌کند. همه کدهای HCL و SQL شما در مخازن ذخیره می‌شوند، تحت کنترل نسخه، برای همان نوع همکاری که انتظار دارید و برای همه مصنوعات کد دیگر از آن لذت می‌برید باز است.

جستجوی برداری چیست؟ جستجوی بهتر از طریق هوش مصنوعی

کار با آن کد از جهاتی دیگر نیز تجربه ای مناسب برای توسعه دهندگان است. Powerpipe فایل‌های شما را تماشا می‌کند و وقتی تغییراتی در HCL که ویجت‌های داشبورد را پیکربندی می‌کند یا SQL که آنها را پر می‌کند، ایجاد می‌کنید، فوراً واکنش نشان می‌دهد.

kube relgraph

نمودارهای ارتباطی مبتنی بر SQL

مجموعه جزئیات داشبورد شامل هر چیزی است که انتظار دارید، از جمله جداول، نمودارها ، کارت اطلاعات و ویجت های ورودی. همچنین شامل مواردی است که ممکن است انتظار نداشته باشید، به ویژه گره‌ها و لبه‌هایی که گراف‌های رابطه را تشکیل می‌دهند. در اینجا مثالی وجود دارد که از ویجت انتخابی برای انتخاب نویسنده InfoWorld استفاده می‌کند، سپس نموداری ایجاد می‌کند که نویسنده انتخاب‌شده را به مقالات نوشته شده و به دسته‌های (شاید چندگانه) مرتبط با هر مقاله مرتبط می‌کند.

krill relgraph

در اینجا نحوه تعریف گره ها و لبه ها آمده است. دو تا از گره ها برای دسته ها و نویسندگان پرس و جو می کنند و سومی از افزونه RSS برای پرس و جو استفاده می کند. فید RSS نویسنده انتخاب شده. سپس دو لبه گره ها را به هم متصل می کنند. یکی پیوندهای مقاله را به نویسندگان مرتبط می کند، دیگری همان پیوندها را به دسته ها مرتبط می کند. همه اینها فقط SQL است که به روشی غیر متعارف به کار گرفته شده است.

-- enumerate categories
node {
  category = category.category
  sql = <<EOQ
    select
      category as id,
      category as title
    from
      infoworld_categories()
  EOQ
}

-- enumerate authors
node {
  category = category.author
  args = [self.input.authors.value]
  sql = <<EOQ
    select
      author as id,
      author as title
    from
      infoworld_authors()
    where 
      author = $1
  EOQ
}

-- list articles by author
node {
  args = [self.input.authors.value]
  category = category.post
  sql = <<EOQ
  with feed_links as materialized (
    select
      author,
      'https://www.infoworld.com/author/' || author || '/index.rss' as feed_link
    from infoworld_authors()
  )
  select
    link as id,
    title as title,
    author,
    jsonb_build_object(
      'link', link,
      'author', author,
      'published', published
    ) as properties
  from
    rss_item r
  join
    feed_links f
  using (feed_link)
  where author = $1
  order by 
    published desc
  EOQ
}

-- relate articles to authors
edge {
  args = [self.input.authors.value]
  sql = <<EOQ
    with feed_links as materialized (
      select
        author,
        'https://www.infoworld.com/author/' || author || '/index.rss' as feed_link
      from infoworld_authors()
    )
    select
      link as to_id,
      author as from_id
    from
      rss_item r
    join
      feed_links f
    using (feed_link)
    where
      author = $1
  EOQ
}

-- relate articles to categories
edge {
  sql = <<EOQ
    select
      link as to_id,
      category as from_id
    from
      infoworld_category_urls()
  EOQ
}

استفاده‌های معمولی‌تر از این نمودارهای ارتباطی به مهندسان توسعه‌دهنده کمک می‌کنند تا بفهمند چگونه عناصر زیرساخت‌های ابری آنها با هم تطبیق می‌یابند، به عنوان مثال در این نمودار که نشان می‌دهد چگونه اجزای یک استقرار Kubernetes – استقرارها، مجموعه‌های تکراری، pods، کانتینرها، سرورها و گره‌ها – به یکدیگر مرتبط هستند. هر موجودیت در نمودار به گراف دیگری پیوند داده می‌شود که به درون موجودیت می‌پردازد و زیرساخت اطراف آن را شرح می‌دهد.

آشنایی با Windows Copilot Runtime

kube relgraph

این تجسم‌ها، که برای AWS نیز در دسترس هستند، Azure، و GCP، راهی عالی برای کاوش و درک معماری های ابری شماست. و پرس و جوهایی که برای انجام آن می نویسید قابل استفاده مجدد هستند. می توانید همان داده ها را در نمودارها و جداول داشبورد جریان دهید.

معیارها و کنترل‌های مبتنی بر SQL

Powerpipe همچنین موتوری است که مجموعه‌ای از معیارهای انطباق را نیز برای AWS نیرو می‌دهد، آژور، GCP، Kubernetes، و دیگران. در اینجا معیاری وجود دارد که نشانی‌های اینترنتی تصویر تعبیه‌شده در قسمت افزونه‌ها فیدهای RSS InfoWorld را تأیید می‌کند.

krill معیار

و در اینجا نحوه تعریف آن آمده است. معیار شامل یک کنترل است که پرس و جوی چند مرحله ای را برای انتخاب URL های فید برای نویسندگان اجرا می کند، تگ media هر مورد را بررسی می کند، سپس کد پاسخ HTTP را برای هر URL بررسی می کند.

control "image_urls" {
  title = "Image URLS"
  sql = <<EOT
  with authors as (
    select 
    author,
    'https://www.infoworld.com/author/' || author || '/index.rss' as feed_link
    from 
      infoworld_authors()
    limit 1
  ),
  image_urls as materialized (
    select
      a.author,
      r.extensions -> 'media' -> 'content' -> 0 -> 'attrs' ->> 'url' as url
    from 
      authors a
    join
      rss_item r
    using (feed_link)
  ),
  response_codes as (
    select
      i.author,
      n.url,
      n.response_status_code
    from
      net_http_request n
    join
      image_urls i
    using (url)
  )
  select
    url as resource,
    case when response_status_code = 200 then 'ok'
    else 'alarm'
   end as status,
    case when response_status_code = 200 then 'image found'
    else 'image not found'
   end as reason,
   substring(url from 1 for 150), 
   author
  from response_codes
  EOT
}

benchmark "feeds" {
  title = "Check InfoWorld feeds"
  children = [
    control.image_urls
  ]
}

نکات قابل توجه در اینجا:

  • ستون feed_link برگردانده شده از اولین CTE (عبارت رایج جدول) به همتای خود در افزونه RSS برای واکشی فید برای هر نویسنده.
  • از آنجایی که قسمت پشتی Steampipe است که مبتنی بر Postgres است، اپراتورهای Postgres JSONB برای بررسی تگ media و استخراج URL در دسترس هستند.
  • هر url سپس به ستون مربوطه افزونه Net—یک کلینت HTTP که به عنوان یک پایگاه داده پیچیده شده است جدول!—برای بررسی کد پاسخ.
مدیر عامل وادین: توسعه دهندگان معماران آینده هستند

یک کنترل فقط یک پرس و جوی SQL است که ستون‌های الزامی را برمی‌گرداند. a> وضعیت، دلیل و منبع. می توانید یک کنترل را به عنوان یک آزمایش واحد برای داده ها با Powerpipe به عنوان آزمایش کننده در نظر بگیرید.

این کنترل‌ها معمولاً از مجموعه‌های انطباق استاندارد پشتیبانی می‌کنند: CIS، FedRamp، GDPR، HIPAA، NIST، PCI، SOC 2 و موارد دیگر. مودهایی مانند انطباق با AWS پشتیبانی گسترده و عمیقی را برای این موارد ارائه می‌دهند. پوشش API به همان اندازه گسترده و عمیق ارائه شده توسط افزونه‌های Steampipe مانند موردی برای AWS.

اما می‌توانید برای تأیید هر نوع داده، در هر کجا که زندگی می‌کند، حالت‌های معیار بسازید: در جداول زودگذری که توسط سرویس‌های ابری از طریق افزونه‌ها پر شده‌اند، یا در پایگاه‌های داده خود به‌عنوان جداول بومی.

داشبوردها و معیارها به عنوان کد

چه داده‌ها را با جداول، نمودارها و نمودارهای تعاملی تجسم می‌کنید یا داده‌ها را با استفاده از کنترل‌ها تأیید می‌کنید، مدل یکسان است. شما از پرس و جوهای SQL برای به دست آوردن داده ها و ویجت های HCL برای نمایش آن ها با ویرایش زنده در هر دو مورد استفاده می کنید. کد در بسته هایی به نام mods زندگی می کند که می توانید نصب، ایجاد a>، و ریمیکس.

مانند محصول Steampipe که از آن جدا شد، Powerpipe یک باینری واحد است که می‌توانید به صورت محلی، یا در یک ماشین مجازی ابری، یا در خط لوله CI/CD اجرا کنید. و مانند Steampipe، به صورت میزبانی شده در Turbot Pipes در دسترس است، جایی که می‌توانید با تیم خود همکاری کنید و عکس‌های فوری از داشبورد و به اشتراک بگذارید. معیارها.

مجموعه‌های موجود داشبوردها و معیارهای Powerpipe بر روی آنچه که مردم بیشتر به آن نیاز دارند تمرکز می‌کنند: یک زبان جستجوی استاندارد، با دسترسی زنده به APIهای ابری، تعبیه‌شده در بسته‌بندی‌های HCL که در مخازن به همراه بقیه کدهای مدیریت‌شده شما زندگی می‌کنند. این نقطه شیرین است، اما با جداسازی Steampipe اکنون می‌توانید از همان فناوری‌ها به طور گسترده‌تری استفاده کنید.