Docker(五)

本文详细介绍了如何搭建Prometheus监控系统,包括服务端和客户端的安装,静态与动态配置,以及如何使用alertManager进行邮件报警。同时,文章还提到了grafana的安装和配置,用于更直观的图形化展示监控数据。
摘要由CSDN通过智能技术生成

1. Prometheus的架构介绍

zabbix 监控传统业务,模板可以复用

Prometheus 擅长监控容器业务

Prometheus架构图:

在这里插入图片描述
export采集器类似于普罗米修斯客户端,帮忙取值,每个采集器都有自己独特的功能,多个服务需要有多个采集器,node-exporter主要监控宿主机

cadvisor(谷歌公司开发的,官方没有提供)类似于export采集器,自动的把所有的容器都给监控上。属于第三方的exporter

prometheus可以使用自己内置的tsdb时间序列数据库,也可以使用外置的数据库。

采集器获取数据,在prometheus.yml配置监控目标与采集器交换,收集数据把数据集中起来处理,在根据rule.yml文件中的规则进行告警,告警出图一般用gafana出图。

2. Prometheus安装部署及运行

10.0.0.11 docker01 Prometheus客户端
10.0.0.12 docker02 Prometheus客户端
10.0.0.13 docker03 Prometheus服务端

2.1 Prometheus服务端安装

prometheus服务端二进制包安装

官网下载Prometheus的二进制包:https://prometheus.io/download/

在这里插入图片描述
开始进行安装:

