跳转至

为什么要做监控

1、分析长期趋势。例如数据库目前的数据量,以及增长速度;每日活跃用户的数量增长的速度等。 2、跨时间范围的比较。增加节点后,memcache 的缓存命中率是否增加;网站速度是否比上周速度要慢等。 3、报警。当某项东西出现故障了,需要立刻有人修复,或者需要有人尽快查看。 4、监控台页面 dashboard。用来回答有关服务的一些基本问题。 5、临时性的回溯分析。

监控术语

  1. 监控
  2. 收集
  3. 处理
  4. 汇总
  5. 白盒监控
  6. 日志分析
  7. java虚拟机
  8. http接口
  9. 黑盒监控
  10. 某种外部用户可见的系统行为监控
  11. 监控台面
  12. 提供某个服务核心指标的应用程序

监控的四个黄金指标

  1. 延时
  2. 请求所需的时间
  3. 流量
  4. IO负载
  5. 错误
  6. 请求失败的速率
  7. 饱和度
  8. 服务容量(cpu/内存等)

三类重要输出

  1. 紧急报警
  2. 必须立即处理的操作
  3. 工单
  4. 必须在几天内进行处理
  5. 日志
  6. 不会马上使用,用做以后的分析

目前需求

功能

  1. 采集
  2. 存储
  3. 查询
  4. 报警

平台

  1. window
  2. linux

> 主

- ELK

E:Elasticsearch L:Logstash K:Kibana

  • 优点 1、处理方式灵活:elasticsearch是实时全文索引,具有强大的搜索功能 2、配置相对简单:elasticsearch全部使用JSON 接口,logstash使用模块配置,kibana的配置文件部分更简单。 3、检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。 4、集群线性扩展:elasticsearch和logstash都可以灵活线性扩展 5、前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单

  • ELK缺点 1、不能处理多行日志,比如Mysql慢查询,Tomcat/Jetty应用的Java异常打印 2、不能保留原始日志,只能把原始日志分字段保存,这样搜索日志结果是一堆Json格式文本,无法阅读。 3、不复合正则表达式匹配的日志行,被全部丢弃。

> 备

- EFK

E:Elasticsearch F:Flume K:Kibana

  • 优点: Flume是java开发,并且它系统框架好,模块分明,易于订制开发,可靠
  • 缺点: 日志格式处理单一,配置复杂,资源开销小

- grayLog

  • 优点 1、一体化方案,安装方便,不像ELK有3个独立系统间的集成问题。 2、采集原始日志,并可以事后再添加字段,比如http_status_code,response_time等等。 3、自己开发采集日志的脚本,并用curl/nc发送到Graylog Server,发送格式是自定义的GELF,Flunted和Logstash都有相应的输出GELF消息的插件。自己开发带来很大的自由度。实际上只需要用inotify_wait监控日志的MODIFY事件,并把日志的新增行用curl/nc发送到Graylog Server就可。 4、搜索结果高亮显示,就像google一样。 5、搜索语法简单,比如: source:mongo AND reponse_time_ms:>5000 ,避免直接输入elasticsearch搜索json语法 6、搜索条件可以导出为elasticsearch的搜索json文本,方便直接开发调用elasticsearch rest api的搜索脚本。

  • 缺点 1、控制台操作页面是英文的,针对国内开发使用者使用起来不方便,还得额外汉化,汉化可能失败 2、使用网络传输,可能会占用项目网络