centos

CentOS Java如何监控系统

小樊
42
2025-11-19 19:15:59
栏目: 编程语言

CentOS 上监控 Java 应用的实用方案

一 快速定位与系统层监控

二 JVM 层诊断工具

三 指标化监控与可视化

四 日志分析与告警

五 一键健康检查脚本示例

#!/usr/bin/env bash
set -euo pipefail

APP_NAME="${1:-myapp.jar}"
PID=$(pgrep -f "$APP_NAME" | head -n1)

if [[ -z "$PID" ]]; then
  echo "[ERROR] $APP_NAME is NOT running."
  exit 1
fi

echo "=== $APP_NAME (PID=$PID) Health Check ==="
echo "[1/5] CPU/Memory (top):"
top -b -n1 -p "$PID" | head -n12

echo -e "\n[2/5] GC Summary (jstat):"
jstat -gcutil "$PID" 1 1

echo -e "\n[3/5] Thread Count (jstack):"
jstack "$PID" | grep -E 'java.lang.Thread.State' | sort | uniq -c

echo -e "\n[4/5] Open Files / Connections:"
ls -1 /proc/"$PID"/fd 2>/dev/null | wc -l
ss -tnp | grep -E "pid=$PID" | wc -l

echo -e "\n[5/5] Recent Errors in Logs (last 200 lines):"
LOG=$(ps -ef | grep "$APP_NAME" | grep -Eo '\-Dlogging\.file=[^ ]+' | cut -d= -f2 || echo "/var/log/$APP_NAME.log")
[[ -f "$LOG" ]] && tail -n200 "$LOG" | grep -i "ERROR" | tail -n20 || echo "Log file not found: $LOG"

0
看了该问题的人还看了