星期六, 4月 16, 2022

在 GCP 快速建立 openVPN 連線小記

在 GCP 快速建立 openVPN 連線小記


OS: openSUSE leap 15.3


之前有寫過 AWS Client VPN with openSUSE Leap 15.1

今天來寫如何在 GCP 快速建立 openVPN Server 來建立 VPN 服務


目的: 讓 Client 透過 VPN 進行連線, 可以透過 VPN 上 internet 也可以連線 GCP 內網


安裝 openVPN

參考官方文件


登入 GCP, 在 Marketplace


搜尋 openvpn access server

點選 OpenVPN Access Server



點選 啟動


  • 如果是 g1-small 規格, 每月大概是 TWD 381.35


GCP 會使用 Deployment Manager 來進行佈署

如果過程當中有沒有啟用的 API, 就啟用他吧




進入到 Deployment Manager


基本上就是輸入名稱以及選擇  Zone



或是看一下硬碟的類型以及大小要不要換



其他的就先按照預設值

點選 佈署


佈署的速度很快, 然後右邊會出現相關管理資訊





點選資訊欄內的 Admin URL

然後使用 openvpn 以及 暫時密碼 登入



點選 Agree 接受授權




預設是 2 VPN connection allowed



接下來調整一些設定

CONFIGURATION -- > VPN Settings


這邊可以視需要調整 Client 是否可以透過 VPN 連到 Internet


  • 如果允許就將 Should client Internet traffic be routed through the VPN 調整為 Yes

  • 這篇文章以 Yes 為範例


如果允許 Client 連到 Internet, 可以一併調整 DNS Server 設定



  • Have clients use specific DNS servers 調整為 Yes

  • 輸入要設定的 DNS Server, 我這邊以 google and Hinet DNS 為例


點選下方的 Save Settings


點選 Update Running Server





CONFIGURATION -- > Network Settings

確認目前設定的 IP 是否與 GCE 上面的 Public IP 符合


  • 這邊提一下, 如果這個 VPN 服務是要長期使用, 可以將這個 GCE 的 Public IP 改為靜態 IP, 改完靜態 IP 後, 不要忘記檢查 Network Settings 是否符合.



最後來變更 openvpn 的密碼

  • 使用 GCP 的 web ssh 登入到系統內, 切換身份為 root, 並使用 passwd 指令更換密碼



  • 不知道為何, 我從網頁上去進行變更是沒有成功的, 但是用 Web SSH 來變更是沒有問題的




接下來進行 Client 的測試


開啟 Site address 連結



然後使用 openvpn 以及 剛剛更改的密碼 登入



接下來會出現相關資訊

如果是 Windows 或是 Mac 就下載對應的 Connect 版本




點選 Yourself (user-locked profile)

將 profile 下載



  • 預設的檔案名稱為 client.ovpn


我使用的是 openSUSE Leap 15.3

連線的方式可以參考我之前的文章


我在 GNOME 的環境就方便的使用 NetworkManager 來進行連線


點選桌面右上角的按鈕 -- > 點選 設定值按鈕

點選左邊的網路

點選 VPN 右邊的 + 按鈕



點選 從檔案匯入 



選取剛剛的 client.ovpn -- > 開啟


點選 加入



  • 這邊注意一下 閘道是否是 我們的 VPN

  • 設定使用者名稱與密碼


點選 加入

輸入管理者密碼來改變網路


由於 openVPN 是走 UDP port 1194, 所以本機的 firewall 也要開啟


#yast2  firewall


點選 左邊的 public Zone

點選 openvpn -- > 點選 Add

點選 Accept


完成 firewall 設定


在連線之前可以嘗試


  

在網路設定內啟用 VPN




驗證:


1. 是否可以連外, 然後對外 IP 是否有改變

可以嘗試到 What Is My IP 網站( https://whatismyip.com/ ), 看看自己的對外 IP, 是否有改變  



2. 可以嘗試 Ping GCP 內網的 IP 來進行測試


如果一切順利, 透過 GCP Marketplace 的 openVPN Server, 可以在很短的時間內建立 VPN 連線

:)


~ enjoy it 



Reference:



星期一, 4月 04, 2022

使用 Google Data Studio 觀察 GCP 費用小記

使用 Google Data Studio 觀察 GCP 費用小記


這邊文章要來講利用 Google Data Studio 來觀察 GCP 費用的相關紀錄


情境: 使用 Google Data Studio 來觀察特定區間的費用狀況

  • 希望可以觀察實際要支付的費用, 所以要扣掉 credit 部份來呈現, 然後呈現稅後台幣數字


