Linux syslog日志系统详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一. syslog简介

        syslog是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系统记录,随时掌握系统状况。UNIX的系统日志是通过syslogd这个进程记录系统有关事件记录,也可以记录应用程序运作事件。通过适当的配置,我们还可以实现运行syslog协议的机器间通信,通过分析这些网络行为日志,藉以追踪掌握与设备和网络有关的状况。

功能:记录至系统记录。

二 . syslog服务与配置

  1. 安装syslog软件包

    1. 软件包名称为:rsyslog-5.8.10-10.el6_6.x86_64

    2. 我用的是centos系统,配置的有第三方的yum源,我直接yum install直接装就OK了

    3. 装完后用 rpm -qa | grep syslog下看是否已安装

2.syslog日志系统可以根据程序详细信息的不同定义不同的日志级别。

3.Linux上的日志系统分为:syslog和syslog-ng(syslog日志系统的升级版)

4.syslog服务:

        syslog服务进程分两个,分别是:syslogd(系统,非内核产生的日志)和klogd(专门记录内核产生的日志)

        kernel-->物理终端(/dev/console)-->/var/log/dmesg

                  /var/log/dmesg文件可以使用dmesg命令和cat查看文件内容

        日志滚动(日志切割):

                所谓的滚动是指历史信息所保存的日志,如;messages文件日志会越来越大等到了某一段时间,会把messages文件重新命名为messages.1,系统并重新创建messages文件,所以叫做日志滚动

          /sbin/init

                /var/log/messages:系统标准错误日志信息;非内核产生的引导信息,各子系统产生的信息

                /vat/log/maillog:邮件系统产生的日志信息

                /vat/log/secure:安全相关log

系统自带的日志切割程序logrotate

logrotate脚本配置文件             

1
2
3
[root@localhost  cron .daily] # pwd
/etc/cron .daily
[root@localhost  cron .daily] # vim logrotate

 滚动日志信息配置文件     

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@localhost  cron .daily] # pwd
/etc/cron .daily
[root@localhost  cron .daily] # vim /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly                 #每周滚动一次
# keep 4 weeks worth of backlogs
rotate 4               #只保留4个切割版本文件,超过后清除  
# create new (empty) log files after rotating old ones
create                 #滚动完之后创建一个空的新的文件
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include  /etc/logrotate .d    #包括/etc/logrotate.d 下的文件,手动添加可直接添加到此目录
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp  {
     monthly                 #按月,自己定义
     create 0664 root utmp   #创建文件并0664权限
         minsize 1M          #最新1M
     rotate 1                #保留几个版本
}
/var/log/btmp  {
     missingok
     monthly
     create 0600 root utmp
     rotate 1
}
# system-specific logs may be also be configured here.
[root@localhost  cron .daily] #

syslog配置文件/etc/rsyslog.conf

注:centos 6 的配置文件是/etc/rsyslog.conf,centos5的配置文件是/etc/syslog.conf

5.配置文件定义格式为facility.priority  action

            facility是指哪个facility来源产生的日志;   priority是指拿个级别的日志 ;action是指产生日志怎么办是保存在文件中还是其他。。。

           facility可以理解为日志的来源或设备或选择条件,目前常用的facility有以下几种:

               auth                      #认证相关的

               authpriv                #权限,授权相关的

               cron                      #任务计划相关的

               daemon                #守护进程相关的

               kern                       #内核相关的

               lpr                          #打印相关的

               mail                        #邮件相关的

               mark                       #标记相关的

               news                       #新闻相关的

               security                   #安全相关的,与auth类似

               syslog                      #syslog自己的

               user                         #用户相关的

               uucp                        #unix to unix cp相关的

               local0到local7          #用户自定义使用

               *                                #*表示所有的facility

