指标、监控、告警
目录:
- 摘要
- 详情
- 相关
- 备注
- 自由文本消息对结构化事件消息
- Graylog 更加容易
- Prometheus 需要调一调
- AWS 服务有好有坏
- Kafka
- Loki
- Prometheus + alertmanager + Rollbar + Graylog + Grafana
- Thanos
- Prometheus HA
- Datadog + PagerDuty + Threat Stack
- Zabbix
- Outlyer
- Nagios + Nagiosgraph
- Prometheus + Grafana + AlertManager
- DataDog + Sentry + PagerDuty.
- Sensu + Graphite + ELK
- Prometheus + Alertmanager
- Sensu + Grafana + Graylog + Kibana + NewRelic.
- Prometheus + Circonus
- icinga2 + VictorOps + NewRelic + Sentry + Slack
- AppDynamics + Papertrail + PagerDuty + Healthchecks.io + Stackdriver
- icinga2 + elasticsearch
- DataDog + New Relic + ELK + EFK + Sentry + Alertmanager + VictorOps
- Wavefront + Scalyr + PagerDuty + Stackstorm + Slack
- Telegraf + Prometheus + InfluxDB + Grafana
- Sematext + Logagent + Experience
- Azure Monitor/Analytics + OpsGenie
- Prometheus + Alertmanager + Grafana + Splunk + PagerDuty
- Telegraf + Prometheus + Grafana + Alertmanager
- Prometheus + Grafana + Cloudwatch + sentry + kibana + elasticsearch
- PagerDuty + Monitis
- Prometheus + Grafana + Bosun
- Azure Monitor/Analytics/Insights/Dashboards
- Grafana + Monitis + OpsGenie + Slack
- Checkly + AppOptics + Cloudwatch + Heroku + Pagerduty + Papertrail
- Instana + Logz.io + slack
- SignalFX + Splunk + PagerDuty + Slack
- ELK + Prometheus + Grafana
- Datadog + Prometheus + Grafana
- Nagios + ELK
- Datadog 对 Site24x7 + StatusCake + PagerDuty + SumoLogic + Slack
- Prometheus + AlertManager + Grafana + Stackdriver
- Zabbix
摘要
问题
阿拉想用指标、监控搭告警,因为阿拉想晓得阿拉个应用运行得有多好,也想晓得有问题个辰光。
决策
进行中。
状态
正辣收集信息。阿拉从看起来合理个两端开始:最被推荐个老个免费工具(Nagios),还有最被推荐个新个付费工具(New Relic)。
详情
假设
阿拉想创建现代、快速、可靠、响应式等等个 Web 应用。
阿拉想买而勿是造。
限制
阿拉想要搭阿拉个 devops 流水线,还有阿拉部署用个云配合得好个工具。
立场
阿拉现在辣调研各种立场。
AlertManager
AppDynamics
AppOptics
Azure Monitor/Analytics/Insights/Dashboards
Bosun
Checkly
Circonus
Cloudwatch
EFK
ELK
Grafana
Grafana
Graphite
Graylog
Healthchecks.io
Heroku
icinga2
InfluxDB
Instana
Kafka
Logagent
Logz.io
Loki
Monitis
Nagios
Nagios
Nagiosgraph
NewRelic
OpsGenie
Outlyer
PagerDuty
Pagerduty
PagerDuty
Papertrail
Prometheus
Rollbar
Scalyr
Sematext Metrics, Logs, Experience, Tracing
Sensu
SignalFX
Slack
Splunk
Stackdriver
Stackstorm
Telegraf
Telegraf
Thanos
VictorOps
Wavefront
Zabbix
论据
到现在为止,Nagios 搭 New Relic 是两端。Nagios 是最老、最简单、免费、可行个工具。New Relic 是功能最新、最完整、付费、可行个工具。阿拉会从评估迭两个开始。根据需要,阿拉会迁移到中间。
到现在为止,Zabbix 个推荐最好,提供个能力也最完整。
到现在为止,ELK 辣开源“自建胜过购买”方面最受欢迎。
到现在为止,Prometheus + Graphana 最受欢迎。
影响
待办。
相关
相关决策
迭眼选择会影响可测试性、遥测,还可能影响其他系统,比方客户服务、站点可靠性工程等等。
相关需求
待办。
相关工件
待办。
相关原则
容易撤销。
需要速度。
备注
一个蛮好个开源栈是:
Prometheus 做指标,并且根据指标告警
Grafana 显示指标
Elasticsearch/Logstash/Kibana(ELK)做日志搭结构化事件
Pushover 做移动端通知
自由文本消息对结构化事件消息
自由文本消息:比方,/var/log/messages 里向会碰着个那种随意个东西,还有应用有意生成个东西。迭眼消息对识别机器上发生个其他事体(比方内存勿够或者硬件错误)有用,勿过有许多垃圾。
结构化事件消息:由应用生成,带一组固定或者动态个属性,比方 HTTP 请求日志、记账日志、用户登录。
一般来讲,最好用可以根据属性往下钻个方式,记录每个请求个细节。所以辣所有东西上加比方 userid 或者 sessionid,就让侬可以追踪。当然,显式追踪也是好个。用 ELK 做迭个,有点像穷人版个 https://www.honeycomb.io/
Graylog 更加容易
根据我个经验,Graylog 更加容易搭起来。
Prometheus 需要调一调
我对 Prometheus 做指标总体上蛮满意。告警需要调一调,勿过蛮好。伊取决于侬个应用。我觉得最好是对最终用户看得到个情况告警,而勿是对底层原因告警。比方,页面加载辰光是好个,每秒请求数勿好。勿过每秒呒没请求,表明有啥地方出问题哉。
服务个好处是,伊拉开箱即用就提供额外个智能。我总体上欢喜 Datadog。要是侬有许多数据,服务可能贵得吓人,有辰光定价模式勿适合云,比方按实例收费,而实例是动态个。还有,每个请求侪来自付费用户个服务,搭广告相关个服务是勿一样个,后者只有一小部分请求赚钞票。侬可能最后数据一大堆,预算却勿多。
我做个有眼服务每日有 10 亿个请求,所以自家托管监控搭日志蛮合理。要是侬个量比较小,托管服务更加容易。
AWS 服务有好有坏
我用 AWS 服务个经验有好有坏。伊拉个 Elasticsearch 服务勿大稳,所以阿拉自家跑实例。CloudWatch 指标价钿贵,所以阿拉一般只拿伊用辣“基础设施”层面个指标,而勿是应用,也就是搭健康有关个指标,对迭种指标 AWS 比跑辣实例上个软件更加晓得发生了啥。CloudWatch Logs 更新可能慢,而且元数据勿多。跑 ELK 对迭个有帮助。要是我真个想要实时数据,拿 Kafka 当日志个传输更加好。Logstash 对迭个支持蛮好。勿过,管理 Kafka 集群勿是胆小个人干得了个,有许多暴露出来个管道。
Kafka
评论:Kafka 有辰光可能超级棘手,或者 Kafka 可能稳如磐石,侬几乎忘记伊辣迭搭拿所有东西连起来。
评论:Kafka 一直蛮稳,勿过让伊跑起来个工作量大得出乎意料。我拿伊想成关系型数据库,只勿过侬只辣“物理”层工作,比方表空间、文件搭分区。早期有几趟,管理工具欠缺,阿拉只好写程序来做比方重置消费者组个事体。http://howfuckedismydatabase.com/nosql/
评论:阿拉拿 Kafka 当日志消息个“缓冲”,还当作一个地方,可以对来自多台服务器个数据做实时流处理。要是阿拉碰着 DDOS 攻击,阿拉需要一个办法跨多个实例分析数据。要是直接从服务器记日志到 ELK,负载可能会弄垮 Elasticsearch 集群。
评论:Kafka 对阿拉好,因为要是阿拉碰着 DDOS 攻击,阿拉需要一个办法跨多个实例分析数据。要是直接从服务器记日志到 ELK,负载可能会弄垮 Elasticsearch 集群。
评论:Kafka 做个事体更加少,更加高效,所以可以更加好地处理负载。而且阿拉拿 Kafka 个工作排队,再重试。Kafka 过载勿会影响辣 Kibana 上做交互式工作个用户,勿像 Elasticsearch 吃力个辰光那能。
评论:流处理主要是找滥用,比方整个集群里单个 IP 个流量太大,然后辣整个集群里分享封禁。
评论:勿过 logstash-output-kafka 插件现在相当勿可靠。我被伊 GitHub issues 页面上好几个问题坑过,那眼问题好像从来勿会修复。我想勿再用伊,改成直接从阿拉个应用发送到 Kafka。
评论:阿拉现在直接从应用发送结构化事件到 Kafka。主要动机是少碰日志数据几趟,避免多趟读写磁盘。辣高流量个系统里,记日志可能比应用本身个工作更加多。我辣考虑让 journald 也直接发送日志,用一个 C 程序。
Loki
密切关注 Loki。伊现在还勿成熟,勿过等伊成熟了,我预期伊会更加适合迭个栈。Loki 是 grafana labs 创建个日志聚合器,伊用搭 Prometheus 类似个抓取搭标签语法。
Prometheus + alertmanager + Rollbar + Graylog + Grafana
Prometheus + alertmanager 做指标。<3 Prometheus。
Rollbar/Graylog 做日志/错误报告(这里有眼重叠;小服务可能勿需要两个都要)。
现在,告警只是发到几个 Slack 频道之一,有兴趣个人打开了通知。要是阿拉对待命更加认真,会发到 PagerDuty/VictorOps 等等。
Grafana 做图表搭仪表盘。也急切地期待看伊们即将推出个日志功能会勿会让 Graylog 变得勿必要。
Thanos
阿拉用 Thanos 作为 HA 设置个前端。伊晓得哪能对 HA 对进行去重。
阿拉现在保留 6 个月个本地 Prometheus 数据。迭个对阿拉蛮管用。勿过我正好辣拿存储桶存储推广到阿拉个 Thanos 设置里,做长期数据存储。理论上,GCS 存储会比阿拉现在用个 GCE 标准持久磁盘便宜大约 30%。
阿拉现在勿备份 Prometheus 数据。除了够用来告警,迭眼数据对阿拉并勿真个重要。阿拉整个机群个部署每年变化很大,所以超过几个月个历史数据勿大有意思。逐年对比一眼核心统计数据可能蛮有意思,我可能会设置一套核心统计个记录规则,用联邦存储,或者让 Thanos 来处理。
编辑:一个小小个声明,我是 Prometheus 开发者。
Prometheus HA
Prometheus 个 HA 是通过复制做个,侬跑多个采集器,有办法轮询多个,再对数据去重
扩展是通过划分网络,让勿同个 Prometheus 轮询网络个勿同部分
长期存储勿是 Prometheus 个强项,而是卸给 influx 或者 timescaledb 迭类(技术上也满足 HA 迭一项)我读过个一篇文章 https://blog.timescale.com/prometheus-ha-postgresql-8de68d19b6f5?gi=7df160f10e07
还呒没试过长期存储个东西,因为我还只是辣试验,拿伊用来做短期图表,librenms 监控我个网络做长期
Datadog + PagerDuty + Threat Stack
阿拉用 Datadog(配 PagerDuty)搭 Threat Stack,再满意勿过。我对 DD 唯一个抱怨是指标存储成本相对比较高。
Zabbix
Zabbix 配自定义脚本,监控几乎所有东西。像魔法一样管用。
Outlyer
我辣用 Outlyer,勿过我必须声明我辣迭搭工作,自己吃自己个狗粮是必须个。
还是需要 Graylog、Sentry 搭 Statuscake 来增强。
听起来有偏见,勿过辣内部愉快地跑过 Nagios 搭其他监控系统之后,辣任何新工作里,我会买托管方案,拿迭个痛苦卸掉。
Nagios + Nagiosgraph
阿拉用 Nagios 做所有监控搭告警。告警通过电子邮件(警告搭严重通知)搭可听见个应用通知(严重告警)发出。
Nagiosgraph 用来做可视化。
迭套设置非常有效地让阿拉全面晓得阿拉环境里发生个事体。阿拉运行并且监控大约 110 台关键任务服务器搭大约 760 个数据点,迭套早上监控系统已经有七年多了。
我也想辣某个辰光用 Graylog 或者 ELk 聚合日志。
Prometheus + Grafana + AlertManager
Prometheus + Grafana + AlertManager,通过很棒个 Prometheus Operator helm chart。日志仍旧发到 LogDNA birch 套餐,因为阿拉发现 ELK 对阿拉辣 GKE 上最少 3 个最多 5 个节点个小规模来讲太重量级。
DataDog + Sentry + PagerDuty.
我以前自家跑所有个监控方案,用各种各样个软件,包括 Nagios、Icinga、Zabbix、ELK、Greylog2、Influx,还有许多其他工具,勿过老实讲,自己运行监控基础设施花个精力实辣太多,尤其是侬可以用迭能低个价钿付钞票,让别人替侬做!
付钞票让别人运行监控基础设施,让我个客户可以专心运行伊拉个平台,而勿是监控监控,意味着伊拉从平台稳定性得到个价值,远远超过监控即服务个任何成本。
Sensu + Graphite + ELK
我公司非常看重自托管个东西。
Sensu -> PagerDuty
Graphite/Grafana
ELK(Elasticsearch、Logstash、Kibana)
Prometheus + Alertmanager
Prometheus + Alertmanager 做告警,我个团队相信简单个监控就是好个监控。
日志搭追踪迭类其他系统,会辣待命人员收到告警个辰光,为诊断提供丰富个背景,勿过阿拉从来勿拿告警建立辣迭眼上头。
Sensu + Grafana + Graylog + Kibana + NewRelic.
Sensu、grafana、graylog、kibana、newrelic。
Prometheus + Circonus
Prometheus 插桩个服务 => Circonus 分析搭可视化
icinga2 + VictorOps + NewRelic + Sentry + Slack
阿拉辣用下底几个服务:
icinga2 做监控,VictorOps 做告警
NewRelic 做服务个详细监控
Sentry 做服务里个错误跟踪
Slack/电子邮件是告警个一部分,由 NewRelic 或者 icinga2 触发
AppDynamics + Papertrail + PagerDuty + Healthchecks.io + Stackdriver
AppDynamics
Papertrail
PagerDuty
Healthchecks.io
Stackdriver
icinga2 + elasticsearch
icinga2 配 elasticsearch 集成做分析,配 graphite+grafana 集成做图表。
多亏 icinga2 里应用规则个灵活性,开发者只看得到伊拉会收到通知个服务。
而且通过 icinga2 director,程序员可以辣大规模上毫勿费力地容易定义自家个检查(伊拉真个辣做,每隔几日——100 个检查出去,100 个其他检查进来)。
DataDog + New Relic + ELK + EFK + Sentry + Alertmanager + VictorOps
阿拉现在有啥:
DataDog 做指标
New Relic 做应用监控
ELK(Elastic Search + Logstash + Kibana)做日志
Sentry(自托管)做记录异常
电子邮件 + Slack + VictorOps 做告警(根据严重程度)
阿拉想要有啥:
Prometheus 做指标(Grafana 做可视化)
New Relic(可能是 Elastic Search APM)做应用监控
EFK(elastic search + fluentd + kibana)做日志。可能到阿拉做到迭一步个辰光,Grafana 个 Loki 已经可以用于生产
Sentry 做异常
Alertmanager + 电子邮件 + VictorOps 做告警
Wavefront + Scalyr + PagerDuty + Stackstorm + Slack
Wavefront + Scalyr + PagerDuty + Stackstorm + Slack(声明:辣 VMware 工作)
Telegraf + Prometheus + InfluxDB + Grafana
Telegraf 做 CPU、磁盘、内存搭网络迭类服务器指标。阿拉还用 Telegraf 对阿拉个网络设备做 SNMP 监控。
Prometheus 做应用指标。阿拉辣应用里写进健康检查,Prometheus 去抓取。
InfluxDB 做时序存储。阿拉个 Telegraf 数据发到迭搭。
Grafana 做仪表盘搭告警。告警引擎勿算超级稳固,勿过能完成任务。阿拉也拿告警发进 Slack。
我现在呒没个是集中式个日志方案。ELK 强大,勿过难设置、难管理,我也勿晓得有啥免费个替代品够接近,值得去看。
Sematext + Logagent + Experience
Sematext 做指标、做日志、做追踪,不久也会做真实用户监控。依我看,比用 N 个勿同个工具/服务更加简单/更加便宜。
做日志传送,阿拉以前用 rsyslog,后来换成 Logagent。
前端崩溃报告阿拉用 Sentry,勿过阿拉马上会换成 Experience。
声明:我是 Sematext 个人。
Azure Monitor/Analytics + OpsGenie
我希望 Log Analytics 有更加好个界面。阿拉辣离开 splunk,伊导航起来容易得多。
Prometheus + Alertmanager + Grafana + Splunk + PagerDuty
Prometheus、Alertmanager、Grafana、Splunk、PagerDuty
侬真个勿想自家运行通知系统。除非侬个安全团队更加欢喜 Splunk,侬可以拿 Splunk 换成 ELK。
Telegraf + Prometheus + Grafana + Alertmanager
Telegraf 做采集器,Prometheus + Alertmanager 做监控搭告警,集成 slack 频道,严重告警集成 pagerduty。Grafana 做主机指标可视化。
Prometheus + Grafana + Cloudwatch + sentry + kibana + elasticsearch
Prometheus 做指标 + 告警
Grafana 做 Prometheus 仪表盘
Cloudwatch 监控 Prometheus 实例
sentry 做异常跟踪
kibana + elasticsearch
graylog
prometheus Push Gateway 做批处理/定时任务
SOP https://github.com/rapidloop/sop 用来从一个 Prometheus 实例向另外一个“推送/转发”指标
客户端要么用 Prometheus 客户端。阿拉试着辣客户端用 opencensus.io
PagerDuty + Monitis
PagerDuty + Monitis。还有一眼定制个 Azure Functions,用来测试某眼服务个健康状况。
打算今年引入 Prometheus 搭 Grafana
Prometheus + Grafana + Bosun
Prometheus 存储时序数据。Grafana 做可视化。Bosun 做告警管理。
Azure Monitor/Analytics/Insights/Dashboards
只用 Azure 个公司,Azure Monitor、Log Analytics、App Insights、Azure Dashboards + Pager Duty
Grafana + Monitis + OpsGenie + Slack
Grafana 通过 Prometheus 监控 Kubernetes 里个容器服务
Monitis 做端到端服务监控,主要针对 Web API 搭 Web 应用
OpsGenie 做告警管理
Slack 用来从阿拉个系统获取状态信息
Checkly + AppOptics + Cloudwatch + Heroku + Pagerduty + Papertrail
我是个老牌(dev)ops 工程师。伴随 Nagios 长大。很想听听对我自力更生做起来个 SaaS https://checklyhq.com 个意见。阿拉做 API 监控搭站点事务监控,告警相当深入。
我创办 Checkly,是因为 API 领域里个主动/合成监控有点有限(而且价钿贵)。基于浏览器/脚本个监控更加专有、更加贵。阿拉用 Puppeteer,把价钿保持得尽量低。
阿拉个监控栈:
Checkly(吃自己个狗粮……)
AppOptics(自定义图表)
AWS Cloudwatch 搭 SNS 发短信。
内置个 Heroku 告警。
Pagerduty
Papertrail
Instana + Logz.io + slack
Instana 辣 slack 里向通知阿拉基础设施问题或者性能下降,阿拉还配置了 logz.io,当应用层错误级别日志达到一定数量个辰光,辣 slack 里告警。
SignalFX + Splunk + PagerDuty + Slack
现在用个是:SignalFX、Splunk、PagerDuty 搭 Slack。我勿大欢喜 SignalFX,虽然伊拉个支持团队超级友好,响应也快。我欢喜 Splunk(要是付得起,值得)、PagerDuty 搭 Slack。
我以前用过 TICK 栈,其中大部分个 C 其实是 G,也就是 Grafana,勿过我也用过一点 Chronograf。那个很棒,勿过管理起来是个痛苦。经典个 SaaS 对自托管个两难。
我用过 DataDog、New Relic、Graylog、ELK 搭 BugSnag。我蛮欢喜 DataDog 搭 New Relic,Graylog 蛮好。勿过我勿大是 ELK 个粉丝。BugSnag 勿错,我实际上觉得,辣许多情况下,跟踪错误/异常是完整日志监控个一个蛮好个替身。
ELK + Prometheus + Grafana
搭其他人一样,阿拉用 ELK 做日志,用 Prometheus+Grafana 做其他所有东西。
要是侬允许自家偶尔丢一眼数据,维护迭套设置是容易个。比方,要是阿拉个 ElasticSearch 数据库出毛病(勿幸个是对阿拉每 2-3 个月一趟),阿拉勿去弄 HA,而是拿数据倒掉,继续过日脚。要是侬绝对必须有 HA 或者长期保留,祝侬好运。
Datadog + Prometheus + Grafana
我按月订阅了 Datadog,因为我到迭搭个辰光,呒没监控,也呒没告警。阿拉只有几个站点每 5 分钟监控一趟是否正常运行。Datadog 毫无疑问是最容易设置个。等我处理完所有其他问题,我会改成 Prometheus+Grafana。日志管理还呒没百分之百决定。
Nagios + ELK
阿拉支持 100 多个产品。
本地部署个,主要是 Nagios 搭 ELK。云上个,阿拉辣从 DataDog 迁移到 NewRelic。
Datadog 对 Site24x7 + StatusCake + PagerDuty + SumoLogic + Slack
阿拉以前用 datadog,勿过发现对阿拉个需要来讲伊太贵哉。勿要误会,伊很棒,勿过成本确实巨大。阿拉用年度订阅设置了 site24x7.com,价钿大约是 DD 两三个月个成本。
阿拉个监控栈:
Site24x7 - APM、外部 URL 监控、SMTP 邮件流监控、ssl 到期搭进程监控。
StatusCake - 做 URL 监控搭确认——伊是阿拉个备份,万一 site24x7 漏掉啥(伊勿会),勿过 SC 对阿拉个需要来讲,做外部端口搭服务监控更加灵活。
两个工具侪升级到 PagerDuty,然后阿拉辣 slack 里收到升级。
SumoLogic - 做日志监控(伊是个很棒个工具,勿过对阿拉个需要来讲有点复杂)
从 slack 里向,阿拉可以确认或者补救告警。
然后阿拉有许多 site24x7 自动化,连接到 commando.io,做阿拉叫个“BedOps”——告警触发个辰光,阿拉启动几个脚本或者自动化,尝试补救情况(99% 个辰光,自动化 + 阿拉个脚本让阿拉勿惹麻烦)。
自动化失败,或者有啥超出范围个事体需要修复个辰光,阿拉有放辣 KB 里个内部运行手册。
Prometheus + AlertManager + Grafana + Stackdriver
Prometheus(Operator)/ AlertManager / Grafana 做阿拉 GKE 集群搭虚拟机里个指标。
Google Stackdriver 做日志(因为伊内置、默认启用,现在对阿拉个需要够用)。
Zabbix
Zabbix 搞定一切。勿需要额外软件。