系统日志
本系统的日志主要分三块:
- 以HTTP访问为视角的apache格式的log。
- 系统调试用的log(代码中输出到屏幕的一些log)
- 用户使用记录(提问了哪些问题,访问了哪些页面,后台编辑人员操作记录)
- 用户点赞/点踩反馈
背景知识:我们每一个项目都有一个项目id,可以通过在yiask的container里面运行echo $PROJECT查看。这个项目id是许多数据库、文件夹起名字的基础
1. 以HTTP访问为视角的apache格式的log
在yiask的container里面的/usr/src/app/logs/$PROJECT中。会按照天做rotation。当天的记录在access.log中
注:我们一般在部署的时候,会将容器里面
/usr/src/app/logs路径映射到物理机中,具体地址见docker-compose.yml文件中声明的内容
2. 系统调试用的log(代码中输出到屏幕的一些log)
在yiask的container里面的/usr/src/app/logs中。会按照天做rotation。当天的记录在out.log中,报错信息在err.log。
注:我们一般在部署的时候,会将容器里面
/usr/src/app/logs路径映射到物理机中,具体地址见docker-compose.yml文件中声明的内容
3. 用户使用记录(提问了哪些问题,访问了哪些页面,后台编辑人员操作记录)
此记录保存在mongodb中,路径如下:
- database: website_$PROJECT
- collection: logs
logs collection里面,以action用来区分用户行为
- ask: 问答行为
- visit: 访问行为
- dashboard: 看板操作
- edit_model: 后台编辑人员操作模型的记录
- log: 系统log(和第二点的log一样,但是这里会自动清除3天前的log)
mongodb一般在同一台服务器上,也以docker的方式运行。容器名称一般为yiask_mongodb
4. 用户点赞/点踩反馈
此记录保存在mongodb中,路径如下:
- database: website_$PROJECT
- collection: feedbacks
mongodb一般在同一台服务器上,也以docker的方式运行。容器名称一般为yiask_mongodb
清理clickhouse log
clickhouse会将查询日志,度量日志和堆栈采集日志记录下来,存储到自身数据库的system库中, 如果长时间不清查,该表数据会一直累积。
查看system的每张表的占用空间大小:
SELECT
table,
formatReadableSize(sum(bytes)) as size,
formatReadableSize(sum(primary_key_bytes_in_memory)) as primary_key_size,
sum(rows) as rows_count,
count() as parts_count
FROM system.parts
WHERE database = 'system' AND active
GROUP BY table
ORDER BY sum(bytes) DESC;
例子:
ALTER table `system`.query_log DELETE where 1=1;
ALTER table `system`.trace_log DELETE where 1=1;
ALTER table `system`.metric_log DELETE where 1=1;
ALTER table `system`.query_thread_log DELETE where 1=1;