在运维工作中,怎么查看日志?

news/2025/2/23 12:30:05/文章来源:https://www.cnblogs.com/huangjiabobk/p/18731994

在运维工作中,查看和分析日志是排查问题、监控系统状态和保障系统安全的重要手段。Linux 系统和应用程序会产生大量日志文件,掌握如何高效查看和分析这些日志是每个运维人员的必备技能。以下是详细的操作方法和常用工具:

1. 常见的日志文件位置
1.1 系统日志
  • /var/log/messages/var/log/syslog:系统日志,记录系统事件、警告和错误信息。
  • /var/log/auth.log/var/log/secure:记录用户认证相关的信息,如登录、SSH 连接等。
  • /var/log/dmesg:内核环形缓冲区的内容,记录内核消息(如硬件初始化、驱动加载等)。
1.2 应用程序日志
  • /var/log/nginx/:Nginx 的访问日志和错误日志。
  • /var/log/apache2/:Apache 的访问日志和错误日志。
  • /var/log/mysql//var/log/mariadb/:MySQL/MariaDB 的日志文件。
  • /var/log/postgresql/:PostgreSQL 的日志文件。
1.3 安全相关日志
  • /var/log/audit/audit.log:审计日志,记录系统安全事件。
  • /var/log/faillock/var/log/tallylog:记录失败的登录尝试。
2. 查看日志的常用命令
2.1 使用 cat

查看整个日志文件的内容:

cat /var/log/messages
2.2 使用 lessmore

分页查看日志文件,支持滚动和搜索:

less /var/log/messages
  • less 中,按 / 键可以搜索关键字。
2.3 使用 tail

查看日志文件的最后几行,常用于实时监控日志:

tail -n 100 /var/log/messages  # 查看最后 100 行
tail -f /var/log/messages       # 实时监控日志更新
2.4 使用 grep

搜索包含特定关键字的日志条目:

grep "error" /var/log/messages
grep -i "warning" /var/log/syslog  # 忽略大小写
2.5 使用 awksed

对日志内容进行复杂处理和提取:

awk '/error/ {print $1, $2, $3}' /var/log/messages  # 提取包含 "error" 的行并打印前三个字段
sed -n '/error/p' /var/log/messages                 # 打印包含 "error" 的行
3. 日志分析工具
3.1 journalctl(适用于 systemd 系统)

journalctl 是 systemd 系统的日志管理工具,可以查看系统日志和服务日志:

journalctl -b  # 查看当前启动的日志
journalctl -u nginx.service  # 查看特定服务的日志
journalctl --since "2024-01-01" --until "2024-01-31"  # 查看指定时间范围的日志
3.2 logwatch

logwatch 是一个日志分析工具,可以生成日志报告并发送邮件:

logwatch --range today --mailto admin@example.com
3.3 rsyslogsyslog-ng

这些是日志收集和转发工具,可以集中管理多台服务器的日志:

# 配置文件通常位于 /etc/rsyslog.conf 或 /etc/syslog-ng.conf
3.4 ELK Stack(Elasticsearch、Logstash、Kibana)

用于大规模日志分析和可视化:

  • Logstash:解析和处理日志。
  • Elasticsearch:存储和索引日志数据。
  • Kibana:提供可视化界面,方便分析日志。
3.5 PrometheusGrafana

用于监控和可视化系统指标,也可以结合日志数据进行分析。

4. 日志的常见问题排查
4.1 系统启动失败
  • 查看 /var/log/dmesg 或使用 dmesg 命令查看内核日志。
  • 使用 journalctl -b 查看当前启动的日志。
4.2 应用程序启动失败
  • 查看应用程序的日志文件,如 /var/log/nginx/error.log/var/log/mysql/error.log
  • 使用 systemctl status <service> 查看服务状态和日志。
4.3 安全问题
  • 查看 /var/log/auth.log/var/log/secure,检查异常登录尝试。
  • 使用 auditdausearch 工具查看审计日志。
4.4 性能问题
  • 查看 /var/log/messages/var/log/syslog,检查是否有警告或错误信息。
  • 使用 saratop 工具分析历史性能数据。
5. 日志管理的最佳实践
5.1 日志轮转
  • 使用 logrotate 工具定期轮转日志文件,避免日志文件过大。
  • 配置文件通常位于 /etc/logrotate.conf/etc/logrotate.d/
5.2 日志备份
  • 将日志文件备份到远程服务器或云存储,防止数据丢失。
5.3 日志监控
  • 使用监控工具(如 PrometheusZabbix)监控日志文件的大小和更新频率。
  • 设置告警规则,当检测到异常日志时发送通知。
5.4 日志安全
  • 确保日志文件的权限正确,防止未经授权的访问。
  • 使用加密工具(如 rsync--bwlimit 参数)保护日志数据的传输。
6. 我的总结

查看和分析日志是运维工作中的重要任务。掌握以下技能可以帮助高效地进行日志管理:

  1. 了解常见日志文件的位置:如 /var/log/messages/var/log/auth.log 等。
  2. 掌握常用命令:如 catlesstailgrep 等。
  3. 使用日志分析工具:如 journalctllogwatchELK Stack 等。
  4. 排查常见问题:通过日志文件定位系统启动失败、应用程序错误或安全问题。
  5. 遵循最佳实践:定期轮转日志、备份日志、监控日志并确保日志安全。

综上所述,通过这些方法,运维人员可以快速定位问题、优化系统性能并保障系统的稳定运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888332.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实操让Deepseek根据本地知识库进行回答

之前写了一篇本地电脑部署Deepseek的文章,有些朋友问到如何给本地的Deepseek添加知识库,于是我又找时间学习了下。现在把我的实操过程分享一下。这个是本地部署Deepseek的教程:https://www.cnblogs.com/LaiYun/p/18695293下载安装Cherry-Studio部署完本地Deepseek后就使用Ch…

[Log4j/日志系统] Log4j2.xml 配置详解

Configuration 定义整个配置文件的根元素,整个配置信息都在这个标签内。 Demodemo<?xml version="1.0" encoding="UTF-8" ?> <!--monitorInterval属性值(秒数)为一个非零值来让Log4j每隔指定的秒数来重新读取配置文件,可以用来动态应用Log4…

delphi 漂亮的开关按钮 与 web ui 一样漂亮的开关按钮 djToggleSwitchButton

效果图 在 delphi 界 找个漂亮的开关按钮,不容易,ddj 为您提供了漂亮的开关按钮,以下是 效果图说明判断开关 双击这个 开关按钮,在 onClick事件里 写逻辑代码就可,如: procedure TFormMain.djToggleSwitch1Click(Sender: TObject); beginif djToggleSwitch1.StateOn then…

ollama本地大模型的安装与使用

ollama本地大模型的安装与使用1、定义 Ollama:‌是一个开源的大型语言模型(LLM)服务工具,旨在简化在本地运行大语言模型的过程,降低使用大语言模型的门槛‌。 2、安装 https://ollama.com/download 根据自己的电脑系统来选择安装不同的版本,默认安装就可以解决。3、安装成功…

易语言 —— 第一篇

易语言第一课 - 界面熟悉与“你好世界!” 1. 安装易语言集成开发环境并新建一个应用程序 在安装好易语言集成开发环境后,首先需要新建一个应用程序。具体步骤如下:打开易语言集成开发环境。 点击菜单栏中的“文件” -> “新建” -> “应用程序”。2. 界面的简单介绍 易…

MyBatis-Plus 的自动填充 —— 值为null

MyBatis-Plus 的自动填充 MyBatis-Plus 提供的字段自动填充功能是一种非常实用的特性,它能够在插入或更新数据库记录时自动填充一些公共字段,如创建时间(createTime)、更新时间(updateTime)、创建人(createBy)、更新人(updateBy)等。这一功能极大地简化了开发过程,减…

[Jaav SE/程序生命周期] 优雅的Java应用程序的启停钩子框架

序了解 spring 生态及框架的 java er 都知道,spring 应用的生命周期管理及配套接口较为优雅、可扩展。但脱离 spring 的 java 应用程序,如何优雅地启停、管理程序的生命周期呢?(以便应用程序在我们需要的运行阶段中进行相应的动作)概述:Java普通应用程序的启停钩子框架 前…

迈金C416码表体验

之前一直在用黑鸟单车和小米健康记录骑行数据, 后来又发现strava和keep的骑行分享功能做的比较好. 于是使用的运动app就越来越多, 骑行时带着手机的同时还要开好几个app太麻烦了, 同时也想给车上加一个速度显示器, 由此考虑入一个码表.对功能要求不高, 最主要的需求是gps和速度…

ASP.NET Core Swagger 汉化

在wwwroot文件夹添加汉化的JS文件const translations = {"Failed to load API definition": "API定义加载失败","Errors": "错误信息","Hide": "隐藏","Fetch error": "获取错误","Inte…

Svelte 最新中文文档教程(17)—— 生命周期钩子

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…