千家信息网

Linux系统日志远程采集

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,一台正常提供服务Linux服务器,每时每刻都在产生着大量的日志信息,若生产环境中,有几十台甚至上百台服务器,那么一台一台的去查看系统的日志是非常麻烦的。在技术不断更新的今天,有很多可以技术可以对日志进
千家信息网最后更新 2024年11月23日Linux系统日志远程采集

一台正常提供服务Linux服务器,每时每刻都在产生着大量的日志信息,若生产环境中,有几十台甚至上百台服务器,那么一台一台的去查看系统的日志是非常麻烦的。

在技术不断更新的今天,有很多可以技术可以对日志进行集中管理,最普遍的操作还是要属ELK日志分析系统了,不过这些日志是如何产生的?是由哪个服务来进行统一管理的呢?这篇文章就围绕着系统日志的服务--rsyslog这个服务来叙述一下。

Linux系统中有很多日志类型,如下是一些系统本身产生的日志文件:

/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/var/log/wtmp,/var/log/faillog/var/log/httpd/* , /var/log/samba/*

若想详细了解日志文件记录的是什么信息,可以参考这篇博文:Linux中常见日志文件的介绍,里面还包括了7个报错等级的介绍!这里不啰嗦了就。

系统中的日志大多数都是由rsyslog这个服务来管理的,这个服务的主配置文件如下:

[root@aaa ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#"    #过滤配置文件中的空行和注释行$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)$ModLoad imjournal # provides access to the systemd journal$WorkDirectory /var/lib/rsyslog$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat$IncludeConfig /etc/rsyslog.d/*.conf$OmitLocalLogging on$IMJournalStateFile imjournal.state*.info;mail.none;authpriv.none;cron.none                /var/log/messages  上面行开头的星号表示所有服务,点号后面的等级表示那些等级记录下来,/var/lo....表示记录到哪里authpriv.*                /var/log/secure   #表示authpriv所有等级的信息都记录到secure文件中mail.*              /var/log/maillog   #表示mail服务的所有级别信息都记录到/var/log/maillog中cron.*                                /var/log/cron*.emerg                            :omusrmsg:*uucp,news.crit                 /var/log/spoolerlocal7.*                            /var/log/boot.log#由上面几行注释可以看出,第一段中的点号前面表示某个服务,点号后面表示哪些报错等级要记录。#点号前后都可以使用通配符星号来表示,如第一列为"*.*",则表示所有服务的所有等级#若为"*.info",则表示所有服务的info等级及比info更严重的等级都记录起来。

在上面的配置文件中,日志存放的位置是可以改动的,也可以更改哪些日志的等级要记录下来,但是一般不建议改动。

其实,依靠/etc/rsyslog.conf这个配置文件,也是可以将其日志发送到另一台服务器上,然后再另一台服务器上进行统一管理,如果生产环境较小,服务器不多的情况下,可以采用这种情况,但是如果生产环境的服务器数量比较多,则推荐部署ELK日志分析系统。

配置rsyslog服务实例

我这里有两台服务器,主机名分别是aaa和bbb(IP地址分别是192.168.1.1和1.2),现在就来实现以下需求:

  • 1、将aaa服务器的所有系统服务日志的info级别以上的同步发送到bbb服务器上进行统一管理;
  • 2、将编译安装的Nginx的日志发送到bbb服务器上进行管理;
  • 3、将编译安装的apache的日志也发送到bbb服务器上进行管理(由于和默认端口和Nginx的冲突,所以在实现了第二个需求后,就将Nginx服务停止,再启动apache服务);

开始配置:

1、将aaa服务器的所有系统服务日志的info级别以上的同步发送到bbb服务器上进行统一管理

(1)在aaa服务器上进行以下操作:

[root@aaa ~]# vim /etc/rsyslog.conf     #编辑日志服务的配置文件             #..............省略部分内容$ModLoad imudp             #将该行开头的注释符号"#"去掉,以便开启udp协议$UDPServerRun 514     #将该行开头的注释符号"#"去掉,以便开启udp的514端口# Provides TCP syslog reception$ModLoad imtcp         #将该行开头的注释符号"#"去掉,以便开启tcp协议$InputTCPServerRun 514    #将该行开头的注释符号"#"去掉,以便开启tcp的514端口             #..............省略部分内容*.info;mail.none;authpriv.none;cron.none         /var/log/messages*.info                @@192.168.1.2  #星号表示所有服务"*.info"表示info等级及以上的信息#@@表示使用tcp协议传输,192.168.1.2是指定要发送到哪台服务器#若使用一个@符号,则表示使用udp协议传输             #..............省略部分内容#编辑完成后,保存退出即可。[root@aaa ~]# systemctl restart rsyslog           #重启rsyslog服务,以便更改生效

(2)在bbb服务器上进行以下操作:

[root@bbb ~]# vim /etc/rsyslog.conf        #编辑日志服务的配置文件,开启udp和tcp的514端口             #..............省略部分内容$ModLoad imudp                #去掉该行开头的"#"注释符号$UDPServerRun 514                #去掉该行开头的"#"注释符号# Provides TCP syslog reception $ModLoad imtcp               #去掉该行开头的"#"注释符号$InputTCPServerRun 514               #去掉该行开头的"#"注释符号             #..............省略部分内容[root@bbb ~]# systemctl restart rsyslog        #重启服务,使更改生效[root@bbb ~]# tailf /var/log/secure     #动态监控着本机的日志文件Sep 19 15:00:32 aaa useradd[5998]: new group: name=lvjianzh, GID=1003Sep 19 15:00:32 aaa useradd[5998]: new user: name=lvjianzh, UID=1003, GID=1003....             #..............省略部分内容

(3)在aaa服务器上进行以下操作(主要是为了产生日志信息):

[root@aaa ~]# useradd admini[root@aaa ~]# echo '123.com' | passwd --stdin admini更改用户 admini 的密码 。passwd:所有的身份验证令牌已经成功更新。

(4)查看bbb产生的新日志如下:

2、将编译安装的Nginx的日志发送到bbb服务器上进行管理;

(1)在aaa服务器上进行以下操作:

[root@aaa ~]# vim /etc/yum.repos.d/epel.repo     #写入以下文件,指定阿里镜像站[epel]name=epelbaseurl=https://mirrors.aliyun.com/epel/7/x86_64/gpgcheck=0#必须保证系统默认自带的yum文件也存在/etc/yum.repos.d/目录下,写入后保存退出即可。[root@aaa ~]# yum repolist             #最好执行一下该命令             #..............省略部分内容(7/7): base/7/x86_64/primary_db                    | 6.0 MB   00:01     源标识                          源名称                            状态base/7/x86_64                   CentOS-7 - Base                   10,097epel                            epel                              13,384     #上面一行就是我们刚写入的文件生效的,表示没问题extras/7/x86_64                 CentOS-7 - Extras                    304updates/7/x86_64                CentOS-7 - Updates                   311repolist: 24,096#若命令yum  repolist执行后没有显示出上述内容,排除配置文件的错误后,可以执行以下命令[root@aaa ~]# yum makecache          #用来建立元数据缓存的             #..............省略部分内容元数据缓存已建立[root@aaa ~]# yum -y install nginx                 #安装nginx服务[root@aaa ~]# systemctl start nginx     #启动Nginx服务[root@aaa ~]# netstat -anpt | grep nginx              #确定Nginx服务已启动tcp        0      0 0.0.0.0:80      0.0.0.0:* LISTEN      6609/nginx: master  tcp6       0      0 :::80       :::*         LISTEN      6609/nginx: master  [root@aaa ~]# ls /var/log/nginx/   #以下是yum安装Nginx后,Nginx两个日志文件的存放位置access.log  error.log#记住Nginx日志的存放路径,一会要用到,若采用的是编译安装,请自行找到Nginx日志存放路径记下来[root@aaa ~]# vim /etc/rsyslog.conf           #编辑rsyslog服务的配置文件             #..............省略部分内容#在配置文件末尾写入以下内容$ModLoad imfile$InputFilePollInterval 1$InputFileName /var/log/nginx/access.log$InputFileTag nginx-info-access;$InputFilestateFile state-nginx-info-accesslog$InputRunFileMonitor$InputFileName /var/log/nginx/error.log$InputFileTag nginx-info-error;$InputFilestateFile state-nginx-info-errorlog$InputRunFileMonitor$InputFilePollInterval 10if $programname == 'nginx-info-access' then @192.168.1.2:514if $programname == 'nginx-info-access' then ~if $programname == 'nginx-info-error' then @192.168.1.2:514if $programname == 'nginx-info-error' then ~[root@aaa ~]# systemctl restart rsyslog               #重启服务以便生效

关于上面写入的配置项解释如下:

$ModLoad imfile         #加载模块$InputFilePollInterval 1    #间隔多久采集次,默认单位是秒$InputFileName /var/log/nginx/access.log    #指定要采集的日志文件$InputFileTag nginx-info-access;           #给对应的日志打一个标签$InputFilestateFile state-nginx-info-accesslog    #给这个日志命名$InputRunFileMonitor        #启动监控#以下的配置和上面类似,因为要采集两个日志文件嘛!$InputFileName /var/log/nginx/error.log$InputFileTag nginx-info-error;$InputFilestateFile state-nginx-info-errorlog$InputRunFileMonitor$InputFilePollInterval 10#以下是指定将采集的日志发送到哪里,同理,一个@符号表示使用的udp协议,两个表示tcp协议if $programname == 'nginx-info-access' then @192.168.1.2:514  if $programname == 'nginx-info-access' then ~   #这的~,表示本地的意思if $programname == 'nginx-info-error' then @192.168.1.2:514if $programname == 'nginx-info-error' then ~

(2)在bbb服务器上进行日志的监控:

(3)客户端访问aaa的Nginx服务,以便产生日志。

(4)再回到bbb服务器上,查看是否有关于aaa服务器的Nginx访问日志产生(如果没有新的日志产生,在排除配置错误的前提下,客户端可以多刷新几次):

可以看出来,Nginx的日志信息简直不要太详细,对么?日志信息中包含了该日志产生的时间?是哪台服务器产生的?标签名是什么?哪个IP地址访问的?访问时间是什么时候?访问的状态码是什么?客户端访问时使用的是什么系统、系统的位数是多少?如(Windows NT 10.0; Win64; x64,表示是64为的win10系统),用的是什么浏览器进行访问的?我这里使用谷歌访问的,它竟然还记录了我客户端谷歌浏览器的版本号。

至此,Nginx的日志文件采集就完成了,那么现在进行apache的日志采集,有了前面的铺垫,这就简单多了,简单改一下配置项就可以了。

3、将编译安装的apache的日志也发送到bbb服务器上进行管理

(1)在aaa服务器上进行以下操作:

[root@aaa ~]# yum -y install httpd            #安装apache服务[root@aaa ~]# systemctl stop nginx      #为了避免端口冲突,停止Nginx服务[root@aaa ~]# systemctl start httpd      #启动apache服务[root@aaa ~]# vim /etc/rsyslog.conf          #更改rsyslog配置文件,主要是更改采集日志的路径             #..............省略部分内容$ModLoad imfile$InputFilePollInterval 1$InputFileName /var/log/httpd/access_log      #主要是改这个$InputFileTag httpd-info-access;$InputFilestateFile state-httpd-info-accesslog$InputRunFileMonitor$InputFileName /var/log/httpd/error_log #还要改这个#其余配置项可不改,但是建议改一下,以免看起来日志不太直观。$InputFileTag httpd-info-error;$InputFilestateFile state-httpd-info-errorlog$InputRunFileMonitor$InputFilePollInterval 10if $programname == 'httpd-info-access' then @192.168.1.2:514if $programname == 'httpd-info-access' then ~if $programname == 'httpd-info-error' then @192.168.1.2:514if $programname == 'httpd-info-error' then ~#主要就是将上面配置中的Nginx都换成了httpd。[root@aaa ~]# systemctl restart rsyslog                 #重启服务,使更改生效

(2)在bbb服务器上进行日志的监控:

(3)客户端访问aaa的Nginx服务,以便产生日志(多刷新几次)。

(4)再回到bbb服务器上,查看是否有关于aaa服务器的httpd访问日志产生。

OK!没问题,采集到了。。。

-------- 本文至此结束,感谢阅读 --------

服务 日志 服务器 文件 配置 系统 内容 注释 符号 等级 部分 管理 开头 信息 客户 客户端 端口 编译 监控 统一 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州市微聚宝网络技术 央媒全国网络安全员 移动端软件开发相关技术 学网络技术专业技术怎么样 软件开发压力大想离职 qq浏览器连接不了服务器 网络安全入我心评论语 慈溪计算机软件开发流程 电脑终端服务器 个人信息数据库安全性 博汇多画面监测服务器操作说明 汽车租赁p2p软件开发 黑暗之魂3连不上服务器为什么 js查询数据库并存到变量中 360网络安全密码是多少 哈尔滨靠谱上位机软件开发 彩票软件开发违法吗 中国网络安全企业一百强 电脑里的服务器地址在哪里 安庆城市大脑网络技术有限公司 软件开发市场容量或变化趋势 sql数据库登陆 命令行 想要攻破阿里数据库有多难 商务部发布的网络安全新闻 几条网络安全防护技巧 服务器升级带宽 中国检查年鉴数据库 榆林服务器机房空调销售 web服务器python 网络安全保卫大队召开组织生活会
0