ElasticSearch配置


設置JVM:
修改jmv.options配置文件,位置在config/jvm.options
 
以 - 開頭的,被視為獨立於JVM版本而應用的JVM選項                                                          -Xmx2g
以數字開頭, :后接 - 的行,被視為僅在JVM版本與該數字匹配時才適用的JVM選項             8 : -Xmx2g
以數字開頭,- 后接 : - 的行,被視為JVM選項,僅當JVM版本大於或等於該數字時才適用    8 - : - Xmx2g
以數字開頭, - 后接數字, 再跟 - 的行,被視為JVM選項,僅當JVM版本在兩個數字范圍內時才適用    8 - 9 : - Xmx2g
其他所有行均被拒絕
 
安全設置:
·某些設置是敏感的,僅依靠文件系統權限來保護其值是不夠的。Elasticsearch提供了密鑰庫和用於管理密鑰庫中設置的elasticsearch-keystore工具。
·這些設置與elasticsearch.yml配置文件中的常規設置一樣,需要在集群的每個節點上指定。當前,所有安全設置都是特定於節點的設置,在每個節點上必須具有相同的值。
·僅在重新啟動Elasticsearch之后,對密鑰庫的所有修改才會生效。
·Elasticsearch密鑰庫當前僅提供混淆。將來將添加密碼保護。
 
bin/elasticsearch-keystore
創建keystore
create
參數編輯
add <setting>
將設置添加到密鑰庫。默認情況下,系統會提示您輸入設置的值。
add-file <setting> <path>
將文件添加到密鑰庫。
-h, --help
返回所有命令參數。
list
列出密鑰庫中的設置。
remove <setting>
從密鑰庫中刪除設置。
-s, --silent
顯示最小輸出。
--stdin
與add參數一起使用時,可以通過標准輸入(stdin)傳遞設置值。請參閱將設置添加到密鑰庫。
upgrade
升級密鑰庫的內部格式。
-v, --verbose
顯示詳細輸出。
 
bin/elasticsearch-keystore create  在elasticsearch.keystore文件旁邊創建一個elasticsearch.yml 文件
bin/elasticsearch-keystore list
bin/elasticsearch-keystore add the.setting.name.to.set
cat /file/containing/setting/value | bin/elasticsearch-keystore add --stdin the.setting.name.to.set
bin/elasticsearch-keystore add-file the.setting.name.to.set /path/example-file.json
bin/elasticsearch-keystore remove the.setting.name.to.remove
bin/elasticsearch-keystore upgrade
 
對密鑰庫內容的更改不會自動應用於正在運行的Elasticsearch節點。重新讀取設置需要重新啟動節點。但是,某些安全設置被標記為 可重載。可以重新讀取此類設置並將其應用到正在運行的節點上。
所有安全設置(可重新加載或不可重新加載)的值在所有群集節點上必須相同。進行所需的安全設置更改后,使用以下bin/elasticsearch-keystore add命令,調用:  curl -X POST "localhost:9200/_nodes/reload_secure_settings?pretty"
該API在每個群集節點上解密並重新讀取整個密鑰庫,但僅應用可重載的安全設置。直到下一次重新啟動,對其他設置的更改才會生效。調用返回后,重新加載已完成,這意味着依賴於這些設置的所有內部數據結構均已更改。從頭開始,所有設置看起來都應該具有新值。
更改多個可重新加載的安全設置時,請在每個群集節點上修改所有這些設置,然后發出reload_secure_settings呼叫,而不是在每次修改后重新加載。
 
