rsyslog+loganalyzer日志服务器部署记录

日志功能对于操作系统是相当重要的,在日常运维工作中,无论是系统还是应用等出了任何问题,我们首先想到的便是分析日志,查找问题原因。自从CentOS 6系统开始,CentOS便开始使用rsyslog做为日志收集服务了,相对于之前的syslog它能够支持多线程,数据库存储,支持更多了传输协议等等优点。之前介绍了Linux下rsyslog日志收集服务环境部署记录,下面再结合LogAnalyzer进行部署说明。

LogAnalyzer则是一款基于 PHP 开发的 syslog 日志和其他网络事件数据的 Web 前端。它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。将rsyslog和loganalyzer整合起来,能够搭建一个日志收集管理服务器,用来应对小型的日志数据收集分析。下面以rsyslog收集远程服务器上的nginx日志为例进行说明:

在192.168.10.239服务器上部署rsyslog+loganalyzer环境,用于收集远程服务器192.168.10.200服务器上的nginx日志,其中:
192.168.10.239是centos7.2系统,主机名为rsyslog。
192.168.10.200是centos6.8系统,主机名为gitlab-test,nginx日志为/var/opt/gitlab/nginx/logs/gitlab_access.log。
192.168.10.239是rsyslog的服务端,作为日志的接收端。
192.168.10.200是rsyslog的客户端,作为日志的推送短。

下面说下部署过程:
一、rsyslog客户端部署(192.168.10.200)
0)关闭防火墙和selinux
[root@gitlab-test ~]# /etc/init.d/iptables stop
[root@gitlab-test ~]# chkconfig iptables off
[root@gitlab-test ~]# setenforce 0
[root@gitlab-test ~]# cat /etc/sysconfig/selinux |grep "SELINUX=disabled"
SELINUX=disabled

1)安装和配置rsyslog
[root@gitlab-test ~]# yum install rsyslog -y
[root@gitlab-test ~]# cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
[root@gitlab-test ~]# vim /etc/rsyslog.conf
......
$ModLoad imfile        #装载imfile模块,这一行手动添加
......
*.info;mail.none;authpriv.none;cron.none;local5.none                /var/log/messages       #手动添加local5.none
......

#在文件底部添加
$InputFileName /var/opt/gitlab/nginx/logs/gitlab_access.log      
$InputFileTag web_access             
$InputFileSeverity info         
$InputFileStateFile /etc/rsyslog.d/stat-access       

$InputFileFacility local5        
$InputFilePollInterval 1          
$InputFilePersistStateInterval 1      
$InputRunFileMonitor                          
local5.* @192.168.10.239

重启rsyslog服务
[root@gitlab-test ~]# /etc/init.d/rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

由于作为日志的推送端,rsyslog日志不需要开启514端口(如上在rsyslog.conf文件里没有打开dup或tcp的514端口)
[root@gitlab-test ~]# lsof -i:514
[root@gitlab-test ~]# 

二、rsyslog服务端部署(192.168.10.239)
0)关闭防火墙
[root@rsyslog ~]# systemctl stop firewalld
[root@rsyslog ~]# systemctl disable firewalld
[root@rsyslog ~]# firewall-cmd --state
not running
[root@rsyslog ~]# setenforce 0
[root@rsyslog ~]# cat /etc/sysconfig/selinux |grep "SELINUX=disabled"
SELINUX=disabled

1)安装数据库
[root@rsyslog ~]# yum install mariadb mariadb-server -y

启动并初始化数据库(root密码默认设置为123456)
[root@rsyslog ~]# systemctl start mariadb.service
[root@rsyslog ~]# /bin/mysql_secure_installation

添加数据库和用户
[root@rsyslog ~]# mysql -uroot -p123456
......
MariaDB [(none)]> create database rsyslog character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on rsyslog.* to 'rsyslog'@'localhost' identified by 'rsyslog';flush privileges;
MariaDB [(none)]> 

安装rsyslog的MySQL扩展程序包rsyslog-mysql
[root@rsyslog ~]# yum install rsyslog-mysql -y

将rsyslog的MySQL表导入创建的rsyslog数据库,并给予用户权限
[root@rsyslog ~]# ll /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql 
-rw-r--r-- 1 root root 1046 Apr 15  2016 /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
[root@rsyslog ~]# mysql -uroot -p123456 < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

[root@rsyslog ~]# mysql -uroot -p123456
......
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |
| mysql              |
| performance_schema |
| rsyslog            |
+--------------------+

MariaDB [(none)]> grant all privileges on Syslog.* to 'rsyslog'@'localhost' identified by 'rsyslog';flush privileges;

测试登录
[root@rsyslog nginx]# mysql -ursyslog -hlocalhost -prsyslog
......
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |
| rsyslog            |
+--------------------+

2)安装和配置rsyslog
[root@rsyslog ~]# yum install rsyslog -y
[root@rsyslog ~]# cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
[root@rsyslog ~]# vim /etc/rsyslog.conf
......
$ModLoad ommysql                                    #添加该模块
*.* :ommysql:localhost,Syslog,rsyslog,rsyslog       #所有日志:ommysql:数据库地址,数据库名,数据库用户,数据库用户密码
......
$ModLoad imudp                                      #tcp和udp两个端口模块同时使用!
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

#定义一个模板用来指定接收的日志消息的格式(默认会在记录的日志前加几个字段)
$template  SpiceTmpl,"%msg%\n"                   ##%msg:2:$%为去掉日志开头的空格

#定义一个模板用来指定接收的日志文件的存放路径%……%之间的是定义日志按照年-月-日命名
$template  DynaFile,"/data/rsyslog/nginx/%$YEAR%-%$MONTH%-%$DAY%.log"
......
*.info;mail.none;authpriv.none;cron.none;local5.none        /var/log/messages   #手动添加local5.none,即不记录local5设施的日志
......
local5.*                                                ?DynaFile;SpiceTmpl

