日志简介

在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。

日志分类

日志分类,对不同的日志进行不同维度的分析。

操作系统日志

  1. 操作系统是基础,应用都是在其之上;
  2. 操作系统日志的分析,可以反馈出应用的一些问题;
  3. 登录操作系统,可以对应用进行直接操作,因此登录日志可以反馈出一些安全问题;
  4. 操作系统的自我保护机制,例如 OOM,会杀死异常应用,这些异常应用有可能是病毒、木马,也可能仅仅只是配置异常导致的;
  5. 硬件问题,操作系统是驱动硬件做事情的,硬件出现问题,操作系统一般会给出对应的反馈信息,也会记录在日志里面。

应用日志

  1. 基础应用的日志,比如:docker、k8s、redis、nginx 等等应用的错误日志;
  2. Web 日志,一般对外开发最多的就是 web 日志,web 日志可以分析出很多东西,比如:QPS、DUA、点击率等等统计信息;同时,也可以分析出是否有 web 攻击;
  3. 数据库慢日志,统计收集可用于性能分析。

日志收集

  1. Linux 系统自带有 rsyslog 应用,可以将系统日志同步到远程机器,统一收集
  2. 其他应用日志,也可以通过配置 rsyslog 进行收集;
  3. rsyslog 配置过滤相对比较负载,而且日志量大就容易出现内存占用过高的问题;这时候可以使用其他工具代替,比如:flume、logstash、filebeat 等日志收集应用进行收集。
  4. 如果程序支持,也可以让应用程序直接写到对应的日志存储里面。
  5. 日志量过大,直接写入数据库会导致数据库压力过大,这时候就可以使用队列应用进行缓存,例如:redis、kakfa 等。

日志展示

  1. 目前比较流行的就是 elasticsearch + kibana。数据存储到 elasticsearch,kibana 作为快速查询展示。
  2. 如果只是统计指标,也可以使用 grafana 进行展示。

日志告警

  1. grafana 可以根据统计数据进行告警,但是有很多限制,功能比较弱。
  2. 通过 elasticsearch 查询,规则过滤进行告警。
  3. 自研告警系统,可以实现环比和同比等更详细的统计分析,来及时发现异常。