linux运维基础[日志管理]——————日志管理rsyslog、日志定向采集、日志远程管理、日志格式设定

系统日志基础rsyslog配置 简介     Linux在日常运作中大量服务处理的事务信息需要记录下来,以便于对服务的监控及排错。CentOS 6 专门提供了一个日志处理服务——rsyslogd,它可以将程序产生的日志信息进行过滤、处理并存储到指定 文件/服务器 中,通过编辑其配置文件 /etc/rsyslog.conf 进行一些全局或者日志规则的定义。 rsyslog基本配置 /etc/rsyslog.conf 配置内容主要... 阅读详情

1.什么是日志?

电脑的日志相当于我们平常写的日记,日志里面记录的是服务器的状态

日志的存在可以使管理员提前知道服务器的各种状态,如果服务器出现什么问题可以提前处理。

那么问题来了,公司的服务器很多,难道管理员一个一个查看服务器的状态吗?实际上并不是这样的,为了提高工作效率,我们可以把所有服务器的日志集中在一起管理,放在一台主机上管理,将其他服务器的日志都传到这台管理日志的主机上,这样就方便多了。

2.搭建实验环境

我们需要两台服务器:

  • 一台作为管理日志服务器。server,设定IP:123.0.0.1/24
  • 一台作为客户端被管理。client,设定IP:123.0.0.2/24

服务端:

[root@server ~]# ip a
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:00:05:0a brd ff:ff:ff:ff:ff:ff
    inet 123.0.0.1/24 brd 123.0.0.255 scope global eth0 
    # ip设定成功
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe00:50a/64 scope link 
       valid_lft forever preferred_lft forever

客户端:

