Elasticsearch 是以 Lucene 搜尋程式庫為基礎的開放原始碼搜尋伺服器。這個應用程式會在多個作業系統的 Java 虛擬機器中執行。elasticsearch
接收器會從 Elasticsearch 執行個體收集節點和叢集層級的遙測資料。
如要進一步瞭解 Elasticsearch,請參閱 Elasticsearch 說明文件。
事前準備
如要收集 Elasticsearch 遙測資料,您必須安裝 Ops Agent:
- 如要使用指標,請安裝 2.21.0 以上版本。
- 如要記錄,請安裝 2.9.0 以上版本。
這項整合支援 Elasticsearch 7.9 以上版本。
設定 Elasticsearch 例項
如果您啟用 Elasticsearch 安全性功能,則必須設定具有 monitor
或 manage
叢集權限的使用者。
設定 Elasticsearch 的作業套件代理程式
按照設定 Ops Agent 的指南操作,新增必要元素以便從 Elasticsearch 執行個體收集遙測資料,然後重新啟動代理程式。
範例設定
下列指令會建立設定,用於收集及擷取 Elasticsearch 的遙測資料:
請重新啟動 Ops Agent,讓這些變更生效:
Linux
- 如要重新啟動代理程式,請在執行個體上執行下列指令:
sudo systemctl restart google-cloud-ops-agent
- 如要確定代理程式已重新啟動,請執行下列指令,並驗證「指標代理程式」和「Logging 代理程式」元件是否已啟動:
sudo systemctl status "google-cloud-ops-agent*"
Windows
- 使用遠端桌面協定或類似工具連線至執行個體,然後登入 Windows。
- 在 PowerShell 圖示上按一下滑鼠右鍵,然後選取「Run as Administrator」,即可開啟具有系統管理員權限的 PowerShell 終端機。
- 如要重新啟動代理程式,請執行下列 PowerShell 指令:
Restart-Service google-cloud-ops-agent -Force
- 如要確認代理程式已重新啟動,請執行下列指令,並驗證「Metrics Agent」和「Logging Agent」元件是否已啟動:
Get-Service google-cloud-ops-agent*
設定記錄收集
如要擷取 Elasticsearch 產生的記錄,您必須為 Elasticsearch 產生的記錄建立接收器,然後為新接收器建立管道。
如要為 elasticsearch_json
記錄設定接收器,請指定下列欄位:
欄位 | 預設 | 說明 |
---|---|---|
exclude_paths |
從 include_paths 比對的集合中排除的檔案系統路徑模式清單。 |
|
include_paths |
[/var/log/elasticsearch/*_server.json, /var/log/elasticsearch/*_deprecation.json, /var/log/elasticsearch/*_index_search_slowlog.json, /var/log/elasticsearch/*_index_indexing_slowlog.json, /var/log/elasticsearch/*_audit.json] |
檔案尾隨讀取的檔案系統路徑清單。路徑中可使用萬用字元 (* )。 |
record_log_file_path |
false |
如果設為 true ,則記錄記錄取得的特定檔案路徑會顯示在輸出記錄項目中,做為 agent.googleapis.com/log_file_path 標籤的值。使用萬用字元時,系統只會記錄取得記錄的檔案路徑。 |
type |
這個值必須是 elasticsearch_json 。 |
|
wildcard_refresh_interval |
60s |
include_paths 中萬用字元檔案路徑的更新間隔。以時間長度表示,例如 30s 或 2m 。在記錄傳送量高的情況下,這個屬性可能會派上用場,因為記錄檔案的輪替時間會比預設間隔更快。 |
如要為 elasticsearch_gc
記錄設定接收器,請指定下列欄位:
欄位 | 預設 | 說明 |
---|---|---|
exclude_paths |
從 include_paths 比對的集合中排除的檔案系統路徑模式清單。 |
|
include_paths |
[/var/log/elasticsearch/gc.log] |
檔案尾隨讀取的檔案系統路徑清單。路徑中可使用萬用字元 (* )。 |
record_log_file_path |
false |
如果設為 true ,則記錄記錄取得的特定檔案路徑會顯示在輸出記錄項目中,做為 agent.googleapis.com/log_file_path 標籤的值。使用萬用字元時,系統只會記錄取得記錄的檔案路徑。 |
type |
這個值必須是 elasticsearch_gc 。 |
|
wildcard_refresh_interval |
60s |
include_paths 中萬用字元檔案路徑的更新間隔。以時間長度表示,例如 30s 或 2m 。在記錄傳送量高的情況下,這個屬性可能會派上用場,因為記錄檔案的輪替時間會比預設間隔更快。 |
記錄內容
logName
是根據設定中指定的接收器 ID 衍生而來。LogEntry
內部的詳細欄位如下所示。
elasticsearch_json
記錄包含 LogEntry
中的下列欄位:
欄位 | 類型 | 說明 |
---|---|---|
jsonPayload.cluster |
字串 | 發出記錄檔的叢集 |
jsonPayload.cluster.name |
字串 | 產生記錄的叢集名稱 |
jsonPayload.cluster.uuid |
字串 | 產生記錄檔的叢集 UUID |
jsonPayload.component |
字串 | 產生記錄的 Elasticsearch 元件 |
jsonPayload.level |
字串 | 記錄項目層級 |
jsonPayload.message |
字串 | 記錄訊息 |
jsonPayload.node |
字串 | 發出記錄記錄的節點 |
jsonPayload.node.name |
字串 | 發出記錄節點的名稱 |
jsonPayload.node.uuid |
字串 | 產生記錄節點的 UUID |
jsonPayload.type |
字串 | 記錄的記錄類型,表示記錄來自哪個記錄 (例如 server 表示這個 LogEntry 來自伺服器記錄) |
severity |
字串 (LogSeverity ) |
記錄項目層級 (已翻譯)。 |
elasticsearch_gc
記錄包含 LogEntry
中的下列欄位:
欄位 | 類型 | 說明 |
---|---|---|
jsonPayload.gc_run |
數字 | 垃圾收集器的執行 |
jsonPayload.message |
字串 | 記錄訊息 |
jsonPayload.type |
字串 | 記錄類型 |
severity |
字串 (LogSeverity ) |
記錄項目層級 (已翻譯)。 |
設定指標收集
如要擷取 Elasticsearch 的指標,您必須為 Elasticsearch 產生的指標建立接收器,然後為新接收器建立管道。
這個接收器不支援在設定中使用多個執行個體,例如用於監控多個端點。所有這類例項都會寫入相同的時間序列,而 Cloud Monitoring 無法區分這些例項。
如要為 elasticsearch
指標設定接收器,請指定下列欄位:
欄位 | 預設 | 說明 |
---|---|---|
ca_file |
CA 憑證的路徑。做為用戶端,這會驗證伺服器憑證。如果留空,接收端會使用系統根 CA。 | |
cert_file |
要用於 mTLS 必要連線的 TLS 憑證路徑。 | |
collection_interval |
60s |
時間長度值,例如 30s 或 5m 。 |
endpoint |
http://localhost:92002 |
Elasticsearch REST API 的基本網址。 |
insecure |
true |
設定是否要使用安全的 TLS 連線。如果設為 false ,則會啟用 TLS。 |
insecure_skip_verify |
false |
設定是否略過驗證憑證。如果 insecure 設為 true ,系統就不會使用 insecure_skip_verify 值。 |
key_file |
用於 mTLS 必要連線的 TLS 金鑰路徑。 | |
password |
用於 Elasticsearch 驗證的密碼。如果已設定 username ,則為必要欄位。 |
|
type |
這個值必須是 elasticsearch 。 |
|
username |
用於 Elasticsearch 驗證的使用者名稱。如果已設定 password ,則為必要欄位。 |
監控的內容
下表列出作業套件代理程式從 Elasticsearch 執行個體收集的指標。
指標類型 | |
---|---|
類型、類型 受控資源 |
標籤 |
workload.googleapis.com/elasticsearch.breaker.memory.estimated
|
|
GAUGE , INT64 gce_instance |
name
|
workload.googleapis.com/elasticsearch.breaker.memory.limit
|
|
GAUGE , INT64 gce_instance |
name
|
workload.googleapis.com/elasticsearch.breaker.tripped
|
|
CUMULATIVE , INT64 gce_instance |
name
|
workload.googleapis.com/elasticsearch.cluster.data_nodes
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.cluster.health
|
|
GAUGE , INT64 gce_instance |
status
|
workload.googleapis.com/elasticsearch.cluster.in_flight_fetch
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.cluster.nodes
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.cluster.pending_tasks
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.cluster.published_states.differences
|
|
GAUGE , INT64 gce_instance |
state
|
workload.googleapis.com/elasticsearch.cluster.published_states.full
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.cluster.shards
|
|
GAUGE , INT64 gce_instance |
state
|
workload.googleapis.com/elasticsearch.cluster.state_queue
|
|
GAUGE , INT64 gce_instance |
state
|
workload.googleapis.com/elasticsearch.cluster.state_update.count
|
|
CUMULATIVE , INT64 gce_instance |
state
|
workload.googleapis.com/elasticsearch.cluster.state_update.time
|
|
CUMULATIVE , INT64 gce_instance |
state type
|
workload.googleapis.com/elasticsearch.indexing_pressure.memory.limit
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.indexing_pressure.memory.total.primary_rejections
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.indexing_pressure.memory.total.replica_rejections
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.memory.indexing_pressure
|
|
GAUGE , INT64 gce_instance |
stage
|
workload.googleapis.com/elasticsearch.node.cache.count
|
|
GAUGE , INT64 gce_instance |
type
|
workload.googleapis.com/elasticsearch.node.cache.evictions
|
|
CUMULATIVE , INT64 gce_instance |
cache_name
|
workload.googleapis.com/elasticsearch.node.cache.memory.usage
|
|
GAUGE , INT64 gce_instance |
cache_name
|
workload.googleapis.com/elasticsearch.node.cluster.connections
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.cluster.io
|
|
CUMULATIVE , INT64 gce_instance |
direction
|
workload.googleapis.com/elasticsearch.node.disk.io.read
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.disk.io.write
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.documents
|
|
GAUGE , INT64 gce_instance |
state
|
workload.googleapis.com/elasticsearch.node.fs.disk.available
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.fs.disk.free
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.fs.disk.total
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.http.connections
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.ingest.documents
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.ingest.documents.current
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.ingest.operations.failed
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.open_files
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.operations.completed
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/elasticsearch.node.operations.time
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/elasticsearch.node.pipeline.ingest.documents.current
|
|
GAUGE , INT64 gce_instance |
name
|
workload.googleapis.com/elasticsearch.node.pipeline.ingest.documents.preprocessed
|
|
GAUGE , INT64 gce_instance |
name
|
workload.googleapis.com/elasticsearch.node.pipeline.ingest.operations.failed
|
|
CUMULATIVE , INT64 gce_instance |
name
|
workload.googleapis.com/elasticsearch.node.script.cache_evictions
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.script.compilation_limit_triggered
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.script.compilations
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.shards.data_set.size
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.shards.reserved.size
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.shards.size
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.thread_pool.tasks.finished
|
|
CUMULATIVE , INT64 gce_instance |
state thread_pool_name
|
workload.googleapis.com/elasticsearch.node.thread_pool.tasks.queued
|
|
GAUGE , INT64 gce_instance |
thread_pool_name
|
workload.googleapis.com/elasticsearch.node.thread_pool.threads
|
|
GAUGE , INT64 gce_instance |
state thread_pool_name
|
workload.googleapis.com/elasticsearch.node.translog.operations
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.translog.size
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.node.translog.uncommitted.size
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.os.cpu.load_avg.15m
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/elasticsearch.os.cpu.load_avg.1m
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/elasticsearch.os.cpu.load_avg.5m
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/elasticsearch.os.cpu.usage
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/elasticsearch.os.memory
|
|
GAUGE , INT64 gce_instance |
state
|
驗證設定
本節說明如何驗證 Elasticsearch 接收器是否設定正確。作業套件代理程式可能需要一兩分鐘的時間,才能開始收集遙測資料。
如要確認 Elasticsearch 記錄是否已傳送至 Cloud Logging,請執行下列操作:
-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
- 在編輯器中輸入以下查詢,然後按一下「執行查詢」:
resource.type="gce_instance" (log_id("elasticsearch_json") OR log_id("elasticsearch_gc"))
如要確認 Elasticsearch 指標是否已傳送至 Cloud Monitoring,請執行下列操作:
-
前往 Google Cloud 控制台的 leaderboard「Metrics Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在查詢建構工具窗格的工具列中,選取名稱為 code MQL 或 code PromQL 的按鈕。
- 確認「Language」切換按鈕中已選取「MQL」。語言切換鈕位於可讓您設定查詢格式的工具列中。
- 在編輯器中輸入以下查詢,然後按一下「執行查詢」:
fetch gce_instance | metric 'workload.googleapis.com/elasticsearch.node.open_files' | every 1m
查看資訊主頁
如要查看 Elasticsearch 指標,您必須先設定圖表或資訊主頁。Elasticsearch 整合功能會提供一或多個資訊主頁。設定整合後,Ops Agent 就會開始收集指標資料,並自動安裝所有資訊主頁。
您也可以不安裝整合功能,查看資訊主頁的靜態預覽畫面。
如要查看已安裝的資訊主頁,請按照下列步驟操作:
-
在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁)
頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 選取「Dashboard List」分頁標籤,然後選擇「Integrations」類別。
- 按一下要查看的資訊主頁名稱。
如果您已設定整合功能,但未安裝資訊主頁,請檢查作業套件代理程式是否正在執行。如果資訊主頁中沒有圖表的指標資料,則無法安裝資訊主頁。作業套件代理程式開始收集指標後,系統會自動安裝資訊主頁。
如要查看資訊主頁的靜態預覽畫面,請按照下列步驟操作:
-
在 Google Cloud 控制台中,前往「Integrations」(整合) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 按一下「Compute Engine」部署平台篩選器。
- 找出 Elasticsearch 的項目,然後按一下「查看詳細資料」。
- 選取「資訊主頁」分頁標籤,即可查看靜態預覽畫面。如果已安裝資訊主頁,請按一下「View dashboard」前往該頁面。
如要進一步瞭解 Cloud Monitoring 中的資訊主頁,請參閱「資訊主頁和圖表」。
如要進一步瞭解如何使用「Integrations」頁面,請參閱管理整合。
安裝快訊政策
快訊政策會指示 Cloud Monitoring 在發生特定情況時通知您。Elasticsearch 整合功能包含一或多項快訊政策供您使用。您可以在 Monitoring 的「Integrations」頁面中查看及安裝這些警示政策。
如要查看可用快訊政策的說明並安裝,請按照下列步驟操作:
-
在 Google Cloud 控制台中,前往「Integrations」(整合) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 找出 Elasticsearch 的項目,然後按一下「查看詳細資料」。
- 選取「警示」分頁標籤。這個分頁會說明可用的快訊政策,並提供安裝快訊政策的介面。
- 安裝快訊政策。快訊政策需要知道要將已觸發快訊的通知傳送到哪裡,因此需要您提供安裝資訊。如要安裝快訊政策,請按照下列步驟操作:
- 從可用警示政策清單中選取要安裝的政策。
在「設定通知」部分,選取一或多個通知管道。您可以選擇停用通知管道的使用,但這樣一來,警示政策就會靜默觸發。您可以在「監控」中查看狀態,但不會收到通知。
如要進一步瞭解通知管道,請參閱「管理通知管道」。
- 按一下「建立政策」。
如要進一步瞭解 Cloud Monitoring 中的快訊政策,請參閱快訊簡介。
如要進一步瞭解如何使用「Integrations」頁面,請參閱管理整合。
後續步驟
如需有關如何使用 Ansible 安裝作業套件代理程式、設定第三方應用程式,以及安裝範例資訊主頁的教學影片,請參閱「 安裝作業套件代理程式以排解第三方應用程式的問題」影片。