wLogger 安装部署 nginx 日志分析展示 发表于 2021-11-24 | 分类于 日志分析 | 暂无评论 wLogger 是一款集合 日志采集,日志解析持久化存储,web流量实时监控 。三位一体的web服务流量监控应用。 三大功能模块均可独立部署启用互不干扰。目前已内置 nginx 和 apache 的日志解析存储器,简单配置一下,开箱即用。 虽然市面上已经很多类似的开源日志采集监控服务比如goaccess,用了一圈之后始终没有一款用的特别舒心。 - 它可以在日志采集的时候可以按照日志文件的大小,或者在指定时间内自动对日志进行切割日志,存储到指定的目录 (已测2W并发切割日志不丢数据) - 它可以不用像goaccess那样必须配置指定格式才能解析到数据,只用指定当前使用的 nginx/apache 日志格式名称 即可解析数据 - 它可以指定不同的项目走不同的队列服务,分别解析存储到不同的数据库,完全可以自己按需灵活配置 - 它天然支持分布式,日志采集服务队列已内置redis LIST结构,可自行拓展kafka ,mq等其它队列服务 - 它支持自定义持久化存储引擎,日志解析持久化存储服务已内置 mongodb 和 mysql ,可自行拓展其它数据库 - 简单配置,开箱即用,无入侵,高拓展,灵活配置,按需应用 - 运行环境:python3+ linux平台 项目地址: [wLogger](https://github.com/jyolo/wLogger "wLogger") 1.python3 安装(略) 2.redis 安装(略) 3.mysql 安装 (略) 4.配置 nginx日志格式 ```shell 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 配置 ```shell 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 ``` 修改配置后,重启 创建数据库 ```shell create database logger; ``` redis 设置密码 ```shell requirepass 123456 ``` 5.项目部署 下载项目,进入项目目录 ```shell 安装依赖 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_uid ``` 6.启动 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