priority(log level)日志优先级的级别,一般分为以下几种级别(从低到高)

             注:级别越低记录的越详细

                debug                    #程序或系统的调试信息

                info                         #一般信息

                notice                     #不影响正常的功能,需要提醒用户的重要事件

                warning/warn         #可能影响系统功能,需要提醒用户的重要事件

                err/error                  #错误信息

                crit                           #比较严重的

                alert                         #必须马上处理的

                emerg/canic            #会导致系统不可用的

                *                               #表示所有的日志级别

                none                        #跟*相反,表示什么也没有

action(动作)日志记录的位置

                系统上的绝对路径      #普通文件 如:/var/log/XXX

                |                                #管道 通过管道送给其他的命令出来

                终端                          #终端 如:/dev/console

                @host                      #远程主机  如@10.1.1.1

                用户                          #系统用户 如:root

                *                               #登录到系统上的所有用户,一般emerg级别的日志是这样定义的

定义格式列子:

                mail.info  /var/log/mail.log   #表示将mail相关的,级别为info及info以上级别的信息记录到/var/log/mail.log文件中 

                auth.=info  @10.1.1.1            #表示将auth相关的,级别为info的信息记录到10.1.1.1主机上去,前提是10.1.1.1要能接收其主机发来的日志信息

                user.!=error                            #表示记录user相关的,不包括error级别的信息

                 user.!error                           #表示user.error相反

                *.info                                      #表示记录所有的日志信息的info级别

                mail.*                                      #表示记录所有mail相关的所有级别的信息

                *.*                                           #表示记录所有的日志信息的所有的日志级别

                cron.info;mail.info                  #多个日志来源可以用“ ; ”隔开

                cron,mail.info                         #与cron.info;mail.info        是一个意思

                mail.*;mail.!=info                    #表示记录mail相关的所有级别的信息,但是不包括info级别的信息


重启服务

            #service rsyslog reload    注:不重启但能读到配置文件;不建议重启

6.搭建Linux日志服务器

1
编辑配置文件 [root@localhost etc] # vim  /etc/sysconfig/rsyslog

修改配置文件中SYSLOGD_OPTIONS="-c 5" 添加“ -r选项”即可

目的可以让服务器能够接受客户端传来的数据

    配置文件如下

1
2
3
4
5
6
7
[root@localhost etc] # vim  /etc/sysconfig/rsyslog
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS= "-r -c 5"
~

重启syslog服务  

1
2
3
4
5
[root@localhost etc] # service rsyslog restart
关闭系统日志记录器:                                       [确定]
启动系统日志记录器:-r option only supported  in  compatibility modes 0 to 2 - ignored
                                                            [确定]
[root@localhost etc] #

7.搭建syslog客户端

    在syslog配置文件中修改/etc/rsyslog.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost etc] # vim /etc/rsyslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none; cron .none                 /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                               /var/log/secure
# Log all the mail messages in one place.
mail.*                                                  @192.168.1.66
 
# Log cron stuff
cron .*                                                   /var/log/cron
.
.
.
省略

重启syslog客户端

1
2
3
4
5
[root@localhost etc] # service rsyslog restart
关闭系统日志记录器:                                       [确定]
启动系统日志记录器:-r option only supported  in  compatibility modes 0 to 2 - ignored
                                                            [确定]
[root@localhost etc] #



注:如果以上内容发现错误,请告知留言即可,以方便纠正保证内容的准确性!!!


本文转自 zhangguangyi 51CTO博客,原文链接:http://blog.51cto.com/bosszhang/1680914


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
344
分享
相关文章
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
581 69
Grafana Loki,轻量级日志系统
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
72 27
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
11天前
|
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
65 10
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
2月前
|
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
108 24
Linux系统之whereis命令的基本使用
PHP 日志系统的最佳搭档:一个 Go 写的远程日志收集服务
为了不再 SSH 上去翻日志,我写了个 Go 小脚本,用来接收远程日志。PHP 负责记录日志,Go 负责存储和展示,按天存储、支持 API 访问、可远程管理,终于能第一时间知道项目炸了。
36 10
|
23天前
|
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
75 8
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
13天前
|
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
46 0