Prometheus+Grafana监控容器及主机(1)

从零构建监控体系

Posted by Derrick on March 22, 2022

Prometheus+Grafana监控Docker容器及主机

什么是Prometheus?

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。 Prometheus目前在开源社区相当活跃。 PrometheusHeapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。

Prometheus的特点

  • 多维度数据模型。
  • 灵活的查询语言。
  • 不依赖分布式存储,单个服务器节点是自主的。
  • 通过基于HTTP的pull方式采集时序数据。
  • 可以通过中间网关进行时序列数据推送。
  • 通过服务发现或者静态配置来发现目标服务对象。
  • 支持多种多样的图表和界面展示,比如Grafana等。

安装准备

一. 监控主机

1.1准备两台linux操作系统,本文均使用CentOS7版本。

HostName IP
master 192.168.124.4
node1 192.168.124.5

2.1Docker部署Prometheus(master机器)

docker run -d \
--name=prometheus \
-p 9090:9090 \
-v /opt/prometheus/conf:/etc/prometheus/ \
seven7num/prometheus


2.2编辑prometheus.yml配置文件

.
.
.
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']
 #添加master及node节点添加
  - job_name: 'master'
    static_configs:
    - targets: ['192.168.124.4:9100']
  
  - job_name: 'node'
    static_configs:
    - targets: ['192.168.124.5:9100']

.
.
.


2.3访问master的9090端口

img
3.1部署node_exporter(master和node)

[root@prometheus-4 ~]# tar -xf node_exporter-1.0.1.linux-amd64.tar.gz
[root@prometheus-4 ~]# cp node_exporter-1.0.1.linux-amd64/node_exporter /usr/local/bin/node_exporter
## 编辑启动脚本
[root@prometheus-4 ~]# vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node_export
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

[root@prometheus-4 ~]# systemctl start node_exporter

## 监题9100端口
[root@prometheus-server ~]# netstat -anlptu|grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      5216/node_exporter  


3.2访问master及node端的9100端口暴露出的监控指标 img

img

3.4再次访问master的9090端口 img

4.Docker部署grafana监控服务

docker run -d \
-p 3000:3000 \
--name=grafana \
-v /opt/grafana-storage:/var/lib/grafana \
seven7num/grafana


4.1访问master的3000端口,默认账号密码都为admin img
4.2点击设置,将URL改为http://192.168.124.4:9090并保存 img
4.3点击Import导入默认模板(代码为9276),并且保存 img

img

img




二. 监控主机容器

cAdvisor(Container Advisor)用于采集正在运行的容器资源使用和性能信息。

cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况内存使用情况网络吞吐量文件系统使用情况.

1.1Docker部署Cadvisor

docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest


1.2访问node节点的8080端口 img

img

1.3同样cadvisor也会有监控指标,访问http://192.168.124.5:8080/metrics img


2.1修改prometheus.yml,在末尾添加容器信息

.
.
.
  - job_name: 'docker'
    static_configs:
    - targets: ['192.168.124.5:8080']
.
.
.

3.1再次访问master的9090端口,可以看到容器监控指标 img


3.2登录Grafana,导入Docker监模板,id:193 img

img

img

img