ELK一:补充--配置
一、Elasticsearch重要配置
虽然Elasticsearch需要很少的配置,但是有一些设置需要手动配置,并且必须在进入生产之前进行配置。
path.data
andpath.logs
cluster.name
node.name
bootstrap.memory_lock
network.host
discovery.zen.ping.unicast.hosts
discovery.zen.minimum_master_nodes
path.data and path.logs
如果您正在使用.zip
或.tar.gz文件归档
,data
和logs
目录在 $ES_HOME 下
。如果这些重要文件夹保留在默认位置,则Elasticsearch升级到新版本时,很有可能被删除。
在生产中使用,肯定要更改数据和日志文件夹的位置:
path: logs: /var/log/elasticsearch data: /var/data/elasticsearch
RPM和Debian的安装包已经使用了自定义的data和logs路径。
path.data 选项可以同时指定多个路径,所有的路径都会被用来存储数据(但所有属于同一个分片的文件,都会全部保存到同一个数据路径)
path: data: - /mnt/elasticsearch_1 - /mnt/elasticsearch_2 - /mnt/elasticsearch_3
cluster.name
某个节点只有和集群下的其他节点共享它的 cluster.name 才能加入一个集群。默认是elasticsearch,但是应该修改为更恰当的,用于描述集群目的的名称。
cluster.name: logging-prod
一定要确保不要在不同的环境中使用相同的集群名称。否则,节点可能会加入错误的集群中。
cluster.name
默认情况下,Elasticsearch 将使用随机生成的uuid的前7个字符作为节点id,请注意,节点ID是持久化的,并且在节点重新启动时不会更改,因此默认节点名称也不会更改。
推荐为节点配置更有意义的名称。
node.name: prod-data-2
也可以使用服务器的 HOSTNAME 作为节点的名称。
node.name: ${HOSTNAME}
bootstrap.memory_lock
由于当jvm开始swapping时es的效率会降低,所以要保证它不swap,这对节点健康极其重要。实现这一目标的一种方法是将 bootstrap.memory_lock 设置为true
。
要使此设置有效,首先需要配置其他系统设置。有关如何正确设置内存锁定的更多详细信息,请参阅启用bootstrap.memory_lock
。
network.host
默认情况下,Elasticsearch 仅仅绑定回环地址,比如127.0.0.1
和[::1]
。这足以在服务器上运行单个开发节点。
事实上,一台机器上可以启动多个节点。这可对于测试Elasticsearch集群的能力很有用,但不推荐用于生产。
为了与其他服务器上的节点进行通信并形成集群,你的节点将需要绑定到非环回地址。虽然这里有很多网络相关的配置,但通常只需要配置一下 network.host
network.host: 192.168.1.10
network.host 设置一些特殊值也是可以的,比如 _local_, _site_, _global_ ,ip4,ip6。更多详情请参考 “Special values for network.host
”.
一旦自定义设置了 network.host ,Elasticsearch 会假定你正在从开发模式转移到生产模式,并将许多系统启动检查从警告升级到异常。有关详细信息,请参阅“Development mode vs production mode”。
discovery.zen.ping.unicast.hosts
开箱即用,没有任何网络配置情况下,Elasticsearch将绑定到可用的回环地址,并会扫描端口9300至9305以尝试连接到同一服务器上运行的其他节点。这提供了一个自动集群体验,而无需执行任何配置。
如果想和其他服务器的节点形成一个集群,你必须提供集群中其它节点的列表。可以通过以下方式指定:
discovery.zen.ping.unicast.hosts: - 192.168.1.10:9300 - 192.168.1.11 - seeds.mydomain.com
如果没有指定端口,将默认为 transport.profiles.default.port 并回退 transport.tcp.port 。
如果输入的是主机名,被解析成多个地址,将会尝试连接所有地址。
discovery.zen.minimum_master_nodes
为了防止数据丢失, discovery.zen.minimum_master_nodes 配置至关重要, 以便每个候选主节点知道为了形成集群而必须可见的最少数量的候选主节点。
没有这种设置,遇到网络故障的群集有可能将群集分成两个独立的群集(脑裂), 这将导致数据丢失。更详细的解释在“Avoiding split brain with minimum_master_nodes
” 中提供。
为了避免脑裂,候选主节点的数量应该设置为:
(master_eligible_nodes / 2) + 1
换句话说,如果现在有3个节点,最小候选主节点数应该是(3/2)+1=2
:
discovery.zen.minimum_master_nodes: 2
参考文档:https://github.com/13428282016/elasticsearch-CN/wiki/es-setup--elasticsearch
参考文档--elasticsearch.yml配置文件:https://www.cnblogs.com/LiZhiW/p/4978396.html
二、elasticsearch集群配置
lasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.yml,其中,elasticsearch.yml 是全局配置文件,用于在服务器级别对ElasticSearch进行配置。ElasticSearch的配置选项分为静态设置和动态设置两种,静态设置必须在结点级别(node-level)设置,或配置在elasticsearch.yml配置文件中,或配置在环境变量中,或配置在命令行中,在结点启动之后,静态设置不能修改。集群的名字和结点的名称:cluster.name 和 node.name,这两个配置项是静态配置项,不能在集群运行时修改,而动态配置项可以在集群运行时通过RESTful API进行修改。
一,配置集群的标识(cluster.name)
通过 cluster.name 属性配置集群的名字,用于唯一标识一个集群,不同的集群,其 cluster.name 不同,集群名字相同的所有节点自动组成一个集群。如果不配置改属性,默认值是:elasticsearch。当启动一个结点时,该结点会自动寻找相同集群名字的主结点;如果找到主结点,该结点加入集群中;如果未找到主结点,该结点成为主结点。
注意:在yml中对Elasticsearch进行全局配置,要注意配置选项的格式:option: value,在“:”之后保留一个空格,之后是选项值;配置选项不要有前置空格。
配置集群的名字为myescluster
cluster.name: myescluster
二,结点的配置
ElasticSearch集群中,共有五种结点类型:主结点(Master),候选主结点(Master-eligible),数据结点(Data),吸收结点(Ingest)和部落结点(Tribe)。在一个集群中,主结点只有一个,负责管理集群,执行集群级别的操作,比如创建或删除索引,跟踪集群的组成结点的状态,决定将分片分配的目标结点,对集群来说,一个稳定的主结点十分重要。集群会自动进行健康检测,当主结点出现故障时,集群中的候选主结点进行选举,在选举结束之后,一个候选主结点被选举成为新的主结点,实现集群故障的自动转移。候选主结点具有投票权,其他结点没有投票权。
1,配置候选主结点和数据结点
默认情况下,ElasticSearch将当前节点配置为同时作为候选主结点和数据结点:
- node.data:true 配置该结点是数据结点,用于保存数据,执行数据相关的操作(CRUD,Aggregation);
- node.master:true 配置该结点有资格被选举为主结点(候选主结点),用于处理请求和管理集群。如果结点没有资格成为主结点,那么该结点永远不可能成为主结点;如果结点有资格成为主结点,只有在被其他候选主结点认可和被选举为主结点之后,才真正成为主结点。
配置当前结点只保存数据:
node.master: false node.data: true
配置当前结点不保存数据,只做候选主结点:
node.master: false node.data: true
2,主结点选取的配置
discovery.zen.minimum_master_nodes 属性:默认值是1,该属性定义的是为了组成一个集群,相互连接的候选主结点的最小数目,强烈推荐该属性的设置使用多数原则:(master_eligible_nodes / 2) + 1,既能避免出现脑裂(split-brain),又能在故障发生后,快速选举出新的主结点,例如,有5个候选主结点,推荐把该属性设置为3。
3,结点的路径(Path)
默认情况下,ElasticSearch使用基于安装目录的相对路径来配置结点的路径,安装目录由属性path.home显示,在home path下,ElasticSearch自动创建config,data,logs和plugins目录,一般情况下不需要对结点路径单独配置。结点的文件路径配置项:
- path.config 设置ElasticSearch的配置文件保存的目录;
- path.data 设置ElasticSearch结点的索引数据保存的目录,多个数据文件使用逗号隔开,例如,path.data: /path/to/data1,/path/to/data2;
- path.logs 设置ElasticSearch结点的日志文件保存的目录;
- path.plugins 设置ElasticSearch插件安装的目录;
- path.work 设置ElasticSearch的临时文件保存的目录;
4,单个ElasticSearch实例的Java虚拟机(JVM)的堆内存限制
ElasticSearch实例必须运行在安装JDK的机器上,在安装完Java Runtime组件之后,必须创建系统变量JAVA_HOME,指定JDK安装的位置,比如:
JAVA_HOME: C:\Program Files\Java\jre1.8.0_121\bin
默认的JVM内存限制是 1GB,对小项目而言,1GB内存足够使用,不会出现问题,但是,对大项目而言,这个默认限制太小了,如果日志文件中经常出现OutOfMemoryError异常消息,就考虑重新设置 ES_HEAP_SIZE 环境变量,为JVM分配足够的内存,同时,必须为OS分配足够的内存,建议JVM使用的物理内存最大不应超过32GB,推荐分配机器物理内存的50%,在Windows中创建新的系统环境变量 ES_HEAP_SIZE,设置堆内存大小为5G:
环境变量
ElasticSearch 首先读取通用的JAVA_OPTS环境变量来获取JVM参数, 除了可以用JAVA_OPTS配置JVM参数外, 还可以通过ElasticSearch提供的ES_JAVA_OPTS环境变量配置JVM参数, ES_JAVA_OPTS会覆盖JAVA_OPTS中配置的相同参数, 官方建议是在JAVA_OPTS中配置通用的参数, 在ES_JAVA_OPTS中配置针对Elasticsearch需要调整的参数。环境变量最主要的作用是指定 -Xmx 最大堆大小和 -Xms 最小堆大小。
JAVA_OPTS ,是用来设置JVM相关运行参数的环境变量,例如:JAVA_OPTS="-server -Xms2048m -Xmx2048m"
- -server:一定要作为第一个参数,在多个CPU时性能佳
- -Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
- -Xmx:java heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
三,索引配置
1,配置索引的分片(shard)和副本(replica)数量
默认的配置是把索引分为5个分片,每个分片1个副本,共10个结点:
index.number_of_shards: 5 index.number_of_replicas: 1
禁用索引的分布式特性,使索引只创建在本地主机上:
index.number_of_shards: 1 index.number_of_replicas: 0
2,当前节点锁住内存
当JVM做分页切换(swapping)时,ElasticSearch执行的效率会降低,推荐把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的物理内存分配给ES,同时允许ElasticSearch进程锁住内存:
bootstrap.mlockall: true
3,断路器(Circuit Breaker)控制内存的使用量
断路器用于阻止产生OutOfMemoryError的操作,每一个断路器设置一个内存使用的上限,一旦操作达到该上限,ElasticSearch将阻止该操作继续使用内存。设置较多,一般不需要修改,保持默认值:
- indices.breaker.total.limit: defaults to 70% of JVM heap
- indices.breaker.request.limit: defaults to 60% of JVM heap
- indices.breaker.request.overhead: defaults to 1
- network.breaker.inflight_requests.limit: defaults to 100% of JVM heap
- network.breaker.inflight_requests.overhead: defaults to 1
- script.max_compilations_per_minute: defaults to 15
4,字段数据缓存
在对一个字段执行排序或聚合操作时,使用字段数据缓存(field data cache)将该字段的值加载到内存,以加快查询的速度。加载字段数据还原是IO密集的操作,推荐分配足够的内存,并且不分配过期时间:
- indices.fielddata.cache.size,控制结点级别的字段数据缓存大小,默认值是无限大(unbounded),建议分配足够的物理内存;
- indices.fielddata.cache.expire,控制字段数据缓存的过期时间,默认值是字段数据永不过期;
- indices.breaker.fielddata.limit,断路器,默认值是JVM堆内存的 80%;当加载字段值所需要的内存超过JVM堆内存的80%,将引发异常;
- indices.breaker.fielddata.overhead: 断路器,默认值是1.03;
5,结点查询缓存:
查询缓存用于缓存查询的结果,每一个节点都有一个查询缓存,缓存过期使用LRU淘汰策略(Least Recently Used eviction):当缓存满时,最近最少使用的数据被淘汰,从缓存中清除,以存储新的数据。
- indices.queries.cache.enabled,默认值是true;
- indices.queries.cache.size,默认值是10%;
6,索引缓存
索引缓存用于存储最新的索引文档(newly indexed documents),当该缓存填充满时,缓存的文件将被写入到磁盘中的段(segment)中。
- indices.memory.index_buffer_size,默认值是10%,在单个结点上,所有索引的分片占用的最大内存大小,或占用JVM堆内存的百分比;
- indices.memory.min_index_buffer_size,当indices.memory.index_buffer_size指定为百分比时,使用该选项配置绝对值,默认值是48MB;
- indices.memory.max_index_buffer_size,当indices.memory.index_buffer_size指定为百分比时,使用该选项配置绝对值,默认值是无限大;
7,分片请求缓存:
- indices.requests.cache.enable:默认值是true
- indices.requests.cache.size: 默认值是1%
当对一个索引执行查找请求(Search Request)时,每一个相关的分片(involved shard)都在本地执行查询,返回查询结果(local result)给协调结点(coordinating node)进行组合(combine),将各个分片的结果合并为最终的结果集返回。分片请求缓存对每个分片的查询结果进行缓存。
8,索引的刷新频率
索引对象刷新的频率,刷新频率越低,文档对搜索操作可视的时间越长:
- index.refresh_interval,在索引级别指定索引的刷新频率,默认值是1s
9,段(Segment)合并
每个索引分为多个段(Segment),一个段写入硬盘后,就不能再被更新,因此,被删除文档的信息存储在一个单独的文件中。ElasticSearch支持文档的更新,在底层,实际上是删除旧文档,再把更新内存的文档编入索引。在查找时,需要从返回结果中过滤掉已删除的文档。
如果数据更新或删除的数据比较多,那么每个段中的有效数据密度会变低,降低了查询的性能,通过段合并,将已删除的数据从段(Segment)中物理删除,能够提高搜索性能,合并的过程是:底层的Lucene库获取若干段,从段中过滤已删除的数据,保存到一个新的段上;段合并完成之后,将源段从硬盘上物理删除;段合并操作的CPU和IO的消耗是非常高的,必须控制段合并执行的频率和时机。
段合并的策略控制段合并的时机,在适当的条件下进行段合并:
- index.merge.policy.type,有效值:tiered,log_byte_size,log_doc
- tiered:默认的合并策略,合并尺寸大致相似的段
- log_byte_size:根据文档的字节数量进行合并
- log_doc:根据文档的数量进行合并
段合并的线程控制,以串行或并发方式执行段合并:
- index.merge.scheduler.type,有效值:serial(串行),concurrent(并发)
合并因子控制段合并的频率,合并因子越小,合并的频率越高:
- index.merge.policy.merge_factor,默认值是10
段合并调节器,限制合并的速度:
- indices.store.throttle.type,有效值:none,merge,all
- indices.store.throttle.max_bytes_per_sec:默认值10mb
四,集群的网络配置
1,结点的IP地址配置
配置当前结点绑定的IP地址,默认为0.0.0.0
network.bind_host: 192.168.0.1
设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
network.publish_host: 192.168.0.1
同时设置bind_host和publish_host两个参数
network.host: 192.168.0.1
2,设置结点间交互的TCP端口,默认是9300
transport.tcp.port: 9300
3,设置对外服务的HTTP端口,默认为9200
http.port: 9200
4,设置是否压缩TCP传输时的数据,默认为false,不压缩
transport.tcp.compress: true
5,设置HTTP包内容的最大容量,默认100mb
http.max_content_length: 100mb
6,是否启用HTTP协议对外提供服务,默认为true,开启
http.enabled: true
五,集群的发现机制(Discovery)
ElasticSearch使用zen发现来寻找结点和选举主结点,组建集群;zen发现默认使用多播,但是,单播发现比较安全,推荐使用单播发现。
1,配置多播(multicast)
多播(multicast)是zen发现的默认方法,主要有以下配置选项:
- discovery.zen.ping.multicast.group:用于多播请求的群组地址,默认值是224.2.2.4;
- discovery.zen.ping.multicast.port:设置多播通信的端口,默认值是54328;
- discovery.zen.ping.multicast.ttl;设置多播请求被认为有效的时间,默认值是3s;
- discovery.zen.ping.multicast.address:设置ElasticSearch绑定的网络接口,默认为null,意味着ElasticSearch尝试绑定所有网络接口;
- discovery.zen.ping.multicast.enable:启用或禁用多播;
2,配置单播(unicast)
使用单播时,总是禁用多播,单播的配置选项:
discovery.zen.ping.unicast. hosts:指定接收单播请求的主机IP地址,推荐包含组成集群的所有主机,主机之间用逗号隔开;
discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]
3,结点之间的状态检测
ping是结点之间发送的心跳信号,用于检测其他结点是否健康运行,如果其他结点无法响应该信号,那么集群认为该结点发生故障,配置ping信号的属性:
- discovery.zen.fd.ping_interval:默认为1s,设置结点之间互相ping信号的时间间隔;
- discovery.zen.fd.ping_timeout:默认为30s,设置当前结点发送ping信号后等待目标结点响应的时间,超过该时间,当前结点认为目标结点无法响应;
- discovery.zen.fd.ping_retries:默认为3次,设置重试次数,超过此次数之后,判定目标结点出现故障,停止工作;
- discovery.zen.ping.timeout: 默认值是3s,设置当前结点等待其他结点的ping信号的超时时间;
六,本地网关(Gateway)和还原(Recovery)
网关用于持久化存储集群的数据,包括集群的状态,索引和索引里面的数据,索引的类型映射和索引级别的配置信息等元数据,网关相当于关系型DB的事务日志。每一次集群数据的改变,ElasticSearch都将集群的数据存储到网关中。当集群重新启动时,它将会从网关中读取集群的数据,还原到上一次停机时的状态。
1,网关的类型
目前只支持local类型(本地网关),在本地文件系统中存储索引及其元数据;
gateway.type: local
2,还原控制
还原控制的选项有:
- gateway.recover_after_nodes:3,表示当集群中有3个结点之后,允许执行还原进程;
- gateway.recover_after_time:10m,表示当集群满足gateway.recover_after_nodes属性(集群中至少有3个结点)之后,ElasticSearch在10分钟之后开始执行还原进程;
- gateway.expected_nodes:5,设置集群期望的结点数量,当集群中结点的数目等于5,并且满足gateway.recover_after_nodes属性(集群中至少有3个结点)时,ElasticSearch将立即执行还原进程;
- 网关对数据结点和主结点的还原控制:
- gateway.recover_after_master_nodes 和 gateway.expected_master_nodes
- gateway.recover_after_data_nodes 和 gateway.expected_data_nodes
3,保护动作
默认情况下,ElasticSearch自动创建索引,推荐关闭该选项
action.disable_close_all_indices: true action.disable_delete_all_indices: true action.disable_shutdown: true action.auto_create_index: false
4,还原限制(Recovery Throttling)
- cluster.routing.allocation.node_initial_primaries_recoveries: 4,在初始化还原期间,控制单个结点中执行并行还原进程的数量;
- cluster.routing.allocation.node_concurrent_recoveries: 2,在增加/移除结点,重平衡期间,控制单个结点中执行并行还原进程的数量;
- indices.recovery.max_bytes_per_sec: 100mb,在还原时,吞吐量的上限,默认值是20MB;
- indices.recovery.concurrent_streams: 5,在还原分片时,设置开启的并发流的上限;
七,线程池配置
Elasticsearch公开两种类型的线程池:
- cache:无限制的线程池,为每个请求创建一个线程;
- fixed:固定大小的线程池,大小由size属性指定,
对于固定大小的线程池类型,必须为ElasticSearch指定一个请求队列(queue)用来保存请求,请求被存储到队列中,直到有一个空闲的线程来执行请求;如果队列满了,ElasticSearch无法把请求存放到队列中,该请求将被拒绝;
- threadpool.index.type: fixed
- threadpool.index.size: 100
- threadpool.index.queue_size: 500
附言:
ElasticSearch引擎的配置选项非常多,并且要真正理解这些配置选项对引擎的影响,也不是一件容易的事,不过,不用担心,在使用ElasticSearch时,真正需要修改配置选项的情况少之又少,所以,通常使用默认的配置就能满足生产环境的要求,ElasticSearch重要配置示例:
## cluster cluster.name: "my-es-cluster" ## node node.name: "node-1" node.master: true node.data: true ## index index.number_of_shards: 1 index.number_of_replicas: 0 ## memory bootstrap.mlockall: true ## network network.host: 192.168.0.1 transport.tcp.port: 9300 http.port: 9200 ## discovery discovery.zen.minimum_master_nodes: 1 discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: ["host1", "host2:port"] ## protection action.auto_create_index: false
## scripting script.inline: true script.indexed: true
参考:https://www.cnblogs.com/ljhdo/p/4959412.html
三、kibana配置
Kibana服务在启动时从Kibana.yml
文件读取属性,这个文件的位置取决于你如何安装Kibana。例如,如果从归档发行版(.tar.gz
或.zip
)安装Kibana,默认情况下是$KIBANA_HOME/config
。默认情况下,对于包发行版(Debian或RPM),它在/etc/kibana
中。
默认设置将Kibana配置为在localhost:5601
上运行,要更改主机或端口号,或连接到运行在另一台机器上的Elasticsearch,你需要更新kibana.yml
文件。还可以启用SSL并设置各种其他选项,最后,可以使用${MY_ENV_VAR}
语法将环境变量注入配置。
Kibana配置设置
console.enabled
:
- 默认:
true
- 设置为
false
以禁用控制台,切换这个将导致服务器在下一次启动时重新生成资源,这可能会导致在页面在开始服务之前出现延迟。
cpu.cgroup.path.override
:
- 当挂载的方式与
/proc/self/cgroup
不一致时,覆盖cgroup cpu路径。
cpuacct.cgroup.path.override
:
- 当挂载的方式与
/proc/self/cgroup
不一致时,覆盖cgroup cpuacct路径。
elasticsearch.customHeaders
:
- 默认:
{}
- 发送给Elasticsearch的Header名称和值,任何自定义的头都不能被客户端的header覆盖,不管
elasticsearch.requestHeadersWhitelist
的配置。
elasticsearch.logQueries
:
- 默认:
false
- 日志查询发送到Elasticsearch,要求将
logging.verbose
设置为true
,这对于查看当前没有监控面板的应用程序生成的查询DSL非常有用,例如Timelion和Monitoring。
elasticsearch.pingTimeout
:
- 默认:
elasticsearch.requestTimeout
设置的值。 - 等待Elasticsearch响应ping的时间(毫秒)。
elasticsearch.preserveHost
:
- 默认:
true
- 当此设置的值为
true
时,Kibana使用server.host
中指定的主机名的设置,当此设置的值为false
时,Kibana使用连接到此Kibana实例的主机的主机名。
elasticsearch.requestHeadersWhitelist
:
- 默认:
[ 'authorization' ]
- 送到Elasticsearch的Kibana客户端headers列表,要发送无客户端headers,请将此值设置为
[]
(空列表)。
elasticsearch.requestTimeout
:
- 默认:
30000
- 等待来自后端或Elasticsearch的响应的毫秒数,这个值必须是正整数。
elasticsearch.shardTimeout:
- 默认:
30000
- Elasticsearch等待碎片响应的毫秒数,设置为
0
禁用。
elasticsearch.ssl.certificate
和elasticsearch.ssl.key
:
- 可选设置,提供pem格式的SSL证书和密钥文件的路径,这些文件用于验证Kibana到Elasticsearch的身份,当在Elasticsearch中
xpack.ssl.verification_mode
被设置为certificate
或full
时需要这些文件。
elasticsearch.ssl.certificateAuthorities
:
- 可选设置,使你能够为你的Elasticsearch实例的证书颁发机构指定PEM文件的路径列表。
elasticsearch.ssl.keyPassphrase
:
- 用于解密私钥的密码,此值是可选的,因为密钥可能没有加密。
elasticsearch.ssl.verificationMode
:
- 默认:
full
- 控制Elasticsearch所提供证书的验证,有效值为
none
、certificate
和full
,full
执行主机名验证,而certificate
不执行。
elasticsearch.startupTimeout
:
- 默认:
5000
- 在Kibana启动前等待Elasticsearch的毫秒时间。
elasticsearch.url
:
- 默认:
"http://localhost:9200"
- 用于所有查询的Elasticsearch实例的URL。
elasticsearch.username
和elasticsearch.password
:
- 如果你的Elasticsearch受到基本身份验证的保护,这些设置将提供Kibana服务器在启动时用于对Kibana索引进行维护的用户名和密码,你的Kibana用户仍然需要使用Elasticsearch进行身份验证,这是通过Kibana服务器进行的。
elasticsearch.tribe.customHeaders
:
- 默认:
{}
- 发送给Elasticsearch的Header名称和值,任何自定义headers都不能被客户端标headers覆盖,不管
elasticsearch.tribe.requestHeadersWhitelist
配置。
elasticsearch.tribe.pingTimeout
:
- 默认:
elasticsearch.tribe.requestTimeout
设置的值 - 等待Elasticsearch响应ping的时间(毫秒)。
elasticsearch.tribe.requestHeadersWhitelist
:
- 默认:
[ 'authorization' ]
- 发送到Elasticsearch的Kibana客户端headers列表,要发送无客户端headers,请将此值设置为
[]
(空列表)。
elasticsearch.tribe.requestTimeout
:
- 默认:
30000
- 等待后端或Elasticsearch响应的时间(以毫秒为单位),这个值必须是一个正整数。
elasticsearch.tribe.ssl.certificate
和elasticsearch.tribe.ssl.key
:
- 可选设置,提供pem格式的SSL证书和密钥文件的路径,这些文件验证你的Elasticsearch后端使用相同的密钥文件。
elasticsearch.tribe.ssl.certificateAuthorities
:
- 可选设置,使你能够为你的tribe Elasticsearch实例的证书颁发机构指定PEM文件的路径。
elasticsearch.tribe.ssl.keyPassphrase
:
- 用于解密私钥的密码,此值是可选的,因为密钥可能没有加密。
elasticsearch.tribe.ssl.verificationMode
:
- 默认:
full
- 控制证书的验证,有效值为
none
、certificate
和full
,full
执行主机名验证,而certificate
不执行。
elasticsearch.tribe.url
:
- 可供所有查询使用的Elasticsearch tribe实例的可选的URL。
elasticsearch.tribe.username
和elasticsearch.tribe.password
:
- 如果你的Elasticsearch受到基本身份验证的保护,这些设置将提供Kibana服务器在启动时用于对Kibana索引进行维护的用户名和密码,你的Kibana用户仍然需要使用Elasticsearch进行身份验证,这是通过Kibana服务器进行的。
kibana.defaultAppId
:
- 默认:
"discover"
- 要加载的默认应用程序。
kibana.index
:
- 默认:
".kibana"
- Kibana使用Elasticsearch中的索引来存储保存的搜索、可视化和仪表盘,如果索引不存在,Kibana会创建一个新的索引。
logging.dest
:
- 默认:
stdout
- 允许你指定一个文件存储Kibana日志输出。
logging.quiet
:
- 默认:
false
- 将此设置的值设置为
true
,以抑制除错误消息之外的所有日志输出。
logging.silent
:
- 默认:
false
- 将此设置的值设置为
true
以抑制所有日志输出。
logging.verbose
:
- 默认:
false
- 将此设置的值设置为
true
,以记录所有事件,包括系统使用信息和所有请求,在Elastic Cloud Enterprise上支持。
logging.useUTC
:
- 默认:
true
- 将此设置的值设置为
false
,以便使用服务器的时区(而不是UTC)记录事件。
map.includeElasticMapsService
:
- 默认:
true
- 打开或关闭Elastic Maps服务的层是否应该包含在矢量和平铺层选项列表中,通过关闭这个选项,只包含在这里配置的层。
path.data
:
- 默认:
data
- Kibana存储持久数据的路径,不存储在Elasticsearch。
pid.file
:
- 指定Kibana创建进程ID文件的路径。
ops.interval
:
- 默认:
5000
- 设置以毫秒为单位的间隔,以采样系统和处理性能指标,最小值是
100
。
regionmap
:
- 指定用于区域地图可视化的其他矢量层,每个层对象指向一个包含
geojson
特征集的外部向量文件,该文件必须使用WGS84坐标参考系统,并且只包括多边形,如果文件驻留在与Kibana分离的域中,则服务器需要启用内核,以便Kibana可以下载该文件,下面的示例显示了有效的regionmap
配置。
regionmap:
includeElasticMapsService: false
layers:
- name: "Departments of France"
url: "http://my.cors.enabled.server.org/france_departements.geojson"
attribution: "INRAP"
fields:
- name: "department"
description: "Full department name"
- name: "INSEE"
description: "INSEE numeric identifier"
regionmap.layers[].name
:
- 强制性的,提供的地图的描述,在Elastic Cloud Enterprise上支持。
regionmap.layers[].url
:
- 强制性的,由webserver提供的geojson文件的位置,在Elastic Cloud Enterprise上支持。
regionmap.layers[].attribution
:
- 可选的,引用geojson文件的源文件,在Elastic Cloud Enterprise上支持。
regionmap.layers[].fields[]
:
- 强制性的,每个层可以包含多个字段,以指示你希望公开的geojson特性的哪些属性,上面的示例展示了如何定义多个属性,在Elastic Cloud Enterprise上支持。
regionmap.layers[].fields[].name
:
- 强制性的,这个值用于在存储在Elasticsearch中的文档和geojson文件之间进行内部连接,例如,如果geojson中的字段被称为
Location
,并且具有城市名称,那么Elasticsearch中的字段必须具有与Kibana用于查找geoshape数据相同的值,在Elastic Cloud Enterprise上支持。
regionmap.layers[].fields[]. description
:
- 强制性的,在构建区域地图可视化时,在Options选项卡下显示的可读文本,在Elastic Cloud Enterprise上支持。
regionmap.includeElasticMapsService
:
- 打开或关闭Elastic映射服务的层是否应该包含在向量层选项列表中,在Elastic Cloud Enterprise上支持,通过关闭它,将只包括这里配置的层,默认为
true
。
server.basePath
:
- 允许你指定挂载Kibana的路径,如果你运行在代理后面,使用
server.rewriteBasePath
设置告诉Kibana是否应该从接收到的请求中删除basePath,并防止在启动时发出弃用警告,此设置不能以斜杠(/
)结束。
server.rewriteBasePath
:
- 默认:
false
- 指定Kibana是应该重写以
server.basePath
为前缀的请求,还是需要通过反向代理重写请求,在Kibana 6.3之前,这个设置实际上总是为false
,并且开始在Kibana 7.0中默认为true
。
server.customResponseHeaders
:
- 默认:
{}
- Header名称和值,用于将所有响应从Kibana服务器发送到客户端。
server.defaultRoute
:
- 默认:
"/app/kibana"
- 此设置指定在打开Kibana时的默认路由,在打开Kibana时,可以使用此设置修改登录页面。
server.host
:
- 默认:
"localhost"
- 此设置指定后端服务器的主机。
server.maxPayloadBytes
:
- 默认:
1048576
- 传入服务器请求的最大有效负载大小(以字节为单位)。
server.name
:
- 默认:
"your-hostname"
- 标识这个Kibana实例的可读显示名称。
server.port
:
- 默认:
5601
- Kibana由后端服务器提供,此设置指定要使用的端口。
server.ssl.enabled
:
- 默认:
false
- 为从Kibana服务器发送到浏览器的请求启用SSL,当设置为
true
时,server.ssl.certificate
和server.ssl.key
是必需的。
server.ssl.certificate
和server.ssl.key
:
- 分别指向PEM格式SSL证书和SSL密钥文件的路径。
server.ssl.certificateAuthorities
:
- 应该受信任的PEM编码证书文件路径列表。
server.ssl.cipherSuites
:
- 默认:ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, DHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, DHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA256, HIGH,!aNULL, !eNULL, !EXPORT, !DES, !RC4, !MD5, !PSK, !SRP, !CAMELLIA。
- 有关格式和有效选项的详细信息可以通过OpenSSL密码列表格式文档获得。
server.ssl.keyPassphrase
:
- 用于解密私钥的密码,这个值是可选的,因为密钥可能没有被加密。
server.ssl.redirectHttpFromPort
:
- Kibana将绑定到这个端口,并通过配置为
server.port
的端口将所有http请求重定向到https。
server.ssl.supportedProtocols
:
- 默认:TLSv1,TLSv1.1,TLSv1.2。
- 带有版本的受支持协议数组,有效协议:
TLSv1
、TLSv1.1
、TLSv1.2
。
status.allowAnonymous
:
- 默认:
false
。 - 如果启用了身份验证,将其设置为
true
将允许未经身份验证的用户访问Kibana服务器状态API和状态页面。
tilemap.options.attribution
:
- 默认:
©
,Elastic Maps Service"。 - map属性字符串,在Elastic Cloud Enterprise上支持。
tilemap.options.maxZoom
:
- 默认:
10
- 最大缩放级别,在Elastic Cloud Enterprise上支持。
tilemap.options.minZoom
:
- 默认:
1
- 最小缩放级别,在Elastic Cloud Enterprise上支持。
tilemap.options.subdomains
:
- 默认:
false
- 由tile服务使用的子域数组,在Elastic Cloud Enterprise上支持,使用令牌
{s}
指定子域的位置URL。
tilemap.url
:
- Kibana用于在tilemap可视化中显示地图块的tileservice的URL,默认情况下,Kibana从外部元数据服务读取这个url,但是用户仍然可以覆盖这个参数来使用他们自己的Tile Map服务,例如:
"https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"
vega.enableExternalUrls
:
- 默认:
false
- 将此值设置为
true
,允许Vega使用任何URL访问外部数据源和图像,如果为false
,Vega只能从Elasticsearch获得数据。
安全设置
有些设置是敏感的,仅依靠文件系统权限来保护它们的值是不够的,对于这个用例,Kibana提供了一个keystore,以及用于管理keystore中的设置的kibana-keystore
工具。
这里的所有命令都应该作为运行Kibana的用户运行。
创建keystore
要创建kibana.keystore
,使用create
命令:
bin/kibana-keystore create
文件kibana.keystore
将在path.data
配置设置定义的目录中创建。
列出keystore中的设置
使用list
命令可以获得keystore中的设置列表:
bin/kibana-keystore list
添加字符串设置
敏感字符串设置,如Elasticsearch的身份验证凭证,可以使用add
命令添加:
bin/kibana-keystore add the.setting.name.to.set
一旦添加到keystore,这些设置将在启动时自动应用到Kibana实例,举个例子:
bin/kibana-keystore add elasticsearch.username
将提示你提供elasticsearch.username
的值,你的输入将显示为星号。
该工具将提示设置的值,要通过stdin传递值,使用--stdin
标志:
cat /file/containing/setting/value | bin/kibana-keystore add the.setting.name.to.set --stdin
移除设置
要从keystore中移除设置,请使用remove
命令:
bin/kibana-keystore remove the.setting.name.to.remove
参考文档:https://segmentfault.com/a/1190000015784224
posted on 2018-03-29 23:17 myworldworld 阅读(647) 评论(0) 收藏 举报