首页 > 系统相关 >linux日志

linux日志

时间:2024-04-22 18:55:51浏览次数:25  
标签:log 记录 内核 linux var 日志 LOG

常见日志文件

在 CentOS 7 中,常见的日志文件包括但不限于以下几种:

  1. /var/log/messages: 这是系统的主要日志文件,记录了系统的各种信息,包括系统启动、关机、服务启动、系统错误等。

  2. /var/log/secure: 这个文件包含了安全相关的信息,比如 SSH 登录尝试、su 切换用户等操作的日志。

  3. /var/log/boot.log: 记录系统启动时的日志信息,包括启动过程中各个服务的启动情况。

  4. /var/log/cron: 记录了 cron 定时任务的执行情况,包括任务的执行时间、执行结果等。

  5. /var/log/yum.log: 记录了 yum 命令的操作记录,包括安装、卸载、更新软件包等操作。

  6. /var/log/httpd/: Apache Web 服务器的日志文件目录,其中包括 access_log(记录 HTTP 请求)、error_log(记录服务器错误信息)等文件。

  7. /var/log/mysql/: MySQL 数据库的日志文件目录,包括 error.log(记录数据库错误信息)、query.log(记录数据库查询信息)等文件。

  8. /var/log/maillog: 记录邮件服务器(如 Postfix)的日志信息,包括邮件的发送、接收等操作记录。

  9. /var/log/dmesg:记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息。

用户日志

  1. /var/log/lastlog: 记录了系统中所有用户最近一次登录的时间和相关信息。可以使用 lastlog命令来查看其内容。

  2. /var/log/wtmp: 记录了系统中所有用户的登录、注销和系统启动、关机等事件,以二进制格式存储。可以使用 last 命令查看其内容,例如 last -a 可以查看所有登录和注销事件。

  3. /var/log/btmp: 记录了登录失败的尝试,包括登录失败的用户名、IP地址和尝试的时间等信息。可以使用 lastb 命令查看其内容。

  4. /var/run/utmp: 这个文件记录了当前已登录的用户信息,包括用户名、登录终端、登录时间等。它是一个二进制文件,可以使用 who 、 w 、user命令来查看其内容。

内核和公共日志

在Linux系统中,日志可以分为两类:内核日志和用户空间(公共)日志。

  1. 内核日志:内核日志是由操作系统内核生成的日志,通常包含与系统硬件和内核相关的信息,如系统启动信息、硬件故障、内核模块加载和卸载等。这些日志通常由内核级别的设备驱动程序、中断处理程序和内核代码生成,并存储在系统内核环缓冲区(kernel ring buffer)中。可以通过dmesg命令查看内核日志。

  2. 用户空间(公共)日志:用户空间日志是由用户空间应用程序生成的日志,通常包含应用程序的运行状态、错误信息等。这些日志通常由系统日志守护进程(如syslogd、rsyslogd或systemd-journald)收集和处理,存储在系统的日志文件中(如/var/log/messages)。用户空间日志包括来自各种应用程序、服务和系统组件的消息,可以帮助诊断问题和跟踪系统行为。

日志服务管理

消息级别Loglevel

在Linux系统中,日志消息按照其重要程度可以分为不同的级别,这些级别是通过数字来表示的,数字越小表示优先级越高,消息越重要。常见的级别包括(按照从高到低的顺序):

  1. EMERGENCY(0)(紧急):表示系统已经不可用,需要立即采取行动。

  2. ALERT(1)(警报):表示需要立即采取行动以防止进一步的损失或损害。

  3. CRITICAL(2)(临界):表示严重的错误,可能导致系统无法正常工作。

  4. ERROR(3)(错误):表示发生了某种错误,需要立即处理。

  5. WARNING(4)(警告):表示可能存在问题,但程序仍然可以继续运行。

  6. NOTICE(5)(注意):表示需要用户注意的信息,但不是错误或警告。

  7. INFO(6)(信息):表示一般信息,通常用于输出程序状态或操作。

  8. DEBUG(7)(调试):表示调试信息,通常用于开发和调试过程中。

这些级别通常用于系统日志(如syslog)或应用程序日志中,可以根据需要进行配置和调整。

日志类型

