Neo4j 可观测性最佳实践

Neo4j 介绍

Neo4j 是一款领先的图数据库管理系统,采用图数据模型来表示和存储数据。它以节点、关系和属性的形式组织数据,节点代表实体,关系表示节点间的连接,属性则为节点和关系附加信息。Neo4j 使用 Cypher 查询语言,提供高效的图数据存储、检索和操作能力,尤其擅长处理复杂的关系查询和路径查找,广泛应用于社交网络、推荐系统、知识图谱等领域。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

前置条件

  • 安装 Neo4j 服务:参见官方安装文档
  • 验证是否正确安装:在浏览器访问网址 <ip>:7474 可以进入 Neo4j 管理界面。
  • 打开 Neo4j Prometheus 端口,找到并编辑 Neo4j 启动配置文件,通常是在 /etc/neo4j/neo4j.conf,尾部追加,参见官方配置文档
ini 复制代码
# Enable the Prometheus endpoint. Default is false.
server.metrics.prometheus.enabled=true
# The hostname and port to use as Prometheus endpoint.
# A socket address is in the format <hostname>, <hostname>:<port>, or :<port>.
# If missing, the port or hostname is acquired from server.default_listen_address.
# The default is localhost:2004.
server.metrics.prometheus.endpoint=0.0.0.0:2004
  • 重启 Neo4j 服务

采集器配置

主机安装

1、安装 DataKit

2、配置采集器

进入 DataKit 安装目录下的 conf.d/neo4j 目录,复制 neo4j.conf.sample 并命名为 neo4j.conf。示例如下:

ini 复制代码
[[inputs.neo4j]]
  ## Exporter URLs.
  urls = ["http://127.0.0.1:2004/metrics"]

  ## TLS configuration.
  tls_open = false
  # tls_ca = "/tmp/ca.crt"
  # tls_cert = "/tmp/peer.crt"
  # tls_key = "/tmp/peer.key"

  ## Set to 'true' to enable election.
  election = true

  ## disable setting host tag for this input
  disable_host_tag = false

  ## disable setting instance tag for this input
  disable_instance_tag = false

  ## Customize tags.
  # [inputs.neo4j.tags]
    # some_tag = "some_value"
    # more_tag = "some_other_value"

  ## (Optional) Collect interval: (defaults to "30s").
  # interval = "30s

3、重启 DataKit

Kubernetes 安装

目前可以通过 ConfigMap 方式注入采集器配置来开启采集器。

关键指标

Metric 描述 Unit
bolt_sessions_started (仅适用于 neo4j.v3) 自此实例启动以来启动的总 Bolt 会话数。 count
database_check_point_duration 上一个检查点事件的持续时间(以毫秒为单位)。检查点通常需要几秒到几分钟。长时间的检查点可能会引发问题,因为这些检查点在数据库停止、进行热备份以及定期执行时会被调用。超过 30 分钟的值应引起关注。 ms
database_check_point_events_total 到目前为止已执行的检查点事件总数。 count
database_check_point_flushed_bytes 在上一个检查点事件期间累积刷新的字节数。 count
database_check_point_io_limit 上一个检查点事件期间使用的 IO 限制。 count
database_check_point_io_performed 在上一个检查点事件期间从 Neo4j 角度执行的 IO 数量。 count
database_check_point_limit_millis 上一个检查点期间使用的限制时间(以毫秒为单位)。 ms
database_check_point_limit_times 上一个检查点期间使用的限制次数。 ms
database_check_point_pages_flushed 在上一个检查点事件期间刷新的页面数。 count
database_check_point_total_time_total 到目前为止花费在检查点上的总时间(以毫秒为单位)。 ms
database_cluster_catchup_tx_pull_requests_received_total 从次要节点接收到的事务拉取请求总数。 count
database_cluster_discovery_cluster_converged 发现集群收敛状态。 count
database_cluster_discovery_cluster_members 发现集群成员数量。 count
database_cluster_discovery_cluster_unreachable 发现集群不可达成员数量。 count

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 "Neo4j", 选择 "Neo4j监控视图",点击 "确定" 即可添加视图。

监控器(告警)

垃圾回收时间过长

垃圾回收时间反映了 JVM 的内存管理性能。过长的垃圾回收时间可能表明内存分配存在问题,或者应用程序产生了过多的垃圾对象,导致系统性能下降。

页面缓存命中率过低

页面缓存命中率是衡量数据库 I/O 性能的关键指标。高缓存命中率意味着数据库能够高效地利用缓存,减少磁盘 I/O 操作,提高查询性能。如果命中率过低,可能表明缓存配置不足或存在大量的随机 I/O 操作。

数据库查询时间过长

查询执行时间直接反映了数据库的响应速度和性能。如果该指标值过高或波动较大,可能表明数据库存在性能瓶颈或负载过高。

总结

Neo4j 作为一款高性能的图数据库,其性能监控对于确保数据查询效率和整体系统稳定性具有重要意义。通过合理利用观测云等监控工具,可以全面、实时地监控 Neo4j 的运行状态。

相关推荐
北京盛世宏博10 小时前
老旧档案库房环境恒温恒湿自动化改造:不破坏原有库房结构的轻量化集成方案
监控·档案温湿度
行百里er1 天前
Spring Insight 里如何画出服务拓扑
spring boot·spring cloud·监控
行百里er2 天前
Spring Insight 里如何对 Span 进行清洗
spring boot·spring cloud·监控
盛世宏博智慧档案3 天前
户外配电柜为什么要装POE供电以太网温湿度传感器?
服务器·网络·人工智能·监控·温湿度·配电柜
行百里er4 天前
Spring Insight 里收到的 Span 是怎么存下来的
spring boot·spring·监控
行百里er5 天前
Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
spring boot·spring cloud·监控
SkyWalking中文站6 天前
Horizon UI 1.0 正式发布:SkyWalking 新一代控制台接棒 Booster
运维·监控·自动化运维
行百里er6 天前
BlockingQueue:异步批量上报
spring boot·spring cloud·监控
IT界的老黄牛6 天前
Prometheus TSDB 拆不出来、也存不了一年:4 条外部存储出路 + 容量测算
prometheus·时序数据库·监控·thanos·victoriametrics·remote_write
IT界的老黄牛8 天前
Jenkins 监控一条龙:接入、看板 9964、11 条告警规则直接抄走
jenkins·grafana·prometheus·监控·ci-cd·告警规则