از 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 که آنها را پر میکند، ایجاد میکنید، فوراً واکنش نشان میدهد.
نمودارهای ارتباطی مبتنی بر SQL
مجموعه جزئیات داشبورد شامل هر چیزی است که انتظار دارید، از جمله جداول، نمودارها ، کارت اطلاعات و ویجت های ورودی. همچنین شامل مواردی است که ممکن است انتظار نداشته باشید، به ویژه گرهها و لبههایی که گرافهای رابطه را تشکیل میدهند. در اینجا مثالی وجود دارد که از ویجت انتخابی برای انتخاب نویسنده InfoWorld استفاده میکند، سپس نموداری ایجاد میکند که نویسنده انتخابشده را به مقالات نوشته شده و به دستههای (شاید چندگانه) مرتبط با هر مقاله مرتبط میکند.
در اینجا نحوه تعریف گره ها و لبه ها آمده است. دو تا از گره ها برای دسته ها و نویسندگان پرس و جو می کنند و سومی از افزونه 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، کانتینرها، سرورها و گرهها – به یکدیگر مرتبط هستند. هر موجودیت در نمودار به گراف دیگری پیوند داده میشود که به درون موجودیت میپردازد و زیرساخت اطراف آن را شرح میدهد.
این تجسمها، که برای AWS نیز در دسترس هستند، Azure، و GCP، راهی عالی برای کاوش و درک معماری های ابری شماست. و پرس و جوهایی که برای انجام آن می نویسید قابل استفاده مجدد هستند. می توانید همان داده ها را در نمودارها و جداول داشبورد جریان دهید.
معیارها و کنترلهای مبتنی بر SQL
Powerpipe همچنین موتوری است که مجموعهای از معیارهای انطباق را نیز برای AWS نیرو میدهد، آژور، GCP، Kubernetes، و دیگران. در اینجا معیاری وجود دارد که نشانیهای اینترنتی تصویر تعبیهشده در قسمت افزونهها
فیدهای RSS InfoWorld را تأیید میکند.
و در اینجا نحوه تعریف آن آمده است. معیار شامل یک کنترل است که پرس و جوی چند مرحله ای را برای انتخاب 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 اکنون میتوانید از همان فناوریها به طور گستردهتری استفاده کنید.
پست های مرتبط
داشبوردهای Steampipe و معیارهایی برای داده های شما
داشبوردهای Steampipe و معیارهایی برای داده های شما
داشبوردهای Steampipe و معیارهایی برای داده های شما