influxdb+telegraf+Grafana监控解决方案与zabbix监控的对比

术业有专攻,各有所长。。。

influxdb+telegraf+Grafana监控解决方案

角色分工

  • telegraf 根据配置采集数据,输出数据;拥有丰富强大的输出输出插件,influxdb官方推出的数据采集方案,对influxdb的支持非常好;
  • influxdb 时序数据库,chronograf是官方提供的替代内置方案的web Admin;
  • Grafana 出图告警。出图功能灵活强大,告警功能目前还比较简单单一。

部署

  • 官方提供的rpm包安装,无依赖,操作简单。

高可用实现方案

  • influxdb社区版不支持集群方案;
  • telegraf支持写双份数据,来降低influxdb的单点风险;
  • Grafana可以通过MySQL替代SQLite,redis共享session,nginx代理多个应用的方式实现高可用。

监控项

  • 对java应用的监控
    • Jolokia
    • httpjson
      • jmxtrans
      • Actuator
  • 对http请求的监控
    • http
    • httprespone
  • 对日志的监控
    • logparser
    • tail
  • 支持exec脚本
  • 其它常见应用
    • apache
    • ceph
    • consul
    • docker
    • elasticsearch
    • fluentd
    • graylog
    • haproxy
    • influxdb
    • iptables
    • kubernetes
    • memcached
    • mesos
    • mongodb
    • mysql
    • nginx
    • openldap
    • phpfpm
    • postfix
    • postgresql
    • prometheus
    • rabbitmq
    • redis
    • solr
    • tomcat
    • varnish
    • zookeeper

telegraf支持的常见写入方式或介质

  • influxdb
  • rabbitmq
  • aws cloudwatch
  • elasticsearch
  • file
  • graphite
  • graylog
  • kafka
  • mqtt
  • opentsdb
  • prometheus
  • socket_writer
  • tcp
  • udp

出图

  • Grafana社区提供了丰富的Dashboard模板
  • 可以自定义
  • 导入导出
  • Dashboard、Row、查询SQL中均支持Variables,出图非常灵活

告警

  • 支持较为简单的告警逻辑处理
  • 告警关联的SQL中不支持Variables解析
  • 目前单个panel只支持一个告警规则,因此在配置告警时要进行panel拆分

部署过程中的要点

  • 数据库使用域名,或绑hosts,避免迁移修改配置的问题
  • http接口鉴权、绑定必要的IP list
  • 定义influxdb定期清理策略
  • influxdb认证

特点

  • 秒级数据采集
  • 自动上报
  • 部署简单
  • 插件丰富,开箱即用
  • 支持协议数据

缺陷

  • 告警能力(策略相对简单、渠道固定)
  • 跨网部署

和zabbix的优劣对比

telegraf+influxdb+Grafana Zabbix
部署及使用简单 部署使用相对复杂
内置监控项丰富 内置监控项支持相对少一些,但是社区提供了丰富的监控采集方案
不支持跨机房部署 支持跨机房部署
审计功能相对较弱 审计功能成熟完善
出图能力灵活强大 出图功能相对弱一些,图形化定制方面操作复杂
告警功能简单 告警强大,支持告警依赖,告警升级
支持通过webhook方式触发命令 支持服务器端/客户端的命令自动触发,支持命令推送
权限管理相对简单 支持细粒度的权限定制,权限体系成熟完善
数据采集方式相对单一,仅支持自动上报,但支持较为丰富的数据源 支持多种数据采集方式/协议,数据源相对单一,v3.4.7版本开始支持ES存储历史数据

总结

  • zabbix 更加成熟完善,侧重告警能力。
  • telegraf+influxdb+Grafana相对轻量,侧重出图能力。