[root@client ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.0.0.2  netmask 255.255.255.0  broadcast 123.0.0.255 
        # ip设定成功
        inet6 fe80::5054:ff:fe00:50b  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:00:05:0b  txqueuelen 1000  (Ethernet)
        RX packets 131  bytes 17998 (17.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 200  bytes 24159 (23.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

接下来两台服务器添加解析:

首先在服务器端设定:

[root@server ~]# vim /etc/hosts # 编辑解析文件
[root@server ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

123.0.0.1 server.example.com # 写入自己的域名与IP
123.0.0.2 client.example.com # 写入客户的域名与IP
[root@server ~]# scp /etc/hosts root@123.0.0.2:/etc/ # 将此文件远程发送给client用户
root@123.0.0.2's password: 
hosts                                         100%  217     0.2KB/s   00:00    
[root@server ~]# ping client.example.com # 现在就可以解析域名了
PING client.example.com (123.0.0.2) 56(84) bytes of data.
64 bytes from client.example.com (123.0.0.2): icmp_seq=1 ttl=64 time=0.209 ms
64 bytes from client.example.com (123.0.0.2): icmp_seq=2 ttl=64 time=0.418 ms
^C
--- client.example.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.209/0.313/0.418/0.105 ms

直接在客户端进行测试:

[root@client ~]# ping server.example.com # 客户端也可以解析服务器域名
PING server.example.com (123.0.0.1) 56(84) bytes of data.
64 bytes from server.example.com (123.0.0.1): icmp_seq=1 ttl=64 time=0.237 ms
64 bytes from server.example.com (123.0.0.1): icmp_seq=2 ttl=64 time=0.391 ms
^C
--- server.example.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.237/0.314/0.391/0.077 ms

3.系统日志管理

rsyslog:此服务是用来采集系统日志的,它自己不产生日志,只是起到采集日志的作用

对日志进行分析,首先第一步要规整日志。

  • /etc/rsyslog.conf 是rsyslog服务的总配置文件
  • /etc/rsyslog.d 该目录是单独配置的rsyslog配置文件

也就是说在/etc/rsyslog.d中设定怎样对客户端服务,/etc/rsyslog.conf怎样管理好rsyslog服务本身。

[root@server ~]# whereis rsyslog
rsyslog: /usr/lib64/rsyslog /etc/rsyslog.conf /etc/rsyslog.d

rsyslog的日志的采集保存在以下几个路径

/var/log/messages服务信息日志
/var/log/secure系统登陆日志
/var/log/cron定时任务日志
/var/log/maillog邮件日志
/var/log/boot.log系统启动日志

在后续我们可以添加自己的日志文件,来进行测试。

日志采集保存在/var/log/file(文件名)中:

可以收集的日志的类型有:

日志类型日志内容
auth用户认证时产生的日志
authprivssh、ftp等登录信息的验证信息
daemon一些守护进程产生的日志
ftpFTP产生的日志
lpr打印相关活动
mark(syslog)-rsyslog 服务内部的信息,时间标识
news网络新闻传输协议(nntp)产生的消息。
syslog系统日志
security
uucpUnix-to-Unix Copy 两个unix之间的相关通信
console针对系统控制台的消息。
cron系统执行定时任务产生的日志。
kern系统内核日志
local0~local7自定义程序使用
mail邮件日志
user用户进程

日志的级别分为:

日志等级说明
7emerg紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。
6alert需要立即修复的告警。
5crit危险情况,例如硬盘错误,可能会阻碍程序的部分功能。
4error/err一般错误消息。
3warning/warn警告。
2notice不是错误,但是可能需要处理。
1info通用性消息,一般用来提供有用信息。
0debug调试程序产生的信息。
none没有优先级,不记录任何日志消息。

4.日志的定向采集

将什么类型、什么级别的日志放在哪个路径下,这就叫日志的定向采集

这样做也有利于日志的管理和查看,因此应该设计采集规则

在服务器自己收集日志测试:

1)建立一个自己的日志收集文件:

[root@server ~]# touch /var/log/song 
[root@server ~]# ll /var/log/song # 成功建立自己的日志收集文件
-rw-r--r-- 1 root root 0 Aug  6 23:30 /var/log/song

2)在日志采集文件里面设置将任意类型、任何级别的日志都存放在/var/log/song文件中,如果/var/log/song文件不存在会自动生成。

 vim /etc/rsyslog.conf
 46 #### RULES #### # 这里就可以开始写收集日志规则了
 47 
 48 # Log all kernel messages to the console.
 49 # Logging much else clutters up the screen.
 50 #kern.*                                                 /dev/console
 51 
 52 # Log anything (except mail) of level info or higher.
 53 # Don't log private authentication messages!
 54 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
 55 *.*                                                     /var/log/song
 # 任何类型.任何等级											# 都收集在此文件中

3)重新启动rsyslog服务,让他重新读取自己的配置文件。

[root@server ~]# systemctl restart rsyslog.service  # 重启服务
[root@server ~]# systemctl status rsyslog.service 
rsyslog.service - System Logging Service
   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled)
   Active: active (running) since Thu 2020-08-06 23:36:09 EDT; 10s ago
 Main PID: 2334 (rsyslogd)
   CGroup: /system.slice/rsyslog.service
           └─2334 /usr/sbin/rsyslogd -n

Aug 06 23:36:09 server.example.com systemd[1]: Starting System Logging Servi....
Aug 06 23:36:09 server.example.com systemd[1]: Started System Logging Service.
Hint: Some lines were ellipsized, use -l to show in full.

4)测试,我们重新开启httpd服务,查看/var/log/song日志内容:

[root@server ~]# systemctl restart httpd # 重启apache服务
[root@server ~]# cat /var/log/song 
Aug  6 23:36:09 server rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="2334" x-info="http://www.rsyslog.com"] start
Aug  6 23:36:09 server rsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
Aug  6 23:36:09 server systemd: Stopping System Logging Service...
Aug  6 23:36:09 server systemd: Starting System Logging Service...
Aug  6 23:36:09 server systemd: Started System Logging Service.
Aug  6 23:38:35 server systemd: Starting The Apache HTTP Server...
Aug  6 23:38:35 server systemd: Started The Apache HTTP Server. # 日志中含有httpd服务的启动信息

由此可见,将任意类型、任何级别的日志定向采集到了/var/log/song之中

5)总结:实际在企业当中,我们要将日志分类管理,可以参考第三项系统日志管理里面的类型和级别,将 *.*改为日志类型.日志级别,然后存放在指定的文件当中即可。

5.日志的远程同步

一台服务器管理多台服务器日志的实验如下:

5.1 设定客户端

首先在客户端进行设定:

1) 在/etc/rsyslog.conf这个文件中写入 123.0.0.1(服务端的IP),要将指定的日志发送给这个IP。