编辑/etc/sysconfig/rsyslog中"SYSLOGD_OPTIONS="开启远程日志接收功能
[root@rsyslog ~]# vim /etc/sysconfig/rsyslog
......
SYSLOGD_OPTIONS="-c 5"

创建日志接收过来后定义的存放目录
[root@rsyslog ~]# mkdir -p /data/rsyslog/nginx

重启rsyslog服务
[root@rsyslog ~]# systemctl restart rsyslog.service
[root@rsyslog ~]# lsof -i:514
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 26120 root    3u  IPv4 243261      0t0  UDP *:syslog 
rsyslogd 26120 root    4u  IPv6 243262      0t0  UDP *:syslog 
rsyslogd 26120 root    5u  IPv4 243265      0t0  TCP *:shell (LISTEN)
rsyslogd 26120 root    6u  IPv6 243266      0t0  TCP *:shell (LISTEN)

然后查看下日志是否收集过来了(客户端日志文件要有新日志内容刷入)
[root@rsyslog ~]# ll /data/rsyslog/nginx/
total 36
-rw------- 1 root root 33430 Jul  2 10:48 2018-07-02.log

3)准备web环境
[root@rsyslog ~]# yum install httpd php php-mysql php-gd -y

下载loganalyzer
[root@rsyslog ~]# yum install unizp -y
[root@rsyslog ~]# wget https://github.com/rsyslog/loganalyzer/archive/master.zip
[root@rsyslog ~]# du -sh master.zip 
3.0M  master.zip
[root@rsyslog ~]# unzip master.zip
[root@rsyslog ~]# \cp -rf loganalyzer-master/src/* /var/www/html/

[root@rsyslog ~]# cd /var/www/html/
[root@rsyslog html]# touch config.php
[root@rsyslog html]# chmod 666 config.php
[root@rsyslog html]# systemctl start httpd

4)接着访问http://192.168.10.239,进入浏览器页面配置

点击之后,提示开始检查

配置文件检查,注意上面创建的config.php文件需要授予666权限,如果没有写权限,则会报错提示!LogAnalyzer 的基本配置,此处配置的数据库为 LogAnalyzer 的数据库,也就是我们自己建的 rsyslog 数据库。数据库名称,用户名及密码都是rsyslog。

如果数据库能正常连接,那么就会显示正常了,如果数据库连接出错,则会提示错误原因,点击 Next 继续下一步。

连接数据库成功后,会自动创建数据库表,提示 24 条成功,0 失败。

创建登录用户

登录用户创建成功后,接着是填写日志信息的数据库信息,也就是我们导入 sql 文件所创建的 Syslog 数据库。请注意大小写,监控表为 SystemEvents,默认为小写,会出错!

继续下一步就会提示成功啦,然后点击here,进行登录,便能进入查看了。

如果不想在LogAnalyzer的web界面里看到诸如message、cron、security等系统日志,可以在/etc/rsyslog.conf文件里将这些配置全部注释,只保留local5的日志配置,即:

[root@rsyslog ~]# vim /etc/rsyslog.conf
......
#*.info;mail.none;authpriv.none;cron.none;local5.none    /var/log/messages
#authpriv.*                                              /var/log/secure
#mail.*                                                  -/var/log/maillog
#cron.*                                                  /var/log/cron
#*.emerg                                                 :omusrmsg:*
#uucp,news.crit                                          /var/log/spooler
#local7.*                                                /var/log/boot.log
local5.*                                                ?DynaFile;SpiceTmpl

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 14.04上使用MySQL和Ruby on Rails应用程序

Ruby on Rails使用sqlite3作为其默认数据库,在许多情况下效果很好,但可能不适合您的应用程序。如果您的应用程序需要客户端/服务器SQL数据库(如...

460
来自专栏运维

linux下备份脚本主之 遍历目录备份所有二级目录文件

1,备份脚本如下,我这里以备份CVS目录为例,总CVS目录下有几个Project,统统备份

561
来自专栏Java帮帮-微信公众号-技术文章全总结

03.Linux系统启动过程

03.Linux系统启动过程 Linux 系统启动过程 linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以...

3324
来自专栏鬼谷君

cobbler koan自动重装系统

1002
来自专栏应用案例

Linux常用软件安装总结

首先说xshell一个好用的功能,如果你同时要管理几台一样的服务器组成的集群,一台一台操作很麻烦,可以使用xshell菜单栏——工具——勾选发送键输入到所有会话...

2047
来自专栏Jed的技术阶梯

通过已有的虚拟机克隆四台虚拟机

环境准备:一个已经安装好的虚拟机 要求: 删除了 /etc/udev/rules.d/70-persistent-net.rules 这个文件后,关机,保存...

882
来自专栏小车博客

短网址程序YOURLS安装及配置教程与设置中文

1714
来自专栏cs

linux学习六

网络服务 常用网络服务器软件 服务类型 软件名称 服务类型 软件名称 NFS 服务 NFS DNS服务 DNS Web服务 Apache Ma...

2729
来自专栏分布式系统和大数据处理

linux上配置ssh实现免密登录

当有多台服务器彼此进行通信时,可以通过使用ssh来免去输入密码的步骤。这篇文章将以两台服务器作为范例,演示如何通过ssh进行登录。

942
来自专栏Web项目聚集地

Linux养成计划(七)

导读: 此文章介绍Linux常用指令中的运行级别,以及我们忘记root密码时的解决方案。毕竟实际开发中我们用的都是命令行,所以掌握常用的指令对于Linux系统使...

763

扫码关注云+社区