# (1) 将下载好的Prometheus二进制包上传到本地,然后进行解压
[root@docker03 opt]# tar xf prometheus-2.23.0.linux-amd64.tar.gz 
[root@docker03 opt]# cd prometheus-2.23.0.linux-amd64/
[root@docker03 prometheus-2.23.0.linux-amd64]# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool
# (2) 在prometheus.yml配置中添加node-exporter
[root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml 
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node-exporter'
    static_configs:
    - targets: ['10.0.0.11:9100','10.0.0.12:9100']
# (3)启动Prometheus,并且浏览器访问:http://10.0.0.13:9090
[root@docker03 prometheus-2.23.0.linux-amd64]# ./prometheus --config.file="prometheus.yml" &
[root@docker03 prometheus-2.23.0.linux-amd64]# netstat -tlunp | grep 9090
tcp6       0      0 :::9090                 :::*                    LISTEN      1928/./prometheus

在这里插入图片描述

pushgateway采集器的作用:

在这里插入图片描述

2.2 Prometheus客户端安装

Prometheus客户端是各种各样的exporter,每种export都有单独的作用

常规安装是下载exporter二进制包,然后进行配置启动,这里直接使用docker启动容器,更方便快捷,exporter是Prometheus的客户端节点。

在10.0.0.11、10.0.0.12上安装Prometheus客户端,以监控容器和宿主机

# (1) 安装并启动node-exporter、cadvisor, 10.0.0.12做同样的操作
[root@docker01 ~]# docker load -i docker_monitor_node.tar.gz
[root@docker01 ~]# docker images
quay.io/prometheus/node-exporter   latest    e5a616e4b9cf   4 years ago     22.9MB
google/cadvisor                    latest    eb1210707573   4 years ago     69.6MB

# --path.rootfs /host是参数
[root@docker01 ~]# docker run -d -p 9100:9100 -v "/:/host:ro,rslave" --name=node_exporter quay.io/prometheus/node-exporter --path.rootfs /host

# --publish就是-p   --detach就是-d
[root@docker01 ~]# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest

在这里插入图片描述

2.3 Prometheus服务端配置

静态配置: 每新添加一台主机监控,都要进行重启

动态配置: 每新增加一台主机监控,不需要重启,自动发现

2.3.1 Prometheus静态动态配置
# (1) 静态配置node-exporter,动态配置cadvisor,动态配置的好处是直接在当前目录下添加主机,服务端不用重启,自动发现主机容器
[root@docker03 ~]# cd /opt/prometheus-2.23.0.linux-amd64
[root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node-exporter'
    static_configs:
    - targets: ['10.0.0.11:9100','10.0.0.12:9100']
  - job_name: 'cadvisor'
    file_sd_configs:
    - files:
      - job/server.json
      refresh_interval: 10s
# (2) 在当前路径下创建job/server.json,并且添加主机内容
[root@docker03 prometheus-2.23.0.linux-amd64]# mkdir job
[root@docker03 prometheus-2.23.0.linux-amd64]# vim job/server.json
[
  {
    "targets": ["10.0.0.11:8080"]
  }
]
# (3) 进行重启Prometheus
[root@docker03 prometheus-2.23.0.linux-amd64]# ps -ef | grep prom
root       2416   2111  0 22:25 pts/1    00:00:04 ./prometheus --config.file=prometheus.yml
[root@docker03 prometheus-2.23.0.linux-amd64]# kill 2416
[root@docker03 prometheus-2.23.0.linux-amd64]# ./prometheus --config.file="prometheus.yml" &
# (4) 添加10.0.0.12:8080节点,不需要重启
[root@docker03 prometheus-2.23.0.linux-amd64]# vim job/server.json
[
  {
    "targets": ["10.0.0.11:8080","10.0.0.12:8080"]
  }
]

在这里插入图片描述
在这里插入图片描述

小提示:

# (1) cadvisor的静态配置方法如下
[root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml prometheus.yml
scrape_configs:
  - job_name: 'cadvisor'
    static_configs:
    - targets: ['10.0.0.11:8080','10.0.0.12:8080']
    - 
# (2) cadvisor的动态配置就是Prometheus的自动发现
[root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml 
scrape_configs:
  - job_name: 'cadvisor'
    file_sd_configs:
    - files:
      - job/server.json
      refresh_interval: 10s
[root@docker03 prometheus-2.23.0.linux-amd64]# vim job/server.json
[
  {
    "targets": ["10.0.0.11:8080","10.0.0.12:8080"]
  }
]

3. alterManager邮件报警

alterManager可以和Prometheus在一个服务器上,alterManager有自己的ip和端口,以至于Prometheus可以连接alterManager。

3.1 alterManager安装配置

# (1) 二进制安装alertManager
[root@docker03 opt]# tar xf alertmanager-0.21.0.linux-amd64.tar.gz
[root@docker03 opt]# cd alertmanager-0.21.0.linux-amd64/

# (2) 修改配置文件,添加邮件信息
[root@docker03 alertmanager-0.21.0.linux-amd64]# vim alertmanager
global:
  resolve_timeout: 5m
  smtp_from: 'xxx@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: 'xxx@qq.com'
  smtp_auth_password: 'xxxxxxxxxxx'
  smtp_require_tls: false
  smtp_hello: 'qq.com'

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: 'xxx@qq.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
    
# (3) 启动alterManager
[root@docker03 alertmanager-0.21.0.linux-amd64]# ./alertmanager --config.file="alertmanager.yml" &

3.2 Prometheus集成alterManager

# (1) 修改Prometheus的配置文件,集成alterManager
[root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 10.0.0.13:9093
rule_files:
  - "node_down.yml"

# (2) 在当前目录下创建node_down.yml,来创建告警发邮件的规则
[root@docker03 prometheus-2.23.0.linux-amd64]# vim node_down.yml
groups:
- name: node-up
  rules:
  - alert: node-up
    expr: up{job="node-exporter"} == 0
    for: 15s
	labels:
	  severity: 1
	  team: node
	annotations:
	  summary: "{{ $labels.instance }} 已停止运行超过 15s!"
	  
# (3) 重启Prometheus,告警的配置改变必须重启才能生效
[root@docker03 prometheus-2.23.0.linux-amd64]# ps -ef | grep prom
root       2416   2111  0 22:25 pts/1    00:00:04 ./prometheus --config.file=prometheus.yml
[root@docker03 prometheus-2.23.0.linux-amd64]# kill 2416
[root@docker03 prometheus-2.23.0.linux-amd64]# ./prometheus --config.file="prometheus.yml" &

访问alterManager服务端:

在这里插入图片描述

访问Prometheus服务端:

在这里插入图片描述

测试:到10.0.0.11上停止node_exporter,docker stop node_exporter

在这里插入图片描述

4. grafana出图

为什么要使用grafana,因为Prometheus监控出图不太直观和美观,所以使用grafana专业出图软件进行出图,grafana出图比较优秀

在这里插入图片描述

grafana下载地址: https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Packages/

grafana dashboard模板下载: https://grafana.com/grafana/dashboards/

4.1 grafana安装

# (1) 安装grafana
[root@docker03 ~]# yum localinstall grafana-7.3.4-1.x86_64.rpm   -y
[root@docker03 ~]#  systemctl start grafana-server.service
[root@docker03 ~]#  systemctl enable grafana-server.service

# (2) 浏览器访问grafana,http://IP:3000,默认账号admin:admin

在这里插入图片描述

4.2 grafana使用配置

4.2.1 grafana的概念和使用流程

使用grafana流程,需要先了解概念

  • 插件: 如果grafana默认会有部分软件出图,比如Prometheus。如果不支持出图的软件,需要安装插件,来保证出图,比如zabbix

  • 数据源: 我们需要用grafana连接Prometheus出图,需要创建一个Prometheus的数据源,这个数据源里面要写上Prometheus的地址,主要是grafana需要获取Prometheus的数据来出图。

  • dashboard: grafana的出图模板,利用模板来生成好看的监控图。dashboard模板下载:https://grafana.com/grafana/dashboards/

grafana流程: 导入插件 --> 配置数据源 --> 导入dashboard

4.2.2 开始使用grafana出图

开始使用grafana来出图node-exporter,cadvisor

(1)改变主题

在这里插入图片描述

(2)grafana默认有Prometheus插件,不需要安装额外的插件

在这里插入图片描述

(3)添加Prometheus的数据源

在这里插入图片描述
在这里插入图片描述

(4)导入dashboard模板,进行监控出图,下载dashboard模板:https://grafana.com/grafana/dashboards/

Prometheus的node-exporter出图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Prometheus的cadvisor出图
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值