[root@client ~]# vim /etc/rsyslog.conf

# 首先在14-20行中确定你要使用那种传输方式UDP还是TCP,这里我选择UDP
14 # Provides UDP syslog reception
15 $ModLoad imudp # 去掉注释就可以了
16 $UDPServerRun 514
17 
18 # Provides TCP syslog reception
19 #$ModLoad imtcp
20 #$InputTCPServerRun 514

# 在RULES下添加发送的IP。
46 #### RULES ####
47 
48 # Log all kernel messages to the console.
49 # Logging much else clutters up the screen.
50 #kern.*                                                 /dev/console
51 
52 # Log anything (except mail) of level info or higher.
53 # Don't log private authentication messages!
54 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
55 *.*     @123.0.0.1
# 所有类型.所有级别的日志,都发送给123.0.0.1

这里注意:

  • 使用UDP:@123.0.0.1
  • 使用TCP:@@123.0.0.1

2)重启客户端的rsyslog服务:

[root@client ~]# systemctl restart rsyslog.service 

客户端准备成功。

5.2 设定服务端

1)在接收方server主机中先 vim /etc/rsyslog.conf

[root@server ~]# vim /etc/rsyslog.conf

# 在14-20行中确定你要使用那种传输方式UDP还是TCP,这里我选择UDP
14 # Provides UDP syslog reception
15 $ModLoad imudp # 去掉注释就可以了
16 $UDPServerRun 514
17 
18 # Provides TCP syslog reception
19 #$ModLoad imtcp
20 #$InputTCPServerRun 514

2) 重启服务

[root@server ~]# systemctl restart rsyslog.service

3)关闭防火墙:是为了让客户端发送的日志可以不被防火墙挡在外面。

[root@server ~]# systemctl stop firewalld.service  # 关闭防火墙
[root@server ~]# systemctl disable firewalld.service # 开机不能自启动防火墙
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'

5.3 测试

1)在客户端和服务端都清空日志

服务端:

[root@server ~]# > /var/log/messages # 输入为空,即是清空
[root@server ~]# cat /var/log/messages # 查看为空

客户端:

[root@client ~]# > /var/log/messages
[root@client ~]# cat /var/log/messages

2)在日志客户端的shell当中产生测试日志:

[root@client ~]# logger test # 生成测试日志
[root@client ~]# cat /var/log/messages # 查看测试日志
Aug  7 00:03:19 client root: test

3)在服务端查看日志:

[root@server ~]# cat /var/log/messages
Aug  7 00:03:19 client root: test
# 是client发送的日志

可见两台主机实现远程同步了。

注意:在服务端可以查看接口配置是否正确开启 :

[root@server ~]# netstat -antlupe | grep rsyslog 
# 514端口为任何网段开启,作为rsyslog的服务端口,使用的UDP传输方式
udp        0      0 0.0.0.0:514             0.0.0.0:*                           0          49292      2606/rsyslogd       
udp6       0      0 :::514                  :::*                                0          49293      2606/rsyslogd 

6. 日志采集格式的设定

此实验是在实现远程同步的基础上进行的。

6.1 传统格式

首先查看一般格式的日志:

[root@server ~]# cat /var/log/messages
Aug  7 00:10:01 server systemd: Starting Session 14 of user root.
Aug  7 00:10:01 server systemd: Started Session 14 of user root.
Aug  7 00:09:10 client rc.local: /etc/rc.d/rc.local: connect: Connection timed out
Aug  7 00:09:10 client rc.local: /etc/rc.d/rc.local: line 18: /dev/tcp/content.example.com/80: Connection timed out
Aug  7 00:10:01 client systemd: Starting Session 14 of user root.
Aug  7 00:10:01 client systemd: Started Session 14 of user root.
# 时间			谁		记录目标	   内容

那么我们希望可以用一下的方式管理:

知道日志的生成时间、日志发送方的ip地址、日志的服务目标、日志的内容,这样在管理服务器的时候就方便多了。

6.2 设定格式

1)在服务端进行日志采集格式的设置

[root@server ~]# vim /etc/rsyslog.conf 

