Linux服务器日志查看方法详解 (linux怎么查看服务器日志)

作为广泛使用的开源操作系统,Linux拥有一系列的优秀特性,其中之一就是能够有效地记录系统运行时的信息,为开发者或管理员提供相关的诊断与调试信息。因此,在维护 Linux 服务器时,日志文件的查看就显得尤为重要。本文将详细介绍如何查看 Linux 服务器的日志文件,帮助读者更好地了解服务器的运行状态。

一、日志文件的类型

在开始介绍 Linux 服务器日志的查看方法之前,我们需要先了解一下日志文件的类型。通常,Linux 系统会将不同类型的日志信息记录到不同的文件中,以便进行分类查看和管理。在 Linux 服务器上,主要的日志文件有以下几种:

1.系统日志文件:包括系统的运行状态、内核信息、系统启动信息等。

2.应用程序日志文件:包括各种应用程序的日志信息,如 Web 服务器日志、数据库日志、邮件服务日志等。这些日志文件可以帮助开发者或管理员诊断应用程序的异常情况。

3.安全日志文件:包括所有安全相关的事件信息,如用户登录、授权访问、尝试入侵等。这些日志文件可以帮助管理员监控系统的安全性。

二、常见的日志查看工具

1. dmesg

dmesg是一种非常常见的查看系统日志的命令行工具。

使用 “dmesg” 命令查看时,可以看到系统在引导过程中发生的各种信息,如 CPU、内存、硬盘等硬件设备的检测和初始化、内核模块的加载等等。

2. journalctl

journalctl是一个新的日志管理工具,主要用于管理 systemd 生成的日志。

使用 “journalctl” 命令查看时,可以看到系统各组件的活动信息、服务启动和关闭信息、进程信息等。

3. tl

tl是一个命令行工具(tl命令),用于查看文件末尾的内容。

使用 “tl” 命令查看时,可以看到日志文件最新的内容。

4. less

less是一个非常强大的命令行文本浏览器,可以在文本文件中任意浏览,并支持搜索和高亮。

使用”less”命令查看时,可以看到整个文件的内容,并可以自由滚动、搜索和高亮显示。

5. grep

grep是一个非常常用的命令行文本搜索工具,用于在文件中查找指定的文本字符串。

使用 “grep” 命令查看时,可以对日志文件进行关键字搜索,以便找到特定的信息。

三、查看系统日志

系统日志包括内核信息、系统的运行状态、系统启动信息等,通常可以在/var/log目录下找到。

1.查看dmesg日志

使用以下命令可以查看最近一次系统启动后内核的信息。

[[eml protected] ~]# dmesg | less

通过查看dmesg日志,可以获取到如下信息:

① CPU 和内存检测信息。

② 硬件状态信息。

③ 系统服务的启动和关闭信息。

④ 内核模块的加载和卸载信息。

2.查看syslog日志

syslog日志记录了系统的运行状态和指定的应用或服务的日志信息。syslog日志通常包含多个文件,这些文件可以在/var/log目录下找到。

使用以下命令查看syslog日志

[[eml protected] ~]# tl -f /var/log/syslog

3.查看auth日志

auth日志文件记录了与系统认证、授权和安全有关的所有信息,包括sudo命令、SSH登录、用户登录信息等等。

使用以下命令查看auth日志

[[eml protected] ~]# tl -f /var/log/auth.log

四、查看应用程序的日志

在Linux服务器中,各种应用程序如Web服务器、数据库服务器等都会生成自己的日志文件,以便开发者或管理员了解应用程序的运行状况以及异常情况的发生。常见的应用程序日志文件有如下几种:

1.Apache服务器日志

Apache服务器是Web服务器中应用最广泛的一种,其日志文件通常包括access_log和error_log两个文件。通过查看这两个日志文件,可以了解到对Apache服务器发出的http请求以及Apache服务器的引擎错误信息。

查看Apache服务器的access_log日志文件:

[[eml protected] ~]# tl -f /var/log/httpd/access_log

