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 的运行状态。

相关推荐
小黑_深呼吸5 天前
Prometheus实战教程:k8s平台-Redis监控案例
运维·kubernetes·prometheus·监控
小马爱打代码11 天前
Spring Boot Actuator - 应用监控与管理
spring boot·监控
ak啊20 天前
基于 Prometheus 的后端服务性能故障监控方案
监控
刘大猫2621 天前
Arthas monitor(方法执行监控)
人工智能·后端·监控
ak啊22 天前
基于Python的自动化运维中服务器性能监控与告警
python·监控
ak啊1 个月前
Sentry 私有化部署监控前端应用
监控
vivo互联网技术1 个月前
vivo Trace 监控追求极致的建设历程
监控
企鹅侠客1 个月前
Prometheus告警从触发到收到通知延迟在哪?
运维·prometheus·监控
cxy_61 个月前
centos7系统搭建nagios监控
监控·nagios