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相对轻量,侧重出图能力。