FAQ(常见问题解答)¶
常见的¶
什么是Prometheus
Prometheus是具有活跃生态系统的开源系统监视和警报工具包。
和其他的监控系统比起来怎么样
请参考官方的Compare
Prometheus有哪些依赖
Prometheus主服务器是standalone模式。没有额外的依赖
Prometheus能否高可用
可以高可用模式,在两台或者多台独立的服务器上运行相同的Prometheus。重复的alerts将会被Alertmaneger删除。
为了提高Alertmanager的可用性,可以在Mesh集群里运行多个instances,并配置Alertmanager向每个实例发送通知。
有人告诉我Prometheus不是scale的
可以Scale,有许多的方式可以scale和federate Prometheus。详细参见Scaling and Federating Prometheus
Promtheus是用什么写的
大部分是Golang,还有Java, Python, and Ruby.
Prometheus功能,存储格式和API的稳定性如何
当然稳定
为什么使用了pull模式而不是push模式
HTTP的Pulling方式有许多优点:
- 进行更改时,可以在笔记本电脑上运行监视。
- 您可以更轻松地判断target是否down。
- 您可以手动跳到target并使用Web浏览器检查其运行状况。
- 总体而言,pulling比pushing略好,但在考虑使用监控系统时,不应将其视为主要重点。
对于必须推送的情况,使用Pushgateway。
能否将日志传入到Prometheus
不可以,Prometheus是一个收集和处理指标的系统,而不是事件记录系统。
Prometheus使用什么License
Apache 2.0 license.
能否重新加载Prometheus配置
将SIGHUP信号发送到Prometheus进程或使用HTTP POST请求发送到/-/reload端点将重新加载并应用配置文件。 各种组件尝试优雅处理失败的更改。
能否发送告警
可以,Alertmanager就是干这事儿,当前支持的告警系统。
- Generic Webhooks
- OpsGenie
- PagerDuty
- Pushover
- Slack
- VictorOps
能否创建Dashboard
可以, Grafana或者使用自带的console templates
能否更改时区吗? 为什么所有内容都采用UTC?
避免时区混乱。
Instrumentation1¶
哪些语言有Instrumentation库
详细参加client libraries
是否可以监控机器
可以,Node Exporter在Linux和其他Unix系统上公开了一组广泛的计算机级别指标,例如CPU使用率,内存,磁盘使用率,文件系统完整性和网络带宽。
是否可以监控网络设备
可以,SNMP Exporter允许监视支持SNMP的设备。
是否可以监控批处理任务
使用Pushgateway。 另请参阅监视批处理作业的best practices。
Prometheus可以直接使用哪些应用程序进行监视
可以通过JMX监视JVM应用程序吗
对于无法直接使用Java客户端进行检测的应用程序,可以单独使用JMX Exporter或将其用作Java Agent(代理)。
Instrumentation的性能影响是什么
client libraries和语言之间的性能可能会有所不同。 对于Java,基准测试表明,根据争用,使用Java客户端增加计数器/表将花费12-17ns。 除了对延迟最关键的代码之外,所有其他代码都可以忽略不计。
Troubleshooting¶
Prometheus 1.x服务器需要很长时间才能启动,并且会向日志中发送有关崩溃恢复的大量信息的垃圾邮件。
您正在遭受不干净的关机。 SIGTERM之后,Prometheus必须彻底关闭,对于频繁使用的服务器可能要花一些时间。 如果服务器崩溃或被严重杀死(例如,在等待Prometheus关闭时,内核杀死了OOM或您的运行级别系统不耐烦),则必须执行崩溃恢复,在正常情况下,恢复应该少于一分钟,但是可以 在某些情况下要花很长时间。 有关详细信息,请参见crash recovery。
Prometheus 1.x服务器OOM(out of memory)
有关可用内存量,请参阅有关配置Prometheus的memory usage部分
Prometheus 1.x服务器报告处于“紧急模式(rushed mode)”或“存储需要节流(storage needs throttling)”。
存储设备高负载。 阅读有关configuring the local storage获取更好的性能。
Implementation¶
为什么所有样本值都是64位浮点数?我想要整数。
我们将自己限制在64位浮点数上,以简化设计。 IEEE 754双精度二进制浮点格式支持最大精度为253的整数精度。仅当需要大于253但小于263的整数精度时,支持本机64位整数(仅)才有帮助。原则上,支持不同的样本值类型 (包括某种大整数,甚至支持64位以上)都可以实现,但目前并不是优先考虑的事情。 计数器即使每秒增加一百万次,也只会在超过285年后才会出现精度问题。
为什么Prometheus服务器组件不支持TLS或身份验证? 我可以添加那些吗?
尽管TLS和身份验证是经常需要的功能,但我们故意没有在Prometheus的任何服务器端组件中实现它们。两者都有很多不同的选项和参数(仅TLS有10多个选项),我们决定集中精力构建最佳的监视系统,而不是在每个服务器组件中都支持完全通用的TLS和身份验证解决方案。
如果您需要TLS或身份验证,我们建议在Prometheus前面放置一个反向代理。例如,参见使用Nginx将基本身份验证添加到Prometheus。这仅适用于入站连接
-
Instrumentation中文为插桩,一般指的是获取计算机软件或者硬件状态的数据的技术。常常用于程序监控和追踪 ↩