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)以下是容器资源监控:
本文来自博客园,作者:羊孩,转载请注明原文链接:https://www.cnblogs.com/sheepboy/p/17242916.html