docker搭建普罗米修斯监控体系(prometheus)

普罗米修斯介绍:prometheus

prometheus:普罗米修斯适用于监控的对象有虚拟机、数据库、docker容器、队列等,通过prometheus.yml配置文件将主节点premetheus与应用节点关联起来。

普罗米修斯监控原理

主节点负责拉取并汇总各应用节点监控数据,各应用节点负责监控数据,grafana为普罗米修斯提供丰富的图形化界面展示,两者结合使用

           1)主节点服务:prometheus,不负责监控,只负责拉取并保存监控数据,提供监控数据查询

           2)各应用节点服务:想要什么监控就安装对应的监控节点,即:各类exporter

           3)grafana:为普罗米修斯提供监控页面

普罗米修斯监控拓扑图

 环境准备

 服务说明

其他的访问地址

1)grafana仪表盘搜索地址:https://grafana.com/grafana/dashboards/

      以下是推荐使用的仪表盘ID:

 

2)若不使用docker搭建普罗米修斯及应用节点,可以下载二进制进行搭建:https://prometheus.io/download/

普罗米修斯主机节点安装

a.下载普罗米修斯镜像:docker pull  prom/prometheus

b.创建普罗米修斯配置文件挂载目录及新建配置文件:

         mkdir  /var/prometheus 

        进入挂载目录 cd   /var/prometheus  并新建配置文件: touch  prometheus.yml

       备注:必须新建配置文件,否则会出现目录挂载失败,如以下提示:

 docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/var/prometheus" to rootfs at "/etc/prometheus/prometheus.yml": mount /var/prometheus:/etc/prometheus/prometheus.yml (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type   

c.对挂载目录进行授权:chmod  -R   777  /var/prometheus

d.创建并运行普罗米修斯容器: 

docker run --name=prometheus  -d -p 9090:9090  --restart=always  -v  /var/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

e.检查普罗米修斯是否搭建成功:http://主节点IP:9090 就可以访问普罗米修斯主界面,  即如下图:

各应用节点exporter安装

a.在应用节点机器192.168.0.142上安装node-exporter,监控Linux的资源使用情况:

b.搜索node-exporter镜像:docker  search  prom/node-exporter

c.下载node-exporter镜像:docker pull prom/node-exporter

d.创建并运行容器:docker run -d --name node-exporter --restart=always -p 9100:9100 prom/node-exporter

e.检查node-exporter是否搭建好:访问http://应用节点IP:9090/metrics 可以查看到监控数据,如下图:

主节点的prometheus.yml文件将主节点与应用节点关联起来(prometheus.yml详解)

注意:prometheus.yml配置文件内容及注释都建议不要使用中文,否则因编码格式不一致导致普罗米修斯重启失败,以下添加中文注释只是方便理解,复制到prometheus.yml时记得将中文注释删除!

a. 由普罗米修斯搭建步骤可知,找到普罗米修斯配置文件并编辑: vi   /var/prometheus/prometheus.yml

global:                                       #全局设置
scrape_interval: 15s                 #每15秒拉取一次应用节点监控数据
evaluation_interval: 15s           #执行 rules 的时间间隔