在rsyslog系统日志工具中,日志消息通常按照设备、设施和优先级进行分类。下面是一些常见的日志类型及其含义:

  1. auth (LOG AUTH):安全和认证相关消息的日志,记录用户登录、认证尝试等活动。

  2. authpriv (LOG_AUTHPRIV):私密的安全和认证相关消息的日志,通常包含敏感信息,如用户登录失败的尝试,建议不使用此项,推荐使用auth替代。

  3. cron (LOG_CRON):系统定时任务(如crontab和at)产生的日志,记录计划任务的执行情况。

  4. daemon (LOG_DAEMON):与各个守护进程相关的日志,记录守护进程的活动和状态。

  5. ftp (LOG_FTP):FTP守护进程产生的日志,记录FTP传输的信息和状态。

  6. kern (LOG_KERN):内核产生的日志,记录与内核相关的消息,如系统启动和关机消息、硬件故障等。

  7. local0-local7 (LOG_LOCAL0-7):为本地使用预留的服务,可以用于定义特定应用程序或服务产生的日志消息。

  8. lpr (LOG_LPR):打印产生的日志,记录打印任务的状态和信息。

  9. mail (LOG_MAIL):邮件收发信息的日志,记录邮件传输代理(MTA)的活动和状态。

  10. news (LOG_NEWS):与新闻服务器相关的日志,记录新闻发布和传输的信息。

  11. syslog (LOG_SYSLOG):存储syslogd服务产生的日志信息,尽管服务名称可能已经改为rsyslogd,但仍然沿用syslogd服务的配署。

  12. user (LOG_USER):用户等级类别的日志信息,记录用户活动和事件。

rsyslog 系统日志服务

rsyslog是一款灵活、高性能的系统日志服务,用于收集、处理和转发Linux系统生成的日志消息。在centos6和7中被使用。如果服务器数量多则使用ELK作为日志服务。

 查看rsyslog的相关文件,可以看出/etc/rsyslog.conf是他的配置文件。进入配置文件。\

日志处理规则#### RULES ####

找到#### RULES ####可以定制日志处理规则。

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

例如,在上面这一行中,authpriv表示的是日志类型,*为所有消息级别,表示私密的安全和认证相关消息的日志,将日志保存到/var/log/secure

# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

上面一行的解释如下:

*.info: 这是一个选择器,指定了日志消息的设施和级别。* 表示所有设施(如 auth、cron、mail 等),而 info 表示消息级别为 info 或更高(包括 notice、warning、error、critical 和 alert)的消息。换句话说,这将匹配所有设施中级别为 info 或更高的消息。

mail.none: 这是一个排除器,指定不记录特定设施的消息。mail.none 意味着不记录邮件相关的消息。authpriv.none;cron.none 相同。

/var/log/messages: 这是指定日志消息应该记录到的文件路径。在这种情况下,它将消息记录到 /var/log/messages 文件中。

日志传输协议#### MODULES ####

如果需要将日志传输远程给日志服务器,则需要选择传输协议。如下图所示,找到#### MODULES ####可以选择udp或tcp传输。

单独设置ssh服务日志

首先使selinux为宽松模式

原来ssh日志在/var/log/secure,现在需要把ssh服务的日志文件独立出来。

 如图可知,ssh的配置文件为/etc/ssh/sshd_config。

 先修改日志类型,将32行的AUTHPRIV类型改为LOCAL6类型。因为LOCAL7类型已经存在。

在/etc/rsyslog.conf文件中添加local6,级别为任意,日志保存位置为/data/ssh.log。并且加上注释。

 重启rsyslog和ssh服务,查看新的日志文件。

 远程日志

现在需要将本机的日志保存到日志服务器上。

首先将两边selinux设为宽松模式

在/etc/rsyslog.conf中为两端开启tcp服务,可以看到开放了514端口为传输使用。

 重启服务后可以看到端口514开启

 在客户端上,例如我们想将保存到/var/log/messages的日志保存到ip地址为192.168.146.146的服务器上,我们可以在后面加上一行,用tcp传输,将日志保存位置改为@@加上ip地址。

如果是upd传输,只需要一个@。

在防火墙上放通tcp的514端口。

 此时我们在客户端上写入日志。

