实践笔记(二) Docker 之 Prometheus

3,519 阅读2分钟

介绍

随着容器技术的迅速发展,Kubernetes 已然成为大家追捧的容器集群管理系统。Prometheus 作为CNCF中的重要一员,其活跃度仅次于 Kubernetes,现已广泛用于 Kubernetes 集群的监控系统中。

Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。

更详细的介绍和配置,请参考:Prometheus官方文档IBM Prometheus 入门与实践

安装

镜像 Tag:

Prometheus Server: prom/prometheus:latest 
Alerting Server: prom/alertmanager:latest
  • docker pull
  • docker run

Docker 真的太香了

参考:Prometheus INSTALLATION

扩展

监控数据持久化

docker run -d  -p 9090:9090 -u root \
	-v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
	-v /home/prometheus/data:/etc/prometheus/data \
	prom/prometheus:latest \
	--storage.tsdb.path=/etc/prometheus/data \
	--storage.tsdb.retention.time=30d \
	--config.file=/etc/prometheus/prometheus.yml
  • 通过 storage.tsdb.retention.time 将数据持久化时间设置为30天(默认15d)

  • 通过 storage.tsdb.path 将数据持久化到 /etc/prometheus/data (容器内部)中

  • 将容器内部的持久化数据挂载至宿主机的目录 (/home/prometheus/data),这才是真的持久化,因为是容器启动~~;那么设置持久化时间还有意义吗?

  • 通过 -u 指定容器的用户,以至于容器有权限操作宿主机的挂载目录 (/home/prometheus/data ),不指定用户会启动报错(Permission denied)。

此处偷懒采用了 root,生产环境不建议使用~

至于 K8s 上的普罗米修斯数据持久化,配置是与 Docker 一致的 (I guess,懒得写 yaml 文件~~)……

参考链接:

  1. Prometheus官方文档
  2. Prometheus中文文档
  3. IBM Prometheus 入门与实践