我们就是云盘 业务日志 1天1T -2T 现在存储一共30T ,还有些核心日志超过30天压缩转储到OBS, 请求日志存CK 90天.
基于CH的NGINX请求日志URI级别5XX与耗时异常告警 :
光有看板怎么够!基于CH的NGINX请求日志URI级别5XX与耗时异常告警 (qq.com)
你还用ES存请求日志?CH+Vector打造最强Grafana日志分析看板 (qq.com)
为什么要用 ClickHouse
ClickHouse是一个列式存储数据库,尤其擅长处理结构化的大规模的SQL查询和聚合分析操作,所以针对NGINX这类结构化的请求日志,在处理多维分析、聚合查询、分组统计等操作速度极快,并且压缩比极高,存储成本比ES低10倍,CPU、内存的占用也有巨大优势。
架构图:
首先配置nginx:
编辑NGINX配置文件nginx.conf
(已配置为毫秒级别的时间格式)
map "$time_iso8601 # $msec" $time_iso8601_ms { "~(^[^+]+)(\+[0-9:]+) # \d+\.(\d+)$" $1.$3$2; }
log_format main
'{"timestamp":"$time_iso8601_ms",'
'"server_ip":"$server_addr",'
'"remote_ip":"$remote_addr",'
'"xff":"$http_x_forwarded_for",'
'"remote_user":"$remote_user",'
'"domain":"$host",'
'"url":"$request_uri",'
'"referer":"$http_referer",'
'"upstreamtime":"$upstream_response_time",'
'"responsetime":"$request_time",'
'"request_method":"$request_method",'
'"status":"$status",'
'"response_length":"$bytes_sent",'
'"request_length":"$request_length",'
'"protocol":"$server_protocol",'
'"upstreamhost":"$upstream_addr",'
'"http_user_agent":"$http_user_agent"'
'}';
# 配置完成后,重载NGINX
2-部署ClickHouse
docker 部署ClickHouse-白眉大叔 (baimeidashu.com)
3- 部署vector 采集nginx 日志
部署Vector采集日志(docker 安装 vector)-白眉大叔 (baimeidashu.com)
4-Grafana新增ClickHouse数据源
docker 安装Grafana-白眉大叔 (baimeidashu.com)
在Grafana中增加ClickHouse数据源时,注意点开Additional settings右边的箭头,配置Default database为存放日志的默认库,如上的:nginxlogs。
5-导入NGINX请求日志分析的Grafana看板
Grafana看板ID:22037
下载地址:https://grafana.com/grafana/dashboards/22037
注意:如果你保存日志的表名不是access结尾的,项目菜单会没有数据,需要点击看板右上角的设置-变量-project,在下方的Regex项,输入你需要展示的日志表的正则,或者留空,展示默认库的所有表。
没有数据展示排查 :
没有数据展示排查-白眉大叔 (baimeidashu.com)
欢迎来撩 : 汇总all