基于rsyslog+mysql+loganalyzer构建一个小而美的日志服务器

前言:

每当我们遇到问题抓耳挠腮,一脸懵那啥的时候,也许看一下日志就瞬间豁然开朗,所以,一个易用的日志服务器还是很重要的。我们先不介绍elk,那个牛逼吊炸天的日志分析系统。今天我们先来构建一个小的日志服务器。elk我们以后再说~

正文:

当我们配置完一个服务,启动报错时,那感觉就像吃了啥一样,别提多难受,除非服务程序本身有检测配置文件的程序,不然我们就得依赖linux自己的集中日志服务器rsyslog了。不过,有时候也许我们想搜索一下某条日志,或者向用可视化的界面进行统计分析。此时我们可以把日志数据保存到mysql中,并且通过loganalyzer以web界面展示出来,方便我们查询,搜索,统计~以后,我们都反着来,先将实现,再讲理论~~~

rsyslog的主要配置文件是/etc/rsyslog.conf,我们先开启其监听端口,让它不仅可以收集本机的日志,还可以收集其他主机的日志。配置如下。

#/etc/rsyslog.conf
#### MODULES ####
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514	

我们要把日志数据保存到mysql中,首先我们配置我们的数据库服务

#yum install mariadb-server                centos7,6中用mysql配置差不多
#mysql                       通过mysql命令连接到数据库
mysql>GRANT ALL ON Syslog.* TO ‘syslog‘@‘127.0.0.1‘ IDENTIFIED BY ‘syslog‘;
         数据库名为Syslog,用户syslog可以通过127.0.0.1访问此数据库的所有表,密码为syslog
#yum install rsyslog-mysql                    #安装mysql模块相关程序包
#mysql -usyslog -h127.0.0.1 -psyslog < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
         导入数据库~这样就不用我们自己建数据库的表之类的东东啦

默认我们的配置是保存到日志文件中的,我们得让日志保存到数据库中,配置一下rsyslog的配置文件

#### MODULES ####
$ModLoad ommysql      添加相关的模块

#### RULES ####
*.info;mail.none;authpriv.none;cron.none       :ommysql:127.0.0.1,Syslog,syslog,syslog
    把除了mail,authpriv,cron的日志保存到mysql中。

然后我们重启rsyslog服务

systemctl restart rsyslog                           Centos7中这样重启服务
service rsyslogs restart                            Centos6中这样

第二部就是配置我们的loganalyzer了。因为此程序貌似以及不更新了,所以我们得用源码安装,不过在此之前得先安装lamp环境。

#yum install httpd php php-mysql php-gd
# tar xf loganalyzer-3.6.5.tar.gz
# cp -a loganalyzer-3.6.5/src  /var/www/html/loganalyzer
#  cd  /var/www/html/loganalyzer
# touch config.php
# chmod 666 config.php

然后就启动httpd服务啦~~

systemctl start httpd

到此我们就可以用浏览器访问loganalyzer了:http://你主机的ip/loganalyzer。

web界面的配置接不详细解释了,基本上就是一直按next,除了有一步骤得配置mysql以外都保持默认就好。

到此我们就配置完毕了,至于具体的功能就自己探索吧~~~

配置完了我们就来讲讲理论咯~

centos6之前,是一个叫做syslog的东东来记录日志,他主要分两部分,klogd和syslogd,klogd是基于内核的,syslogd就是一个系统上的应用程序了。他们主要是通过TCP或UDP协议的服务完成日志记录传送。

centos6开始就是我们现在使用的rsyslog了,首先它支持多线程,而且可以通过更多的协议来传送日志,比如SSL/TLS/RELP等等,而且还能把日志信息存储在各种数据库中,比如MYSQL,PGSQL,Oracle等。其他还有什么等自定义输出格式呀等等。

第三种就是那个高大上,并且目前很流行的ELK,它是由三个东东组合起来的称呼。

E:elasticsearch,一个分布式搜索引擎,毕竟讲道理来说我们日常操作搜索大于其他方式。

L:logstash,就是用来收集,分析日志的东东

K:kibana,嗯,提供web可视化界面的。

elk我们后面再探讨~

rsyslog主要可以收集以下东东产生的日志。被称为facility。

auth(认证相关), authpriv(认证授权), cron, daemon(守护进程), kern(内核), lpr(打印系统), mail(邮件系统), mark(内核防火墙标记), news(新闻组), security(安全相关),user(用户自己产生的日志), uucp(一个很古老的协议), syslog(自己的), local0-local7(用户可自定义的)

还有一个概念就是优先级   proirity,从低到高有以下几种

debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

说了这么多,当然是有用的东东,我们可以用这两个东东来自定义如何收集日志。语法如下

facility.priority 	target

表示谁(facility)产生的哪些级别(priority)的日志,要以什么形式(target)处理。

*表示所有的facility,我们也可以自行指定:f1,f2,f3。。。

*表示所有级别,none表示没有级别,PRIORITY表示指定级别及其以上的所有级别,=PRIORITY表示仅记录指定级别的日志信息。

举个例子:*.* 就宝石所有类型,所有级别的日志,*.info表示所有类型,info及以上优先级的日志。

