在 Elasticsearch 運行的過程中,很有可能會遇到 FORBIDDEN/12/index read-only / allow delete (api)
的錯誤,發生的原因是 Disk 空間不足,這和 Elasticsearch 中的幾個設定有關:
[GCP] Google Compute Engine SSH連線設定
前言
最近正好在研究 Google Cloud Platform (GCP),GCP 有提供 300 美元的免費試用額度,期限是一年,免費額度用完之後需要升級帳戶才會再繼續扣款,所以可以不用擔心額度用完後就會被收錢,另外 GCP 也有提供免費的方案,可以參考 Google Cloud Platform 免費版,在用量限制內可以免費使用特定的產品。
這裡我們主要使用的產品是 GCP 中的 Compute Engine,它提供了許多主機規格可以自行定義,並依照不同規格來收費,計價方式可以參考 Google Cloud 價目表。
這篇文章主要是紀錄在 Google Compute Engine 架設好之後,如何使用 SSH 連線到 Compute Engine 上,而不用從 Google developer console 頁面中連線到機器上。
[Linux] 設定系統時區和時間
[HTML] script tag 屬性 async vs. defer
一般的網頁載入流程如下:
- 解析 HTML 結構
- 載入解析外部資源 (stylesheet or js)
- 執行載入的 script,此時會暫停網頁的渲染,等執行完 script 後,才會繼續網頁的解析及渲染
- HTML DOM 載入完成 (DomContentLoaded、jQuery 中的
ready()
) - 載入剩下的 stylesheet、image 或 frame
- 所有資源及頁面載入完成 (load)
而在 HTML5 中,<script>
tag 多了 async 和 defer 兩種屬性, 這裡比較一下兩者的差別:
[Nginx] 解決 HTTP ERROR: 413 Request Entity Too Large
會出現 HTTP Error 413 是因為傳送的 Request 大小超過限制,我們可以透過設定 client_max_body_size
來調整 Request 的大小限制。
[Elasticsearch] 解決 HTTP ERROR: 413 (Request Entity Too Large)
前言
在匯入資料到 Elasticsearch 時,如果出現以下 Error:
1 | raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info) |
我們可以透過設定 http.max_content_length
來調整大小限制。
[Logstash] 修改 timestamp
[Logstash] Multiple Elasticsearch outputs
[ELK] 利用 ELK 架構分析 log
[Elasticsearch] Elasticsearch + Kibana 設定使用者認證
前言
參考上一篇文章: [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 的需求。