<br />
<b>Notice</b>:  Function _load_textdomain_just_in_time was called <strong>incorrectly</strong>. Translation loading for the <code>acf</code> domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the <code>init</code> action or later. Please see <a href="https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/">Debugging in WordPress</a> for more information. (This message was added in version 6.7.0.) in <b>/home/devwp/public_html/p225-newweb/wp-includes/functions.php</b> on line <b>6131</b><br />
<br />
<b>Notice</b>:  Function _load_textdomain_just_in_time was called <strong>incorrectly</strong>. Translation loading for the <code>ajax-load-more-anything</code> domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the <code>init</code> action or later. Please see <a href="https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/">Debugging in WordPress</a> for more information. (This message was added in version 6.7.0.) in <b>/home/devwp/public_html/p225-newweb/wp-includes/functions.php</b> on line <b>6131</b><br />
<br />
<b>Notice</b>:  Function _load_textdomain_just_in_time was called <strong>incorrectly</strong>. Translation loading for the <code>wpforms-lite</code> domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the <code>init</code> action or later. Please see <a href="https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/">Debugging in WordPress</a> for more information. (This message was added in version 6.7.0.) in <b>/home/devwp/public_html/p225-newweb/wp-includes/functions.php</b> on line <b>6131</b><br />
<br />
<b>Notice</b>:  Function _load_textdomain_just_in_time was called <strong>incorrectly</strong>. Translation loading for the <code>wordpress-seo</code> domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the <code>init</code> action or later. Please see <a href="https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/">Debugging in WordPress</a> for more information. (This message was added in version 6.7.0.) in <b>/home/devwp/public_html/p225-newweb/wp-includes/functions.php</b> on line <b>6131</b><br />
{"id":9485,"date":"2023-08-20T12:39:27","date_gmt":"2023-08-20T04:39:27","guid":{"rendered":"https:\/\/devwp.visibleone.io\/p225-newweb\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/"},"modified":"2023-09-19T12:50:34","modified_gmt":"2023-09-19T04:50:34","slug":"monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud","status":"publish","type":"post","link":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/","title":{"rendered":"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;section&#8221; _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_row admin_label=&#8221;row&#8221; _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text admin_label=&#8221;Problem Statement&#8221; module_id=&#8221;new1&#8243; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>Problem Statement<\/h3>\n<p>At around end of March, I want to get my hands on the old raspberry pi cluster again as I need a testbed for K8S, ChatOps, CI\/CD etc. The DevOps ecosystem in 2023 is more ARM ready compared with 2020 which makes building a usable K8S stack on Pi realistic. I upgraded from a 4 nodes cluster to a 7 Pi4 nodes with POE capabilities, SSD, USB and sitting inside a nice 1U rack. Then spending the next two months&#8217; time on testing various OS. Re-installing the whole stack multiple times and struggling with the home router is fun. At the end the cluster is up with all platform engineering tools deployed.<br \/>\n[\/et_pb_text][et_pb_image src=&#8221;https:\/\/devwp.visibleone.io\/p225-newweb\/wp-content\/uploads\/2023\/08\/1684592208426-1.jpeg&#8221; title_text=&#8221;1684592208426&#8243; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]From the software perspective it all works fine. However, I quickly realize that the ventilation inside the rack is not good as what I expected. Although each Pi POE head comes with a fan and heatsink added the CPU temperature can easily goes above 60 degrees after an hour or so. Although the Pi rack comes with some nice LED displays with information on the temp of the Pi but that&#8217;s a bit small to look at. I need to find a solution to monitor the temperature of the whole stack easily. Ideally the monitoring can be presented on a nice dashboard with alerting capabilities. I decided to work on a solution to address the problem but keep coding to a minimum.<br \/>\n[\/et_pb_text][et_pb_text admin_label=&#8221;Solution&#8221; module_id=&#8221;new2&#8243; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>Solution<\/h3>\n<p>I want to share how I derived a solution for this without getting into too much (but unavoidable) technical detail. The goal is to build something fast and easily accessible. At the same time avoid toil in deployment.<br \/>\n[\/et_pb_text][et_pb_text admin_label=&#8221;Step 1:&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<em><strong>Step 1: Writing shell script to temperature as metrics in Prometheus scrap-able format.<\/strong><\/em><br \/>\n[\/et_pb_text][et_pb_code _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; module_class=&#8221;block-code&#8221; sticky_enabled=&#8221;0&#8243;]#!\/bin\/s<!-- [et_pb_line_break_holder] -->  while true; do<!-- [et_pb_line_break_holder] -->    ncat -l -p 7027 &#8211;sh-exec &#8216;\\<!-- [et_pb_line_break_holder] -->       C=&#8221;rpitemp $(cat \/sys\/class\/thermal\/thermal_zone0\/temp | sed &#8220;s\/\\([0-9]\\{2\\}\\)\/\\1.\/&#8221;)&#8221;; \\<!-- [et_pb_line_break_holder] -->    printf &#8220;HTTP\/1.0 200 OK\\nContent-Length: ${#C}\\n\\n$C&#8221;&#8216;<!-- [et_pb_line_break_holder] -->done<!-- [et_pb_line_break_holder] -->[\/et_pb_code][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]I am using dietpi OS and this few lines of code can provide me a simple line of &#8220;rpitemp 39.5&#8243; from port 7027. Ready for scraping by Prometheus.<br \/>\n[\/et_pb_text][et_pb_text admin_label=&#8221;Step 2:&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<em><strong>Step 2: Use ansible to deploy the script to all nodes.<\/strong><\/em><br \/>\n[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]I turned the above into a script, use ansible to copy the file to all nodes and set the script to run at boot. Below is the ansible playbook.yml.<br \/>\n[\/et_pb_text][et_pb_code _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; module_class=&#8221;block-code&#8221; sticky_enabled=&#8221;0&#8243;]- name: Set cron job for getting temperature from all worker node<!-- [et_pb_line_break_holder] -->\u00a0 hosts: workers<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\u00a0 tasks:<!-- [et_pb_line_break_holder] -->\u00a0 &#8211; name: Copy temp.sh file to all worker nodes<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 become: true\u00a0<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 copy:<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 src: \/home\/dietpi\/temp.sh<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 dest: \/home\/dietpi\/temp.sh<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 owner: root<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 group: root\u00a0 \u00a0 \u00a0 \u00a0\u00a0<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 mode: 0700<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\u00a0 &#8211; name: Create an entry in crontab for getting the pi temp on every restart<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 ansible.builtin.cron:<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 name: &#8220;a job for reboot&#8221;<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 special_time: reboot<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 job: &#8220;\/home\/dietpi\/temp.sh &#038;&#8221;<!-- [et_pb_line_break_holder] -->[\/et_pb_code][et_pb_text admin_label=&#8221;Step 3:&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<em><strong>Step 3: Start a prometheus docker on the control node and scrap temperature metrics from all worker nodes.<\/strong><\/em><br \/>\n[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]Below is the prometheus.yml file. Using remote_write to send metrics from all worker nodes to Grafana Cloud.<br \/>\n[\/et_pb_text][et_pb_code _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]global:<!-- [et_pb_line_break_holder] -->\u00a0 scrape_interval: 15s <!-- [et_pb_line_break_holder] -->\u00a0 evaluation_interval: 15s <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->scrape_configs:<!-- [et_pb_line_break_holder] -->\u00a0 &#8211; job_name: &#8220;piet_temp_control01&#8221;<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 metrics_path: &#8216;\/&#8217;<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 static_configs:<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 &#8211; targets: [&#8220;10.0.0.100:7027&#8221;]<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 &#8211; targets: [&#8216;10.0.0.101:7027&#8217;]<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 &#8211; targets: [&#8216;10.0.0.102:7027&#8217;]<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 &#8211; targets: [&#8216;10.0.0.103:7027&#8217;]<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 &#8211; targets: [&#8216;10.0.0.104:7027&#8217;]<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 &#8211; targets: [&#8216;10.0.0.105:7027&#8217;]<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 &#8211; targets: [&#8216;10.0.0.106:7027&#8217;]<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --># remote write location<!-- [et_pb_line_break_holder] -->remote_write:<!-- [et_pb_line_break_holder] -->\u00a0 &#8211; url: [granfana cloud URL]<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 basic_auth:<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 username: [username]<!-- [et_pb_line_break_holder] -->\u00a0 \u00a0 \u00a0 password: [password]<!-- [et_pb_line_break_holder] -->[\/et_pb_code][et_pb_text admin_label=&#8221;Step 4:&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<em><strong>Step 4: Sign up a Grafana cloud free tier account<\/strong><\/em>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]The free tier account comes with 10 free dashboards quota, that&#8217;s enough for my simple use case. I choose to use Grafana cloud for building the dashboard to avoid the trouble of getting into the Pi cluster to access the local Grafana instance. Also, it will be easier for alert integration using Grafana Cloud.<br \/>\n[\/et_pb_text][et_pb_text admin_label=&#8221;Step 5:&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<em><strong>Step 5: Building the dashboard<\/strong><\/em><br \/>\n[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]This is probably the easiest part. Grafana comes with nice dash-boarding capability for different kind of use cases. I haven&#8217;t finished setting up the alert as I am still struggling how I want to get the alert. Looking at the figures of the dashboard I probably need to open the case for better ventilation or add additional 40mm fans to the bottom or back of the rack for better cooling. Hopefully I can run this cluster 24&#215;7 after solving the temperature issue.<br \/>\n[\/et_pb_text][et_pb_image src=&#8221;https:\/\/devwp.visibleone.io\/p225-newweb\/wp-content\/uploads\/2023\/08\/1684591631611.png&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]The free tier account comes with 10 free dashboards quota, that&#8217;s enough for my simple use case. I choose to use Grafana cloud for building the dashboard to avoid the trouble of getting into the Pi cluster to access the local Grafana instance. Also, it will be easier for alert integration using Grafana Cloud.<br \/>\n[\/et_pb_text][et_pb_text admin_label=&#8221;Conclusion&#8221; module_id=&#8221;new3&#8243; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>Conclusion<\/h3>\n<p>This is an interesting side project outside of the K8S cluster on DietPi OS. Raspberry pi&#8217;s are common today as SBC for edge computing and remote IoT use cases for digital displays and edge gateways. Remember temperature is another important metric to monitor for your edge computing devices to ensure system availability and reliability.<br \/>\n[\/et_pb_text][et_pb_team_member name=&#8221;Lindsay Chung&#8221; position=&#8221;Head of Solutions Engineering&#8221; linkedin_url=&#8221;https:\/\/www.linkedin.com\/in\/lindsay-chung-813a0429\/&#8221; _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_team_member][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At around end of March, I want to get my hands on the old raspberry pi cluster again as I need a testbed for K8S, ChatOps, CI\/CD etc. The DevOps ecosystem in 2023 is more ARM ready compared with 2020 which makes building a usable K8S stack on Pi realistic. I upgraded from a 4 nodes cluster to a 7 Pi4 nodes with POE capabilities, SSD, USB and sitting inside a nice 1U rack. Then spending the next two months&#8217; time on testing various OS. Re-installing the whole stack multiple times and struggling with the home router is fun. At the end the cluster is up with all platform engineering tools deployed.<\/p>\n","protected":false},"author":1,"featured_media":10732,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[122],"tags":[],"class_list":["post-9485","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-cn"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud - Vsceptre<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud - Vsceptre\" \/>\n<meta property=\"og:description\" content=\"At around end of March, I want to get my hands on the old raspberry pi cluster again as I need a testbed for K8S, ChatOps, CI\/CD etc. The DevOps ecosystem in 2023 is more ARM ready compared with 2020 which makes building a usable K8S stack on Pi realistic. I upgraded from a 4 nodes cluster to a 7 Pi4 nodes with POE capabilities, SSD, USB and sitting inside a nice 1U rack. Then spending the next two months&#039; time on testing various OS. Re-installing the whole stack multiple times and struggling with the home router is fun. At the end the cluster is up with all platform engineering tools deployed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/\" \/>\n<meta property=\"og:site_name\" content=\"Vsceptre\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-20T04:39:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-19T04:50:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devwp.visibleone.io\/p225-newweb\/wp-content\/uploads\/2023\/08\/monitoring-thumbnail.png\" \/>\n\t<meta property=\"og:image:width\" content=\"450\" \/>\n\t<meta property=\"og:image:height\" content=\"220\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"VisibleOnehk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"VisibleOnehk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/\"},\"author\":{\"name\":\"VisibleOnehk\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/person\/1cf46f60fc5955a4d1c57a0c3de91824\"},\"headline\":\"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud\",\"datePublished\":\"2023-08-20T04:39:27+00:00\",\"dateModified\":\"2023-09-19T04:50:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/\"},\"wordCount\":1266,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#organization\"},\"articleSection\":[\"Blog\"],\"inLanguage\":\"zh-SC\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/\",\"url\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/\",\"name\":\"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud - Vsceptre\",\"isPartOf\":{\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#website\"},\"datePublished\":\"2023-08-20T04:39:27+00:00\",\"dateModified\":\"2023-09-19T04:50:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/#breadcrumb\"},\"inLanguage\":\"zh-SC\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#website\",\"url\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/\",\"name\":\"Vsceptre\",\"description\":\"Vsceptre\",\"publisher\":{\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-SC\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#organization\",\"name\":\"Vsceptre\",\"url\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-SC\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/wp-content\/uploads\/Favicon-250.svg\",\"contentUrl\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/wp-content\/uploads\/Favicon-250.svg\",\"width\":250,\"height\":250,\"caption\":\"Vsceptre\"},\"image\":{\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/person\/1cf46f60fc5955a4d1c57a0c3de91824\",\"name\":\"VisibleOnehk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-SC\",\"@id\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f7b61af1e66a954d5987f0f28a31667341055282be42f280b9fc64f9af42ed1a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f7b61af1e66a954d5987f0f28a31667341055282be42f280b9fc64f9af42ed1a?s=96&d=mm&r=g\",\"caption\":\"VisibleOnehk\"},\"sameAs\":[\"http:\/\/devwp.visibleone.io\/p225\"],\"url\":\"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/author\/visibleonehk\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud - Vsceptre","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud - Vsceptre","og_description":"At around end of March, I want to get my hands on the old raspberry pi cluster again as I need a testbed for K8S, ChatOps, CI\/CD etc. The DevOps ecosystem in 2023 is more ARM ready compared with 2020 which makes building a usable K8S stack on Pi realistic. I upgraded from a 4 nodes cluster to a 7 Pi4 nodes with POE capabilities, SSD, USB and sitting inside a nice 1U rack. Then spending the next two months' time on testing various OS. Re-installing the whole stack multiple times and struggling with the home router is fun. At the end the cluster is up with all platform engineering tools deployed.","og_url":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/","og_site_name":"Vsceptre","article_published_time":"2023-08-20T04:39:27+00:00","article_modified_time":"2023-09-19T04:50:34+00:00","og_image":[{"width":450,"height":220,"url":"https:\/\/devwp.visibleone.io\/p225-newweb\/wp-content\/uploads\/2023\/08\/monitoring-thumbnail.png","type":"image\/png"}],"author":"VisibleOnehk","twitter_card":"summary_large_image","twitter_misc":{"Written by":"VisibleOnehk","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/#article","isPartOf":{"@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/"},"author":{"name":"VisibleOnehk","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/person\/1cf46f60fc5955a4d1c57a0c3de91824"},"headline":"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud","datePublished":"2023-08-20T04:39:27+00:00","dateModified":"2023-09-19T04:50:34+00:00","mainEntityOfPage":{"@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/"},"wordCount":1266,"commentCount":0,"publisher":{"@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#organization"},"articleSection":["Blog"],"inLanguage":"zh-SC","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/","url":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/","name":"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud - Vsceptre","isPartOf":{"@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#website"},"datePublished":"2023-08-20T04:39:27+00:00","dateModified":"2023-09-19T04:50:34+00:00","breadcrumb":{"@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/#breadcrumb"},"inLanguage":"zh-SC","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/monitoring-temperature-of-my-dietpi-homelab-cluster-with-grafana-cloud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/"},{"@type":"ListItem","position":2,"name":"Monitoring temperature of my DietPi Homelab cluster with Grafana Cloud"}]},{"@type":"WebSite","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#website","url":"https:\/\/devwp.visibleone.io\/p225-newweb\/","name":"Vsceptre","description":"Vsceptre","publisher":{"@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devwp.visibleone.io\/p225-newweb\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-SC"},{"@type":"Organization","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#organization","name":"Vsceptre","url":"https:\/\/devwp.visibleone.io\/p225-newweb\/","logo":{"@type":"ImageObject","inLanguage":"zh-SC","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/logo\/image\/","url":"https:\/\/devwp.visibleone.io\/p225-newweb\/wp-content\/uploads\/Favicon-250.svg","contentUrl":"https:\/\/devwp.visibleone.io\/p225-newweb\/wp-content\/uploads\/Favicon-250.svg","width":250,"height":250,"caption":"Vsceptre"},"image":{"@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/person\/1cf46f60fc5955a4d1c57a0c3de91824","name":"VisibleOnehk","image":{"@type":"ImageObject","inLanguage":"zh-SC","@id":"https:\/\/devwp.visibleone.io\/p225-newweb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f7b61af1e66a954d5987f0f28a31667341055282be42f280b9fc64f9af42ed1a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f7b61af1e66a954d5987f0f28a31667341055282be42f280b9fc64f9af42ed1a?s=96&d=mm&r=g","caption":"VisibleOnehk"},"sameAs":["http:\/\/devwp.visibleone.io\/p225"],"url":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/author\/visibleonehk\/"}]}},"_links":{"self":[{"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/posts\/9485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/comments?post=9485"}],"version-history":[{"count":16,"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/posts\/9485\/revisions"}],"predecessor-version":[{"id":11202,"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/posts\/9485\/revisions\/11202"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/media\/10732"}],"wp:attachment":[{"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/media?parent=9485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/categories?post=9485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devwp.visibleone.io\/p225-newweb\/cn\/wp-json\/wp\/v2\/tags?post=9485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<br />
<b>Notice</b>:  ob_end_flush(): failed to send buffer of zlib output compression (0) in <b>/home/devwp/public_html/p225-newweb/wp-includes/functions.php</b> on line <b>5481</b><br />
