百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

操作系统学习 认识Linux日志系统(linux日志管理系统)

nanshan 2024-10-22 13:03 16 浏览 0 评论


一、系统日志

日志在所有应用系统中都占有极其重要的位置,本文主要介绍Linux系统内核的日志,另外还介绍了一些日志分析工具。

1. 说明

看Linux系统信息日志主要的两种途径:

  • dmesg,用来检测和控制内核环缓冲。
  • /var/log 下的文件

2. dmesg

Linux将系统启动信息传到ring buffer中,内核产生的信息由printk()函数打印出来。printk()函数打出的信息用数字表示消息重要级别,高于一定级别会打印到屏幕。

sudo dmesg > message.txt

打印最近一次的信息

sudo dmesg | tail -f

Linux系统启动后,由/etc/init.d/sysklogd先后启动klogd,syslogd两个守护进程。

- klogd:kernel,记录内核相关的日志? - syslogd:service,记录应用程序的日志

3. klogd

使用klogd读取内核信息有两种方式:

  1. syslog()函数
  2. 读取/proc/kmsg/得到内核printk()发出的信息。

klogd的输出结果会传送给syslogd进行处理,syslogd会根据/etc/syslog.conf的配置把log信息输出到/var/log/下的不同文件中.

4. 常用的系统日志文件

/var/log/boot.log

记录本次开机时的启动信息,包括内核检测硬件、各种内核支持的功能等。

/var/log/cron 计划任务的日志

/var/log/dmesg

系统启动时,内核检测过程中产生的信息。

/var/log/lastlog

记录账号最后一次登陆信息。

