<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Prometheus on omegaatt</title>
    <link>https://www.omegaatt.com/tags/prometheus/</link>
    <description>Recent content in Prometheus on omegaatt</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>zh-TW</language>
    <managingEditor>raiven.kao@gmail.com (Raiven Kao)</managingEditor>
    <webMaster>raiven.kao@gmail.com (Raiven Kao)</webMaster>
    <copyright>Raiven Kao 2020 - 2026</copyright>
    <lastBuildDate>Wed, 02 Oct 2024 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.omegaatt.com/tags/prometheus/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>使用 TinyGo 與 Raspberry pi pico 實現溫濕度感測器</title>
      <link>https://www.omegaatt.com/blogs/develop/2024/tinygo_temperature_humidity_sensor/</link>
      <pubDate>Wed, 02 Oct 2024 00:00:00 +0000</pubDate><author>raiven.kao@gmail.com (Raiven Kao)</author>
      <guid>https://www.omegaatt.com/blogs/develop/2024/tinygo_temperature_humidity_sensor/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;作為嵌入式系統學習的微小專案，我決定使用 &lt;a href=&#34;https://tinygo.org/&#34;&gt;TinyGo&lt;/a&gt; 來實現一個簡單的溫濕度感測器。過去我大多使用 Arduino 作為微控制器（MCU）開發平台，但這次想嘗試使用 TinyGo 來進行單片機的學習。
TinyGo 是 Go 語言的一個子集，專門針對小型設備和微控制器進行了優化，使得我們可以在資源受限的硬體上運行 Go 程式。&lt;/p&gt;
&lt;p&gt;全部的程式碼都可以到 &lt;a href=&#34;https://github.com/omegaatt36/pico-bme280&#34;&gt;omegaatt36/pico-bme280&lt;/a&gt; 中找到。&lt;/p&gt;
&lt;h2 id=&#34;硬體選擇&#34;&gt;硬體選擇&lt;/h2&gt;
&lt;h3 id=&#34;raspberry-pi-pico&#34;&gt;Raspberry Pi Pico&lt;/h3&gt;
&lt;p&gt;我選擇了 Raspberry Pi Pico 作為本專案的主控板。Pico 是一款基於 RP2040 晶片的微控制器開發板，具有以下特點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;雙核 ARM Cortex-M0+ 處理器，時脈可達 133 MHz&lt;/li&gt;
&lt;li&gt;264KB 的 SRAM 和 2MB 的板載閃存&lt;/li&gt;
&lt;li&gt;支援 USB 1.1 主機和設備功能&lt;/li&gt;
&lt;li&gt;低功耗睡眠和休眠模式&lt;/li&gt;
&lt;li&gt;可編程 I/O（PIO）狀態機&lt;/li&gt;
&lt;li&gt;30 個 GPIO 引腳&lt;/li&gt;
&lt;li&gt;便宜&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;價格僅需要 5 美元，後繼款的 &lt;a href=&#34;https://makerpro.cc/2024/08/the-second-generation-raspberry-pi-pico-is-here/&#34;&gt;Pico 2&lt;/a&gt; 仍然維持 5 美元，還額外增加了 RISC-V 架構的支援，可以一次玩到兩種處理器架構。
Pico 的這些特性使其非常適合用於各種嵌入式專案，包括我們的溫濕度感測器。&lt;/p&gt;
&lt;h3 id=&#34;bme280-感測器&#34;&gt;BME280 感測器&lt;/h3&gt;
&lt;p&gt;最初我購買了 &lt;a href=&#34;https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp280/&#34;&gt;BMP280&lt;/a&gt; 感測器，但後來發現它只能測量溫度和氣壓，無法測量濕度。因此，我轉而選擇了 &lt;a href=&#34;https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/&#34;&gt;BME280&lt;/a&gt; 感測器，它可以同時測量溫度、濕度和氣壓。&lt;/p&gt;
&lt;p&gt;BME280 是一款精確度高、體積小、待機功耗低的環境感測器。但當連續偵測時，通過的電流會導致 sensor 功耗上升，進而導致測量到過高的溫度。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prometheus 學習筆記 - 基本架構與資料結構</title>
      <link>https://www.omegaatt.com/blogs/develop/2021/promethues-overview/</link>
      <pubDate>Sat, 18 Sep 2021 00:00:00 +0000</pubDate><author>raiven.kao@gmail.com (Raiven Kao)</author>
      <guid>https://www.omegaatt.com/blogs/develop/2021/promethues-overview/</guid>
      <description>&lt;h1 id=&#34;prometheus-overview&#34;&gt;Prometheus Overview&lt;/h1&gt;
&lt;iframe width=&#34;100%&#34; height=&#34;512&#34; src=&#34;https://www.youtube.com/embed/h4Sl21AKiDg&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;架構&#34;&gt;架構&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://prometheus.io/assets/architecture.png&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;0&#34;&gt;
&lt;li&gt;Exporter: 要被採集的目標 job 中曝露 metrics 的組件，負責轉換資訊成 prometheus 可解讀的格式。由於某些早於 prometheus 的 service 因為某些原因，不想主動在服務中曝露 metrics，故可以用一些額外的 exporter 將這些 service 中的 metrics 轉成 prometheus 格式，並曝露埠。
&lt;ul&gt;
&lt;li&gt;node exporter&lt;/li&gt;
&lt;li&gt;mysql exporter&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Push Gateway: 由於有些任務時間太短，可能不到 prometheus pull 的週期，可讓這些 jobs 主動把 metrics push 到這個 push gateway，好讓 premetheus server 可以 pull。&lt;/li&gt;
&lt;li&gt;Prometheus Server
&lt;ul&gt;
&lt;li&gt;Retrieval(retrieval system): 主要負責 pull 指定的 target
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# /etc/prometheus/prometheus.yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;scrape_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;job_name&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;prometheus&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;static_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;targets&lt;/span&gt;: [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;localhost:9090&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;job_name&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;node_exporter&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;static_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;targets&lt;/span&gt;: [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;localhost:9100&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;TSDB: 時間序列資料庫，存放 pull 到的 metrics&lt;/li&gt;
&lt;li&gt;HTTP Server: 為 PromeQL 查詢提供接口&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Service Discovery:
&lt;ul&gt;
&lt;li&gt;kubernetes: 自動發現 k8s 中 pod 增加減少以及 probe 異動等等&lt;/li&gt;
&lt;li&gt;file_sd: 通過 config 實現服務的自動發現&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Alert Manager: 當 prometheus server 發現某某某 job 已經達到設定好的通知閾值進行通知的 service。&lt;/li&gt;
&lt;li&gt;PromeQL: 無論是自帶 web UI 或是串接 Grafana，都是通過 http 進行 PromeQL 查詢後做視覺化處理 TSDB 中的時間序列資料。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;資料結構&#34;&gt;資料結構&lt;/h2&gt;
&lt;p&gt;下面範例中會有更詳細說明&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