既然已经选择出了我们要处理的日志,就可以通过target字段,指定怎么处理日志。

比如,保存到文件啦,/var/log/message  将时间通知给用户啦,通过网络把日志送往指定的日志服务器啦,或者通过管道用命令处理,|COMMAND.

ok!理论到此结束~~~~

全篇完

时间: 2024-10-21 03:10:35

基于rsyslog+mysql+loganalyzer构建一个小而美的日志服务器的相关文章

rsyslog + mysql + loganalyzer 构建日志服务器

rsyslog支持的特性 支持多线程 支持tcp,ssl,tls.relp 可以把日志存储于关系型数据库中 支持过滤器,可以实现过滤日志中的任意部分. 支持自定义格式 适用于企业级的日志记录需求. 功能模块化 rsyslog用facility接收各个应用和程序的日志,并把日志分类.有以下几类 auth        与认证相关的 authpriv 与用户认证授权相关的,如用户登陆 cron     与周期任务相关的 daemon    与守护进程相关的 kern        与内核相关的 lp

rsyslog+mysql+loganalyzer

在Linux系统上面,系统可以记录从开机到当前系统上面何时发生了什么事情,并将其分类,分级写到特定的日志文件当中,如系统自身产生的问题,用户登录信息,网络数据信息等等. 在CentOS上面有一个rsyslog专门负责记录系统日志上信息,虽然rsyslog的功能足够强大,但是通常的日志文件都只是以文字的形式表现出来,如果我们将其与loganalyzer结合起来就能实现日志信息的图形化展示,下面我们在一台主机上简单实现一下rsyslog+mysql+loganalyzer结合起来,以实现日志信息的图

rsyslog+MySQL+loganalyzer日志集中分析管理

前言   rsyslog系统日志,在CentOS5上叫syslog,而在CentOS6上叫rsyslog,叫增强版的syslog,CentOS5上的配置文件在/etc/syslog.conf下,而CentOS6在/etc/rsyslog.conf下.       syslog默认是把我们的日志放到文件.用户.日志服务器.管道中.       rsyslog在syslog的基础上还多了一条途径,允许把日志放到mysql数据中.       rsyslog比syslog好在哪里:       Mul

django+nginx+xshell简易日志查询,接上&lt;关于《rsyslog+mysql+loganalyzer搭建日志服务器&lt;个人笔记&gt;》的反思&gt;

纠正一下之前在<关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思>中说到的PHP+MySQL太慢,这里只是说我技术不好,没有技术可以修改这个开源的php日志程序罢了,当然,在做这个的时候,也是菜鸟一个,只是想自己尝试一下.高手可以直接跳过..... 首先,写在前面,因为上班空闲时间不多,只有忙里偷闲或自己回家的时间弄下,所以这个前后的时间就比较久了. 之前在上篇写到,是准备使用apache+django来搭建的,但是真的,我折腾

rsyslog+mysql+loganalyzer 环境搭建日志服务器

环境:CentOS6.6 rsyslog+mysql+loganalyzer 环境搭建日志服务器 Client端:    192.168.2.10 MySQL服务器:  192.168.2.11 # Client端安装必备的软件包 yum install rsyslog-mysql -y 生成了2个文件: /lib64/rsyslog/ommysql.so           #rsyslog支持数据库的模块文件 /usr/share/doc/rsyslog-mysql-5.8.10/creat

Centos6上rsyslog应用(rsyslog+mysql+loganalyzer)

1.配置日志服务器,         (1)启用日志服务器的功能:(UDP和TCP开启一个即可) # Provides UDP syslog reception             $ModLoad imudp--------开启udp开启记录其他机器的             $UDPServerRun 514-------监听在514端口上 # Provides TCP syslog reception             $ModLoad imtcp             $In

在CentOS6.5上搭建RSYSLOG & MySQL & LogAnalyzer平台

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 安装apache 在CentOS6.5上默认情况下,已经安装了Apache.如果没有安装,进行如下步骤进行安装: # yum -y install httpd 启动httpd服务 # service httpd start 设置httpd服务开机启动 # chkconfig httpd on 测试httpd 在浏览器中键入你服务器的IP地址,如得到下面结果证明测试成功 安装MySQL 安装mys

通过python 构建一个简单的聊天服务器

构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使用 Telnet,客户机可以连接到 Python 聊天服务器上,并在全球范围内相互进行通信.提交到聊天服务器的消息可以由其他人进行查看(以及一些管理信息,例如客户机加入或离开聊天服务器).这个模型如图 1 所示. 图 1. 聊天服务器使用 select 方法来支持任意多个客户机 聊天服务器的一个重要

Rsyslog+MySQL+LogAnalyzer部署日志服务器

实验要求 搭建可视化日志搜集分析平台,用于集中搜集日志,并通过可视化日志分析工具呈现: Apps Server是要搜集日志的Nodes,可以有多台,这里我只用1台Node: Rsyslog Server是统一接收各Nodes提交过来的日志,监听在TCP/UDP 514节点: MySQL Server是用于存储提交的日志信息,做独立服务器,也可做Cluster: LogAnalyzer是一款基于LAMP的可视化日志分析工具,后端查询数据库,将结果整理输出: 拓扑如下: 实现机理 Linux上的Rs