开日志服务器上使用tail -f /var/log/messages命令可以看到客户端更新的日志。

ELK

ELK:由Elasticsearch, Logstash, Kibana三个软件组成,适用于服务器数量很多的情况。

  • 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene

  • Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能

  • Logstash对日志进行收集、分析,过滤,并将其存储供以后使用

  • Kibana 可以提供的日志分析友好的 Web 界面

  • kafka消息队列

 

标签:log,记录,内核,linux,var,日志,LOG
From: https://www.cnblogs.com/hxqwe/p/18151227

相关文章

  • SLS 查询新范式:使用 SPL 对日志进行交互式探索
    作者:无哲引言在构建现代数据和业务系统的过程中,可观测性已经变得至关重要,日志服务(SLS)为Log/Trace/Metric数据提供了大规模、低成本、高性能的一站式平台服务,并提供数据采集、加工、投递、分析、告警、可视化等功能,从而全面提升企业在研发、运维、运营和安全等各种场景的数字化......
  • Linux基础-01:Linux命令的基本格式
    2.1.1命令提示符在CentOS7操作系统中,Linux命令提示符就像是你与电脑交流的一个小标志,告诉你系统已经准备好接受你的指令了。它通常会显示在你打开的终端窗口或控制台的最前面。让我们来看一个示例:[root@node01~]$在这个示例中:root:是当前登录的用户名。@:分隔符号,没有特......
  • Linux端口探测脚本
    #!/bin/bash#定义需要测试的主机和端口host="baidu.com"port="80"#设置循环测试的间隔时间(以秒为单位)interval=1#定义nc命令超时时间timeout_duration=1#定义保存结果的文件路径output_file="Sc4_port_test.txt"#循环测试端口连通性whiletrue;do#使......
  • linux下springboot项目nohup日志或tomcat日志切割处理方案
    https://juejin.cn/post/7081890486453010469通常情况下,我们的springboot项目部署到linux服务器中,通过nohupjava-jarxxx.jar&指令来进行后台运行我们的springboot项目。这种方式针对中小型项目来说,还是比较简单方便的。通过nohup运行springboot项目,默认日志输出到当前目......
  • day18_我的Java学习笔记 (Logback日志框架、阶段项目--详见视频教程)
    1.日志框架1.1日志技术的概述1.2日志技术体系结构1.3Logback概述需要3个文件:1.4Logback快速入门1.4.1在项目下新建lib文件夹,导入Logback的相关jar包,并全选右键添加到项目依赖库中新建工程:logback-app将3个jar包拷贝到lib目录下全选,右键,选择......
  • Linux应用程序获取线程栈的信息
    一.参考网址1. Linux应用程序设计:用一种讨巧方式,来获取线程栈的使用信息2.chatGPT的输出二.代码实战1.适用于ARM的汇编代码1#define_GNU_SOURCE//没有此句话,则编译会出错23#include<stdio.h>4#include<string.h>5#include<pthread.h......
  • 面试必备,Linux面试题和答案!
    ​作为测试开发,对于Linux相关知识,不管是面试还是工作,多多少少你还是得会点。再说了,现在行情极差,要求又高,linux也是面试重头戏,所以,今天给你分享Linux相关面试题和答案。题目1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示?切换目录用什么命令?2、怎......
  • 3568F-Linux系统启动卡制作及系统固化
     ......
  • 日志架构演进:从集中式到分布式的Kubernetes日志策略
    当我们没有使用云原生方案部署应用时采用的日志方案往往是ELK技术栈。这套技术方案比较成熟,稳定性也很高,所以几乎成为了当时的标配。可是随着我们使用kubernetes步入云原生的时代后,kubernetes把以往的操作系统上的许多底层都屏蔽,再由他提供了一些标准接口。同时在kuber......
  • Linux 替换cat
    mv/bin/cat /bin/cat_oln-s/usr/bin/coreutils/sbin/catnano /bin/cat#!/bin/bashfunctionCPUinfo{#在这里编写处理/proc/cpuinfo文件并输出结果的代码localcpuinfo_contentcpuinfo_content=$(</proc/cpuinfo)#将内容中的e660735d11e55937替换......