Linux下日志系统的设计

简介:通过日志系统的设计,将多台主机上的日志统一发送到一台服                                器,日志服务器自动将日志记录到mysql数据库,远程通过web方式调用数据库查看日志(使用loganalyzer解决方案,基于php)。

在linux系统下,使用apache做web客户端,mysql数据库,php为web及后台数据的调用,统称为lamp。

日志的种类:/var/log/secure 身份验证有关信息的日志

/var/log/maillog 邮件相关的日志

/var/log/message 一般重要的日志

其中安装完程序日志会在特定的文件夹里面

例如:安装完httpd软件包,将会产生2种日志文件分别是/var/log/httpd/access_log   /var/log/httpd/error_log

access_log目录存放正确的日志,error_log目录存放错误的日志

日志的优先级别:log4j日志的优先级别从低到高 DEBUG<INFO<WARN<ERROR<FATAL

需要安装的软件包:rsyslog-5.8.10-8.el6.i686

mysql-5.1.71-1.el6.i686

php-mysql-5.3.3-26.el6.i686

rsyslog-mysql-5.8.10-8.el6.i686

php-5.3.3-26.el6.i686   php-gd-5.3.3-26.el6.i686

实验拓扑:

实验环境:

版本:CentOS release 6.5

内核:2.6.32-431.el6.i686

启动apache:service httpd start 开启apache

Chkconfig httpd on 设置为开机自启动

启动mysql,设置mysql的安全性

Service mysqld start 开启mysql(第一次启动有数据库的初始化过程,比较慢)

查看mysql,

输入mysql进入mysql端

mysql> show databases;

| Database

| information_schema |

| mysql

| test

初始化database有3个默认的库

给mysql设置密码增加安全性,

mysqladmin -u root -p password ‘123‘

Enter password  没有以前的口令,直接回车。

访问的时候需要mysql -u root -p 回车

输入口令

环境具备完成后需要loganalyzer-3.6.5.tar.gz软件

期望http://server ip/loganalyzer如此访问数据库

需要把loganalyzer目录放到/var/www/下面

先将loganalyzer-3.6.5.tar.gz解压

[[email protected] ~]tar -zxvf loganalyzer-3.6.5

[[email protected] ~]# cd loganalyzer-3.6.5

[[email protected] loganalyzer-3.6.5]# vim INSTALL 可以查看说明文件,按照说明文件执行安装

[email protected] loganalyzer-3.6.5]# cd src

[[email protected] src]# cp -rf . /var/www/html/loganalyzer/ 将loganalyzer-3.6.5目录下的所有文件目录拷贝到loganalyzer

[[email protected] src]cd ..

[[email protected] loganalyzer-3.6.5]# cd contrib/

[[email protected] contrib]# ll

total 8

-rw-rw-r--. 1 root root 49 Oct  9  2013 configure.sh

-rw-rw-r--. 1 root root 31 Oct  9  2013 secure.sh

[[email protected] contrib]# cp * /var/www/html/loganalyzer/将脚本文件拷贝到loganalyzer

[[email protected] contrib]# cd /var/www/html/loganalyzer/

[[email protected] loganalyzer]# chmod +x *.sh  将2个脚本文件赋予执行权限

查看2个脚本文件的内容

Vim  configure.sh内容为

#!/bin/sh

touch config.php

chmod 666 config.php

Vim  secure.sh 内容为

#!/bin/sh

chmod 644 config.php

所有应该执行 config.php

[[email protected] loganalyzer]# ./configure.sh

[[email protected] loganalyzer]# chown -R daemon:daemon  .

改变当前目录下文件的所有者和所属组

[[email protected]g ~]# mysql -u root -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

将日志信息追加到数据库中

[[email protected] ~]# mysql -u root -p

Enter password:

进入数据库查看是否成功

mysql> show databases;

| Database           |

| information_schema |

| Syslog             |

| mysql              |

| test

4 rows in set (0.00 sec)

成功导入Syslog

mysql> use Syslog;

mysql> show tables;

Tables_in_Syslog       |

| SystemEvents           |

| SystemEventsProperties |

有2张表

mysql> grant all privileges on Syslog.* to [email protected] identified by ‘123456‘

对Syslog数据库的所有表授予所有的权利针对rsyslog通过本机访问的账号

mysql>flush privileges; 刷新权限

[[email protected] ~]# vim /etc/rsyslog.conf  编辑rsyslog.conf

在MODULES添加如下红色的模块:

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)

$ModLoad imklog   # provides kernel logging support (previously done by rklogd)

$ModLoad ommysql  # provides --MARK-- message capability

*.*      :ommysql:localhost,Syslog,rsyslog,235290

# Provides UDP syslog reception

$ModLoad imudp    接受udp日志

$UDPServerRun 514

# Provides TCP syslog reception

$ModLoad imtcp    接受tcp日志

$InputTCPServerRun 514

其中*.*      :ommysql:localhost,Syslog,rsyslog,123456

*.*所有的所有级别日志输入到ommysql;在本机上;数据库的名字;数据库的管理员;密码

[email protected] ~]# service rsyslog restart 重启下rsyslog服务

在测试之前关闭防火墙

[[email protected] ~]# service iptables stop

[[email protected] ~]# chkconfig iptables off  设置为开机关闭

[[email protected] ~]# setenforce 0 将安全策略设置为警告级别

[[email protected] ~]# getenforce  即输入此命令为Permissive