#在RULES写入收集规则SONG
46 #### RULES ####
47 $template SONG,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
48 # Log all kernel messages to the console.
49 # Logging much else clutters up the screen.
50 *.* 		/var/log/song;SONG
# 使用SONG格式收集日志在/var/log/song中。

23 #### GLOBAL DIRECTIVES ####
24 
25 # Where to place auxiliary files
26 $WorkDirectory /var/lib/rsyslog
27 
28 # Use default timestamp format
29 $ActionFileDefaultTemplate SONG
# 修改系统默认日志采集格式为SONG

也就是:

显示日志的生成时间%timegenerated%
显示发送方主机的ip%FROMHOST-IP%
日志记录目标%syslogtag%
日志内容%msg%
换行\n

2)重启服务,查看/var/log/song文件:

[root@server ~]# systemctl restart rsyslog.service 
[root@server ~]# cat /var/log/song
# 时间 			IP		记录目标		日志内容
Aug  7 00:29:57 127.0.0.1 systemd: Stopping The Apache HTTP Server...
Aug  7 00:29:58 127.0.0.1 systemd: Starting The Apache HTTP Server...
Aug  7 00:29:58 127.0.0.1 systemd: Started The Apache HTTP Server.

3)客户端的格式还是由自己的配置决定,单是发送到服务端就会变为刚才设定的格式:

客户端:

[root@client ~]# > /var/log/messages
[root@client ~]# logger test
[root@client ~]# cat /var/log/messages
Aug  7 00:42:42 client root: test

服务端:

[root@server ~]# cat /var/log/messages 
Aug  7 00:44:59 123.0.0.2 root:  test
# 格式已经修改成功

这样就非常方便管理了。

RSYSLOG系列】rsyslog远程服务器搭建 搭建接收日志rsyslog服务器 阅读详情

相关推荐

视频教程-SAP S4 HANA FICO COPA 获利能力分析-ERP

SAP S4 HANA FICO COPA 获利能力分析 从业超过8年的SA...

weixin_33456805的博客 1422

rsyslog基本介绍

rsyslog 配置简介 rsyslog 配置简介 2013-12-30 Dec 31 22:02:36 linux-64 rsyslogd-2039: imuxsock begins to drop messages from pid 6927 due to rate-limiting Dec 31 22:02:39 linux-64 rsyslogd-2039: imuxso

dl2277130327的博客 3154

小米路由器R1D进阶玩法:MIXBOX工具箱安装与插件管理指南

本文详细介绍了为小米路由器R1D安装MIXBOX工具箱的完整指南。通过开启SSH、执行一键安装脚本,用户可以轻松解锁路由器的进阶功能,如安装离线下载、内网穿透等插件,从而将旧设备转变为强大的家庭网络服务中心。

weixin_29292431的博客 1036

总结:日志

rsyslog 多线程 UDP, TCP, SSL, TLS, RELP MySQL, PGSQL, Oracle实现日志存储 强大的过滤器,可实现过滤记录日志信息中任意部分 自定义输出格式 CentOS6和7默认使用 ELK (elasticsearch, logstash, kibana) 非关系型分布式数据库 基于apache软件基金会jakarta项目组的项目lucene Elasticsearch是个开源分布式搜索引擎 Logstash对日志进行收集、分析,并将其存储供以后使用 ki..

wauzy的博客 255

Linux Rsyslog系统日志管理

Rsyslog系统日志管理:一、常见的系统日志,二、日志管理程序,三、日志级别,四、日志配置,五、本地日志管理SSH,六、远程日志管理 (清空了五的环境),七、日志轮转·  作业·  小实验:(结论)

果子哥丶的博客 2089

带你了解Linux系统Rsyslog系统日志管理

一、简介 日志管理分为两部分:   任务一:rsyslog系统日志管理–>程序种类产生的日志种类放到哪里   任务二:logrotate日志轮转–>批量管理日志,进行分割和删除  日志平常一般不会查看,经常会在系统出错时查看日志来查看报错原因 二、处理日志的进程 第一类:   rsyslogd:系统专职日志程序。处理绝大部分日志记录,系统操作有关的信息,如登录信息,程序启动关闭信息,错误信息 第二类:   httpd/nginx/mysql:各类应用程序,可以以自己的方式记录日志,讲解对应程序时

ljc1999的博客 748