/var/log/maillog或/var/log/mail/*

邮件往来记录。

/var/log/messages

记录很多信息,系统有问题时的必查文件。

/var/log/secure

记录一些账号登陆信息,如pop3、ssh、telnet、ftp登陆信息。

/var/log/wtmp,/var/log/faillog

成功与失败登陆的记录。

/var/log/httpd/*,/var/log/samba/*

一些网络服务产生的日志。

5. syslogd

syslogd是一个分发器,它将接收到的所有日志按照/etc/syslog.conf的配置策略发送到这些日志应该去的地方,当然也包括从klogd接收到的日志。klogd首先接收内核的日志,然后将之发送给syslogd。syslog函数原型:

syslog(priority, "%s", string);

二、Rsyslog服务收集日志

1. Rsyslog服务说明

Rsyslog是Linux下强大而安全的日志处理系统。

Rsyslog可以单机运行,也可以C/S方式运行。

  • 单机模式下,日志信息发送到本机的Rsyslog服务中,Rsyslog服务将日志记录到本地存储中;
  • C/S模式下,服务端和客户端都启动Rsyslog进程,客户端向服务端指定的Rsyslog端口发送日志。

2. 在Deepin或Ubuntu系统上安装Rsyslog

# 安装
sudo apt install rsyslog
rsyslogd -v
# 查看状态
systemctl status rsyslog.service
# 重启
systemctl restart rsyslog.service
# 启动
systemctl start rsyslog.service

3. rsyslog.service的配置文件

  • /etc/rsyslog.conf

2.3.1 配置C/S工作模式

服务端

配置文件:

vim /etc/rsyslog.conf

#################
#### MODULES ####
#################

# 开启UDP端口
module(load="imudp")
input(type="imudp" port="514")

# 开启TCP端口
module(load="imtcp")
input(type="imtcp" port="514")

# 可选配置--用于限制特定子网、IP等的访问
$AllowedSender TCP, 127.0.0.1, 10.10.10.0/8, *.xiem.com

服务器端要配置放行指定的端口号。

客户端

vim /etc/rsyslog.conf

$PreserveFQDN on                                      # 允许主机名保留FQDN


##Enable sending of logs over UDP add the following line:
# 配置使用UDP发送消息
*.* @服务器ip或域名:514                              # 添加远程RSYSLOG服务器


##Enable sending of logs over TCP add the following line:
# 配置使用TCP发送消息
*.* @@服务器ip或域名:514

# 配置当服务端不在线时的处理方式:进行本地缓存
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

2.3.2 查看日志

ls /var/log/rsyslog-client/

2.3.3 查看服务端监听的端口


netstat -4altunp | grep 514

三、logrotate 日志管理工具

1. logrotate说明

logrotate是一个Linux系统日志的管理工具。它可以切割、压缩等其他软件的日志文件软件。logrotate是基于crontab运行的,所以这个时间点是由crontab控制的,其脚本是/etc/cron.daily/logrotate。Logrotate会调用配置文件/etc/logrotate.conf。可以在/etc/logrotate.d目录里放置自定义好的配置文件,用来覆盖Logrotate的缺省值。

2. CentOS使用logrotate切分nginx日志示例:

yum -y install logrotate

查看配置文件位置:

rpm -ql logrotate

其中:

  • /etc/logrotate.conf logrotate的配置文件是
  • /etc/logrotate.d/ 是用于存储其他配置文件的目录

我们主要用它来切分nginx日志。

vim /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
rotate 7
missingok
notifempty
dateext
compress
sharedscripts
postrotate
    if [ -f /run/nginx.pid ]; then
        kill -USR1 `cat /run/nginx.pid`
    fi
endscript
}

其中 /var/log/nginx/*.log /run/nginx.pid要以 log位置和nginx.conf里 pid的实际位置为准。

  • 生产服务器 pid /var/run/nginx.pid;
  • 测试服务器 pid /run/nginx.pid

手工运行:

/usr/sbin/logrotate -f /etc/logrotate.d/nginx
/usr/sbin/logrotate -d -f /etc/logrotate.d/nginx

四、logwatch日志分析工具

logwatch 是一个Perl编写的开源日志分析器,可以对原始的日志文件进行解析并转换成结构化文档。

五、logger

在写bash时可以用来记录标准日志信息。

六、阿里云日志服务

阿里云日志服务给集中化日志管理提供了一个新的解决方案。其服务类似于ELK(Elasticsearch、Kibana 和 Logstash),支持多种数据数据的接入。

使用此服务需要在客户机安装阿里的logtail客户端。支持正则表达式等多种查询方式,也支持API接入。

相关推荐

Linux 的磁盘系统,和你了解的Windows差别很大

我的C盘去哪了?一个系统,如果没有存储,那么也就不能称之为系统。存储性是一个完整系统的重要组成部分。例如AWS最开始的服务就是S3(用来存储数据的云服务),足以见得存储对于一个应用平台是多么的重要。...

一文读懂 Linux 硬盘挂载:从问题到解决方案

各位互联网大厂的后端开发伙伴们!在咱们日常工作中,操作Linux系统是常有的事儿吧。你们有没有遇到过这样的场景:新添加了一块硬盘,满心欢喜准备用来存储重要数据或者部署新的应用服务,却突然发现不知道...

硬盘分区(硬盘分区格式)

 磁盘(硬盘)分区,可以分C、D、E等分区,大家可能都会用,会根据自已的需要确定所需的空间,但分区是如何工作的呢,内容如下。Windows中有3类:MBR分区:MasterBootRecord,也...

parted命令工具分区介绍(particle命令)

linux系统磁盘分区通常可以使用fdisk和parted命令,当分区大小小于2TB的时候,两种皆可以使用,当分区大于2TB的话,就需要用parted分区。以下介绍parted命令相关使用,以sdb为...

Linux 服务器上查看磁盘类型的方法

方法1:使用lsblk命令lsblk输出说明:TYPE列显示设备类型,如disk(物理磁盘)、part(分区)、rom(只读存储)等。NAME列显示设备名称(如sda、nvme0n1)。TR...

Linux分区命令fdisk和parted使用介绍

摘要:一般情况下,Linux分区都是选择fdisk工具,要求硬盘格式为MBR格式,能支持的最大分区空间为2T。但是目前在实际生产环境中使用的磁盘空间越来越大,呈TB级别增长;而常用的fdisk这个工具...

linux 分区原理与名词解释(linux操作系统中的分区类型)

分区的意义将磁盘分成几份,每份挂在到文件系统的那个目录在linux里的文件系统Ext2:早期的格式,不支持日志功能Ext3:ext2改良版,增加了日志功能,是最基本且最常用的使用格式了Ext4:针对e...

linux 分区合并(linux合理分区)

查看虚拟机当前磁盘挂载情况fdisk-l选择磁盘fdisk/dev/sda查看磁盘分区情况p重新选择分区n选择主分区p保存w创建物理卷pvcreate/dev/sda3查看物理卷信息pvdi...

如何在 Linux 系统中永久禁用交换分区 ?

Linux操作系统中的交换分区或交换文件充当硬盘上的临时存储区域,当物理内存(RAM)满时,系统使用该存储区域。它用于交换较少使用的内存页,这样系统就不会因为运行应用程序而耗尽物理内存。随着技术的发...

Linux 如何知道硬盘已用多少空间、未用多少空间

刚出社会时,去了一家公司上班,老板为了省钱,买的服务器是低配的,硬盘大小只有40G,有一次网站突然不能访问了,排查半天才知道原来服务器的硬盘空间已用完,已无可用空间。第一步是查看硬盘的使用情况,第二步...

用Linux系统管理磁盘空间 就该这么来

要想充分有效的管理使用Linux系统中的存储空间,用户必须要做的就是双管齐下,一边扩充空间一边限制空间。不得不说的就是很多时候磁盘空间就像水资源,需节制水流。说到要如何实现限制空间就离不开使用LVM技...

Windows 11 磁盘怎么分区?(windows11磁盘怎么分区)

Windows11磁盘分区技术解析与操作指南:构建高效存储体系一、磁盘分区的技术本质与系统价值磁盘分区作为存储系统的基础架构,通过逻辑划分实现数据隔离与管理优化。Windows11采用NTF...

linux上创建多个文件分区,格式化为 ext2、ext3、ext4、XFS 文件

以下是在Linux系统上创建多个20GB文件分区并格式化为不同文件系统的分步指南:步骤1:创建基础文件(4个20GB文件)bash#创建4个20GB稀疏文件(实际占用空间随写入量增长)ddif=/...

救命的U盘低格哪家最强?(低格优盘)

周二时有位童鞋留言说U盘之前做过引导盘,现在格式化不了,用各种工具都不行,而且因为U盘厂商的关系,查不到U盘主控,无法量产恢复,特来求助。小编花了点时间特意弄坏一个U盘分区,终于试出方法了,特来分享一...

Linux 查看硬件磁盘存储大小和磁盘阵列(RAID)的组合方式

一、查看硬件磁盘存储大小查看所有磁盘信息:#lsblk该命令会列出所有磁盘(如/dev/sda、/dev/nvme0n1)及其分区和挂载点。查看磁盘总容量:fdisk-l#或parted-...

取消回复欢迎 发表评论: