wLogger 是一款集合 日志采集,日志解析持久化存储,web流量实时监控 。三位一体的web服务流量监控应用。 三大功能模块均可独立部署启用互不干扰。目前已内置 nginx 和 apache 的日志解析存储器,简单配置一下,开箱即用。 虽然市面上已经很多类似的开源日志采集监控服务比如goaccess,用了一圈之后始终没有一款用的特别舒心。
- 它可以在日志采集的时候可以按照日志文件的大小,或者在指定时间内自动对日志进行切割日志,存储到指定的目录 (已测2W并发切割日志不丢数据)
- 它可以不用像goaccess那样必须配置指定格式才能解析到数据,只用指定当前使用的 nginx/apache 日志格式名称 即可解析数据
- 它可以指定不同的项目走不同的队列服务,分别解析存储到不同的数据库,完全可以自己按需灵活配置
- 它天然支持分布式,日志采集服务队列已内置redis LIST结构,可自行拓展kafka ,mq等其它队列服务
- 它支持自定义持久化存储引擎,日志解析持久化存储服务已内置 mongodb 和 mysql ,可自行拓展其它数据库
- 简单配置,开箱即用,无入侵,高拓展,灵活配置,按需应用
运行环境:python3+ linux平台
项目地址:
wLogger
1.python3 安装(略)
2.redis 安装(略)
3.mysql 安装 (略)
4.配置
nginx日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $bytes_sent $request_length';mysql 配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION修改配置后,重启
创建数据库
create database logger;redis 设置密码
requirepass 1234565.项目部署
下载项目,进入项目目录
安装依赖
pip3 install -r requirements.txt
修改配置文件
# vim config.ini
[nginx]
pid_path = /www/server/nginx/logs/nginx.pid
server_conf = /www/server/nginx/conf/nginx.conf
[mysql]
host = 127.0.0.1
port = 3306
db = logger
username = logger
password = 123456
table = logger_watcher
split_save = day
[redis]
host = 127.0.0.1
port = 6379
password = 123456
db = 1
[inputer]
log_debug = False
node_id = server_80
queue = redis
queue_name = logger_watch:logger
max_batch_push_queue_size = 5000
max_retry_open_file_time = 10
max_retry_reconnect_time = 20
[inputer.log_file.web1]
server_type = nginx
file_path = /www/wwwlogs/local.test3.com.log
log_format_name = main
read_type = tail
cut_file_type = filesize
cut_file_point = 10
cut_file_save_dir = /www/wwwlogs/cut_file/
[outputer]
log_debug = False
save_engine = mysql
queue = redis
queue_name = logger_watch:logger
server_type = nginx
worker_process_num = 1
max_batch_insert_db_size = 1
max_retry_reconnect_time = 200
[web]
# development | production
env = development
debug = False
secret_key = asdasdasdsadasd
host = 0.0.0.0
port = 5000
data_engine = mysql
修改程序文件
vim Src/Core.py
修改 nginx 日志的所属用户
if pwd.getpwuid(os.stat(log_prev_path).st_uid).pw_name != 'nginx' and platform.system() == 'Linux':
try:
www_uid = pwd.getpwnam('nginx').pw_uid6.启动
python3 main.py -r inputer -c config.ini
python3 main.py -r outputer -c config.ini
python3 main.py -r web -c config.ini
7.浏览器访问
http://127.0.0.1:5000