先來說說 Google Data Studio


Data Studio 首頁


但是我在網路上有找到我覺得更棒的教學 ( 數據酷  )

Google Data Studio 入門介紹可以看他們這篇

  • https://datasupplied.com/google-data-studio/beginner-intro/

  • Google Data Studio 是一個將數據可視化的分析工具,不管是 Google Analytics、Google Ads、Facebook Ads 都可以透過數據的串接讓 Data Studio 讀取數據並透過簡單的拖拉將數據轉換成簡單易懂的圖表,將所有有價值的數據全部彙整到同一個頁面當中。

  • 重點是 Data Studio 完全免費!只要擁有 Google 帳戶,即可開始使用 Data Studio。

然後有滿多 Data Studio 免費的學習資源可以參考


準備工作

首先你的專案費用必須已經 export 到 Big Query, 可以參考之前的文章


因為想要知道實際上要支付的費用

所以在該專案的 BigQuery 建立一個 View ( 名稱自訂 )


Query 的內容如下


SELECT

   billing_account_id,

   project.id AS project_id,

   service.description AS service,

   invoice.month,

   CAST(DATETIME(usage_start_time,

       'PST8PDT') AS DATE) usage_date,

   -- 這次的處理, 就不加上 ROUND() 函數, 來讓數字更精準

   SUM(cost) AS total_cost,

   -- 這邊在 credits 前面加上 - (負數), 是為了負負得正, 讓 credits 顯示正值

   -SUM(IFNULL((

       SELECT

         -- c.amount 是下面 credits 的加總

         SUM(c.amount)

       FROM

         -- credits 是優惠點數或是折扣, 使用 UNNEST 逐條列出, 定義為 c

         UNNEST(credits) c),

       0)) AS credits,

   SUM(cost) + SUM(IFNULL((

       SELECT

         -- c.amount 是下面 credits 的加總

         SUM(c.amount)

       FROM

         -- credits 是優惠點數或是折扣, 使用 UNNEST 逐條列出, 定義為 c

         UNNEST(credits) c),

       0)) AS cost_after_credits,

 FROM

   `YOUR_PROJECT.YOUR_DATASET.gcp_billing_export_v1_XXXXX_YYYYY_ZZZZZ`

GROUP BY  billing_account_id,

project_id,

service,

invoice.month,

usage_date

ORDER BY

  cost_after_credits DESC


  • 因為如果直接在 Data Studio 使用 cost 與 credit, 要計算費用淨值的時候會有問題, 所以透過這邊來進行預處理.

  • 請把 FROM 的部份換成自己的資料


開啟 Data Studio


點選建立空白報表 ( Blank Report )


Connectors 的部份選取 BigQuery


選取專案 剛剛建立的 BigQuery View -- > 點選 Add

出現要確認將資料加入報表的視窗 -- > 點選 ADD TO REPORT


預設會有個 Chart Table -- > 可以先刪除


搞定 Data 連接之後

在 Data Studio 我們可以會加入一些元件


Chart 部份

  • 我目前用到的是 Table / Scorecard / Bar / Pivot table



Control 的部份

  • 目前有用到 Drop-down list / Date range control 



開始來進行規劃


首先建立一個 Date range control ( 控制要觀察的日期 )


點選該物件

DATA 這邊, 預設是 Auto date range



點選下拉式選單, 選取自己想要預設的觀察區間

例如我是選取 Last week (starts Monday)

上面就會出現相關日期



再來建立一個 Drop-down list control (控制要觀察的專案)

點選該物件

Date Range Dimension 預設是 usage_date, 預設是 Auto 

  • 這樣的作法是由 上面建立的 Date Range Control 來控制



Control field 的部份

可以改為 project_id

  • 這個可以勾選想要觀察的 Project 來進行觀察


Metric 的部份

因為之後我們想要顯示的是 稅後的台幣金額

所以需要建立一個 FIELD, 然後又想要被所有的物件利用, 所以要建立到 default group

點選 Available Fields 下方的 ADD A FIELD



輸入名稱

輸入公式, 我是用淨額 * 30 * 1.05 來計算

點選 SAVE


點選 DONE


這個時候就會發現剛剛建立的 Field 已經出現


Metric 的部份 點選預設的 Record Count

就可以選取我們剛剛建立的 cost_after_credits_TWD



  • 這樣在下拉選單選取 Project 的時候, 也可以看一下費用


