perl anyevent socket监控web日志client
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#!/usr/bin/perl
#use warnings;
#use strict;
use File::Tail;
use AnyEvent;
use AnyEvent::Socket;
use AnyEvent::Handle;
use Config::Tiny;
use FindBin;
use lib "$FindBin::Bin/../module" ;
use log_grep;
main();
sub main {
my $client_config_file = "$FindBin::Bin/../etc/config.ini" ;
my $config = Config::Tiny->new;
my $client_config = $config -> read ( $client_config_file );
my $client_log_info = $client_config ->{ 'client_config_info' };
my $log_type = $client_log_info ->{ 'log_type' };
my $user = $client_log_info ->{ 'user' };
my $port = $client_log_info ->{ 'port' };
my $log_path = $client_log_info ->{ 'log_path' };
my $remove_ip = $client_log_info ->{ 'remove_ip' };
my $local_ip = $client_log_info ->{ 'local_ip' };
my $apache_reglar =
qr/^((?:\d{1,3}\.){3}\d{1,3})[^[]+\[([^]]+)\]\s+\"([^"]+)\"\s+(\d+).*\"([^"]+)\"$/ ;
my $nginx_reglar =
qr/^((?:\d{1,3}\.){3}\d{1,3})[^[]+\[([^]]+)\]\s+\"([^"]+)\"\s+(\d+).*\"([^"]+)\"$/ ; #这块根据具体情况来编写,
my $log_grep = log_grep->new();
my $cv = AnyEvent->condvar;
{
tcp_connect $remove_ip , $port , sub {
my ( $fh ) = @_
or die "tcp_connect: $!" ;
my $hdl = new AnyEvent::Handle fh => $fh ;
my $file = File::Tail->new(
name => $log_path ,
maxinterval => 1,
adjustafter => 3
);
while ( defined ( my $log_line = $file -> read ) ) {
if ( $log_line =~ $apache_reglar ) {
my $date = $log_grep ->date_grep($2);
my @actions = $log_grep ->default_grep($3);
my @clients = $log_grep ->default_grep($5);
my $base =
"t:$log_type|me:$actions[1]|so:$1|lo:$local_ip|date:$date|opt:$actions[0]|of:$4|u:$user\n" ;
$hdl ->push_write( $base );
}
}
}
}
$cv -> recv ;
}
|
以下是log_grep.pm模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package log_grep;
use strict;
use warnings;
sub new {
my $self = {};
my $class = shift ;
bless $self ;
return $self ;
}
#date format
sub date_grep {
my $self = shift ;
my $str = shift ;
my %month = (
"Jan" => 1,
"Feb" => 2,
"Mar" => 3,
"Apr" => 4,
"May" => 5,
"Jun" => 6,
"Jul" => 7,
"Aug" => 8,
"Sep" => 9,
"Oct" => 10,
"Nov" => 11,
"Dec" => 12
);
my ( $day , $mon , $year , $hour , $minute , $sec ) =
( split /\/|:|\s+/, $str )[ 0, 1, 2, 3, 4, 5 ];
my $format_date = "$year-$month{$mon}-$day $hour:$minute:$sec" ;
return $format_date ;
}
#default format
sub default_grep{
my $self = shift ;
my $str = shift ;
return split " " , $str ;
}
1;
|
配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[client_config_info]
remove_ip=192.168.6.2
port=9981
local_ip=192.168.6.2
log_path=/var/log/httpd/access_log
log_type=Apache
user=客户端01
[server_config_info]
username=root
password=*******
host=localhost
database=w3a_system
server_ip=192.168.6.2
server_port=9981
|
perl anyevent socket监控web日志client相关推荐
- perl anyevent socket监控web日志server
上篇已经讲过client端的CODE 这部分code主要用来接收client端发送来的日志,从数据库中读取reglar然后去匹配. 如果出现匹配则判断为XSS***. server端的SOCKET接收 ...
- 强大的Web日志分析工具_AWSTATS 应用实例
释义: AWStats在Sourceforge发展很快的一个基于Perl的WEB日志分析工具. 相对于另外一个非常优秀的开放源代码的日志分析工具Webalizer,AWStats的优势在于: 1.界面 ...
- 课时 12:可观测性-监控与日志(莫源)
本文主要分为四个部分: 在 K8s 中监控和日志的背景信息: 在 K8s 中监控方案的演进,以及常见的监控方案的提供: 日志采集的一些细节以及常见的日志的开源系统: 课程总结,介绍一下阿里云容器服务上 ...
- 从零开始入门 K8s | 可观测性:监控与日志
作者 | 莫源 阿里巴巴技术专家 一.背景 监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断. 在 Kubernetes 中,监控和日志属 ...
- k8s里面的项目怎么暴露端口让用户访问_从零开始入门 K8s | 可观测性:监控与日志...
作者 | 莫源 阿里巴巴技术专家 一.背景 监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断. 在 Kubernetes 中,监控和日志属 ...
- 《hadoop进阶》web日志系统 KPI指标的分析与实现
推广一下个人的微信公众号[搜索与推荐Wiki] 转载请注明出处: 转载自 Thinkgamer的CSDN博客:blog.csdn.net/gamer_gyt 代码下载地址:点击查看 1:Web日志分 ...
- Kubernetes CKA认证运维工程师笔记-Kubernetes监控与日志
Kubernetes CKA认证运维工程师笔记-Kubernetes监控与日志 1. 查看集群资源状况 2. 监控集群资源利用率 3. 管理K8s组件日志 4. 管理K8s应用日志 1. 查看集群资源 ...
- 海量Web日志分析 用Hadoop提取KPI统计指标
海量Web日志分析 用Hadoop提取KPI统计指标 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahou ...
- python监控web扩张时间脚本
场景: 服务器被搞了,挂了很多暗链,网马,手动清除了后不到一天又生产好多,由于web程序有漏洞,已经重新开发了,所以决定写个脚本坚守2个月,然后等新网站上线.综合***动作的特点生成接近300M的ht ...
最新文章
- IOS/Android模拟器运行APP调试方法
- 网络广告计费方式常用术语
- HTML DOM getElementsByTagName() 方法
- 【代码】ReentrantLock还可以指定为公平锁
- Git如何修改文件夹看不清的蓝色显示
- nginx重新安装 引起的问题
- fate服务器维护,活动维护公告(2020年4月1日 14时)
- java ip输入框_JavaScript实现IP地址的输入框方式
- 软件测试:做一些简单工作经历总结,自己想到那算那吧
- 修改MFC标题栏上的图标和修改MFC窗口标题(转)
- linux mint17.2 安装fcitx输入法
- paper 94:视觉领域博客资源1之中国部分
- 数据库_关键字的使用
- 雅可比(Jacobi)矩阵与行列式
- Java面试_代理模式
- Vscode配置Python虚拟环境
- 接入GoogleAnalytics 统计
- Ktor: Kotlin Web后端框架 快速开始入门
- 如何正确地提出热处理工艺
- 手机浏览器微信h5支付