日志配置:
Elasticsearch使用Log4j 2進行日志記錄。可以使用log4j2.properties文件配置Log4j 2。Elasticsearch公開三個屬性${sys:es.logs.base_path}, ${sys:es.logs.cluster_name}以及${sys:es.logs.node_name}可以在配置文件中引用,以確定日志文件的位置。該屬性${sys:es.logs.base_path}將解析為日志目錄, ${sys:es.logs.cluster_name}將解析為群集名稱(在默認配置中用作日志文件名的前綴), ${sys:es.logs.node_name}並將解析為節點名稱(如果顯式設置了節點名稱)。
例如,如果你的日志目錄(path.logs)是/var/log/elasticsearch和您的群集名為production然后${sys:es.logs.base_path}將解析/var/log/elasticsearch和 ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log 將解析/var/log/elasticsearch/production.log。
#配置RollingFile附加器
appender.rolling.type = RollingFile
appender.rolling.name = rolling
#登錄到 /var/log/elasticsearch/production_server.json
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json
#使用JSON布局
appender.rolling.layout.type = ESJsonLayout
#type_name是標記中type字段的標志ESJsonLayout。解析日志時,可以使用它更輕松地區分不同類型的日志
appender.rolling.layout.type_name = server
#將日志滾動到/var/log/elasticsearch/production-yyyy-MM-dd-i.json; 日志將在每卷上壓縮並i遞增
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz
appender.rolling.policies.type = Policies
#使用基於時間的滾動策略
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
#每天滾動日志
appender.rolling.policies.time.interval = 1
#在天數邊界上對齊滾動(而不是每24小時滾動一次)
appender.rolling.policies.time.modulate = true
#使用基於大小的滾動策略
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
#256 MB后滾動日志
appender.rolling.policies.size.size = 256MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
#滾動日志時使用刪除操作
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
#僅刪除與文件模式匹配的日志
appender.rolling.strategy.action.condition.type = IfFileName
#模式是僅刪除主日志
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
#僅當我們累積了太多壓縮日志時才刪除
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize
#壓縮日志的大小條件為2 GB
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB
可以在appender .rolling中將.gz替換為.zip。filePattern使用zip格式壓縮已滾動的日志。如果您刪除了.gz擴展名,那么日志在滾動時將不會被壓縮
 
如果希望將日志文件保留指定的一段時間,可以使用帶有刪除操作的滾動策略
#配置DefaultRolloverStrategy
appender.rolling.strategy.type = DefaultRolloverStrategy
#配置處理滾動的刪除操作
appender.rolling.strategy.action.type = Delete
#到Elasticsearch日志的基本路徑
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
#處理滾動時應用的條件
appender.rolling.strategy.action.condition.type = IfFileName
#從匹配glob ${sys: .logs.cluster_name}-*的基本路徑中刪除文件;這是日志文件被滾動到的glob;只需要刪除滾動的Elasticsearch日志,而不需要刪除棄用和慢速日志
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
#用於匹配glob的文件的嵌套條件
appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified
#將日志保留7天
appender.rolling.strategy.action.condition.nested_condition.age = 7D
 
配置日志記錄級別
有四種配置日志記錄級別的方法,每種方法都有適合使用的情況。
1. 通過命令行:(-E <name of logging hierarchy>=<level>例如, -E logger.org.elasticsearch.transport=trace)。當您臨時調試單個節點上的問題(例如,啟動問題或開發過程中)時,這是最合適的。
2. 通過elasticsearch.yml:(<name of logging hierarchy>: <level>例如, logger.org.elasticsearch.transport: trace)。當您臨時調試問題但未通過命令行(例如,通過服務)啟動Elasticsearch或希望更永久地調整日志記錄級別時,這是最合適的。
3. 通過集群設置:
PUT /_cluster/settings
{
  "transient": {
    "<name of logging hierarchy>": "<level>"
  }}
 
4.通過log4j2.properties:
logger.<unique_identifier>.name = <name of logging hierarchy>
logger.<unique_identifier>.level = <level>
 
啟用審核日志記錄:
記錄與安全性有關的事件,例如身份驗證失敗和連接被拒絕,以監視群集中的可疑活動。審計日志還可以在發生攻擊時提供法證證據
在elasticsearch.yml中設置xpack.security.audit.enabled為true
啟用審核日志記錄后,安全事件將持久保存到<clustername>_audit.json主機文件系統上(每個節點上)的專用文件中
 
跨集群復制:
 
索引生命周期管理:
集群級別設置:
xpack.ilm.enabled    禁用任何ILM REST API端點和功能。默認為true
indices.lifecycle.poll_interval    索引生命周期管理檢查符合策略標准的索引的頻率。默認為10m
indices.lifecycle.history_index_enabled    是否啟用ILM的歷史索引。如果啟用,ILM會將作為ILM策略一部分而采取的操作的歷史記錄到ilm-history-* 索引中。默認為true。
 
