prometheus + cadvisor + grafana 监控容器和服务器

prometheus + cadvisor + grafana 监控容器和服务器

  • 前言
  • 一 、192.168.199.201 操作
    • 1.1、下载镜像
    • 1.2 、启动一个prometheus docker实例
    • 1.3、 启动一个node-exporter docker实例,被监控的机器需要安装
    • 1.4、 启动一个cadvisor docker实例 ,监控容器
    • 1.5、在 promethus 上添加要监控的节点
    • 1.6、启动一个grafana docker实例
  • 二 、192.168.199.202操作
    • 2.1、下载镜像
    • 2.2、 启动一个node-exporter docker实例
    • 2.3、 安装mysql
    • 2.4、 启动一个cadvisor docker实例
  • 三 、192.168.199.203操作
    • 3.1、下载镜像
    • 3.2、 启动一个node-exporter docker实例
    • 3.3、 启动一个nginx docker实例
    • 3.4、 启动一个redis docker实例
    • 3.4、 启动一个cadvisor docker实例
  • 四、192.168.199.201上配置监控信息
  • 五、配置grafana可视化监控
    • 5.1 添加prometheus数据源
    • 5.2 添监控加模板(如果和我一样不熟)

前言

node-exporter : 用来监控运算节点上的宿主机的资源信息,需要部署到所有运算节点
cadvisor :用于监控正在运行的容器资源使用和性能信息 ,需要部署到所有运算节点
github上还有各种各种的监控特定服务,比如kafka等的exporter,但是这个有点麻烦


机器信息

192.168.199.201   prometheus + node-exporter + cadvisor + grafana 
192.168.199.202   node-exporter + mysql + cadvisor 
192.168.199.203   node-exporter + nginx + redis  + cadvisor 

PS:因为是实验,所有容器都是简单安装

一 、192.168.199.201 操作

1.1、下载镜像

docker pull prom/prometheus
docker pull prom/node-exporter
docker pull google/cadvisor
docker pull grafana/grafana

1.2 、启动一个prometheus docker实例

新建目录

mkdir -p /docker/prometheus
cd /docker/prometheus/

编辑配置文件

vim prometheus.yml
global:
  scrape_interval:     60s  # 间隔多少秒采集一次数据
  evaluation_interval: 60s  # 间隔多少秒做一次告警检测
 
scrape_configs:             # 指定prometheus要监控的目标,每个监控目标是一个job,最简单的static_config,即静态地指定每一个目标。
  - job_name: prometheus    # job_name: 定义监控节点:
    static_configs:
      - targets: ['localhost:19090'] # 可以有很多,用逗号隔开
        labels:
          instance: prometheus      # 实例

启动prometheus

docker run  -d  -p 19090:9090 --name my-prometheus \
-v /docker/prometheus/prometheus.yml:/opt/prometheus/prometheus.yml  prom/prometheus

查看端口,ss比netstat快

[root@node1 prometheus]# ss -naltp | grep 19090
LISTEN     0      128          *:19090                    *:*                   users:(("docker-proxy",pid=5805,fd=4))
LISTEN     0      128       [::]:19090                 [::]:*                   users:(("docker-proxy",pid=5809,fd=4))

查看默认的监控页面

http://192.168.199.201:19090/targets

prometheus + cadvisor + grafana 监控容器和服务器_第1张图片
查看监控的指标

http://192.168.199.201:19090/metrics

prometheus + cadvisor + grafana 监控容器和服务器_第2张图片

1.3、 启动一个node-exporter docker实例,被监控的机器需要安装

启动实例

docker run -d -p 19100:9100 --name my-node-exporter \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /:/rootfs:ro \
--net=bridge  prom/node-exporter

查看端口

[root@node1 ~]# ss -naltp | grep 19100
LISTEN     0      128          *:19100                    *:*                   users:(("docker-proxy",pid=3191,fd=4))
LISTEN     0      128       [::]:19100                 [::]:*                   users:(("docker-proxy",pid=3195,fd=4))

访问url,这个数据和上面的一样,此处略过

http://192.168.199.201:19100/metrics

1.4、 启动一个cadvisor docker实例 ,监控容器

docker run -d -p 18080:8080 --name my-cadvisor \
-v /:/rootfs:ro \
-v /var/run:/var/run:ro \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
-detach=true google/cadvisor

查看端口

ss -naltp | grep 18080

查看cadvisor原始监控页面(这个页面有点慢)

http://192.168.199.201:18080/containers/

prometheus + cadvisor + grafana 监控容器和服务器_第3张图片

1.5、在 promethus 上添加要监控的节点

cd /docker/prometheus/
vim prometheus.yml
#添加如下
  - job_name: linux
    static_configs:
      - targets: ['192.168.199.201:19100']
        labels:
          instance: system-instance
  - job_name: containers
    static_configs:
      - targets: ['192.168.199.202:18080','192.168.199.203:18080']
        labels:
          instance: containers-instance

重启docker-promethus

 docker restart my-prometheus

再次查看监控,发现多了新加的监控项
prometheus + cadvisor + grafana 监控容器和服务器_第4张图片

1.6、启动一个grafana docker实例

新建数据目录

mkdir -p /docker/grafana-storage
chmod 777 -R /docker/grafana-storage

启动grafana

docker run -d -p 13000:3000 --name my-grafana \
-v /docker/grafana-storage:/var/lib/grafana  grafana/grafana

查看端口

ss -naltp | grep 13000

访问url,默认的用户名和密码都是admin:

http://192.168.199.201:13000/

二 、192.168.199.202操作

2.1、下载镜像

docker pull prom/node-exporter
docker pull mysql:5.7
docker pull google/cadvisor

2.2、 启动一个node-exporter docker实例

参考1.3

2.3、 安装mysql

启动实例

docker run -d  -p 13306:3306 --name my-mysql -e MYSQL_ROOT_PASSWORD=Root@135!  mysql:5.7

查看结果

docker ps | grep my-mysql

2.4、 启动一个cadvisor docker实例

参考1.4

三 、192.168.199.203操作

3.1、下载镜像

docker pull prom/node-exporter   
docker pull redis:5.0-alpine
docker pull nginx
docker pull google/cadvisor

3.2、 启动一个node-exporter docker实例

参考1.3

3.3、 启动一个nginx docker实例

docker run -d -p 18000:80  --name my-nginx  nginx
netstat -anpt | grep 18000

3.4、 启动一个redis docker实例

docker run -d -p 16379:6379 --name my-redis  redis:5.0-alpine
netstat -anpt | grep 16379

3.4、 启动一个cadvisor docker实例

参考1.4

四、192.168.199.201上配置监控信息

修改后的配置文件:

[root@node1 prometheus]# cd /docker/prometheus
[root@node1 prometheus]# cat prometheus.yml
global:
  scrape_interval:     30s  # 间隔多少秒采集一次数据
  evaluation_interval: 30s  # 间隔多少秒做一次告警检测

scrape_configs:             # 指定prometheus要监控的目标,每个监控目标是一个job,最简单的static_config,即静态地指定每一个目标。
  - job_name: prometheus    # job_name: 定义监控节点:
    static_configs:
      - targets: ['localhost:9090'] # 可以有很多,用逗号隔开
        labels:
          instance: prometheus      # 实例

  - job_name: linux
    static_configs:
      - targets: ['192.168.199.201:19100', '192.168.199.202:19100','192.168.199.203:19100']
        labels:
          instance: system-instance

  - job_name: containers
    static_configs:
      - targets: ['192.168.199.201:18080','192.168.199.202:18080','192.168.199.203:18080']
        labels:
          instance: containers-instance

重启docker-promethus

 docker restart my-prometheus

查看prometheus监控,最终效果如下:
prometheus + cadvisor + grafana 监控容器和服务器_第5张图片
可以看到三台机器上面的node-exporter && cadvisor都已经显示了,但是数据不直观,下面使用grafana改善

五、配置grafana可视化监控

5.1 添加prometheus数据源

prometheus + cadvisor + grafana 监控容器和服务器_第6张图片
prometheus + cadvisor + grafana 监控容器和服务器_第7张图片

prometheus + cadvisor + grafana 监控容器和服务器_第8张图片
点击上图最下面的Save & Test,绿色为ok
查看已经保存完毕的数据源
prometheus + cadvisor + grafana 监控容器和服务器_第9张图片

5.2 添监控加模板(如果和我一样不熟)

grafana中模板的地址:

https://grafana.com/grafana/dashboards/?dataSource=prometheus

prometheus + cadvisor + grafana 监控容器和服务器_第10张图片

导入模板
prometheus + cadvisor + grafana 监控容器和服务器_第11张图片
prometheus + cadvisor + grafana 监控容器和服务器_第12张图片
效果如下:(这个是17598模板)

prometheus + cadvisor + grafana 监控容器和服务器_第13张图片

PS:有的模板数据是NA,这个要学习怎么修改指标(metrics)了


你可能感兴趣的:(监控,docker,docker,容器,运维)