jvm cpu memory告警

死锁问题(jstack)
1、top命令观察,内存不断增长,CPU占用率居高不下,获取进程号PID
2、top -Hp 观察进程中的线程,哪个线程CPU和内存占比高,获取线程号PID
3、jps也可以定位java进程号。jstack 进程号,观察线程情况jstack日志。重点看线程状态WAITING,BLOCKED的线程
waiting on <0x0000000088ca3310> (a java.lang.Object)
例如这样的线程,在等待锁释放。翻阅jstack日志,找到哪个线程持有锁。一般这个线程为Runnable,一直不释放锁

频繁GC,甚至导致OOM问题(jmap)
1、jinfo pid进程号 查看jvm相关信息
2、jstat -gc pid time,每time(单位秒),刷新一次,查看GC情况
测试环境压测使用图形化界面:JDK自带的jconsole,jvisualVM。好用的jprofiler,收费!
生产环境通过命令操作
3、jmap -histo pid | head -20,查看有多少对象产生
在这里插入图片描述
当某一个对象实例非常多时,就是问题产生的地方,查看相关代码


执行jmap的堆转储文件会造成服务器卡顿!!
1、-XX:+HeapDumpOnOutOfMemoryError OOM问题产生,堆转储文件。
2、搞HA高可用
3、为何要转文件,线上处理吧

