标签 log 下的文章

[Apache]访问日志IP统计

这两个服务器apache error日志暴涨~~~,检查了下日志,封了几个IP

日志内容如图~~~

 

QQ20141206-1

cat ip-error.log |awk -F " " '{print $8}'|sed 's/]//g'|sort|uniq -c|sort -rn

首先用awk 过滤出IP. 以空格位分隔符,打印第八个域,然后用sed 把多余出来的]替换,再排序统计,最后输出到一个文件

得到如图锁所示IP,然后检查量比较大的IP,封了有问题的就OK

iptables -I INPUT -s ip -j DROP

 

QQ20141206-2.

apache 记录来访日志,并按照日期进行分割

逐个对每个虚拟主机进行配置的,找到一个虚拟主机,添加如下内容

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
CustomLog "/usr/logs/logs/access_log" combined

然后,这样的话当前的虚拟主机的日志就会放到/data/wwwlogs/apache/

<VirtualHost *:80>
...
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
CustomLog "/data/wwwlogs/apache/access_log" combined
</VirtualHost>

如果要添加按照日期进行划分,如下请修改:

CustomLog "/backup/logs/access_log" combined
CustomLog "|/usr/local/apache/bin/rotatelogs /data/wwwlogs/apache/access.%Y%m%d 86400" common

 

/usr/local/apache/                    apache路径

/data/wwwlogs/apache/           日志路径

access                                       日志前缀

%Y%m%d                                    后缀格式

86400                                       分割时长

具体日志命名如下:access.20140608

Centos使用rsyslog+loganalyzer监控交换机日志

公司需要对机房交换机的日志进行监控,搭建了个rsyslog日至服务器来监控,现将搭建过程记录如下:
1.安装Lamp环境

yum install httpd mysql mysql-server mysql-devel php php-mysql php-gd –y
service httpd start
service mysqld start
chkconfig httpd on
chkconfig mysqld on

2.安装 rsyslog

yum install rsyslog rsyslog-mysql -y
service rsyslog start
chkconfig rsyslog on

编辑 rsyslog配置文件 /etc/rsyslog.conf

取消下边两行注释
$ModLoad imudp
$UDPServerRun 514 (允许从udp 514 端口接收及发送日志,也可以取消tcp 注释行,通过tcp 端口发送)

检查防火墙514 端口是否开启
添加mysql 模块及信息用以链接数据库

$ModLoad ommysql

*.* :<删除我>ommysql:localhost,Syslog,root,password (localhost:服务器,root:数据库用户,nian:数据库用户对应密码)

重启rsyslog 服务

service rsyslog restart

将数据库文件导入数据库 (此数据库用来存日志)

mysql –u root –p < /usr/share/doc/rsyslog/CreateDB.sql

3. 挂接web接口用以图形化管理
下载loganalyzer,解压后将src目录下所有内容拷贝到/var/www/syslog
创建 config.php 文件并且给予读取权限

touch config.php
chmod o+w config.php

4.创建loganalyzer数据库 loganalyzer (loganalyzer 次数据库存放管理员等用户信息)

mysql -uroot -ppasswd
mysql> create database loganalyzer;

在浏览器中安装 http://IP/syslog

5.loagnalyzer默认没有显示来源IP,但是我们可以通过修改添加数据库字段来实现
修改rsyslog.conf 配置文件 添加sql语句,添加IP字段

$template insertpl,”insert into SystemEvents (Message, Facility, FromHost, FromIP, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (‘%msg%’, %syslogfacility%, ‘%HOSTNAME%’, ‘%fromhost-ip%’, %syslogpriority%, ‘%timereported:::date-mysql%’, ‘%timegenerated:::date-mysql%’, %iut%, ‘%syslogtag%’)”,SQL

$ModLoad ommysql
*.* :<删除我>ommysql:localhost,Syslog,root,passwd;insertpl

6.在web管理页面中修改
(1)在Fields中添加 IP
(2)在Views 中添加 NewSyslog 添加 Date, Facility, Severity, Host, IP, Syslogtag, Messagetype, Message
(3)在DBMappings中 添加NewSyslog 继续添加字段

Date => devicereportedtime, uID => id, Host => fromhost, IP => fromip, Messagetype => infounitid, Message => message, Facility => facility, Severity => priority, Syslogtag => syslogtag, ProcessID => processid, Event ID => 1, Eventlog Type => eventlogtype, Event Source => eventsource, Event Category => eventcategory, Event User => eventuser, SystemID => systemid, Checksum => checksum

(4)在Source 的数据源中修改Table type 为NewSyslog
7.客户端配置:
安装rsyslog 服务 修改配置文件,
取消下边两行注释

$ModLoad imudp
$UDPServerRun 514 (允许从udp 514 端口接收及发送日志)

在底部添加
*.* @remote-IP (*.* 为发送的日志级别, @ 为通过udp端口发送 @@ 为通过tcp端口发)

此时就可以监控到客户端的日志了,默认是存在数据库中的

8.自定义设备来源日志文件
如果要把不同服务器发送过来的日志保存到不同的文件, 可以这样操作:
修改/etc/rsyslog.conf

:fromhost-ip, isequal, “192.168.0.160″ /var/log/switch/192.168.0.160.log
:FROMHOST-IP, isequal, “192.168.0.161″ /var/log/switch/192.168.0.161
:FROMHOST-IP, startswith, “192.168.1.1” /var/log/switch/192.168.1.1
:FROMHOST-IP, startswith, “192.168.1.2” /var/log/switch/192.168.1.2

重启 服务

service rsyslog restart

然后在/var/log/目录下就会自动创建日志文件

客户端测试日志命令:

logger –p user.info “XXX”

一定要给/var/log/switch 文件夹添加读写权限,不然loganalyzer 无法读取
chmod -R o+wr /var/log/switch
在loganalyzer 的source 中添加数据来源为Diskfile,然后就可以单独管理每台客户端的日志了!