查看Apache服务器的error_log日志文件:

[[eml protected] ~]# tl -f /var/log/httpd/error_log

2.MySQL数据库日志

MySQL服务器是关系型数据库管理系统中应用最广泛的一种,其日志文件通常包括error.log、general.log、slow_query.log以及binlog等文件。

查看MySQL的error.log日志文件:

[[eml protected] ~]# tl -f /var/log/mysqld/error.log

查看MySQL的general.log日志文件:

[[eml protected] ~]# tl -f /var/log/mysqld/general.log

3.nginx服务器日志

Nginx是一款优秀的Web服务器,其日志文件通常包括access.log和error.log两个文件。通过查看这两个日志文件,可以了解到对Nginx服务器发出的https请求以及Nginx服务器的引擎错误信息。

查看Nginx服务器的access.log日志文件:

[[eml protected] ~]# tl -f /var/log/nginx/access.log

查看Nginx服务器的error.log日志文件:

[[eml protected] ~]# tl -f /var/log/nginx/error.log

Linux服务器日志的查看可以帮助管理员更好地监视服务器的运行状态。本文详细介绍了Linux日志的几种类型以及查看方法,如dmesg、journalctl、tl、less、grep等工具,以及查看系统日志、查看应用程序的日志等内容。通过本文的学习,相信读者们已经掌握了Linux服务器日志的查看方法,并可以更好地维护自己的Linux服务器。

相关问题拓展阅读:

如何查看linux的系统log日志

日志文件详细地记录了系统每天发生的各种各样的事件。用户可以通过日志文件检查错误产生的原因,或者在受到攻击和黑客入侵时追踪攻击者的踪迹。日志的两个比较重要的作用是:审核和监测。

Linux系统的日志主要分为两种类型:

1.进程所属日志

由用户进程或其他系统服务进程自行生成的日志,比如服务器上的access_log与error_log日志文件。

2.syslog消息

系统syslog记录的日志,任何希望记录日志的系统进程或者用户进程都可以给调用syslog来记汪念册录日志。

日志系统可以划分为三个子系统:

1. 连接时间日志–由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。

2. 进程统计–由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。

3. 错误日志–由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。

2.察看日志文件

Linux系统所有的日志文件都在/var/log下,且必须有root权限才能察看。

  日志文件其实是纯文本的文件,每一行就是一个消息。察看方式有很多。

1. cat命令。日志文件总是很大的,因为从之一次启动Linux开始,消息都累积在日志文件中。如果这个文件不只一页,那么就会因为显示滚动得太快看不清文件的内容。

2. 文本编辑器。更好也不要用文本编辑器打开日志文件,这是因为一方面很耗费内存,另一方面不允许随意改动日志文件。

3.用more或less那样的分页显示程序。

4.用grep查找特定的消息。

每一行表示一个消息,而且都由四个域的固定格式组成:

n时间标签(timestamp),表示消息发出的日期和时间

n主机名(hostname)(在我们的例子中主机名为escher),表示生成消息的计算机的名字。如果只有一台计算机,主机名就可能没有必要了。但是,如果在网络环境中使用syslog,那么就可能要把不同主机的消息发送到一台服务器上集中处理。

n生成消息的子系统的名字。可以是”kernel”,表示消息来自内核,或者是进程的名字,表示发出消息的困宏程序的名字。在方括号里的是进程的PID。

n消息(message),剩下的部分就是消息的内容。

举例:

在# 提示符下输入:tail /var/log/高手messages

Jan 05 21:55:51 localhost last message repeated 3 times

Jan 05 21:55:51 localhost kernel: AGP 0.99 on Intel i810 @ 0xfM

B

Jan 05 21:55:51 localhost kernel: Initialized i830 1.3.on minor

Jan 05 21:55:51 localhost kernel: mtrr: base(0xf) is not aligned on a siz

e(0x12c000) boundary

Jan 05 21:56:35 localhost 1月 28 21:56:35 gdm(pam_unix): session opened f

or user root by (uid=0)

