监控对于一个组件和系统来说是必不可少的,通常情况下,一个全面健康监控可以帮助我们在出现生产事故之前即时发现问题,并处理掉,下面汇总一些个人对 Aerospike 使用中关注的监控指标。
- client_delete_error :客户端 delete transaction 错误失败的个数。
- client_delete_timeout :客户端 delete transaction 超时个数。
- client_read_error :客户端 read transaction 错误个数。例如:无效 set 名称,不可用(SC模式), predexp filter 失败,key 不存在,设备错误(I/O 错误),key busy(SC 重复解析),bitwise期间问题,HLL OR CDT。
- client_read_timeout :客户端 read transaction 超时个数。
- client_tsvc_error :在尝试处理 transaction 之前,transaction service 中失败的客户端 transaction 个数。例如 协议错误 或 权限校验错误。在 'strong-consistency' 开启的命名空间,这包含 'unavailable_partitions' 和 'dead_partitions'。
- client_tsvc_timeout :在尝试处理 transaction 之前,在 transaction service 中超时的客户端 transaction 个数。在这个阶段,transaction 还没有被识别为 read/write,但是 namespace 是已知的。4.7 之前的八本可能原因是 transaction 队列中阻塞(transaction 线程处理效率不够高);4.7 及更高的版本中,可能没有足够的 service thread 来跟上工作负载。属于此类别的其他常见情况是在 rw-hash 中等待后必须重试的 transaction(例如热键)以及客户端设置的超时过于激进的用例。
- client_udf_error :客户端发起的失败的 udf transaction 数。不包括超时。有关错误的更多信息,请参阅服务器日志文件。请注意,错误也会返回给客户端。
- client_udf_timeout :客户端发起的超时的 udf transaction 数。超时错误返回给客户端。
- client_write_error :客户端 write transaction 错误失败数量。将包括常见错误,如 fail_generation、fail_key_busy、fail_record_too_big、fail_xdr_forbidden 以及其他一些不太常见的错误。
- client_write_timeout :服务器上超时的客户端 write transaction 数。在没有正在进行迁移的稳定集群上,此指标将指示副本写入超时的数量。超时错误将返回给客户端。在启用强一致性的命名空间中,记录被标记为未复制并将重新复制。以下情况可能会导致此指标增加:每个写副本失败(master失败)最终都会增加 client_write_timeout 指标。如果为写入启用重复解析(默认),则在迁移期间,如果重复解析期间出现超时,并且可能在我们在 master 端应用写入之前发生超时,则 client_write_timeout 指标也会增加。有关服务器何时检查超时的详细信息,请参阅 transaction-max-ms 配置参数。transaction也可以在transaction flow中提前超时,在这种情况下,client_tsvc_timeout 统计数据会增加。
- clock_skew_stop_writes :namespace 将在客户端停止写入时为 true。对于启用了强一致性的命名空间,如果时钟偏差超出容限(通常为 20 秒),则为 true。对于运行 4.5.1 或更高版本并启用 nsup(即 nsup-period 不为零)的可用模式 (AP) 命名空间,如果集群时钟偏差超过 40 秒,则为真。在这种情况下,nsup 也不会运行,禁用记录过期和驱逐,直到时钟偏差回落到可容忍的范围内。
- device_available_pct :测量命名空间中所有设备的最小连续磁盘空间。从 3.9 版开始替换 available_pct。如果此值低于 min-avail-pct,命名空间将是只读的(停止写入)。命名空间中所有配置的设备具有相同的大小很重要,否则,即使在其他设备之间有大量可用空间时,device_available_pct 也可能很低。不要与 device_free_pct 混淆,它表示命名空间中所有设备的可用空间量,并且不考虑碎片。下面是一个示例来表示 device_free_pct 和 device_available_pct 之间的区别。让我们假设给定命名空间有 5 个 100MB 的设备,其中每个设备有 25MB 的数据,分布在 50 个写入块中(假设写入块大小为 1MB):device_free_pct 将是 75%。device_available_pct 将为 50%。如果分布不均匀(通常不是完全均匀),则 device_available_pct 将代表具有最少空闲块的设备。
- device_free_pct :此命名空间的可用磁盘容量百分比。这是命名空间中所有设备的可用存储量。当所有设备的使用百分比(由 100 - device_free_pct 表示)超过配置的 high-water-disk-pct 时,将触发驱逐。
- effective_replication_factor :命名空间的有效复制因子。配置的命名空间复制因子作为命名空间配置的一部分在服务器版本 3.15.1.3 及更高版本的 replication-factor 和早期版本的 repl-factor 下返回。如果集群大小小于设置的复制因子(在这种情况下,有效复制因子将与集群大小匹配)或达到 paxos-single-replica-limit 大小,则有效复制因子小于设置的复制因子(在这种情况下,有效复制因子为 1)。
- evict_ttl :当前驱逐深度,或已驱逐记录的最高 ttl,以秒为单位。
- evict_void_time :当前驱逐深度,表示为自 2010 年 1 月 1 日 UTC 以来的无效时间(以秒为单位)。
- evicted_objects :自服务器启动以来,从该节点上的该命名空间逐出的对象数。
- expired_objects :自服务器启动以来,此节点上此命名空间中过期的对象数。
- fail_record_too_big :由于记录太大而导致 write transaction失败的次数超过了写入块大小或最大记录大小。只计算主端的客户端写入失败。从 3.9 版开始替换 err_write_fail_record_too_big。
- hwm_breached :如果为 true,则 Aerospike 已违反此命名空间的“high-water-[disk|memory]-pct”。
- memory_free_pct :此命名空间的可用内存容量百分比。
- memory_used_bytes :此命名空间在此节点上使用的内存总字节数。这是针对 high-water-memory-pct 和 stop-writes-pct 阈值使用的指标。它代表以下值的总和: memory_used_data_bytes 、[memory_used_index_bytes] (https://docs.aerospike.com/docs/reference/metrics/index.html?show-removed=1#memory_used_index_bytes)、memory_used_set_index_bytes(version 5.6+)、memory_used_sindex_bytes。节点上分配的内存总量(企业版中的 primary index 共享内存除外)请参考 heap_allocated_kbytes。
- memory_used_data_bytes :数据占用的内存量。有关命名空间占用的总内存,请参阅 memory_used_bytes。
- memory_used_index_bytes :此命名空间的索引占用的内存量。默认情况下,这将在企业版的共享内存中分配\n(索引类型 shmem)。
- memory_used_set_index_bytes :此节点上此命名空间的集合索引占用的内存量。该命名空间占用的总内存请参阅memory_used_bytes。
- non_expirable_objects :此命名空间中具有不可过期 TTL(值 0 的 TTL)的记录数。从 3.9 版开始由 non_expirable_objects 替换。
- objects :此节点在此命名空间中的记录数。不包括tombstones。
- stop_writes :如果为 true,则此命名空间当前不允许写入。将返回错误代码 22。请注意,仍然允许迁移写入以及配置文件写入。只有客户端发起的写入将被拒绝。如果违反以下任一条件,就会发生这种情况:min-avail-pct、stop-writes-pct 或 xdr-min-digestlog-free-pct。
storage-engine.device[ix].defrag_q
:排队等待在设备 [ix] 上进行碎片整理的 wblock 的数量。 'ix' 是设备索引。例如,storage-engine.device[0]=/dev/xvd1 和 storage-engine.device[1]=/dev/xvc1 用于配置中指定的 2 个设备。storage-engine.device[ix].used_bytes
:用于设备 [ix] 上数据的字节数。 'ix' 是设备索引。例如,storage-engine.device[0]=/dev/xvd1 和 storage-engine.device[1]=/dev/xvc1 用于配置中指定的 2 个设备。storage-engine.file[ix].defrag_q
:排队等待在文件 [ix] 上进行碎片整理的 wblock 的数量。 'ix' 是文件索引。例如,storage-engine.file[0]=/opt/aerospike/test0.dat 和 storage-engine.file[1]=/opt/aerospike/test2.dat 用于配置中指定的 2 个文件。storage-engine.file[ix].used_bytes
:用于文件 [ix] 上数据的字节数。 'ix' 是文件索引。例如,storage-engine.file[0]=/opt/aerospike/test0.dat 和 storage-engine.file[1]=/opt/aerospike/test2.dat 用于配置中指定的 2 个文件。- client_connections :与此节点的活动客户端连接数。也可在 fds proto 代码行的日志中找到。<5.6>
- client_connections_opened :自节点启动以来创建到该节点的客户端连接数。应密切监视或警告 client_connections_opened 或 client_connections_closed 之一。也可在 fds proto 代码行的日志中找到。<5.6>
- cluster_clock_skew_ms :集群中节点之间的当前最大时钟偏差(以毫秒为单位)。违反 cluster_clock_skew_stop_writes_sec 阈值时将触发clock_skew_stop_writes。对于任何 Aerospike 版本上的强一致性命名空间,此阈值通常为 20 秒,对于启用 nsup(即 nsup-period 不为零)且 Aerospike 版本为 4.5.1 或更高版本的 AP 命名空间,此阈值通常为 40 秒。
- cluster_integrity :如果为 false,则表示集群内部存在完整性问题,这意味着某些节点出现故障或死亡。如果该节点处于活动状态并且报告为孤立节点或属于某个其他集群的一部分,则该节点被视为有故障。故障节点的另一个条件是它处于活动状态,但具有与集群其余部分不匹配的集群协议标识符。当为 true 时,表示集群处于一个整体和完整的状态(就它看到的并且能够连接到所有相关的节点而言)。有关集群完整性故障的信息也会重复记录到服务器日志文件中。
- cluster_is_member :为false时,表示该节点未加入集群;也就是说,它是一个孤儿。如果为 true,则表示该节点已加入集群。
- fabric_connections :与此节点的活动结构连接数。也可在 fds proto 代码行的日志中找到。
- fabric_connections_opened :自节点启动以来创建到该节点的结构连接数。也可在 fds proto 代码行的日志中找到。
- heap_efficiency_pct :提供 jemalloc 堆碎片的指示。这表示 heap_allocated_kbytes / heap_mapped_kbytes 比率。较低的数字表示较高的碎片率。
- heartbeat_connections :与此节点的活动心跳连接数。也可在 fds proto 代码行的日志中找到。
- heartbeat_connections_opened :自节点启动以来创建到该节点的心跳连接数。也可在 fds proto 代码行的日志中找到。
- process_cpu_pct :asd 进程的 CPU 使用率百分比。
- query_long_running :在系统中尝试过的长时间运行的查询数(查询所选记录超过 query_threshold)。