Permissive

重启下apache和mysql

[[email protected] ~]# service httpd restart

[[email protected] ~]# service mysqld restart

打开浏览器访问 http://192.168.2.99/loganalyzer

Ip地址为自己主机的ip

出现以下页面

点击here

Next

Next

在下面的enable user databases 选项点击yes,出现

将database name改为 Syslog(注意大小写)

Database user 改为rsyslog

Database password 123456 (刚才设置的密码)

然后点击next

Next

Next

设置个用户账号,以后登录该站点使用,进行后台管理。

将socurce type设置为 mysql native

将database name 设置为Syslog(注意大小写)

Database name 设置为上面查看数据库出现的表SystemEvents(注意大小写)

Database user 设置为rsyslog

密码是之前设置的密码

然后点击next

Finish

成功,如果还想再添加一台服务器,数据库的设置方法不变。

需要在vim /etc/rsyslog.conf的配置文件中修改:

# Don‘t log private authentication messages!

*.*                                                     @192.168.2.99

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.

authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.

mail.*                                                  -/var/log/maillog

添加红色的部分,意思是将所有的日志都发送到地址为192.168.2.99(刚才的主机ip)。

时间: 2024-10-29 13:31:04

Linux下日志系统的设计的相关文章

Linux下日志系统详解

Linux下日志系统详 1.linux系统上有两个日志服务syslog和syslog-ng syslog服务有两个进程syslogd和klogd syslogd: 系统产生的日志信息 klogd:内核产生的日志信息 klogd:在系统启动时内核产生日志输出至物理终端(/dev/console)并存放至/var/log/dmesg文件中 查看klogd产生的日志信息可通过 dmesg 和 cat /var/log/dmesg 命令查看 syslogd:在系统启动后,由各子系统产生日志并存放至 /v

Linux下一个简单的日志系统的设计及其C代码实现

1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回值及其执行情况.脚本执行及调用情况等.通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题. 因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求. 本文详细地介绍了Linux下一个简单的日志系统的设计方法,并给出了其C代码实现.本文为相关开发项目Linux

linux下收集系统全面信息(基于sosreport以及supportconfig)

Linux下日志的采集和分析是一个非常重要的工作,一般厂商都会有自己独有的命令,我这边列举下常用的两个Linux厂商的收集命令(Redhat Linux以及SuSe Linux),便于收集后,对系统进行全面分析. 1. 基于redhat的日志收集 [[email protected] etc]# sosreport sosreport (version 3.2) This command will collect diagnostic and configuration information 

Qt linux下设置系统时间

想要能修改 ARM板上的系统时间,试了两种方法: 1.采用系统命令.system() 尝试了很多命令,date -s "20090807 16:02:23" :date -s 16:02:23 :但板子上的日期就是设置不成功,采用date -s 16:02:23 可以将时间设置成功.于是不得不考虑别的方法. 2.标准C库 首先感叹下,C库很强大呀! 而且我觉着C库的移植行很好.相比较采用system()命令,可能由于linux 版本的不同,好多命令可能存在差异,比如redhat 和ub

linux下查看系统的发行版本及位数

linux下查看系统的发行版本:lsb_release -a 查看32.64位:1. getconf LONG_BIT 2. file /bin/ls 3. uname -a

linux 下查看系统内存使用情况的方法

在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux 下查看内存使用情况的free命令: [[email protected] tmp]# free total used free shared buffers cached Mem: 3266180 3250004 16176 0 110652 2668236 -/+ buffers/cache: 471116 2795064 Swap: 2048276

.NET下日志系统的搭建——log4net+kafka+elk

原文:.NET下日志系统的搭建——log4net+kafka+elk .NET下日志系统的搭建——log4net+kafka+elk# 前言# 我们公司的程序日志之前都是采用log4net记录文件日志的方式(有关log4net的简单使用可以看我另一篇博客),但是随着后来我们团队越来越大,项目也越来越大,我们的用户量也越来越多.慢慢系统就暴露了很多问题,这个时候我们的日志系统已经不能满足我们的要求.其主要有下面几个问题: 随着我们访问量的增加,我们的日志文件急剧增加 多且乱的文件日志,难以让我们对

Linux syslog日志系统详解

一. syslog简介 syslog是一种工业标准的协议,可用来记录设备的日志.在UNIX系统,路由器.交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件.管理者可以通过查看系统记录,随时掌握系统状况.UNIX的系统日志是通过syslogd这个进程记录系统有关事件记录,也可以记录应用程序运作事件.通过适当的配置,我们还可以实现运行syslog协议的机器间通信,通过分析这些网络行为日志,藉以追踪掌握与设备和网络有关的状况. 功能:记录至系统记录. 二 . sysl

基于Linux的OJ系统的设计与开发(一)

最近在研究基于linux的OJ系统,然后想自己写一系列文章记录自己这段时间的学习成果. 首先,从原理上讲,OJ功能实现并不难,最主要解决的是安全性问题.总结一下,而安全性方面问题主要是用户可能提交恶意不友好的代码.关于如何过滤这些不安全的代码,我从网上收集整理了许多资料,大体上思路如下: 先说错误的做法: 1.所有的字符串过滤都是不靠谱儿的,坑人坑自己,C语言强大的宏几乎没有绕不过的字符串过滤,而且误伤也是很常见的,比如,你在程序里要是不小心定义一个叫做fork的变量,那么你的程序别指望可以AC