Jan 05 21:56:39 localhost 1月 28 21:56:39 gconfd (root-4162): 正在启动(版本 2.

2.0),pid 4162 用户”root”

Jan 05 21:56:39 localhost 1月 28 21:56:39 gconfd (root-4162): 解析的地址”xml:re

adonly:/etc/gconf/gconf.xml.mandatory”指向位于 0 的只读配置源

Jan 05 21:56:39 localhost 1月 28 21:56:39 gconfd (root-4162): 解析的地址”xml:re

adwrite:/root/.gconf”指向位于 1 的可写入配置源

Jan 05 21:56:39 localhost 1月 28 21:56:39 gconfd (root-4162): 解析的地址”xml:re

adonly:/etc/gconf/gconf.xml.defaults”指向位于 2 的只读配置源

Jan 05 21:58:20 localhost kernel: MSDOS FS: IO charset cp936

值得注意的是,与连接时间日志不同,进程统计子系统默认不激活,它必须启动。在Linux

系统中启动进程统计使用accton命令,必须用root身份来运行。accton命令的形式为:accton

file,file必须事先存在。先使用touch命令创建pacct文件:touch

/var/log/pacct,然后运行accton:accton

/var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何

参数的accton命令。

3.日志系统工作原理及配置

3.1 syslog

它同closelog, openlog共同给system logger发送消息。

Linux内核由很多子系统组成,包括网络、文件访问、内存管理等。子系统需要给用户传送一些消息,这些消息内容包括消息的来源及其重要性等。所有的子系统都要把消息送到一个可以维护的公用消息区。于是,就有了一个叫Syslog的程序。

这个程序负责接收消息(比如:系统核心和许多系统程序产生的错误信息、警告信息和其他信息,每个信息都包括重要级),并把消息分发到合适的地方。通常情况

下,所有的消息都被记录到特定的文件——日志文件中(通常是/var/adm或/var/log目录下的messages文件),特别重要的消息也会在用

户终端窗口上显示出来。

syslog工具有两个重要文件:syslogd和syslog.Conf

它能接受访问系统的日志信息并且根据 “/etc/syslog.conf” 配置文件中的指令处理这些信息。守护进程和内核提供了访问系统的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。

3.2 syslogd守护进程

 

 就象其它复杂的操作系统那样,Linux也是由很多不同的子系统组成的。有些叫做daemon的程序一直在后台运行(daemon:守护神之意。也就是

说,他们”默默无闻”,不需要和用户交互),处理一些象打印、发送邮件、建立Internet连接,等等日常工作。每一个子系统发出日志消息的时候都会给

消息指定一个类型。一个消息分成两个部分:”设备(facility)”和”级别(level)”。”设备”标识发出消息的子系统,可以把同一类型的消息组合在一起,”级别”表示消息的重要性,其范围从debug(最不重要)到emerg(最重要),facility和level组合起来称为priority。(详细解释参照5.3)

/usr/include/sys/syslog.h中对此有相关的定义。

用户看不到daemon程序,因为它们没有窗口和用户界面。但是,这些程序有时候也要给用户传递一些信息。为了实现这个目的,就需要一个特殊的机制。syslogd就是daemon的一个很好的例子,它在后台运行并且把消息从日志区转移到日志文件中去。

函数接口

#include

void openlog( char * , int , int )

其中,可以是以下值的OR组合:

LOG_CONS : 如果消息无法送到syslogd,直接输出到系统console。

LOG_NDELAY : 立即打开到syslogd的连接,默认连接是在之一次写入讯息时才打开的。

LOG_PERROR : 将消息也同时送到stderr 上

LOG_PID : 将PID记录到每个消息中

void syslog( int , char * )

其中,是facility和level的OR组合

void closelog( void )

一般只需要用syslog()函数,其他函数可以不用。

3.3 syslog.conf

这是一个非常重要的文件。位于”/etc/”目录下。通知 syslogd 如何根据设备和信息重要级别来报告信息。

该文件使用下面的形式:

facility.level action

