日志存储

日志收集就是为了查询、统计分析,这个就涉及到要存储到哪里的问题。

文件存储

文件存储是最简单的存储方式。分析的时候一般就是借助 shell 命令进行过滤、统计。适合日志量比较小的情况,临时统计一下。

SQL 数据库

SQL 语句查询,是最方便统计分析的。

  • MySQL 也可以存储对应的日志。可以直接通过 SQL 语句进行查询,非常方便。上百万的日志量查询起来也还是挺快的。

  • TiDB 是为了兼容 MySQL 数据库,采用分布式,可以容纳更大量的查询。

  • Clickhose 也是分布式,是一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(DBMS:Database Management System),简称 CK。ClickHouse 是一个完全的列式数据库管理系统,允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展,简单方便,高可靠性,容错。一般 BI 会用到这个。

NoSQL 数据库

Elasticsearch 是提供持久存储、统计等多项功能的现代搜索引擎。查询速度快。

队列

MySQL、Elasticsearch 等数据库虽然查询快,但是高并发写入比较慢,就要使用到队列,作为缓冲一下。

  • redis 速度快,但是内存比较贵,如果未及时消费会导致数据丢失。
  • kafka 百万级别的并发,支持分布式,支持副本,磁盘持久化,可以防止数据丢失

总结

一般是使用 elasticsearch 来存储日志,因为查询快,而且有前端 kibana 提供快速查询。