接下來 建立一個 Chart > Scorecard (顯示期間的費用)

點選該物件



Metric 的部份 

點選 cost_after_credits_TWD



然後 Comparison date range 的地方

選取 Previous period ( 跟上個區間比較 )



但是出來的圖示, 雖然是費用下降, 竟然是紅色的, 這個不符合使用者的期待

所以在 STYLE 的設定將 Comparison Metric 的顏色調換

  • 下降是好事要使用綠色, 上升要注意, 所以使用紅色

  • 個人也喜歡顯示 Comparison Label, 所以取消隱藏


輸出效果如下



接下來 建立一個 Chart > Bar ( Stacked column chart ) ( 顯示個專案不同服務的組成圖示 )

點選該物件


Dimension 一樣使用 Project_id

Breakdown Dimension 的部份採取 service 來進行分類


輸出效果如下




因為我們還要增加其他的物件, 可是目前的可用空間應該不太夠了

所以我們先來調整頁面大小

點選 Page -- > Current Page Settings

在 STYLE 設定裡面

調整 Canvas Size

  • 例如我這邊調整為 1200 x 1800

調整 Page 的顏色



接下來 建立一個 Chart > Table ( 顯示以費用排序的各專案 TOP x  )

點選該物件


Dimension 的部份調整為 project_id

Metric 一樣使用 cost_after_credits_TWD

Default date range : Comparison date range 加上 Previous period

調整 STYLE 將 Comparison Metric 的顏色調換, 調整文字大小


輸出效果如下



接下來 建立一個 Chart > Table ( 顯示以費用排序的各服務 TOP x  )

點選該物件


Dimension 的部份調整為 service

Metric 一樣使用 cost_after_credits_TWD

Default date range : Comparison date range 加上 Previous period

調整 STYLE 將 Comparison Metric 的顏色調換, 調整文字大小


輸出效果如下




接下來 建立一個 Chart > Pivot Table ( 顯示各專案服務費用排序  )

點選該物件


Row dimension 使用 project_id

Column dimension 使用 service

Metric 一樣使用 cost_after_credits_TWD


輸出效果如下


選取多專案時, 同上一個 Table, 目前是 Compute Engine 費用最多


單一專案時, 可以觀察主要服務費用狀況



最後建立一個 Chart > Table ( 顯示前幾週的服務費用, 判斷是否合理?  )


先說明最後這個 Table 會建立的原因

  • 如果不是有簽 CUD, 一般 Compute Engine 如果一定的時間會有 SUD 折扣, 所以費用是會變動的, 因為有 Credit 產生, 按照之前的實驗, 如果要觀察上週的費用, 一般來說要在本周三下午去觀察上週, 費用才是相對穩定, 以有 SUD 影響的狀況, 下半月費用是比較低的.

  • 有些資源本身會有免費額度, 例如 Geocoding API, 所以月初可能費用會比較低.


點選該物件

Data source 的部份我們使用 BLEND DATA

點選 BLEND DATA



Table 1 的部份

Dimensions 的部份使用 project_id 以及 service

Data range 一樣是使用 usage_date

區間的部份點選 Custom -- > 選取 Advanced

時間區間為 

  • Today - 9 天 為開始日期

  • Today - 3 天 為結束日期

如果我剛剛說的, 我大部份是周三查詢上週的費用狀況, 因為費用已經穩定下來了. 所以如果以 4/6 來進行查詢, 他的起始日期就是 3/28 (一) ~ 4/3 (日)



點選 Metrics 上面的 FIELD ( 例如 cost_after_credits_TWD )

點選 CREATE FIELD 來建立新的 FIELD

輸入名稱 

輸入公式

點選 APPLY



所以 Table 1 的部份, Last 1 WK 就是 上一周扣除 credit 的台幣費用



接下來處理上上週


點選 Join another table ( 加入 Table 2 )



資料來源還是同一個 BQ View

Dimensions 與 Table 1 一樣

Date range 就是

時間區間為 

  • Today - 16 天 為開始日期

  • Today - 10 天 為結束日期


建立新的 FIELD Last 2 WK



點選 Configure join



點選 Left outer

點選 Save


以此類推, 我總共建立 5 個 Table

點選 SAVE 




輸出效果如下



  • 如果是觀察周費用的時候, 可以藉由觀察前幾周的費用來觀察費用成長幅度是否合理, 是否為 SUD 或是免費額度影響


建立完呈現大概如以下



又多往 GCP 前進一步

~ enjoy it


Reference