通過配置Elasticsearch執行個體的YML參數,您可以設定允許自動建立索引、刪除索引指定名稱、配置Auditlog索引、開啟Watcher以及其他配置。本文介紹如何配置YML參數、CORS訪問、reindex白名單、Auditlog和queue大小。
注意事項
2020年10月起,由於Elasticsearch網路架構調整,導致部分通過reindex方式跨叢集遷移資料的情境受到了限制。如果需要使用reindex方式跨叢集遷移資料,請參見通過執行個體私網打通將自建Elasticsearch資料移轉至阿里雲中的注意事項進行處理。
對於華北3(張家口)和海外地區,由於網路架構調整時間不確定,因此需要提交工單,聯絡Elasticsearch支援人員,校正網路是否可以互連。
修改配置
- 登入Elasticsearch控制台。
- 在左側導覽列,單擊Elasticsearch執行個體。
- 進入目標執行個體。
- 在頂部功能表列處,選擇資源群組和地區。
- 在Elasticsearch執行個體中單擊目標執行個體ID。
在左側導覽列,選擇 。
在ES叢集配置頁面,單擊YML檔案配置右側的修改配置。
在YML檔案配置頁面,按照以下說明進行配置。
說明如果您需要查看elasticsearch.yml的內容,可登入Kibana控制台,執行
GET _cluster/settings?include_defaults
命令。參數
說明
自動建立索引
當Elasticsearch執行個體接收到新文檔後,如果沒有對應索引,是否允許系統自動建立索引。
對應的YML檔案的配置項為action.auto_create_index,預設為false。
Elasticsearch預設不允許自動建立索引,您可以通過以下方式開啟:
重要自動建立的索引可能不符合您的預期,建議您評估後再開啟。
通過控制台叢集配置開啟。該操作為YML靜態配置,會觸發執行個體重啟。
通過動態方式快速開啟(不需要重啟)。登入Kibana控制台,通過以下命令設定允許自動建立索引:
允許自動建立所有索引
PUT /_cluster/settings { "persistent": { "action": { "auto_create_index": "true" } } }
重要該方式將開放所有索引的自動建立功能,如果您需要禁止,請將
true
改成false
。只允許自動建立部分指定索引,如下樣本僅允許自動建立系統索引:
PUT /_cluster/settings { "persistent": { "action": { "auto_create_index": "+.*,-*" } } }
刪除索引指定名稱
在刪除索引時是否需要明確指定索引名稱。如果選擇刪除或關閉時索引名稱支援萬用字元,則可以使用萬用字元進行大量刪除索引。索引刪除後不可恢複,請謹慎使用此配置。
對應的YML檔案的配置項為action.destructive_requires_name,預設為true。
Auditlog
開啟後,系統會記錄Elasticsearch執行個體對應的增、刪、改、查等操作產生的審計日誌,該日誌資訊會佔用您的磁碟空間,同時也會影響效能,不建議開啟,請謹慎使用此配置。更多參數說明,請參見配置Auditlog(審計日誌)。
對應的YML檔案的配置項為xpack.security.audit.enabled,預設為false。
開啟Watcher
開啟後,可使用X-Pack的Watcher功能。請注意定時清理.watcher-history*索引,避免佔用大量磁碟空間。
對應的YML檔案的配置項為xpack.watcher.enabled,預設為false。
其他Configure配置
支援的部分配置項如下(以下配置項,如果沒有標識具體適用於哪個Elasticsearch版本,預設相容Elasticsearch 5.x、6.x和7.x版本):
http.cors.enabled
http.cors.allow-origin
http.cors.max-age
http.cors.allow-methods
http.cors.allow-headers
http.cors.allow-credentials
reindex.remote.whitelist
Elasticsearch 7.x和8.x版本僅支援配置xpack.security.audit.logfile.events.include參數,5.x和6.x版本支援以下參數:
xpack.watcher.enabled
xpack.notification
xpack.security.audit.enabled
xpack.security.audit.index.bulk_size
xpack.security.audit.index.flush_interval
xpack.security.audit.index.rollover
xpack.security.audit.index.events.include
xpack.security.audit.index.events.exclude
xpack.security.audit.index.events.emit_request_body
xpack.security.audit.index.settings.index
LDAP功能
除5.x版本外,其他版本支援:
xpack.security.authc.realms.ldap1
xpack.security.authc.realms.active_directory1
xpack.security.authc.realms.pki1
xpack.security.authc.realms.saml1
xpack.security.authc.realms.kerberos1
xpack.security.authc.token.enabled
thread_pool.bulk.queue_size(適用於5.x及6.x版本)
thread_pool.write.queue_size(適用於6.x、7.x及8.x版本)
thread_pool.search.queue_size
自訂SQL外掛程式配置
xpack.sql.enabled
預設情況下Elasticsearch執行個體會啟用X-Pack內建的SQL外掛程式,如需上傳自訂的SQL外掛程式,請將xpack.sql.enabled設定為false。
重要配置YML檔案會觸發叢集滾動重啟。如果叢集中的索引有副本且叢集負載正常(CPU使用率在60%左右,堆記憶體使用量率在50%左右,load_1m低於CPU核心數),一般情況下,在重啟過程中可持續對外提供服務。重啟時間長度與叢集規模、資料量及負載情況等有關係,建議在業務低峰期操作。
如果叢集負載過高且索引沒有副本,同時業務中存在大量的寫入或查詢等情境,在叢集變更過程中,業務可能會出現偶發的訪問逾時現象。建議在用戶端訪問指令碼中配置重試機制,以減小對業務的影響。
選中該操作會重啟執行個體,請確認後操作,單擊確定。
確定後,Elasticsearch執行個體會重啟。重啟過程中,可在工作清單查看進度。重啟成功後,即可完成YML檔案的配置。
配置CORS訪問
通過配置跨域資源共用CORS(Cross-origin resource sharing)訪問,設定是否允許其他域資源下的瀏覽器向Elasticsearch發送請求。您可以在YML檔案配置中,配置CORS訪問,支援配置的參數如下。
表格中的參數是Elasticsearch為支援HTTP協議開放的自訂配置。
表格中的參數僅支援靜態配置。如果您想使配置生效,需要將配置資訊寫入elasticsearch.yml檔案中。
表格中的參數依賴於叢集網路設定(Network settings)。
參數 | 預設值 | 說明 |
http.cors.enabled | false | 設定是否啟用跨域資源訪問(Elasticsearch是否允許其他域資源下的瀏覽器向其發送請求):
|
http.cors.allow-origin | “” | 域資源配置項,可設定接受來自哪些網域名稱的請求。預設不允許接受跨域請求且無配置。支援Regex,例如/https?:\/\/localhost(:[0-9]+)?/,表示可響應符合此正則的請求資訊。 警告 *是合法配置,表示叢集支援來自任意網域名稱的跨域請求,此配置存在安全風險,不建議使用。 |
http.cors.max-age | 1728000(20天) | 瀏覽器可發送OPTIONS請求以擷取CORS配置資訊,此配置項可設定擷取的資訊在瀏覽器中的緩衝時間,單位為秒。 |
http.cors.allow-methods | OPTIONS, HEAD, GET, POST, PUT, DELETE | 要求方法配置項。 |
http.cors.allow-headers | X-Requested-With, Content-Type, Content-Length | 要求標頭資訊配置項。 |
http.cors.allow-credentials | false | 憑證資訊設定項目,設定是否允許回應標頭中返回Access-Control-Allow-Credentials資訊:
|
配置reindex白名單
通過當前叢集調用reindex API,從遠程叢集遷移索引資料前,需要先配置reindex白名單。您可以在YML檔案配置中,配置reindex白名單,支援配置的參數如下。
參數 | 預設值 | 說明 |
reindex.remote.whitelist | [] | 設定遠程Elasticsearch叢集的訪問地址,將其添加到當前叢集的遠端存取白名單中。 白名單支援host和port的組合,並使用逗號分隔多個主機配置(例如otherhost:9200,another:9200,127.0.10.**:9200,localhost:**),不識別協議資訊。 |
配置reindex白名單時,如果遠程Elasticsearch叢集為單可用性區域的Elasticsearch執行個體,請使用<Elasticsearch執行個體的網域名稱>:9200;如果為多可用性區域執行個體,請使用執行個體中所有資料節點的IP地址與連接埠的組合。具體樣本如下:
單可用性區域
reindex.remote.whitelist: ["es-cn-09k1rgid9000g****.elasticsearch.aliyuncs.com:9200"]
多可用性區域
reindex.remote.whitelist: ["10.0.xx.xx:9200","10.0.xx.xx:9200","10.0.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200"]
說明reindex白名單配置完成後,即可調用reindex API重建索引。具體操作,請參見阿里雲ES間跨叢集reindex。
配置Auditlog(審計日誌)
Auditlog為審計日誌,預設關閉。查看審計日誌前,需要先開啟Auditlog。開啟後,系統會記錄Elasticsearch執行個體對應的增、刪、改、查等操作產生的日誌。對於審計日誌的開啟、配置和查看,Elasticsearch不同版本執行個體的操作有所不同,具體如下。
關於Auditlog的更多詳細資料,請參見Auditing Security Settings。
7.x及以上版本
進入YML檔案配置面板。
具體操作請參見修改配置。
選中Auditlog參數中的開啟Auditlog,開啟審計日誌。
自訂Auditlog配置。
開啟Auditlog後,您可以在其他Configure配置中調整xpack.security.audit.logfile.events.include參數的配置,樣本如下:
xpack: security: audit: logfile: events: include: >- access_denied,anonymous_access_denied,authentication_failed,connection_denied,tampered_request,run_as_denied,run_as_granted
重要7.x及以上版本執行個體僅支援配置xpack.security.audit.logfile.events.include參數。
預設Auditlog配置只會在審計日誌中列印請求被拒絕或失敗的審計日誌,如需擷取請求成功的審計日誌,需要添加access_granted事件。添加後,磁碟將儲存所有訪問資訊,可能會存在磁碟使用率過高的風險,建議您問題排查完後,關閉審計日誌功能。
查看審計日誌(Auditlog)。
5.x及6.x版本
進入YML檔案配置面板。
具體操作請參見YML檔案配置。
選中Auditlog參數中的開啟Auditlog索引,開啟審計日誌。
Auditlog索引的預設配置如下,您可以根據具體業務進行調整。
xpack.security.audit.index.bulk_size: 5000 xpack.security.audit.index.events.emit_request_body: false xpack.security.audit.index.events.exclude: run_as_denied,anonymous_access_denied,realm_authentication_failed,access_denied,connection_denied xpack.security.audit.index.events.include: authentication_failed,access_granted,tampered_request,connection_granted,run_as_granted xpack.security.audit.index.flush_interval: 180s xpack.security.audit.index.rollover: hourly xpack.security.audit.index.settings.index.number_of_replicas: 1 xpack.security.audit.index.settings.index.number_of_shards: 10
配置
預設設定
說明
xpack.security.audit.index.bulk_size
1000
當您將多個審計事件分批寫入到一個Auditlog索引中時,可通過該參數,設定寫入事件的數量。
xpack.security.audit.index.flush_interval
1s
控制緩衝事件重新整理到索引的頻率。
xpack.security.audit.index.rollover
daily
控制滾動構建到新索引的頻率,可以設定為hourly、daily、weekly或monthly。
xpack.security.audit.logfile.events.include
access_denied,anonymous_access_denied,authentication_failed, connection_denied,tampered_request,run_as_denied,run_as_granted
控制何種Auditlog事件可以被採集到審計日誌中。目前審計日誌功能僅開放部分地區,詳情請參見使用限制。完整事件類型列表,請參見Audit event types (7.x)。
xpack.security.audit.index.events.include
access_denied, access_granted, anonymous_access_denied, authentication_failed, connection_denied, tampered_request, run_as_denied, run_as_granted
控制何種Auditlog事件可以被寫入到索引中,僅5.x和6.x版本的執行個體支援。完整事件類型列表,請參見Audit event types (6.x)。
xpack.security.audit.index.events.exclude
null(預設不處理任何事件)
構建索引過程中,排除的Auditlog事件。
xpack.security.audit.index.events.emit_request_body
false
當觸發明確的事件類型時(例如authentication_failed),是否忽略或包含以REST發送的請求體。
警告當Auditlog中包含RequestBody資訊時,可能會在記錄檔中暴露敏感資訊。
查看審計日誌(Auditlog)。
對於5.x和6.x版本執行個體,當開啟Auditlog後,Auditlog檔案將輸出到Elasticsearch執行個體中,並使用.security_audit_log-*開頭的索引名稱。因此您可以通過在Kibana控制台上查看.security_audit_log-*開頭的索引來查看審計日誌。
重要Auditlog索引會佔用執行個體的儲存空間。由於Elasticsearch不支援自動到期清除策略,因此需要手動清除舊的Auditlog索引。
可選:配置儲存Auditlog的索引分區。
對於5.x和6.x版本執行個體,您可以通過xpack.security.audit.index.settings配置儲存Auditlog的索引分區。以下配置構建Auditlog索引的分區和副本均為1。
xpack.security.audit.index.settings: index: number_of_shards: 1 number_of_replicas: 1
說明如果您希望通過傳入配置參數產生Auditlog索引,請在開啟Auditlog索引(設定xpack.security.audit.enabled為true)的同時傳入此配置。否則,Auditlog索引將使用預設的
number_of_shards: 5
、number_of_replicas: 1
配置。
配置queue大小
通過自訂queue大小,調整文檔寫入和搜尋的隊列大小。您可以在YML檔案配置中,配置queue大小。以下樣本配置文檔寫入和搜尋queue大小為500和1000,實際業務中請根據具體情況自行調整。
5.x及6.x版本
thread_pool.bulk.queue_size: 500 thread_pool.search.queue_size: 1000
6.x、7.x及8.x版本
thread_pool.write.queue_size: 500 thread_pool.search.queue_size: 1000
參數 | 預設值 | 說明 |
thread_pool.bulk.queue_size | 200 | 文檔寫入隊列大小,適用於Elasticsearch 5.x及6.x版本。 |
thread_pool.write.queue_size | 200 | 文檔寫入隊列大小,適用於Elasticsearch 6.x、7.x及8.x版本。 |
thread_pool.search.queue_size | 1000 | 文檔搜尋隊列大小。 說明 Elasticsearch執行個體的thread_pool.search.queue_size參數的最大值為1000,調整為1000以上仍取值為1000。 |