0%

Google Cloud Platform

前言

最近正好在研究 Google Cloud Platform (GCP),GCP 有提供 300 美元的免費試用額度,期限是一年,免費額度用完之後需要升級帳戶才會再繼續扣款,所以可以不用擔心額度用完後就會被收錢,另外 GCP 也有提供免費的方案,可以參考 Google Cloud Platform 免費版,在用量限制內可以免費使用特定的產品。

這裡我們主要使用的產品是 GCP 中的 Compute Engine,它提供了許多主機規格可以自行定義,並依照不同規格來收費,計價方式可以參考 Google Cloud 價目表

這篇文章主要是紀錄在 Google Compute Engine 架設好之後,如何使用 SSH 連線到 Compute Engine 上,而不用從 Google developer console 頁面中連線到機器上。

Read more »

一般的網頁載入流程如下:

  1. 解析 HTML 結構
  2. 載入解析外部資源 (stylesheet or js)
  3. 執行載入的 script,此時會暫停網頁的渲染,等執行完 script 後,才會繼續網頁的解析及渲染
  4. HTML DOM 載入完成 (DomContentLoaded、jQuery 中的 ready())
  5. 載入剩下的 stylesheet、image 或 frame
  6. 所有資源及頁面載入完成 (load)

而在 HTML5 中,<script> tag 多了 async 和 defer 兩種屬性, 這裡比較一下兩者的差別:

Read more »

前言

在匯入資料到 Elasticsearch 時,如果出現以下 Error:

1
2
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.TransportError: TransportError(413, '<html>\r\n<head><title>413 Request Entity Too Large</title></head>\r\n<body bgcolor="white">\r\n<center><h1>413 Request Entity Too Large</h1></center>\r\n<hr><center>nginx/1.12.1</center>\r\n</body>\r\n</html>\r\n')

我們可以透過設定 http.max_content_length 來調整大小限制。

Read more »

前言

如果我們希望讓 Elasticsearch 的 timestamp 和 Log 的時間是一樣的,我們可以在 Filter 的部分做 timestamp 替換的動作,替換之後可以更清楚地了解系統狀態,我們可以方便地切換時間區間,觀察每個時段的系統狀態、成長趨勢等等,下圖範例是本周的系統狀態:

Kibana (@timestamp per 3 hour)

Read more »

ELK

前言

通常我們架設網站或服務時,會把 Log 寫在檔案中,方便追蹤系統狀態,當發生問題時也能夠查看紀錄,但是當我們的服務是分散在許多台機器時,每次發生問題就要到各個機器開啟 Log file 查看,這樣的過程很繁瑣又很沒效率,所以這一篇文章主要紀錄如何利用 ELK 架構來分析 Log,透過 ELK 架構可以更方便地追蹤系統狀態、分析 Log.

Read more »

前言

參考上一篇文章: [Elasticsearch] 使用 Elasticsearch + Kibana 實現中文全文檢索 開始使用 Elasticsearch 和 Kibana 之後就會發現一個問題: 沒有使用者帳號密碼嗎? 因為像是 MySQL、MongoDB 等許多資料庫都有使用者認證的機制,需要有帳號密碼才可存取資料庫,但 Elasticsearch 和 Kibana 本身是沒有提供使用者驗證的機制,如果希望是內部使用,只能透過設定防火牆的方式限制特定網域使用,但是如果我們希望讓外部也能夠存取資源,綁定 IP 之後,任何人只要知道 IP 和 port 就都可以存取資料,這樣非常不安全,因此我們希望能夠設定使用者認證。

雖然 Elasticsearch 和 Kibana 本身沒有提供使用者認證機制,但 Elastic 有提供 X-Pack 工具,它可以用來做 Elasticsearch 和 Kibana 的安全防護、即時監控和產生報表等等,但是它是要付費的,試用期過了之後就無法使用。如果除了安全防護之外,也需要有即時監控、報表紀錄等等功能,也是可以考慮這個方案,詳細設定方式可以參考 Elastic 官網

因為我們主要的需求是希望讓外部也能夠存取資源,但需要有使用者驗證機制,不要讓任何人都能夠存取資料,所以我們選擇使用 Nginx 作為 proxy,接收外部的請求,再透過 Nginx 轉發給 Elasticsearch 或 Kibana, 將 Elasticsearch 和 Kibana 設定為只能本機存取 (host 設為 127.0.0.1),並針對 Nginx 設定 HTTP Basic Auth, 這樣就能夠達到需要輸入使用者帳號密碼才能夠存取 Elasticsearch 和 Kibana 的需求。

Read more »