命令行是最基础、最直接的监控方式,适合快速定位问题或临时检查日志。
tail命令:实时查看日志文件的最新内容,是调试时的常用工具。例如,tail -f /path/to/java.log 会持续输出日志文件的新增行,按Ctrl+C停止;tail -n 100 /path/to/java.log 则显示最后100行日志。grep命令:过滤日志中的特定内容(如错误信息)。例如,grep "ERROR" /path/to/java.log 会列出所有包含“ERROR”的日志行;grep -i "warning" /path/to/java.log 可忽略大小写查找“warning”。less命令:分页查看大型日志文件,支持向前/向后翻页(按Page Up/Page Down键),适合查看历史日志。例如,less /path/to/java.log,按q退出。journalctl命令:若Java应用以systemd服务运行(如通过systemctl start my-java-app启动),可使用此命令查看服务关联的日志。例如,journalctl -u my-java-app -f 实时查看该服务的日志,journalctl -u my-java-app --since "2025-09-26" 查看当天的日志。对于生产环境或需要长期存储、分析的场景,建议使用日志管理工具,实现日志的集中收集、搜索和可视化。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -,添加仓库echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list,然后sudo apt update && sudo apt install elasticsearch。sudo apt install logstash。sudo apt install kibana。/etc/logstash/conf.d/java.conf文件,内容如下:input {
file {
path => "/path/to/java.log"
start_position => "beginning"
sincedb_path => "/dev/null" # 首次运行时忽略已读记录
}
}
filter {
grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:logmessage}" } } # 根据日志格式调整grok模式
date { match => ["timestamp", "ISO8601"] }
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug } # 控制台输出,调试用
}
sudo systemctl start elasticsearch && sudo systemctl start logstash && sudo systemctl start kibana。访问http://localhost:5601(Kibana)即可查看日志。若需要监控Java应用的性能指标(如CPU、内存、线程)或错误信息,可使用以下工具:
sudo apt install prometheus,编辑/etc/prometheus/prometheus.yml添加Java应用的抓取目标(如scrape_configs部分)。<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.10.5</version>
</dependency>
并开启Actuator端点:在application.properties中添加management.endpoints.web.exposure.include=prometheus。wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -,添加仓库echo "deb https://packages.grafana.com/oss/ubuntu $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/grafana.list,然后sudo apt update && sudo apt install grafana,启动服务sudo systemctl start grafana-server。访问http://localhost:3000(默认账号admin/admin),导入Prometheus数据源并创建仪表盘。git clone https://github.com/getsentry/self-hosted.git,运行cd self-hosted && ./install.sh,配置config.yml(如邮件通知),启动服务docker-compose up -d。日志文件长期运行会占用大量磁盘空间,需使用logrotate工具定期轮换、压缩和删除旧日志。
/etc/logrotate.d/java-app,内容如下:/path/to/java.log {
daily # 每天轮换
rotate 7 # 保留最近7份
compress # 压缩旧日志(如.gz格式)
missingok # 若日志不存在也不报错
notifempty # 若日志为空则不轮换
copytruncate # 复制原日志后清空(不影响正在写入的日志)
}
sudo logrotate -d /etc/logrotate.d/java-app(模拟轮换),sudo logrotate -f /etc/logrotate.d/java-app(强制立即轮换)。以上方法覆盖了从基础查看、实时监控到集中化分析的全流程,可根据实际需求选择合适的工具组合。例如,开发阶段用tail和grep快速调试,生产环境用ELK或Prometheus+Grafana实现长期监控。