Neo4j 可观测性最佳实践
Neo4j 介绍
Neo4j 是一款领先的图数据库管理系统,采用图数据模型来表示和存储数据。它以节点、关系和属性的形式组织数据,节点代表实体,关系表示节点间的连接,属性则为节点和关系附加信息。Neo4j 使用 Cypher 查询语言,提供高效的图数据存储、检索和操作能力,尤其擅长处理复杂的关系查询和路径查找,广泛应用于社交网络、推荐系统、知识图谱等领域。
观测云
观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。
前置条件
- 安装 Neo4j 服务:参见官方安装文档。
- 验证是否正确安装:在浏览器访问网址
<ip>:7474
可以进入 Neo4j 管理界面。 - 打开 Neo4j Prometheus 端口,找到并编辑 Neo4j 启动配置文件,通常是在
/etc/neo4j/neo4j.conf
,尾部追加,参见官方配置文档。
# 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
。示例如下:
[[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 inputdisable_host_tag = false## disable setting instance tag for this inputdisable_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 的运行状态。
相关文章:

Neo4j 可观测性最佳实践
Neo4j 介绍 Neo4j 是一款领先的图数据库管理系统,采用图数据模型来表示和存储数据。它以节点、关系和属性的形式组织数据,节点代表实体,关系表示节点间的连接,属性则为节点和关系附加信息。Neo4j 使用 Cypher 查询语言࿰…...
JAVA服务内存缓慢上涨,年轻代GC正常但Full GC频繁,如何定位?
1. 分析 : 年轻代GC正常,说明年轻代的对象回收没有问题,可能大部分对象都是朝生夕死的,所以Minor GC能有效清理。但Full GC频繁,通常意味着老年代空间不足,导致频繁进行Full GC来回收老年代。而内存缓慢上…...
C++入门(讲解1)
1. namespace的定义 1.1 定义命名空间,需要用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中就是命名空间的成员。命名空间中可以定义变量/函数/类型等。 1.2 namespace的本质是定义出一个域,这个…...
react的ant-design-pro框架左侧菜单修改为动态路由
在使用 React 框架结合 Ant Design Pro 进行项目开发时,动态路由的修改是一项常见且重要的任务。动态路由能够根据用户的角色、权限或者其他运行时的条件来展示不同的页面内容,极大地提升了应用的灵活性和安全性。本文将结合一个完整的示例项目ÿ…...

【教程】Windows通过网线共享网络给其它设备
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 1、打开“控制面板”。 2、点击“网络和共享中心”。 3、点击“更改适配器设置”。 4、选中要共享的网络适配器,右击选中“属性”。 5、勾选…...

百度AI开发者大会:连发多款AI应用,覆盖AI数字人等热门赛道
4月25日,Create2025百度AI开发者大会在武汉隆重举办。百度创始人李彦宏发表了题为《模型的世界 应用的天下》的演讲。60分钟的演讲中,李彦宏发布了两大模型,多款热门AI应用,并宣布将帮助开发者全面拥抱MCP。 当天发布的文心大模型…...

Java 线程的六种状态与完整生命周期详解
🚀 Java 线程的几种状态详解 在 Java 中,线程状态(Thread State)是由 Thread.State 枚举定义的,总共有六种: 状态含义典型场景示例NEW新建状态,线程对象刚创建,还未调用 start() 方…...

05--Altium Designer(AD)的详细安装
一、软件的下载 Altium Designer官网下载 1、临近五一的假期,想着搞个项目,且这个项目与PCB有关系,所以就下这个软件来玩玩。下面保姆级教大家安装。 2、选择适合自己的版本下载(我安装的是24的) 3、软件安装 1.下…...
2:QT联合HALCON编程—图像显示放大缩小
1.声明事件 #include <HalconCpp.h> using namespace HalconCpp;#include <QCloseEvent>//滚轮事件 2.在.h文件中声明和定义公共全局变量,以及图像缩放的函数 void wheelEvent(QWheelEvent *event);//定义函数HTuple wcRow0, wcRow1, wcCol0, wcCol1,m…...

Java 队列与阻塞队列全面解析:从 Queue 到 TransferQueue 的实现与应用
文章目录 Queue队列QueueDeque 阻塞队列BlockingQueueArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueSynchronousQueueDelayQueue BlockingDequeLinkedBlockingDeque TransferQueueLinkedTransferQueue Queue Queue(队列)是一种特殊的线性…...
服务器虚拟化:技术解析与实践指南
在信息技术飞速发展的今天,企业对服务器资源的需求日益增长,传统物理服务器存在资源利用率低、部署周期长、管理成本高等问题。服务器虚拟化技术应运而生,它通过将物理服务器的计算、存储、网络等资源进行抽象和整合,划分成多个相互隔离的虚拟服务器,从而提高资源利用率、…...

【蓝桥杯省赛真题56】Scratch抓不住的蜜蜂 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
目录 scratch抓不住的蜜蜂 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 四、程序编写 五、考点分析 六、推荐资料 1、scratch资料 2、python资料 3、C++资料 scratch抓不住的蜜蜂 第十五届青少年蓝桥…...
线程池(二):深入剖析synchronized关键字的底层原理
线程池(二):深入剖析synchronized关键字的底层原理 线程池(二):深入剖析synchronized关键字的底层原理一、基本使用1.1 修饰实例方法1.2 修饰静态方法1.3 修饰代码块 二、Monitor2.1 Monitor的概念2.2 Moni…...
【线段树】P8539 「Wdoi-2」来自地上的支援|普及+
P8539 「Wdoi-2」来自地上的支援 题目背景 波光粼粼的山顶湖与庄严神圣的神社之下,是一座复合型活火山。 沿幻想风穴而下,便能到达火山之下,废弃已久的地狱原址。 在旧地狱中,有一座大都市。那里是旧地狱还是地狱的时候在那工作…...

《TCP/IP详解 卷1:协议》之第七、八章:Ping Traceroute
目录 一、ICMP回显请求和回显应答 1、ICMP回显请求 2、ICMP回显应答 二、ARP高速缓存 三、IP记录路由选项(Record Route,RR) 1、记录路由选项的工作过程 2、RR 选项的 IP 头部格式 2.1、RR 请求 2.2、RR响应 四、ping 的去返路径 五…...
Leetcode:1. 两数之和
题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示…...
【Java学习笔记】冒泡排序
冒泡排序 思想:经过一轮遍历比较,把最大的放在数组的末尾 int[] a {3, 2, 1}; for( int i 0; i < a.length-1; i){for( int j 0; j < a.length-1-i; j){if(a[j] > a[j1]){int temp a[j];a[j] a[j1];a[j1] temp;}} } for( int i 0; i &…...
【数字图像处理】立体视觉基础(2)
相机标定 【1】相机标定的概念 相机参数:相机成像的几何模型的参数 相机标定:求解参数的过程 【2】相机标定的作用 (1)求出相机的内、外参数,以及畸变参数 (2)校正镜头畸变影响,…...

NtripShare 2025第一季度主要技术进展
GNSS方面 1、开源GNSS接收机配置软件基础版本。 2、商业版本GNSS接收机配置软件,增加PPP、文件保存、前端解算(静态、RTK-Static),前端坐标转换。 3、GNSS接收机配置软件全面适配米尔T133i硬件方案。 视觉检测方面 1、做出第…...

头歌实训之存储过程、函数与触发器
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...

【华为】防火墙双击热备-之-主备模式-单外网线路-分享
FW1和FW2的业务接口都工作在三层,上行连接二层交换机。上行交换机连接运营商的接入点,运营商为企业分配的IP地址为100.100.100.2。现在希望FW1和FW2以主备备份方式工作。正常情况下,流量通过FW1转发;当FW1出现故障时,流…...
c++ package_task
int print_sum(int a, int b) {std::cout << a << " " << b << " " << (a b) << std::endl;return a b; }int main() {// 创建绑定后的可调用对象auto print_sum_5 std::bind(print_sum, 5, 6);// 包装为 packag…...
基于计算机视觉的行为检测:从原理到工业实践
一、行为检测的定义与核心价值 行为检测(Action Recognition)是计算机视觉领域的关键任务,旨在通过分析视频序列理解人类动作的时空特征。其核心价值体现在时序建模和多尺度分析能力上——系统需要捕捉动作的起始、发展和结束全过程,同时适应不同持续时间(0.1秒至数分钟)…...

川翔云电脑32G大显存集群机器上线!
川翔云电脑今日重磅推出32G 大显存机型,为游戏玩家、设计师、AI 开发者等提供极致云端算力体验! 一、两大核心配置,突破性能天花板 ✅ 32G 超大显存机型 行业领先:搭载 NVIDIA 专业显卡,单卡可分配 32G 独立显存&am…...

加里·基尔代尔:CP/M之父与个人计算时代的先驱
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 加里基尔代尔:CP/M之父与个人计算时代的先驱 一、早年生活与教育背景 1.…...

静态多态和动态多态的区别
C多态机制深度解析 多态是面向对象编程的核心特性,允许通过统一接口执行不同实现。在C中,多态表现为基类指针或引用调用虚函数时,根据实际对象类型执行对应派生类的函数逻辑。 基础实现示例 定义基类与派生类,演示动态绑定…...
MQL5教程 06 EA开发实战
文章目录 一、调用多指标多周期EA示例二、获取ZigZag顶点值三、逆势加仓EA 一、调用多指标多周期EA示例 shuju.mqh: class shuju{public:shuju(){} ~shuju(){}void MA(double &ma[],int count,string symbol, // 交易品种名称 ENUM_TIMEFRA…...
LLaMa Factory大模型微调
LLaMa Factory大模型微调 大模型微调平台&硬件LLaMA-Factory安装hfd下载hugging face模型自我认知微调Alpaca数据集指令监督微调断点续训 大模型微调 微调自我认知微调特定领域数据集。 平台&硬件 Ubuntu20.04显卡:M40 24G 2080TI 22G微调框架ÿ…...

Burp靶场JWT学习笔记1
JWT(JSON Web Token) 从其名字就可以看出来,它具有表示身份的作用,其本质是将用户信息储存到一串json字符串中再将其编码得到一串token JWT由三部分组成,分别是 Header,Payload,Signatrue JWTBase64(Header).Base6…...

C++?类和对象(下)!!!
一、前言 在之前我们已经讨论过了有关类和对象的前置知识以及类中的六大默认成员函数,在本期我们继续再讨论类和对象中剩余的友元、初始化列表等相关知识,如果需要再了解之前的知识的话,链接奉上:C?类和对象࿰…...