rule_files:
- rules/*.rules

scrape_configs:                           #应用节点配置
- job_name: 'prometheus'            #自定义节点名称,默认为普罗米修斯
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']

- job_name: 'node_exporter'         #自定义节点名称,监控Linux系统资源使用情况
scrape_interval: 10s
static_configs:
- targets: ['192.168.0.142:9100']   #配置应用节点IP和端口号,如果监控多个节点,用逗号隔开

b.保存后重启普罗米修斯容器:docker   restart  prometheus

       注意:每次修改prometheus.yml配置文件时,都需要重启普罗米修斯才能使配置文件生效

c.检查普罗米修斯与应用节点是否连接起来:访问普罗米修斯页面:prometheus所在IP:9090  ,选择:Status>Targets,即可看到已配置的应用节点

安装及配置Grafana监控界面

      备注:通常grafana与普罗米修斯安装在同一台机器上

1)安装grafana

a.下载grafana镜像:docker pull grafana/grafana

b.创建并运行grafana容器:docker run -d --name=grafana -p 3000:3000 grafana/grafana

c.检查grafana是否安装成功:访问grafana所在的IP:3000,  用户名密码默认为:admin/admin    如下图:

2)grafana的数据源配置

    点击设置图标>Data sources>进入add data source页面,选择prometheus数据>添加数据源信息,如下图:

3)grafana的仪表盘配置

a.进入grafana官方仪表盘搜索地址:https://grafana.com/grafana/dashboards

b.搜索相应exporter的仪表盘,查看仪表盘的ID

 

 

c.grafana导入exporter仪表盘

       鼠标移到主页图标>Import>输入仪表盘ID,点击load按钮>自定义仪表盘名和选择数据源Prometheus,导入即可查看仪表盘

 

 e.仪表盘导入后,点击具体的仪表盘可看到监控信息,以下是Linux系统的监控信息:

4)grafana仪表盘的增删改查维护

           鼠标移动都主页图标>Browse>展开general节点

a.查看已添加的仪表盘:如上图展开general节点,显示所有已添加的仪表盘;在上方搜索框输入仪表盘关键字,可模糊搜索已添加的仪表盘

b.删除仪表盘:如上图展开general节点,选中仪表盘,点击删除按钮

b.增加仪表盘:导入仪表盘Import,参考上面仪表盘导入步骤

c.修改仪表盘名称:进入具体的仪表盘页面>点击页面右上方的设置图标>修改仪表盘名称,点击保存即可

以上是监控单个应用节点(Linux)的搭建,若监控多个应用节点往下看

 注意:监控多个应用节点时,要确保主节点与应用节点的时间同步,否则可能会出现grafana监控仪表没有显示监控节点内容

           grafana仪表盘没有显示监控节点的排查思路:检查应用节点是否启动>检查主节点配置文件内容,并重启主节点>检查主节点与应用节点的时间是否同步    

以下是搭建监控Linux、Windows系统资源使用情况,监控本地及远程MySQL数据库,监控虚拟机的docker容器资源使用情况。

1)监控主节点192.168.0.155(Linux)的资源使用情况,在主节点安装node-exporter 步骤参照以上应用节点node-exporter的安装过程

      备注:Linux监控仪表盘推荐使用ID: 11074

2)监控应用节点192.168.0.28(windows)的资源使用情况,安装windows_exporter如下:

 a.下载windows_exporter,先输入地址,然后选择要下载的版本 :https://github.com/prometheus-community/windows_exporter/releases/  ,如下图:

 b.下载完后,双击运行,生成windows_exporter服务,开机自动启动,默认端口号为:9182

c.访问应用节点的metrics接口,查看是否安装成功(负责采集监控数据):http://192.168.0.28:9182/metrics

备注:windows_exporter较好用的仪表盘ID:10467

3)应用节点安装mysqld-exporter监控本地及远程数据库

3-1)在应用节点192.168.0.142监控本地MySQL数控库,映射9104端口,如下:

下载mysqld-exporter镜像:docker  pull   prom/mysqld-exporter

创建并运行容器:docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="数据库用户名:密码@(mysql所在IP:3306)/业务库名"  prom/mysqld-exporter    ,如下:

docker run -d --name mysqld-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:123@(192.168.0.142:3306)/mysql"  prom/mysqld-exporter

3-2)在应用节点192.168.0.142监控远程MySQL数据库,映射9105端口远程监控120.24.184.84的MySQL数据库,如下:

docker容器映射9105端口:

docker run -d --name mysqld-exporter -p 9105:9104 -e DATA_SOURCE_NAME="root:123@(120.24.184.84:3306)/kart-wenfuyi"  prom/mysqld-exporter

4)应用节点安装google/cadvisor监控容器资源使用

以下是在应用节点:192.168.0.142上进行安装

a.下载google/cadvisor镜像: docker  pull google/cadvisor

b.创建并运行容器:

docker run -d --name cadvisor -p 8088:8080 -v /:/rootfs:ro -v /var/run/:/var/run/:rw -v /sys/:/sys/:ro -v /var/lib/docker/:/var/lib/docker/:ro -v /dev/disk/:/dev/disk/:ro google/cadvisor

c.检查是否安装成功:应用节点所在ip:端口号/metrics,如下图:

 或者直接输入:应用节点IP:端口号,可以直接访问容器页面

 

备注:cadvisor容器监控仪表盘ID推荐使用:10619

d.  主节点prometheus.yml将已安装的各应用节点配置后,并重启主节点prometheus

注意:prometheus.yml配置文件内容及注释都建议不要加中文,否则因编码格式不一致导致普罗米修斯重启失败

 以下是这些应用节点安装并配置完成后,监控显示如下

1) 以下是监控Linux系统资源:

2)以下是监控Windows系统资源,如下图:

 3) 以下是MySQL数据库监控:

 4)以下是容器资源监控:

posted @ 2023-03-22 16:05  羊孩  阅读(6275)  评论(0编辑  收藏  举报
返回顶端