📅 2021-08-01
Prometheus是一个基于时序数据库的开源监控系统。
Prometheus在2016年加入了CNCF(云原生计算基金会),成为继Kubernetes之后CNCF的第二个托管项目。
Prometheus HTTP API
#
Prometheus的监控指标数据metrics存储在其内置的时序数据库中,即其本身也是一个时序数据库,但目前Prometheus还没有提供直接管理数据的功能,默认情况下只能通过Promtheus的HTTP API
查看数据。文档https://prometheus.io/docs/prometheus/latest/querying/api/中是对Prometheus查询API的介绍。其实Prometheus的WebUI使用的就是它的HTTP API,因此在运维开发中如果需要使用Prometheus的HTTP API的话,可以先在Prometheus的WebUI中写好PromQL执行查询,然后借助浏览器的开发者工具查看具体的HTTP API的写法。
...📅 2018-09-05
Promtheus的时序数据库在存储了大量的数据后,每次重启Prometheus进程的时间会越来越慢。
而在日常运维工作中会经常调整Prometheus的配置信息,实际上Prometheus提供了在运行时热加载配置信息的功能。
Prometheus配置的热加载
#
Prometheus配置信息的热加载有两种方式:
...📅 2018-02-07
Prometheus提供了一个blackbox_exporter可以实现网络监控,支持http、dns、tcp、icmp等监控。
blackbox_exporter的配置
#
blackbox_exporter
以下面的命令运行:
1blackbox_exporter --web.listen-address=:9115 --config.file=blackbox.yml
其中9115是这个exporter的http端点的监听端口,blackbox.yml是它的配置文件,需要在其中使用blackbox_exporter
的http、dns、tcp、icmp等prober定制配置出各种监测模块(module)。关于blackbox_exporter
的配置具体参考Blackbox exporter configuration和Blackbox exporter configuration Exmaple。下面的例子是一个最基本的配置:
...📅 2018-01-11
使用Prometheus监控Redis,推荐使用https://github.com/oliver006/redis_exporter这个exporter。
目前我们主要使用的是redis的主从复制搭配Sentinel实现的高可用方案。部署形式上有两种:一种形式是使用ansible部署在物理机器上,同样使用ansible在相同的机器上部署redis_exporter;另外一种形式是redis和sentinel以StatefulSet的形式跑在Kubernetes上,redis_exporter以sidecar容器的形式和redis容器在相同的Pod里。
...📅 2018-01-04
之前在《Prometheus监控实践:Kubernetes集群监控》一本中总结了我们目前基于Prometheus对Kubernetes集群的监控,除了监控Kubernetes集群本身的关键指标之外,也对部署在Kubernetes集群上应用的状态做了监控。
对于Kubernetes集群上Pod, DaemonSet, Deployment, Job, CronJob等各种资源对象,我们通过kube-state-metrics作为Prometheus的exporter完成了对这些Kubernetes资源对象的监控。而为了使监控深入到应用的内部,就需要应用自身暴露作为Exporter暴露监控指标,这就和应用的开发语言和技术框架紧密相关了。
我们目前部署在Kubernetes上的微服务主要是由Go和Java两种语言开发的,本篇将总结一下目前我们使用Prometheus对Java应用的监控实践。
...📅 2017-12-29
本文将总结一下我们目前使用Prometheus对Kubernetes集群监控的实践。
我们选择Prometheus作为监控系统主要在以下各层面实现监控:
- 基础设施层:监控各个主机服务器资源(包括Kubernetes的Node和非Kubernetes的Node),如CPU,内存,网络吞吐和带宽占用,磁盘I/O和磁盘使用等指标。
- 中间件层:监控独立部署于Kubernetes集群之外的中间件,例如:MySQL、Redis、RabbitMQ、ElasticSearch、Nginx等。
- Kubernetes集群:监控Kubernetes集群本身的关键指标
- Kubernetes集群上部署的应用:监控部署在Kubernetes集群上的应用
1.基础设施层和中间件层的监控
#
其中基础设施层监控指标的拉取肯定是来在Prometheus的node_exporter
,因为我们要监控的服务器节点既包含Kubernetes节点又包含其他部署独立中间件的节点,
所以我们并没有将node_exporter
以daemonset的形式部署到k8s上,而是使用ansible将node_exporter
以二进制的形式部署到所有要监控的服务器上。
而负责从node_exporter
拉取指标的Prometheus也是用ansible独立部署在Kubernetes集群外部的。Prometheus的配置文件prometheus.yml使用ansible的j2模板生成。
...📅 2017-11-17
Prometheus是一个基于时序数据的开源监控系统。
被Prometheus监控的服务需要公开一个Prometheus的endpoint,这个endpoint通过http接口暴露了度量(metrics)的列表和当前的值。很多服务都内置了Prometheus的endpoint直接暴露metrics,另外一些服务需要再为它们部署一个sidecar进程,通过side car暴露metrics。
这个sidecar或直接暴露metrics的服务自带的endpoint,就是Prometheus架构中的Exporter,Prometheus从Exporter中拉去监控数据。
...📅 2017-11-16
RabbitMQ的Monitoring文档中介绍了各种监控RabbitMQ的方式。
其中推荐了第三方的Prometheus Plugin,
这是一个第三方实现RabbitMQ的管理插件,可以作为Prometheus的RabbitMQ Exporter。
安装RabbitMQ Prometheus Plugin
#
这里RabbitMQ的版本为3.6.14
,Erlang版本为Erlang R16B03-1
,从Release for latest RabbitMQ 3.6.x versions这个链接中下载以下插件:
...📅 2017-11-10
在Ceph Luminous之前的版本,可以使用第三方的Prometheus exporterceph_exporter。
Ceph Luminous 12.2.1的mgr中自带了Prometheus插件,内置了 Prometheus ceph exporter,可以使用Ceph mgr内置的exporter作为Prometheus的target。
...📅 2017-08-01
Prometheus官方提供了mysqld_exporter,我们直接使用即可。
在每个要监控的MySQL中创建监控用户并授予权限。
1CREATE USER 'exporter'@'127.0.0.1' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
2GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'127.0.0.1';
3flush privileges;
mysqld_exporter也是用Go语言写的,安装十分简单,我们的环境MySQL有3个节点,使用ansible部署mysqld_exporter。
这里贴一下其中一个MySQL节点上生成的systemd的单元文件:
...