• 日志分析与Rsyslog


    ---------------------------分析和存储日志--------------------------------

     #tail -f /var/log/messages[实时监控日志]

    rsyslog设施类型(facility)

    设施名代码说明

    kern   0 内核日志消息

    user   1 随机的用户日志消息

    mail   2 邮件系统日志消息

    daemon 3 系统守护进程日志消息

    auth   4 安全管理日志消息

    syslog 5 syslogd本身的日志消息

    lpr    6 打印机日志消息

    news   7 新闻服务日志消息

    uucp   8 uucp(unix2unixcopy)日志消息

    cron   9 crond日志消息

    authpriv 10 授权相关的日志信息

    ftp    11 ftp守护进程的日志信息

    12-15     保留,由系统使用

    local0~local7 16-23 保留,本地使用(可自定义)

    使用logger发送日志消息

    发送一个local3.info的日志消息

    #logger -p local3.info "hello!"

    //*-p指定优先级

    发送一个以kern设备优先级为err级别的消息

    #logger -t kern -p err “hello,wahahah.”

    Rsyslog

    查看当前系统中rsyslog状态

    #systemctl status rsyslog

    #systemctl is-enabled rsyslog

    #systemctl is-active rsyslog

    通过ps查看rsyslog进程

    #ps -ef | grep rsyslogd | grep -v grep

    配置说明:

    举例:

    /var/log/wtmp {

    monthly ←每月转储

    create 0664 root utmp ←创建wtmp文件,

    文件权限0644,属主root,属组:utmp

    minsize:1M ←日志大于1M才将被转储

    rotate 1 ←转储文件保留1份

    }

    示例1:

    1.编辑一个test的配置

    #vim /etc/logrotate.d/test

    /var/log/test.log {

    missingok

    rotate 5

    size 1k

    create 0640 root root

    }

    2.创建/var/log/test.log文件,大小为1000K

    #dd if=/dev/zero of=/var/log/test.log bs=1024 count=1000

    3.执行logrotate转储

    #logrotate -v /etc/logrotate.conf

    4.查看转储

    #ls -l /var/log/test.log*

    #journalctl[查看当前系统日志]

    #journalctl -n 5[显示最新的5条日志记录]

    #journalctl -p err[仅列示出err的错误信息]

    #journalctl -f[实时查看日志信息]

    #journalctl --since today[查看今天的日志]

    #journalctl –snice yesterday[查看昨天的日志]

    #journalctl --since “2014-09-09” --until “2014-09-15”[查看2014-09-09至2014-09-15的日志信息]

    #journalctl --since “2014-09-09 12:50:00” --until “2014-09-15 12:00:00”[查看2014-09-09 12:50至2014-09-15 12:00的日志信息]

    #journalctl --since 9:00 --until 18:00[按当日指定时间查看]

    #journalctl --since 9:00_SYSTEMD_UNIT=sshd.service[依照某个时间查看指定的单元信息]

    :计算机必须uptime,一旦reboot,将只能看到启动之后的日志

    #journalctl -o verbose[通过journalctl获得更多的各项服务/进程的信息]

    #journalctl -o verbose -n[显示10个服务/进程的详细信息]

    #journalctl -o verbose -n 1[显示1个服务/进程的详细信息]

    #journalctl_SYSTEMD_UNIT=sshd.service[显示指定的单元类型的相关日志信息]

    #journalctl_SYSTEMD_UNIT=sshd.service _PID=862[显示指定的单元类型及其PID的相关日志信息]

    #journalctl _UID=0[显示指定的UID所运行的服务/进程]

    #journalctl _PID=1[显示指定的PID信息]

    #journalctl -b[查看从启动时开始的所有信息]

    #journalctl -b -1[显示上一次系统启动前产生的日志]

    #journalctl -k[显示由kernel产生的日志信息]

    #systemd-analyze[显示本次启动系统过程中用户、initrd和kernel所花费的时间]

    #systemd-analyze blame[显示每个启动项所花费的时间明细]

    #systemd-analyze critical-chain[时间顺序你打印UNIT树]

    #systemd-analyze plot > bootplot.svg[产生开机启动过程的时间图标]

    #systemd-analyze dot | dot -Tsvg >systemd.svg[产生开机启动过程生成向量图]

    systemd journal写入至硬盘

    1)建立存放路径并设置相关权限

     #mkdir -v /var/log/journal

     #chown root.systemd-journal /var/log/journal

     #chmod 2755 /var/log/journal

    2)重启你的系统或执行

     #killall -USR1 systemd-journald

    //*USR1用户自定义信号,本实验用来产生日志消息

    3)确认目录下内容

     #cd /var/log/journal

     #cd $ID ←进入你机器的编号

     #ls

     system.journal

    ---------------------------------Rsyslog----------------------------------

    实现集中管理日志目的:

    B主机(client)的指定日志信息发送至A

    主机(Server).在A主机上可以集中查看A和B主机的全部信息

    IP说明

    host-A:192.168.131.129

    host-B:192.168.131.136

    Server端(A主机)实现

    1)配置rsyslog.conf

    #vim /etc/rsyslog.conf

    将下列注释开启

    $ModLoad imudp ←开启UDP syslog输入插件

    $UDPServerRun 514 ←-开启UDP监听端口514

    $ModLoad imtcp ←开启TCP syslog输入插件

    $InputTCPServerRun 514 ← 开启TCP监听端口

    rsyslog的传统传送日志方式的有3 种

    1.UDP传输, 但信息有损耗

    2.基于TCP明文的传输,只在特定情况下丢失信息,并被广泛使用

    3.RELP传输,不会丢失信息,但只在rsyslogd 3.15.0及以上版本中可用

    如果准备使用RELP传输,需要手动添加以下内容:

    $ModLoad imrelp

    $InputRELPServerRun 2514

    (2)#vim /etc/sysconfig/rsyslog改为 SYSLOGD_OPTIONS="-r514 -c2"[启用监听服务]

    Rsyslog

    参数:

    -c 指定运行兼容模式(兼容syslog)

    -r 指定监听端口

    -x再接收客户端时,禁用DNS查找(与-r配合)

    -m标记时间戳.单位:分钟,为0时,表示禁用。(即每个多少分钟,在日志文件里增加—MARK--,以便于确认syslog守护进程没有停止)

    -s ip :表示仅允许接收来自指定的IP信息

    -s 192.168.131.136:192.168.10.2

    #systemctl restart rsyslog[重启主机A的rsyslog服务]

    Client(Host B)配置

    #vim /etc/rsyslog.conf[配置rsyslog.conf]

    在下面添加一行如下配置

    *.* @192.168.131.129

    :

    UDP传输 在主机名前加"@"→在客户端更改传输方式后需重启服务

    TCP传输 在主机名前加"@@"

    RELP传输 在主机名前加":omrelp:"

    #systemctl restart rsyslog.service[启动rsyslog]

    测试

    1)Server端(Host-A)

    #tail -f /var/log/messages[时时监控]

    2)Client端(Host-B)

    #logger -t kern -p err "hahaha" 

  • 相关阅读:
    Leetcode 528. 按权重随机选择(中等) 前缀和数组+二分查找左侧边界
    Leetcode 494. 目标和(中等)回溯算法
    Datax使用SQL语句数据导入
    ps axjf 查看进程关系
    k8s CICD部署脚本
    1.18 kubeconfig ./admin.conf
    jenkins pipeline
    k8s jenkins CICD 流程
    cgroup driver
    docker 和contianerd区别
  • 原文地址:https://www.cnblogs.com/yanghaitao/p/11528010.html
Copyright © 2020-2023  润新知