syslog.conf 的之一列facility.level用来指定日志功能和日志级别,中间用.隔开,可以使用*来匹配

所有的日志功能和日志级别。第二列action是消息的分发目标。

空白行和以#开头的行是注释,可以忽略。

Facility.level 字段也被称做选择域(seletor)。

nfacility 指定 syslog 功能,主要包括以下这些:

auth 由 pam_pwdb 报告的认证活动。

authpriv 包括特权信息如用户名在内的认证活动

cron 与 cron 和 at 有关的信息。

daemon 与 inetd 守护进程有关的信息。

kern 内核信息,首先通过 klogd 传递。

lpr 与打印服务有关的信息。

mail 与电子邮件有关的信息

mark syslog 内部功能用于生成时间戳

news 来自新闻服务器的信息

syslog 由 syslog 生成的信息

user 由用户程序生成的信息

uucp 由 uucp 生成的信息

local0—-local7 与自定义程序使用,例如使用 local5 做为 ssh 功能

* 通配符代表除了 mark 以外的所有功能

level 级别,决定讯息的重要性。

与每个功能对应的优先级是按一定顺序排列的,emerg 是更高级,其次是 alert,依次类推。缺省时,在 /etc/syslog.conf 记录中指定的级别为该级别和更高级别。如果希望使用确定的级别可以使用两个运算符号!(不等)和=。

例如:user.=info 表示告知 syslog 接受所有在 info 级别上的 user 功能信息。

n以下的等级重要性逐次递减:

emerg该系统不可用

alert需要立即被修改的条件

crit阻止某些工具或子系统功能实现的错误条件

err阻止工具或某些子系统部分功能实现的错误条件

warning预警信息

notice具有重要性的普通条件

info提供信息的消息

debug不包含函数条件或问题的其他信息

none没有重要级,通常用于排错

* 所有级别,除了none

naction 字段为动作域,所表示的活动具有许多灵活性,特别是,可以使用名称管道的作用是可以使 syslogd 生成后处理信息。

syslog 主要支持以下活动:

file将消息追加到指定的文件尾

terminal 或 print完全的串行或并行设备标志符

@host远程的日志服务器

username 将消息写到指定的用户

named pipe 指定使用 mkfifo 命令来创建的 FIFO 文件的绝对路径。

*将消息写到所有的用户

选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成。当指明一个优先级时,syslogd将纪录一个拥有相同或更高优先级的消息。比如如果指明”crit”,则所有标为crit、alert和emerg的消息将被纪录。每行的行动域指明当选择域选择了一个给定消息后应该把他发送到什么地方。

以下是一个实际站点的配置(syslog.conf)文件:

# Store critical stuff in critical

#

*.=crit;kern.none/var/adm/critical

这个将把所有信息以优先权的crit保存在/var/adm/critical文件中,除了一些内核信息

# Kernel messages are first, stored in the kernel

# file, critical messages and higher ones also go

# to another host and to the console

#

kern.*/var/adm/kernel

kern.crit @finlandia

kern.crit /dev/console

kern.info;kern.!err/var/adm/kernel-info

之一条代码指引一些内核设备访问文件/var/adm/kernel的信息。

第二条代码直接引导所有拥有crit和更高优先权的内核信息访问远程主机。如果它们也存储在远程主机上,仍旧可以试着找到毁坏的原因。

第四行说明syslogd 保存了所有拥有info 到warning优先级的内核信息在/var/adm/kernel-info文件夹下。所有err和更高优先级的被排除在外。

# The tcp wrapper loggs with mail.info, we display

# all the connections on tty12

#

mail.=info /dev/tty12

这个引导所有使用mail.info (in source LOG_MAIL | LOG_INFO)的信息到/dev/tty12下,第12

个控制台。例如tcpwrapper

tcpd

(8)载缺省时使用这个

# Store all mail concerning stuff in a file

mail.*;mail.!=info/var/adm/mail

模式匹配了所有具有mail功能的信息,除了拥有info优先级的。他们将被保存在文件/var/adm/mail中