<think>好的,用户现在需要关于OpenTelemetry采集数据在Grafana中的常用告警规则配置。首先,我要确定用户的具体需求。他们监控的是Java应用,使用OpenTelemetry收集数据,所以需要针对Java应用的性能指标来设置告警规则。 首先,我应该回忆一下OpenTelemetry通常收集哪些指标。比如JVM的内存使用、GC次数、线程状态、HTTP请求延迟和错误率,还有系统资源如CPU和内存。这些都是常见的监控点。 接下来,用户可能希望得到具体的告警规则示例。需要确保这些规则适用于Prometheus,因为Grafana通常与Prometheus结合使用。不过用户提到的是OpenTelemetry,可能数据是导出到Prometheus或者其他支持的数据库,这里可能需要假设数据已经存储在Prometheus中,或者通过OTel Collector导出到兼容的存储。 然后,我需要考虑用户的实际应用场景。他们可能遇到内存泄漏、GC频繁、线程阻塞、接口响应慢或错误增多等问题。告警规则需要覆盖这些典型问题,帮助他们在出现异常时及时收到通知。 另外,用户之前的问题是关于企业微信的告警模板美化,可能他们现在已经有了一些基础监控,但需要更具体的告警规则来完善系统。所以,除了给出规则示例,还需要提醒他们根据实际环境调整阈值,并考虑如何与之前的告警通知模板结合使用。 可能还需要注意OpenTelemetry的指标名称是否与Prometheus的命名规范一致,比如替换点号为下划线,确保指标正确。同时,要提到如何通过OTel Collector进行必要的指标处理,比如计算速率或平均值。 最后,总结一下需要涵盖的主要方面:JVM内存、GC、线程、HTTP请求、系统资源,以及数据库连接池和自定义业务指标。同时,强调告警规则的可调整性和测试的重要性,确保用户能够根据自身应用情况灵活配置。</think>以下是为基于OpenTelemetry采集的Java应用监控数据设计的常用告警规则配置建议(适用于Prometheus语法),涵盖关键性能指标和典型故障场景: --- ### **一、JVM 内存告警** ```yaml # 堆内存使用率 > 80% 持续5分钟 - alert: HighHeapMemoryUsage expr: sum(jvm_memory_used_bytes{area="heap"}) / sum(jvm_memory_max_bytes{area="heap"}) * 100 > 80 for: 5m labels: severity: critical annotations: summary: "JVM堆内存使用率过高 (实例: {{ $labels.instance }})" description: "当前堆内存使用率 {{ $value }}%,持续5分钟超过阈值" # 元空间内存泄漏检测 - alert: MetaspaceLeak expr: increase(jvm_classes_loaded_classes_total[1h]) > 500 labels: severity: warning annotations: summary: "元空间疑似内存泄漏 (实例: {{ $labels.instance }})" description: "过去1小时类加载数增加超过500个" ``` --- ### **二、GC 相关告警** ```yaml # Full GC频率过高 - alert: FrequentFullGC expr: rate(jvm_gc_pause_seconds_count{gc="G1 Old Generation"}[5m]) > 1 labels: severity: critical annotations: summary: "Full GC频率异常 (实例: {{ $labels.instance }})" description: "每分钟Full GC次数超过1次,当前值 {{ $value }}" # GC暂停时间过长 - alert: LongGCPause expr: max_over_time(jvm_gc_pause_seconds_max[5m]) > 2 labels: severity: warning annotations: summary: "GC暂停时间过长 (实例: {{ $labels.instance }})" description: "5分钟内最大GC暂停时间 {{ $value }} 秒" ``` --- ### **三、线程池告警** ```yaml # 阻塞线程数过多 - alert: HighBlockedThreads expr: jvm_threads_blocked > 20 labels: severity: warning annotations: summary: "线程阻塞数过高 (实例: {{ $labels.instance }})" description: "当前阻塞线程数 {{ $value }} 个" # 死锁检测 - alert: ThreadDeadlock expr: jvm_threads_deadlock > 0 labels: severity: critical annotations: summary: "检测到线程死锁 (实例: {{ $labels.instance }})" description: "当前死锁线程组数 {{ $value }}" ``` --- ### **四、HTTP 请求告警** ```yaml # 接口错误率 > 5% - alert: HighHTTPErrorRate expr: sum(rate(http_server_duration_count{http_status_code=~"5.."}[5m])) / sum(rate(http_server_duration_count[5m])) * 100 > 5 labels: severity: critical annotations: summary: "HTTP错误率过高 (接口: {{ $labels.http_route }})" description: "当前5xx错误率 {{ $value }}%" # 接口延迟过高 - alert: HighHTTPLatency expr: histogram_quantile(0.95, rate(http_server_duration_bucket[5m])) > 3 labels: severity: warning annotations: summary: "接口响应延迟过高 (接口: {{ $labels.http_route }})" description: "95分位响应时间 {{ $value }} 秒" ``` --- ### **五、系统资源告警** ```yaml # CPU使用率过高 - alert: HighCPUUsage expr: rate(process_cpu_usage[5m]) * 100 > 80 labels: severity: warning annotations: summary: "进程CPU使用率过高 (实例: {{ $labels.instance }})" description: "当前CPU使用率 {{ $value }}%" # 文件描述符耗尽 - alert: FileDescriptorExhausted expr: process_open_fds / process_max_fds * 100 > 80 labels: severity: critical annotations: summary: "文件描述符即将耗尽 (实例: {{ $labels.instance }})" description: "当前使用率 {{ $value }}%" ``` --- ### **补充建议** 1. **指标适配**:OpenTelemetry指标名称可能需转换(如替换 `.` 为 `_`),建议通过OTel Collector进行指标处理: ```yaml metricstransform: transforms: - include: "http.server.duration" action: update new_name: "http_server_duration" ``` 2. **阈值调整**:建议根据实际基线数据调整阈值(如测试环境可设置更敏感阈值) 3. **关联告警**:可结合业务指标(如交易量下降时触发关联告警): ```yaml expr: rate(http_server_duration_count[5m]) < 100 and business_transactions_total < 10 ``` 4. **数据库连接池**:若使用连接池可添加: ```yaml - alert: ConnectionPoolExhausted expr: db_pool_active_connections / db_pool_max_connections > 0.8 ``` 建议配合使用之前优化的企业微信告警模板,通过`annotations`字段携带关键标签信息(如`severity`级别)。实际配置前请先验证指标是否存在:`curl http://otel-collector:9464/metrics | grep your_metric`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值