Linux系统远程日志同步(rsyslog

Linux系统远程日志同步方便管理服务器 一、Linux系统日志服务安装 二、日志服务器通过UDP接收日志 三、日志服务器通过TCP接收日志 四、logger命令

renfeigui0的博客 4010

Linux系统之部署Rsyslog 日志服务器

Linux系统之部署Rsyslog 日志服务器

jks212454的博客 2371

linux系统管理员 linux日志管理

实验环境 #关闭防火墙 systemctl stop firewalld 1.journald 服务名称:systemd-journald.service journalctl 默认日志存放路径: /run/log ##实验1 journalctl命令的用法## 26 journalctl -n 3 ##显示日志的最新三条 [root@westoslinux ~]# journalctl -n 3 -- Logs begin at Thu 2021-07-29 10:18:39...

weixin_45041580的博客 968

这份日志格式规范,建议收藏!!!

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐点击领取全栈资料:全栈资料1 简介在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方。写好程序的日志可以帮助我们大大减轻后期维护压力。在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往往没有引起足够的重视。开发人员应在一开始就养成良好的日志撰写习惯,并且应在实际的开发工作中为...

全栈开发者社区 950

Linux —— 日志

日志: log : 某个程序记录所有的发生的事情到一个文件里,这个文件里的信息就是日志什么是日志?日记: diary 某个人将某天发生的事情记录下来,方便以后查看 --》记录某个人一天发生的事情日志会记录哪些?时间+服务器+进程+发生的事情:1、方便查询以前的事情,可以审计 2、记录出错的信息,方便故障排查 3、大数据分析缺点:消耗内存、cpu、磁盘等资源。

ZhouXin1111112的博客 1438

rsyslog无法发送日志到server端问题定位

问题描述 网络正常的情况下,代码端中使用openlog无法正常将日志发往syslog服务器。即使使用logger也无法正常发送。 环境 ARM设备充当client端。 pc虚拟机Ubuntu充当server端。 验证方式 通过wireshark抓包设备端发送的syslog协议报文。 rsyslog.conf与rsyslog.service网上有很多描述,这里就不展开赘述了。 解决办法 修改rsyslog.conf配置文件 添加sysSock.Name="/dev/log" 修订内容如下: module(lo

chenwr2018的博客 8756

Failed to start System Logging Service

视频教程:https://shop57709059.taobao.com/ [root@iZwz9h9xw1ycuzhhyaq03kZ itlong]# systemctl status rsyslog.service ● rsyslog.service - System Logging Service Loaded: loaded (/usr/lib/systemd/system/rsy...

yangqiyong_2008的博客 1万+

主机升级rsyslog后服务异常分析,rsyslog服务重启报错

1:异常情况: 现有版本:rsyslog-8.24.0-34.el7.x86_64 升级到:rsyslog-8.24.0-38.el7.x86_64 升级后服务重启不了,服务状态如下: systemd[1]: Failed to start System Logging Service. systemd[1]: Unit rsyslog.service entered failed state. systemd[1]: rsyslog.service failed. systemd[1]: rs

a568804062的博客 9426

linux主机服务器日志采集,Linux通过Rsyslog搭建集中日志服务器

(一)Rsyslog简介ryslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地。rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集其它主机...

weixin_30193269的博客 663

linux rsyslog配置,将client端的登录日志上传到server端/data/log/目录下

1.server端: 编辑/etc/rsyslog.conf, $ModLoad imtcp 引用tcp协议的模块 $InputTCPServerRun 514 设置tcp协议使用端口 $template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" 设置远程存放日志的路径和文件格式 *.* ?...

u013155359的博客 2959

基于Linux下的系统日志

实验一开始我们需要重启两台虚拟机,然后配置ip地址,然后在真机打开两个shell分别连接两个IP地址,将两台虚拟机名字分别改为node1和node2方便操作时进行辨认,本节课我们来学习日志。更改名字命令如下: hostnamectl set-hostname node1.example.com hostnamectl set-hostname node2.example.com1.日志采集规则:用...

Logbook的博客 3297
上一篇: (4)数据通信基础[三]
下一篇: linux运维基础[日志管理]——————chronyd时间同步、timedatectl设置系统时间、journal日志采集
mango_kid
博客等级 码龄7年 12粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值