开发手册 欢迎您!
软件开发者资料库

Linux管理员 - 日志管理

Linux管理日志管理 - 从简单和简单的步骤学习Linux管理,从基本到高级概念,包括CentOS概述,基本CentOS Linux命令,文件/文件夹管理,用户管理,配额管理,系统服务启动和停止,资源管理systemctl,带有crgoups的资源管理,进程管理,防火墙设置,在CentOS Linux中配置PHP,使用CentOS Linux设置Python,在CentOS Linux上配置Ruby,为CentOS Linux设置Perl,安装和配置Open LDAP,创建SSL证书,安装Apache Web Server CentOS 7,CentOS 7上的MySQL安装,设置Postfix MTA和IMAP / POP3,安装匿名FTP,远程管理,CentOS中的流量监控,日志管理,备份和恢复,系统更新,Shell脚本,包管理,卷管理。

systemd改变了CentOS Linux管理系统日志的方式.与使用 tail grep 等工具作为排序和过滤日志条目的主要方式相比,系统上的每个守护程序都将日志放入单独的位置, journald 为分析系统日志带来了单点管理.

systemd 日志记录背后的主要组件是:journal,jounralctl和journald.conf

journald 是主要的日志记录守护程序,通过编辑 journald.conf 进行配置,而 journalctl 用于分析由 journald 记录的事件.

journald 记录的事件包括:内核事件,用户进程和守护程序服务.

设置正确的系统时区

在使用 journalctl 之前,我们需要确保将系统时间设置为正确的时间.为此,我们要使用 timedatectl .

让我们检查当前的系统时间.

[root@centos rdc]# timedatectl status Local time: Mon 2017-03-20 00:14:49 MDT Universal time: Mon 2017-03-20 06:14:49 UTC RTC time: Mon 2017-03-20 06:14:49 Time zone: America/Denver (MDT, -0600) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: yes Last DST change: DST began at               Sun 2017-03-12 01:59:59 MST               Sun 2017-03-12 03:00:00 MDT Next DST change: DST ends (the clock jumps one hour backwards) at               Sun 2017-11-05 01:59:59 MDT               Sun 2017-11-05 01:00:00 MST              [root@centos rdc]#

目前,系统对当地时区是正确的.如果您的系统不是,让我们设置正确的时区.更改设置后,CentOS将自动计算当前时区的时区偏移,立即调整系统时钟.

让我们列出所有时区 timedatectl :

[root@centos rdc]# timedatectl list-timezones Africa/AbidjanAfrica/AccraAfrica/Addis_AbabaAfrica/AlgiersAfrica/AsmaraAfrica/BamakoAfrica/BanguiAfrica/BanjulAfrica/Bissau

这是 timedatectl list-timezones 的竞争输出.要查找特定的本地时区,可以使用和减去grep命令;

  [root @ centos rdc] #timedatectl list-timezones | grep -i"america/New_York" America/New_York  [root @ centos rdc]#

CentOS使用的标签是通常国家/地区有下划线而不是空格(New_York对比"纽约").

现在让我们设置我们的时区去;

  [root @ centos rdc] #timedatectl set-timezone"America/New_York" [root @ centos rdc] #date  Mon Mar 20 02: 28:44 EDT 2017  [root @ centos rdc]#

您的系统时钟应自动调整时间.

使用journalctl分析日志

使用journalctl时的常见命令行开关:

SwitchAction
-kLists only kernel messages
-uLists by specific unit (httpd, sshd, etc...)
-bBoots the label offset
-oLogs the output format
-pFilters by log type (either name or number)
-FFieldname or fieldnamevalue
--utcTime in UTC offset
--sinceFilter by timeframe

Examine Boot Logs

首先,我们将检查和配置CentOS Linux中的启动日志。 您会注意到的第一件事是,默认情况下,CentOS不存储在重新启动后保持持久的启动日志。

要检查每个重新启动实例的启动日志,我们可以发出以下命令:

