主机环境
主机名 | IP | 操作系统 | 角色 |
logstash | 192.168.25.129 | CentOS-7.7 | logstash |
es-master | 192.168.25.130 | CentOS-7.7 | elasticsearch主节点/数据节点 |
es-node1 | 192.168.25.131 | CentOS-7.7 | elasticsearch数据节点 |
es-node2-kibana | 192.168.25.128 | CentOS-7.7 | elasticsearch数据节点/kibana |
redis-beat | 192.168.25.132 | CentOS-7.7 | redis/filebeat |
# 软件版本 cerebro-0.9.2 elasticsearch-7.8.0 filebeat-7.8.0 jdk-13.0.2 kibana-7.8.0 logstash-7.8.0
# 修改主机名 [root@localhost ~]# hostnamectl set-hostname logstash [root@localhost ~]# hostnamectl set-hostname es-master [root@localhost ~]# hostnamectl set-hostname es-node1 [root@localhost ~]# hostnamectl set-hostname es-node2-kibana [root@localhost ~]# hostnamectl set-hostname redis-beat
# 修改hosts [root@es-master ~]# cat >> /etc/hosts <<-EOF # 五台机器都需要操作 192.168.25.128 es-node2-kibana 192.168.25.129 logstash 192.168.25.130 es-master 192.168.25.131 es-node1 192.168.25.132 redis-beat EOF # 节点之间互相测试,保证配置正确 [root@es-master ~]# ping logstash [root@es-master ~]# ping es-master [root@es-master ~]# ping es-node1 [root@es-master ~]# ping es-node2-kibana [root@es-master ~]# ping redis-beat
# 关闭防火墙&selinux(所有节点都需要操作) [root@es-master ~]# systemctl stop firewalld.service [root@es-master ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config [root@es-master ~]# setenforce 0
# 时间同步(所有节点都需要操作) [root@es-master ~]# vim /etc/chrony.conf # 编辑配置文件 server4 time1.aliyun.com iburst # 配置时间服务器地址 [root@es-master ~]# systemctl restart chronyd.service # 重启进程 [root@es-master ~]# chronyc sources -v # 查看时间信息 210 Number of sources = 1
节点环境配置
# 部署jdk 'logstash、es-master、es-node1、es-node2-kebana 均需要安装 [root@es-master ~]# yum -y install epel-release.noarch [root@es-master ~]# tar xf jdk-13.0.2_linux-x64_bin.tar.gz -C /usr/local/ [root@es-master ~]# cd /usr/local/ [root@es-master local]# ln -s jdk-13.0.2/ java/ [root@es-master ~]# vim /etc/profile # 添加 java 环境变量 export JAVA_HOME=/usr/local/java export PATH=$JAVA_HOME/bin:$PATH [root@es-master ~]# source /etc/profile # 重载环境变量
# 修改文件限制 'logstash、es-master、es-node1、es-node2-kebana 均需要设置 [root@es-master ~]# cat >>/etc/security/limits.conf <<-EOF # 增加以下内容 * soft nofile 65536 * hard nofile 65536 * soft nproc 32000 * hard nproc 32000 elk soft memlock unlimited elk hard memlock unlimited EOF - `soft nproc` : '单个用户可用的最大进程数量(超过会警告); - `hard nproc` : '单个用户可用的最大进程数量(超过会报错); - `soft nofile` : '可打开的文件描述符的最大数(超过会警告); - `hard nofile` : '可打开的文件描述符的最大数(超过会报错); limits.conf这里的配置,只适用于通过PAM认证登录用户的资源限制,它对 systemd 的 service 的资源限制不生效。登录用户的限制,通过 /etc/security/limits.conf 来配置对于 'systemd service的资源限制',现在放在 /etc/systemd/system.conf 和 /etc/systemd/user.conf这两个文件里面了,主要就是 /etc/systemd/system.conf 这个文件
'logstash、es-master、es-node1、es-node2-kebana 均需要设置 [root@es-master ~]# cat >>/etc/systemd/system.conf<<-EOF DefaultLimitNOFILE=65536 DefaultLimitNPROC=32000 DefaultLimitMEMLOCK=infinity EOF - `nproc` '操作系统级别对每个用户创建的进程数的限制 - `nofile` '是每个进程可以打开的文件数的限制
# 调整虚拟内存&最大并发连接 'logstash、es-master、es-node1、es-node2-kebana 均需要设置 [root@es-master ~]# cat >>/etc/sysctl.conf<<-EOF #增加的内容 vm.max_map_count=655360 fs.file-max=655360 vm.swappiness=0 EOF [root@es-master ~]# sysctl -p - `max_map_count` 文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。如果你的操作系统在NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用。 - `fs.file-max` 决定了系统级别所有进程可以打开的文件描述符的数量限制。 - `swappiness` 的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60
# 给 ELK 用户添加免密 sudo 'logstash、es-master、es-node1、es-node2-kebana 均需要设置 [root@es-master ~]# useradd elk [root@es-master ~]# visudo # 添加以下内容(加入到wheel组) elk ALL=(ALL) NOPASSWD: ALL
# 重启 'logstash、es-master、es-node1、es-node2-kebana 均需要设置 [root@es-master ~]# reboot
安装 Elasticsearch
# 部署elk运行环境 'es-master、es-node1、es-node2-kebana 均需要配置 # 切换用户到 elk [root@es-master]# su - elk # 创建elkaPP目录并设置所有者 [elk@es-master]$ sudo mkdir /usr/local/elkapp # 创建ELK数据目录并设置所有者 [elk@es-master]$ sudo mkdir /usr/local/elkdata # 创建Elasticsearch主目录 [elk@es-master]$ sudo mkdir -p /usr/local/elkdata/es # 创建Elasticsearch数据目录 [elk@es-master]$ sudo mkdir -p /usr/local/elkdata/es/data # 创建Elasticsearch日志目录 [elk@es-master]$ sudo mkdir -p /usr/local/elkdata/es/log # 设置目录权限 [elk@es-master]$ sudo chown -R elk:elk /usr/local/elkapp [elk@es-master]$ sudo chown -R elk:elk /usr/local/elkdata
# 下载elasticsearch 'es-master、es-node1、es-node2-kebana 均需要下载 [elk@es-master]$ cd /usr/local/src [elk@es-master src]$ sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz [elk@es-master src]$ sudo tar -xf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/local/elkapp [elk@es-master local]$ cd elkapp [elk@es-master elkapp]$ sudo ln -s /usr/local/elkapp/elasticsearch-7.8.0/ /usr/local/elkapp/elasticsearch
配置elasticsearch
Elasticsearch 7 目录结构如下: - `bin` : '脚本文件,包括 ES 启动 & 安装插件等等 - `config` : 'elasticsearch.yml(ES 配置文件)、jvm.options(JVM 配置文件)、日志配置文件等等 - `JDK` : '内置的 JDK,JAVA_VERSION="12.0.1" - `lib` : '类库 - `logs` : '日志文件 - `modules` : 'ES 所有模块,包括 X-pack 等 - `plugins` : 'ES 已经安装的插件。默认没有插件 - `data` : 'ES 启动的时候,会有该目录,用来存储文档数据。该目录可以设置
# elasticsearch 配置文件说明 cluster.name: elasticsearch # 配置的集群名称,默认是elasticsearch,es服务会通过广播方式自动连接在同一网段下的es服务,通过多播方式进行通信,同一网段下可以有多个集群,通过集群名称这个属性来区分不同的集群。 node.name: "node-1" # 当前配置所在机器的节点名,你不设置就默认随机指定一个name列表中名字,该name列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。 node.attr.rack: r1 # 向节点添加自定义属性 node.max_local_storage_nodes: 3 # 这个配置限制了单节点上可以开启的ES存储实例的个数,我们需要开多个实例,因此需要把这个配置写到配置文件中,并为这个配置赋值为2或者更高 node.master: true # 指定该节点是否有资格被选举成为node(注意这里只是设置成有资格, 不代表该node一定就是master),默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。 node.data: true # 指定该节点是否存储索引数据,默认为true。 index.number_of_shards: 5 # 设置默认索引分片个数,默认为5片。 index.number_of_replicas: 1 # 设置默认索引副本个数,默认为1个副本。如果采用默认设置,而你集群只配置了一台机器,那么集群的健康度为yellow,也就是所有的数据都是可用的,但是某些复制没有被分配 # (健康度可用 curl 'localhost:9200/_cat/health?v' 查看, 分为绿色、黄色或红色。绿色代表一切正常,集群功能齐全,黄色意味着所有的数据都是可用的,但是某些复制没有被分配,红色则代表因为某些原因,某些数据不可用)。 path.conf: /path/to/conf # 设置配置文件的存储路径,默认是es根目录下的config文件夹。 path.data: /path/to/data # 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例: # path.data: /path/to/data1,/path/to/data2 path.work: /path/to/work # 设置临时文件的存储路径,默认是es根目录下的work文件夹。 path.logs: /path/to/logs # 设置日志文件的存储路径,默认是es根目录下的logs文件夹 path.plugins: /path/to/plugins # 设置插件的存放路径,默认是es根目录下的plugins文件夹, 插件在es里面普遍使用,用来增强原系统核心功能。 bootstrap.memory_lock: true # 设置为true来锁住内存不进行swapping。因为当jvm开始swapping时es的效率 会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。 同时也要允许elasticsearch的进程可以锁住内# # 存,linux下启动es之前可以通过`ulimit -l unlimited`命令设置。 network.host: 192.168.0.1 # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,绑定这台机器的任何一个ip。 # 其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址 transport.tcp.port: 9300 # 设置节点之间交互的tcp端口,默认是9300。 transport.tcp.compress: true # 设置是否压缩tcp传输时的数据,默认为false,不压缩。 http.port: 9200 # 设置对外服务的http端口,默认为9200。 http.enabled: false # 是否使用http协议对外提供服务,默认为true,开启。 gateway.recover_after_nodes: 1 # 设置集群中N个节点启动时进行数据恢复,默认为1。 gateway.recover_after_time: 5m # 设置初始化数据恢复进程的超时时间,默认是5分钟。 gateway.expected_nodes: 2 # 设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。 cluster.routing.allocation.node_initial_primaries_recoveries: 4 # 初始化数据恢复时,并发恢复线程的个数,默认为4。 cluster.routing.allocation.node_concurrent_recoveries: 2 # 添加删除节点或负载均衡时并发恢复线程的个数,默认为4。 indices.recovery.max_size_per_sec: 0 # 设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。 indices.recovery.concurrent_streams: 5 # 设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。 discovery.zen.minimum_master_nodes: 1 # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4) discovery.zen.ping.timeout: 3s # 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。 discovery.zen.ping.multicast.enabled: false # 设置是否打开多播发现节点,默认是true。 discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"] # 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点 # head 插件需要这打开这两个配置 # 是否开启跨域访问 http.cors.enabled: true # 开启跨域访问后的地址限制,*表示无限制 http.cors.allow-origin: “* #开启 xpack 功能,如果要禁止使用密码,请将以下内容注释,直接启动不需要设置密码 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
# 配置主节点 [elk@es-master]$ cd /usr/local/elkapp/elasticsearch/config/ [elk@es-master config]$ mv elasticsearch.yml{,.bak} [elk@es-master config]$ cat elasticsearch.yml | grep -v '^#' cluster.name: my-es node.name: es-master node.master: true node.data: true bootstrap.memory_lock: true path.data: /usr/local/elkdata/es/data path.logs: /usr/local/elkdata/es/logs network.host: 192.168.25.130 http.port: 9200 transport.tcp.port: 9300 discovery.seed_hosts: ["192.168.25.130", "192.168.25.131","192.168.25.128"] cluster.initial_master_nodes: ["es-master"] http.cors.enabled: true http.cors.allow-origin: "*"
# 配置node1数据节点 [elk@es-node1 ~]$ cd /usr/local/elkapp/elasticsearch/config/ [elk@es-node1 config]$ cat elasticsearch.yml | grep -v '^#' cluster.name: my-es node.name: es-node1 node.data: true bootstrap.memory_lock: true path.data: /usr/local/elkdata/es/data path.logs: /usr/local/elkdata/es/logs network.host: 192.168.25.131 http.port: 9200 transport.tcp.port: 9300 discovery.seed_hosts: ["192.168.25.130", "192.168.25.131","192.168.25.128"] cluster.initial_master_nodes: ["es-master"]
# 配置node2数据节点 [elk@es-node2-kibana ~]$ cd /usr/local/elkapp/elasticsearch/config/ [elk@es-node2-kibana config]$ cat elasticsearch.yml | grep -v '^#' cluster.name: my-es node.name: es-node2 node.data: true bootstrap.memory_lock: true path.data: /usr/local/elkdata/es/data path.logs: /usr/local/elkdata/es/logs network.host: 192.168.25.128 http.port: 9200 transport.tcp.port: 9300 discovery.seed_hosts: ["192.168.25.130", "192.168.25.131","192.168.25.128"] cluster.initial_master_nodes: ["es-master"]
# 重新赋权,否则服务启动不了,也不会报错 'es-master、es-node1、es-node2-kebana 均需要 [elk@es-master]$ sudo chown -R elk:elk /usr/local/elkapp [elk@es-master]$ sudo chown -R elk:elk /usr/local/elkdata
配置elasticsearch通过systemctl管理启动
[elk@es-master ~]$ sudo vim /etc/systemd/system/elasticsearch.service # 内容如下 [Unit] Description=elasticsearch [Service] User=elk Group=elk LimitMEMLOCK=infinity LimitNOFILE=100000 LimitNPROC=100000 ExecStart=/usr/local/elkapp/elasticsearch/bin/elasticsearch [Install] WantedBy=multi-user.target [elk@es-master ~]$ sudo systemctl daemon-reload [elk@es-master ~]$ sudo systemctl start elasticsearch [elk@es-master ~]$ sudo systemctl enable elasticsearch
测试elasticsearch集群
# 查看是否有9200的端口 [elk@es-master ~]$ sudo ss -anput | grep 9200 tcp LISTEN 0 128 ::ffff:192.168.25.130:9200 :::* users:(("java",pid=14571,fd=318))
# 查看elasticsearch进程 [elk@es-master ~]$ ps -ef | grep elasticsearch elk 14571 1 4 13:29 ? 00:00:30 /usr/local/elkapp/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -XX:+ShowCodeDetailsInExceptionMessages -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=SPI,COMPAT -Xms1g -Xmx1g -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -Djava.io.tmpdir=/tmp/elasticsearch-3697254133112113797 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -XX:MaxDirectMemorySize=536870912 -Des.path.home=/usr/local/elkapp/elasticsearch -Des.path.conf=/usr/local/elkapp/elasticsearch/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true -cp /usr/local/elkapp/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch elk 14759 14571 0 13:29 ? 00:00:00 /usr/local/elkapp/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller elk 14832 9365 0 13:40 pts/0 00:00:00 grep --color=auto elasticsearch
浏览器访问测试(firefox体验最佳)
/查看单个集群节点状态 http://192.168.25.130:9200/ name : "es-master" cluster_name : "my-es" cluster_uuid : "kYVJyxh_SyGM59Xnw95Zyw" version number : "7.8.0" build_flavor : "default" build_type : "tar" build_hash : "757314695644ea9a1dc2fecd26d1a43856725e65" build_date : "2020-06-14T19:35:50.234439Z" build_snapshot : false lucene_version : "8.5.1" minimum_wire_compatibility_version : "6.8.0", minimum_index_compatibility_version : "6.0.0-beta1" tagline : "You Know, for Search"
/查看集群健康状态 http://192.168.25.130:9200/_cluster/health # firefox cluster_name :"my-es" status :"green" // 集群状态 timed_out :false number_of_nodes :3 number_of_data_nodes :3 // 数据节点数量 active_primary_shards :1 // 主分片数量 active_shards :2 // 可用的分片数量 relocating_shards :0 // 正在重新分配的分片数量,在新加或者减少节点的时候会发生 initializing_shards :0 // 正在初始化的分片数量,新建索引或者刚启动会存在,时间很短 unassigned_shards :0 // 没有分配的分片,一般就是那些名存实不存的副本分片 delayed_unassigned_shards :0 // 延迟未分配的分片数量 number_of_pending_tasks :0 // 等待执行任务数量 number_of_in_flight_fetch :0 // 正在执行的数量 task_max_waiting_in_queue_millis :0 // 任务在队列中等待的较大时间(毫秒) active_shards_percent_as_number :100.0 // 任务在队列中等待的较大时间(毫秒) // Elasticsearch 集群健康状态分为三种 'green' // 最健康得状态,说明所有的分片包括备份都可用; 这种情况Elasticsearch集群所有的主分片和副本分片都已分配, Elasticsearch集群是 100% 可用的。 'yellow' // 基本的分片可用,但是备份不可用(或者是没有备份); 这种情况Elasticsearch集群所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果 更多的 分片消失,你就会丢数据了。把 yellow 想象成一个需要及时调查的警告。 'red' // 部分的分片可用,表明分片有一部分损坏。此时执行查询部分数据仍然可以查到,遇到这种情况,还是赶快解决比较好; 这种情况Elasticsearch集群至少一个主分片(以及它的全部副本)都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。
# 查看ES集群支持的选项 http://192.168.25.128:9200/_cat =^.^= /cat/allocation # 查看磁盘的分配情况 /cat/shards # 查看节点包含哪些分片的详细视图 /cat/shards/{index} # 查看指定索引节点包含哪些分片的详细视图 /cat/master # 返回关于主节点的相关信息 /cat/nodes # 查看集群的节点情况 /cat/tasks # 查看es集群内部任务执行的情况 /cat/indices # 查看集群的索引健康状态 /cat/indices/{index} # 查看集群的索引健康状态(指定索引) /cat/segments # 查询集群中Lucene数据段的信息,segment是ES中一个数据段,每次refresh都会生成一个新的segmen。elasticsearch有一个后台进程专门负责segment的合并,它会把小segments合并成更大的segments,然后反复这样 /cat/segments/{index} # 查询集群中Lucene数据段的信息(指定索引) /cat/count # 返回集群中文档的计数 /cat/count/{index} # 返回指定索引的文档计数 /cat/recovery # 查看索引回复的情况 /cat/recovery/{index} # 查看指定索引回复的情况 /cat/health # 查看集群健康状态 /cat/pending_tasks # 查询集群中被挂起的任务 /cat/aliases # 查看集群别名列表 /cat/aliases/{alias} # 查看指定索引的别名情况 /cat/thread_pool # 查询es内部线程池的情况 /cat/thread_pool/{thread_pools} # 查询es内部线程池中指定线程的情况 /cat/plugins # 查询es插件列表 /cat/fielddata # 查询集群中每个节点中的fileddata所使用的堆内存 /cat/fielddata/{fields} # 查询集群中每个节点中的fields所使用的堆内存 /cat/nodeattrs # 查看集群节点的属性值 /cat/repositories # 查看集群的快照存储库 /cat/snapshots/{repository} # 返回有关存储在一个或多个存储库中的快照的信息 /_cat/templates # 集群中索引模板的信息
# 查看 ES 节点信息 # 命令添加?v是人性化显示,下面带星号的是我们的master节点 http://192.168.25.130:9200/_cat/nodes?v ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 192.168.25.130 42 96 0 0.22 0.14 0.09 dilmrt - es-master 192.168.25.128 12 93 0 0.03 0.04 0.05 dilmrt - es-node2 192.168.25.131 55 96 0 0.00 0.03 0.05 dilmrt * es-node1 - `heap.percent` ' 堆内存占用百分比 - `ram.percent` ' 内存占用百分比 - `cpu` ' CPU占用百分比 - `master` ' * 表示节点是集群中的主节点 - `name` ' 节点名
# 查看master节点信息 http://192.168.25.130:9200/_cat/master?v id host ip node qOQMbpHkSAqNIA7wCdkA9w 192.168.25.131 192.168.25.131 es-node1
# 查看 ES 集群的健康状态 http://192.168.25.130:9200/_cat/health?v epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1594039407 12:43:27 my-es green 3 3 2 1 0 0 0 0 - 100.0% - `cluster ` '集群名称 - `status` '集群状态 green代表健康;yellow代表分配了所有主分片,但至少缺少一个副本,此时集群数据仍旧完整;red代表部分主分片不可用,可能已经丢失数据。 - `node.total` '代表在线的节点总数量 - `node.data` '代表在线的数据节点的数量 - `shards, active_shards` '存活的分片数量 - `pri,active_primary_shards` '存活的主分片数量 正常情况下 shards的数量是pri的两倍。 - `relo, relocating_shards` '迁移中的分片数量,正常情况为 0 - `init, initializing_shards` '初始化中的分片数量 正常情况为 0 - `unassign unassigned_shards` '未分配的分片 正常情况为 0 - `pending_tasks` '准备中的任务,任务指迁移分片等 正常情况为 0 - `max_task_wait_time` '任务最长等待时间 - `active_shards_percent` '正常分片百分比 正常情况为 100%
# 查看索引(列出所有索引, 并展示索引基本信息) http://192.168.25.130:9200/_cat/indices?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open index_name CyrKHbCAQcOJMHQU_K5kHg 1 1 1 0 8.7kb 4.3kb - `health` '索引的健康状态 - `index` '索引名 - `pri` '索引主分片数量 - `rep` '索引复制分片数量 - `store.size` '索引主分片 复制分片 总占用存储空间 - `pri.store.size` '索引总占用空间, 不计算复制分片 占用空间
# 查看分片信息(列出集群中所有分片, 并展示基础信息) http://192.168.25.130:9200/_cat/shards?v index shard prirep state docs store ip node index_name 0 p STARTED 1 4.3kb 192.168.25.128 es-node2 index_name 0 r STARTED 1 4.3kb 192.168.25.131 es-node1 - `index` '索引名称 - `shard` '分片序号 - `prirep` 'p表示该分片是主分片, r 表示该分片是复制分片 - `store` '该分片占用存储空间 - `node` '所属节点节点名 - `docs` '分片存放的文档数
# 查看各节点机器存储信息 http://192.168.25.130:9200/_cat/allocation?v' shards disk.indices disk.used disk.avail disk.total disk.percent host ip node 0 0b 2.9gb 92gb 94.9gb 3 192.168.25.131 192.168.25.131 es-node1 0 0b 3.2gb 91.6gb 94.9gb 3 192.168.25.128 192.168.25.128 es-node2 0 0b 3.4gb 91.4gb 94.9gb 3 192.168.25.130 192.168.25.130 es-master - `shards` '节点说承载的分片数 - `disk.indices` '索引占用的空间大小 - `disk.used` '节点所在机器已使用磁盘空间 - `disk.avail` '节点可用磁盘空间 - `disk.total` '节点总的磁盘空间 - `disk.percent` '节点磁盘使用百分比 - `ip` '节点所属机器IP地址 - `node` '节点名