Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,由 SoundCloud 公司开发。
Prometheus 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供 HTTP 接口就可以接入监控系统,不需要任何 SDK 或者其他的集成过程。这样做非常适合虚拟化环境比如 VM 或者 Docker 。
Prometheus 应该是为数不多的适合 Docker、Mesos、Kubernetes 环境的监控系统之一。
准备工作:
主机名 | 操作系统 | IP地址 |
---|---|---|
Docker | CentOS 7.7 | 192.168.1.1 |
1)安装需要的软件包
[root@Docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
2)设置 Docker 的 yum 源
[root@Docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Docker ~]# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3)安装 Docker
yum list docker-ce --showduplicates | sort -r
命令来查看 Docker 的所有版本。[root@Docker ~]# yum -y install docker-ce-17.12.1.ce #安装Docker
4)启动 Docker 并设置开启自启
[root@Docker ~]# systemctl start docker
[root@Docker ~]# systemctl enable docker
5)验证 Docker 是否安装成功
[root@Docker ~]# docker version #查看Docker版本
6)配置 Docker 加速器
[root@Docker ~]# cat <<END > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
END
[root@Docker ~]# systemctl daemon-reload #重新加载systemd配置
[root@Docker ~]# systemctl restart docker #重启Docker
[root@Docker ~]# docker pull prom/prometheus
[root@Docker ~]# docker run -itd --name=prometheus --restart=always -p 9090:9090 prom/prometheus
容器创建成功后,即可通过浏览器访问 http://192.168.1.1:9090
来进行验证
[root@Docker ~]# docker pull grafana/grafana
[root@Docker ~]# docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v $PWD/grafana-storage:/var/lib/grafana \
grafana/grafana
容器创建成功后,即可通过浏览器访问 http://192.168.1.1:3000
来进行验证
[root@Docker ~]# docker pull prom/node-exporter
[root@Docker ~]# docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter
容器创建成功后,即可通过浏览器访问 http://192.168.1.1:9100/metrics
来查看监控收集的数据
[root@Docker ~]# docker cp prometheus:/etc/prometheus/prometheus.yml $PWD
[root@Docker ~]# vim prometheus.yml
在Prometheus配置文件按以下内容修改:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['192.168.1.1:9100'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: localhost
[root@Docker ~]# docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml
[root@Docker ~]# docker restart prometheus
使用浏览器访问:http://192.168.1.1:3000
来将 Node 节点监控