[root@centos rdc]# journalctl --list-boots -4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT[root@centos rdc]#

重新启动系统后,我们可以看到另一个条目。

[root@centos rdc]# journalctl --list-boots -5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT [root@centos rdc]#

现在,让我们检查最后一个启动日志记录实例:

root@centos rdc]# journalctl -b -5 -- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M (max allowed 108.4MMar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpusetMar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuMar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacctMar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 (builder@kbuilder.dev.Mar 19 22:01:57 localhost.localdomain kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 roMar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operationsMar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

上面是我们上次引导的压缩输出。 我们还可以参考数小时,数天,数周,数月甚至数年的启动日志。 但是,默认情况下,CentOS不存储持久启动日志。 要启用持久存储启动日志,我们需要进行一些配置更改:

  • 为新的日志文件夹授予适当的权限

  • 配置journald.conf以进行持久日志记录

Configure Boot Location for Persistent Boot Logs

记录日志的初始位置将要存储持久启动日志为/ var / log / journal。 由于默认情况下不存在,因此创建它:

[root@centos rdc]# mkdir /var/log/journal

现在,让我们为目录赋予适当的权限,以便日记守护程序访问:

systemd-tmpfiles --create --prefix /var/log/journal

最后,让我们告诉日记中它应该存储持久启动日志。 在vim或您喜欢的文本编辑器中,打开/etc/systemd/jounrald.conf"。

# See journald.conf(5) for details.  [Journal]=Storage=peristent

我们关注的行是Storage =。 首先删除注释#,然后如上所述将其更改为Storage =持久性。 保存并重新启动您的CentOS系统,并在运行journalctl list-boots时注意应该有多个条目。

注意:像VPS提供程序那样不断变化的machine-id可能导致日记记录在存储持久启动日志时失败。 对于这种情况有很多解决方法。 最好仔细阅读发布在CentOS管理员论坛上的最新补丁,而不要遵循发现合理的VPS解决方法的人的可信赖建议。

要检查特定的引导日志,我们只需要使用日记的--list-boots使用-b开关获取偏移量即可。 因此,要检查第二个启动日志,我们将使用:

journalctl -b -2

没有指定启动日志偏移量的-b的默认值将始终是上次重新启动后的当前启动日志。

Analyze Logs by Log Type

日记中的事件被编号并分为7种独立类型:

0 - emerg   :: System is unusable 1 - alert   :: Action must be taken immediatly    2 - crit    :: Action is advised to be taken immediatly 3 - err     :: Error effecting functionality of application 4 - warning :: Usually means a common issue that can affect security or usilbity 5 - info    :: logged informtation for common operations 6 - debug   :: usually disabled by default to troubleshoot functionality

因此,如果我们想查看所有警告,可以通过journalctl发出以下命令:

[root@centos rdc]# journalctl -p 4-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024(v02 PTLTD )Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C(v01 INTEL  440BX    06040000 VMW  01Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4(v04 INTEL  440BX    06040000 PTL  00Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A(v01 PTLTD  Custom   06040000 MSFT 03Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028(v01 PTLTD  $SBFTBL$ 06040000  LTP 00Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742(v01 PTLTD  ? APIC   06040000  LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C(v01 PTLTD  $PCITBL$ 06040000  LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8(v02 VMWARE MEMPLUG  06040000 VMW  00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038(v01 VMWARE VMW HPET 06040000 VMW  00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028(v01 VMWARE VMW WAET 06040000 VMW  00 Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff] Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff] Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff] Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff] Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff] Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,mobility grouping on.  Total pages: 60 Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to'normal', was 'performance'

上面显示了系统过去4天的所有警告。

使用systemd查看和细读日志的新方法几乎不需要实践和研究就可以熟悉。 但是,由于输出格式不同,并且要特别注意使所有打包的守护程序日志都通用,因此值得拥抱。 与传统的日志分析方法相比,日志记录提供了极大的灵活性和效率。