apache log udp 传输问题
时间:2011-01-15
来源:互联网
我想采用udp socket 传输apache log
1. 不写本地磁盘,不占用IO,不影响server 性能
2. 日志集中管理,便于分析
apache 1 \ / TXT File
apache 2 |---CustomLog "| /usr/bin/rlog "---> UDP Socket ---> Daemon -> threading -> | DB (DBD, SQL....)
apache 3 / \ ......
复制代码
测试一下
[root@dev1 ~]# echo "Test" | /usr/local/bin/rlog
服务器端返回 192.168.3.10 wrote: b'Test' 表示成功
Virtual Host
复制代码
重启动后
复制代码
访问neo.test.com 但我的UDP Server 那端 就是没有数据怎么搞的????
日志服务器
复制代码
1. 不写本地磁盘,不占用IO,不影响server 性能
2. 日志集中管理,便于分析
apache 1 \ / TXT File
apache 2 |---CustomLog "| /usr/bin/rlog "---> UDP Socket ---> Daemon -> threading -> | DB (DBD, SQL....)
apache 3 / \ ......
- [root@dev1 ~]# cat /usr/local/bin/rlog
- #!/usr/bin/python
- # -*- encoding: utf-8 -*-
-
- import socket
- import sys
-
- HOST, PORT = "172.16.0.1", 514
-
- data = "".join(sys.stdin.read())
- if not data:
- exit()
-
- sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- sock.sendto(str(data), (HOST, PORT))
- #received = sock.recv(1024)
- sock.close()
[root@dev1 ~]# echo "Test" | /usr/local/bin/rlog
服务器端返回 192.168.3.10 wrote: b'Test' 表示成功
Virtual Host
- [root@dev1 ~]# cat /usr/local/httpd/conf/extra/httpd-vhosts.conf
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot /www/neo
- ServerName neo.test.com
- DirectoryIndex index.html index.php
- CustomLog "|/usr/local/bin/rlog" common
- ErrorLog "|/usr/local/bin/rlog"
- </VirtualHost>
- 30531 ? S 0:00 /usr/bin/python /usr/local/bin/rlog
日志服务器
- #!/usr/bin/python3
- # -*- encoding: iso-8859-1 -*-
-
- import logging
- import socketserver
-
- LOG_FILE = 'syslog.log'
-
- logging.basicConfig(level=logging.INFO,
- format='%(message)s',
- datefmt='',
- filename=LOG_FILE,
- filemode='a')
-
- class MyUDPHandler(socketserver.BaseRequestHandler):
- """
- """
-
- def handle(self):
- data = self.request[0].strip()
- socket = self.request[1]
- print( "%s wrote: " % self.client_address[0], data)
-
- logging.info(str(data))
-
- socket.sendto(data.upper(), self.client_address)
-
- if __name__ == "__main__":
- try:
- #HOST, PORT = "localhost", 514
- HOST, PORT = "0.0.0.0", 514
- server = socketserver.UDPServer((HOST, PORT), MyUDPHandler)
- server.serve_forever(poll_interval=0.5)
- except (KeyboardInterrupt, SystemExit):
- raise
- except:
- import traceback
- traceback.print_exc()
作者: bg7nyt 发布时间: 2011-01-15
另外请教一下大并发的UDP Socket Server 架构怎么设计?
TCP accept() 后可以交给线程来处理。。我就不知道UDP 怎么做了。
我想 udp server | <-------------- | udp client 想server 报告自己的IP
| ---------------> | udp server 让server 主动连接自己
这样就是双对等 server
我在看 rotatelogs.c 没有头绪
TCP accept() 后可以交给线程来处理。。我就不知道UDP 怎么做了。
我想 udp server | <-------------- | udp client 想server 报告自己的IP
| ---------------> | udp server 让server 主动连接自己
这样就是双对等 server
我在看 rotatelogs.c 没有头绪
作者: bg7nyt 发布时间: 2011-01-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28