# Log all mail.info and news.info messages to info

#

mail,news.=info/var/adm/info

提取所有具有mail.info 或news.info 功能优先级的信息存储在文件/var/adm/info中

# Log info and notice messages to messages file

#

*.=info;*.=notice;\

mail.none /var/log/messages

使所有syslogd日志中具有info 或notice功能的信息存储在文件/var/log/messages中,除了所有mail功能的信息

# Log info messages to messages file

#

*.=info;\

mail,news.none/var/log/messages

这个声明使syslogd日志中所有具有info优先权的信息存储在/var/log/messages文件中。但是一些有mail 或news功能的信息不能被存储。

# Emergency messages will be displayed using wall

#

*.=emerg*

这行代码告诉syslogd写所有紧急信息到所有当前登陆用户日志中。这个将被实现

# Messages of the priority alert will be directed

# to the operator

#

*.alertroot,joey

*.*@finlandia

这个代码指引所有具有alert 或更高级权限的信息到终端操作。

第二行代码引导所有信息到叫做finlandia的远程主机。这个代码非常有用,特别是在所有syslog信息将被保存到一台机器上的群集计算机。

3.4 klogd 守护进程

klog是一个从UNIX内核接受消息的设备

klogd

守护进程获得并记录 Linux 内核信息。通常,syslogd 会记录 klogd

传来的所有信息。也就是说,klogd会读取内核信息,并转发到syslogd进程。然而,如果调用带有 -f filename 变量的 klogd

时,klogd 就在 filename 中记录所有信息,而不是传给 syslogd。当指定另外一个文件进行日志记录时,klogd

就向该文件中写入所有级别或优先权。Klogd 中没有和 /etc/syslog.conf 类似的配置文件。使用 klogd 而避免使用

syslogd 的好处在于可以查找大量错误。

总结

其中,箭头代表发送消息给目标进程或者将信息写入目标文件。

图1 Linux日志系统

日志管理及日志保护

logrotate程序用来帮助用户管理日志文件,它以自己的守护进程工作。logrotate周期性地旋转日志文件,可以周期性地把每个日志文件重命名

成一个备份名字,然后让它的守护进程开始使用一个日志文件的新的拷贝。在/var/log/下产生如maillog、maillog.1、

maillog.2、boot.log.1、boot.log.2之类的文件。它由一个配置文件驱动,该文件是

/etc/logroatate.conf。

以下是logroatate.conf文件例子:

# see “man logrotate” for details

# rotate log files weekly

weekly

#以7天为一个周期

# keep 4 weeks worth of backlogs

rotate 4

#每隔4周备份日志文件

# send errors to root

errors root

#发生错误向root报告

# create new (empty) log files after rotating old ones

create

#转完旧的日志文件就创建新的日志文件

# uncomment this if you want your log files compressed

#compress

#指定是否压缩日志文件

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d

# no packages own lastlog or wtmp — we’ll rotate them here

/var/log/wtmp {

monthly

create 0664 root utmp

rotate 1

}

# system-specific logs may be configured here

在网络应用中,有一种保护日志的方式,在网络中设定一台秘密的syslog主机,把这台主机的网卡设为混杂模式,用来监听子网内所有的syslog包,这

样把所有需要传送日志的主机配置为向一台不存在的主机发送日志即可。这样即使黑客攻陷了目标主机,也无法通过syslog.conf文件找到备份日志的主

机,那只是一个不存在的主机。实际操作中还可以辅以交换机的配置,以确保syslog包可以被备份日志主机上的syslog进程接受到。比如把

syslog.conf中的传送日志主机设为

@192.168.0.13,但实际网络中不存在这个日志主机,实际可能是192.168.0.250或者其他主机正在接受syslog包。

linux怎么查看服务器日志的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux怎么查看服务器日志,Linux服务器日志查看方法详解,如何查看linux的系统log日志的信息别忘了在本站进行查找喔。


数据运维技术 » Linux服务器日志查看方法详解 (linux怎么查看服务器日志)