索引級別設置:
index.lifecycle.name
用於管理索引的策略的名稱。
index.lifecycle.rollover_alias
索引翻轉時要更新的索引別名。在使用包含過渡操作的策略時指定。當索引翻轉時,別名將更新以反映該索引不再是寫索引。有關過渡的更多信息,請參見配置過渡。
index.lifecycle.parse_origination_date
當配置為true原始日期時,將從索引名稱中解析。索引格式必須與模式匹配^.*-{date_format}-\\d+,其中date_formatis yyyy.MM.dd和結尾數字是可選的(經過翻轉的索引通常會與完整格式匹配,例如 logs-2016.10.31-000002)。如果索引名稱與模式不匹配,則索引創建將失敗。
index.lifecycle.origination_date
將用於計算其相變的索引壽命的時間戳。這使用戶可以創建包含舊數據的索引,並使用舊數據的原始創建日期來計算索引使用期限。必須為長(Unix紀元)值。
 
創建生命周期策略:
使用ILM自動進行滾動和時間序列索引管理:
1. 創建定義適當階段和操作的生命周期策略。
2. 創建一個索引模板,將策略應用於每個新索引。
3. 引導索引作為初始寫索引。
4. 驗證索引是否 按預期在生命周期階段中移動。
 
創建生命周期策略編輯:
生命周期策略指定索引生命周期中的各個階段以及每個階段要執行的操作。生命周期最多可以有四個階段: hot,warm,cold,和delete。
可以通過Kibana Management UI定義和管理策略,該UI調用ILM 放置策略 API來根據您指定的選項創建策略。
例如,可以定義一個timeseries_policy具有兩個階段的:
* 一個hot階段,用於定義過渡操作,以指定索引達到max_size50 GB或max_age30天時將進行翻轉。
* 一個delete階段,設置min_age為在過渡90天后刪除索引。請注意,該值是相對於過渡時間而不是索引創建時間的。
curl -X PUT "localhost:9200/_ilm/policy/datastream_policy?pretty" -H 'Content-Type: application/json' -d'
{
  "policy": {
    "phases": {
      "hot": {                      
        "actions": {
          "rollover": {
            "max_size": "50GB",     
            "max_age": "30d"
          }
        }
      },
      "delete": {
        "min_age": "90d",           
        "actions": {
          "delete": {}              
        }
      }
    }
  }
}
'
1.該min_age默認為0ms,所以新指數進入hot立即階段。
2.rollover滿足任何一個條件時觸發動作。
3.delete過渡后90天將索引移入階段。
4.delete當索引進入刪除階段時觸發操作。
索引生命周期管理可以執行的操作的完整列表:  https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-actions.html
 
創建索引模板以應用生命周期策略編輯:
要在過渡時將生命周期策略自動應用於新的寫索引,請在索引模板中指定用於創建新索引的策略。
例如,可以創建一個timeseries_template應用於名稱與timeseries-*索引模式匹配的新索引。
要啟用自動翻轉,該模板配置兩個ILM設置:
* index.lifecycle.name 指定生命周期策略的名稱,以應用於與索引模式匹配的新索引。
* index.lifecycle.rollover_alias 指定在觸發索引的過渡操作時要過渡的索引別名。
可以使用Kibana創建模板向導來添加模板。該向導調用放置模板API,以使用指定的選項創建模板。
curl -X PUT "localhost:9200/_template/datastream_template?pretty" -H 'Content-Type: application/json' -d'
{
  "index_patterns": ["datastream-*"],                 
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.lifecycle.name": "datastream_policy",      
    "index.lifecycle.rollover_alias": "datastream"    
  }
}
'
 
1.如果模板名稱以開頭,則將其應用於新索引datastream-。
2.應用於每個新索引的生命周期策略的名稱。
3.用於引用這些索引的別名的名稱。使用過渡操作的策略是必需的。
 
引導初始時間序列索引編輯:
要開始,您需要引導一個初始索引,並將其指定為索引模板中指定的過渡別名的寫索引。該索引的名稱必須與模板的索引模式匹配,並以數字結尾。過渡時,此值將遞增以生成新索引的名稱。
例如,以下請求創建一個名為的索引,datastream-000001 並使其成為datastream別名的寫索引
curl -X PUT "localhost:9200/datastream-000001?pretty" -H 'Content-Type: application/json' -d'
{
  "aliases": {
    "datastream": {
      "is_write_index": true
    }
  }
}
'
當滿足過渡條件時,將執行以下rollover操作:
* 創建一個名為的新索引datastream-000002。這與datastream-*模式匹配,因此from datastream_template中的設置將應用於新索引。
* 將新索引指定為寫索引,並使引導索引為只讀。
每當滿足過渡條件時,都會重復此過程。您可以datastream_policy使用datastream別名搜索由管理的所有索引。寫操作被路由到當前的寫索引
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM