使用Prometheus+Grafana监控服务器以及容器

背景介绍

通过DevOps流水线可以快速完成应用的编译,测试,打包,部署。但是应用部署后,实时了解服务器的性能情况也是非常重要的,所以我们需要监控服务器 ,容器,集群的各项性能指标,确保应用处于最佳运行环境。避免服务出现down机等各类问题。

通过Prometheus+Grafana可以监控,包括Windows,Linux,容器,Kubernetes集群等各类资源,这里我们将介绍Linux服务器监控,以及容器监控。整个部署过程,包括四个组件:Prometheus Server、Node Exporter、cAdvrisor、Grafana。

组建名称 说明
Prometheus Server Prometheus服务的主服务器
Node Exporter 收集Linux Host硬件和操作系统的信息
cAdvrisor 负责收集Host上运行的容器信息
Grafana 用来展示Prometheus监控操作界面(给我们提供一个友好的web界面)
Windows Exporter 收集Windows Host硬件和操作系统的信息

01. 在Jenkins服务器上安装Node Exporter

通过在Jenkins服务器上安装Node Exporter,可以收集Jenkins服务器的系统运行情况,并通过Grafana监控服务器性能以及问题。

执行一下命令通过容器部署node-exporter

  1. docker run -d -p 9100:9100 \
  2. -v "/proc:/host/proc" \
  3. -v "/sys:/host/sys" \
  4. -v "/:/rootfs" \
  5. prom/node-exporter \
  6. --path.procfs /host/proc \
  7. --path.sysfs /host/sys \
  8. --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

02. 在Dev服务器上安装Node Exporter

在Dev服务器上安装Node Exporter,可以收集Jenkins服务器的系统运行情况,并通过Grafana监控服务器性能以及问题。

执行一下命令通过容器部署node-exporter

  1. docker run -d -p 9100:9100 \
  2. -v "/proc:/host/proc" \
  3. -v "/sys:/host/sys" \
  4. -v "/:/rootfs" \
  5. prom/node-exporter \
  6. --path.procfs /host/proc \
  7. --path.sysfs /host/sys \
  8. --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

执行一下命令通过容器部署Cadvisor

  1. docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8081:8080 --detach=true --name=cadvisor google/cadvisor:latest

03. 在Jenkins服务器上安装Promethues主服务器

使用容器的方式启动prometheus服务。

  1. docker run -d -p 9090:9090 --name prometheus prom/prometheus

复制Prometheus容器中的主配置文件到宿主机本地

  1. sudo docker cp prometheus:/etc/prometheus/prometheus.yml /root/

删除临时创建的Prometheus容器

  1. docker rm -f prometheus

打开复制出来的配置文件,直接跳转到配置文件的最后一行

  1. sudo vi /root/prometheus.yml

修改Tagget服务器, 使用!wq保存更改

  1. targets: ['jenkins-server:9100','dev-server:9100','dev-server:8081']

启动prometheus服务,并使用刚刚修改的配置文件

  1. docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus prom/prometheus

04. 在Jenkins服务器上安装Grafana服务

Grafana可以帮助我们可视化服务器的相关指标。

  1. mkdir grafana-storage
  2. chmod 777 -R grafana-storage/
  3. docker run -d -p 3000:3000 --name grafana -v /home/ghuser/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=grafana" grafana/grafana

05. 查看Prometheus监控目标的情况

打开http://jenkins-server:9090, 点击Status | targets 如下图所示:

说明:UP表明服务器正常,Down表示服务器没有监控到

使用Prometheus+Grafana监控服务器以及容器 - 图1

06. 使用Grafana监控服务器性能

打开http://jenkins-server:3000, 并登陆Grafana,用户名:admin,密码:grafana

添加数据源,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图2

选择Prometheus,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图3

添加Prometheus的地址,打开http://jenkins-server:9090,并点击保存。如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图4

打开Grafana官网,https://grafana.com/grafana/dashboards/?dataSource=prometheus,下载监控模版,并导入:

使用Prometheus+Grafana监控服务器以及容器 - 图5

点击Download Json,下载监控模版,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图6

按下图操作方式,导入监控模版,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图7

点击Upload Json File,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图8

点击Import,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图9

监控主机情况,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图10

使用Prometheus+Grafana监控服务器以及容器 - 图11

切换监控主机,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图12

07. 使用Grafana监控容器运行情况

打开Grafana官网,https://grafana.com/grafana/dashboards/?dataSource=prometheus,下载监控模版,并导入:

使用Prometheus+Grafana监控服务器以及容器 - 图13

点击Download Json,下载监控模版,如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图14

按照以上同样的方式完成容器监控模版的导入,导入后如下图所示:

使用Prometheus+Grafana监控服务器以及容器 - 图15

使用Prometheus+Grafana监控服务器以及容器 - 图16