您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux日志系统

时间:2020-08-06 11:00:23  来源:  作者:

一、系统日志

日志在所有应用系统中都占有极其重要的位置,本文主要介绍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
操作系统学习 认识Linux日志系统

 

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),支持多种数据数据的接入。

操作系统学习 认识Linux日志系统

 

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



Tags:Linux 日志系统   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、系统日志日志在所有应用系统中都占有极其重要的位置,本文主要介绍Linux系统内核的日志,另外还介绍了一些日志分析工具。1. 说明看Linux系统信息日志主要的两种途径: dmesg,...【详细内容】
2020-08-06  Tags: Linux 日志系统  点击:(160)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(13)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(21)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(21)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(34)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(26)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(16)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(24)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条