linux日志

常见日志文件

在 CentOS 7 中,常见的日志文件包括但不限于以下几种:

  1. /var/log/messages: 这是系统的主要日志文件,记录了系统的各种信息,包括系统启动、关机、服务启动、系统错误等。

  2. /var/log/secure: 这个文件包含了安全相关的信息,比如 SSH 登录尝试、su 切换用户等操作的日志。

  3. /var/log/boot.log: 记录系统启动时的日志信息,包括启动过程中各个服务的启动情况。

  4. /var/log/cron: 记录了 cron 定时任务的执行情况,包括任务的执行时间、执行结果等。

  5. /var/log/yum.log: 记录了 yum 命令的操作记录,包括安装、卸载、更新软件包等操作。

  6. /var/log/httpd/: Apache Web 服务器的日志文件目录,其中包括 access_log(记录 HTTP 请求)、error_log(记录服务器错误信息)等文件。

  7. /var/log/mysql/: MySQL 数据库的日志文件目录,包括 error.log(记录数据库错误信息)、query.log(记录数据库查询信息)等文件。

  8. /var/log/maillog: 记录邮件服务器(如 Postfix)的日志信息,包括邮件的发送、接收等操作记录。

  9. /var/log/dmesg:记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息。

查看日志

  1. journalctl -ex:以详细的方式显示最近的系统日志记录。

  2. systemctl status:查看系统服务状态。

用户日志

  1. /var/log/lastlog: 记录了系统中所有用户最近一次登录的时间和相关信息。可以使用 lastlog命令来查看其内容。

  2. /var/log/wtmp: 记录了系统中所有用户的登录、注销和系统启动、关机等事件,以二进制格式存储。可以使用 last 命令查看其内容,例如 last -a 可以查看所有登录和注销事件。

  3. /var/log/btmp: 记录了登录失败的尝试,包括登录失败的用户名、IP地址和尝试的时间等信息。可以使用 lastb 命令查看其内容。

  4. /var/run/utmp: 这个文件记录了当前已登录的用户信息,包括用户名、登录终端、登录时间等。它是一个二进制文件,可以使用 who 、 w 、user命令来查看其内容。

内核和公共日志

在Linux系统中,日志可以分为两类:内核日志和用户空间(公共)日志。

  1. 内核日志:内核日志是由操作系统内核生成的日志,通常包含与系统硬件和内核相关的信息,如系统启动信息、硬件故障、内核模块加载和卸载等。这些日志通常由内核级别的设备驱动程序、中断处理程序和内核代码生成,并存储在系统内核环缓冲区(kernel ring buffer)中。可以通过dmesg命令查看内核日志。

  2. 用户空间(公共)日志:用户空间日志是由用户空间应用程序生成的日志,通常包含应用程序的运行状态、错误信息等。这些日志通常由系统日志守护进程(如syslogd、rsyslogd或systemd-journald)收集和处理,存储在系统的日志文件中(如/var/log/messages)。用户空间日志包括来自各种应用程序、服务和系统组件的消息,可以帮助诊断问题和跟踪系统行为。

日志服务管理

消息级别Loglevel

在Linux系统中,日志消息按照其重要程度可以分为不同的级别,这些级别是通过数字来表示的,数字越小表示优先级越高,消息越重要。常见的级别包括(按照从高到低的顺序):

  1. EMERGENCY(0)(紧急):表示系统已经不可用,需要立即采取行动。

  2. ALERT(1)(警报):表示需要立即采取行动以防止进一步的损失或损害。

  3. CRITICAL(2)(临界):表示严重的错误,可能导致系统无法正常工作。

  4. ERROR(3)(错误):表示发生了某种错误,需要立即处理。

  5. WARNING(4)(警告):表示可能存在问题,但程序仍然可以继续运行。

  6. NOTICE(5)(注意):表示需要用户注意的信息,但不是错误或警告。

  7. INFO(6)(信息):表示一般信息,通常用于输出程序状态或操作。

  8. DEBUG(7)(调试):表示调试信息,通常用于开发和调试过程中。

这些级别通常用于系统日志(如syslog)或应用程序日志中,可以根据需要进行配置和调整。

日志类型

在rsyslog系统日志工具中,日志消息通常按照设备、设施和优先级进行分类。下面是一些常见的日志类型及其含义:

  1. auth (LOG AUTH):安全和认证相关消息的日志,记录用户登录、认证尝试等活动。

  2. authpriv (LOG_AUTHPRIV):私密的安全和认证相关消息的日志,通常包含敏感信息,如用户登录失败的尝试,建议不使用此项,推荐使用auth替代。

  3. cron (LOG_CRON):系统定时任务(如crontab和at)产生的日志,记录计划任务的执行情况。

  4. daemon (LOG_DAEMON):与各个守护进程相关的日志,记录守护进程的活动和状态。

  5. ftp (LOG_FTP):FTP守护进程产生的日志,记录FTP传输的信息和状态。

  6. kern (LOG_KERN):内核产生的日志,记录与内核相关的消息,如系统启动和关机消息、硬件故障等。

  7. local0-local7 (LOG_LOCAL0-7):为本地使用预留的服务,可以用于定义特定应用程序或服务产生的日志消息。

  8. lpr (LOG_LPR):打印产生的日志,记录打印任务的状态和信息。

  9. mail (LOG_MAIL):邮件收发信息的日志,记录邮件传输代理(MTA)的活动和状态。

  10. news (LOG_NEWS):与新闻服务器相关的日志,记录新闻发布和传输的信息。

  11. syslog (LOG_SYSLOG):存储syslogd服务产生的日志信息,尽管服务名称可能已经改为rsyslogd,但仍然沿用syslogd服务的配署。

  12. user (LOG_USER):用户等级类别的日志信息,记录用户活动和事件。

rsyslog 系统日志服务

rsyslog是一款灵活、高性能的系统日志服务,用于收集、处理和转发Linux系统生成的日志消息。在centos6和7中被使用。如果服务器数量多则使用ELK作为日志服务。

 查看rsyslog的相关文件,可以看出/etc/rsyslog.conf是他的配置文件。进入配置文件。\

日志处理规则#### RULES ####

找到#### RULES ####可以定制日志处理规则。

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

例如,在上面这一行中,authpriv表示的是日志类型,*为所有消息级别,表示私密的安全和认证相关消息的日志,将日志保存到/var/log/secure

# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

上面一行的解释如下:

*.info: 这是一个选择器,指定了日志消息的设施和级别。* 表示所有设施(如 auth、cron、mail 等),而 info 表示消息级别为 info 或更高(包括 notice、warning、error、critical 和 alert)的消息。换句话说,这将匹配所有设施中级别为 info 或更高的消息。

mail.none: 这是一个排除器,指定不记录特定设施的消息。mail.none 意味着不记录邮件相关的消息。authpriv.none;cron.none 相同。

/var/log/messages: 这是指定日志消息应该记录到的文件路径。在这种情况下,它将消息记录到 /var/log/messages 文件中。

日志传输协议#### MODULES ####

如果需要将日志传输远程给日志服务器,则需要选择传输协议。如下图所示,找到#### MODULES ####可以选择udp或tcp传输。

单独设置ssh服务日志

首先使selinux为宽松模式

原来ssh日志在/var/log/secure,现在需要把ssh服务的日志文件独立出来。

 如图可知,ssh的配置文件为/etc/ssh/sshd_config。

 先修改日志类型,将32行的AUTHPRIV类型改为LOCAL6类型。因为LOCAL7类型已经存在。

在/etc/rsyslog.conf文件中添加local6,级别为任意,日志保存位置为/data/ssh.log。并且加上注释。

 重启rsyslog和ssh服务,查看新的日志文件。

 远程日志

现在需要将本机的日志保存到日志服务器上。

首先将两边selinux设为宽松模式

在/etc/rsyslog.conf中为两端开启tcp服务,可以看到开放了514端口为传输使用。

 重启服务后可以看到端口514开启

 在客户端上,例如我们想将保存到/var/log/messages的日志保存到ip地址为192.168.146.146的服务器上,我们可以在后面加上一行,用tcp传输,将日志保存位置改为@@加上ip地址。

如果是upd传输,只需要一个@。

在防火墙上放通tcp的514端口。

 此时我们在客户端上写入日志。

开日志服务器上使用tail -f /var/log/messages命令可以看到客户端更新的日志。

ELK

ELK:由Elasticsearch, Logstash, Kibana三个软件组成,适用于服务器数量很多的情况。

  • 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene

  • Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能

  • Logstash对日志进行收集、分析,过滤,并将其存储供以后使用

  • Kibana 可以提供的日志分析友好的 Web 界面

  • kafka消息队列

 

posted @ 2024-04-22 18:46  hx_ky36  阅读(60)  评论(0编辑  收藏  举报