Prometheus 监控平台部署 Prometheus 监控平台部署 MySQL 的监控

Linux 操作系统监控 + Mysql 监控

平台监控原理

环境说明:
本文档中各组件运行的环境为 Ubuntu(64 位操作系统)
node_exporter 监控的是 192.168.1.26 机器的操作系统
mysql_exporter 监控的是 192.168.1.30 上安装的 MySQL 数据库
Grafana+Prometheus 部署在 192.168.1.33 机器

部署前的准备:
1、 关闭所有 Linux 机器的防火墙:systemctl stop firewalld.service
2、 保证所有 Linux 机器的时间是准确的,执行 date 命令检查;如果不准确,建议使用ntp 同步最新网络时间

部署 Linux 操作系统监控组件

  1. 下载监控 Linux 的 exporter
    https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

  2. 将 node_exporter 包上传到需要被监控的 Linux 服务器上任意目录下,执行解压命
    tar xvf node_exporter-0.18.1.linux-amd64.tar.gz
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  3. 进入到解压后的文件夹中,执行启动脚本
    node_exporter-0.18.1.linux-amd64
    nohup ./node_exporter &

  4. 查看 nohup 日志,出现如下日志,代表启动成功
    tail -100 nohup.out
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

部署 prometheus

  1. 下载包
    https://github.com/prometheus/prometheus/releases/download/v2.15.2/prometheus-2.15.2.linux-amd64.tar.gz

  2. 将 prometheus 上传到一台单独的 Linux 机器上,执行解压操作

ubuntu@VM-0-8-ubuntu:~$ ls
app  logs  Project  Prometheus  README.txt  tools  VueProject
ubuntu@VM-0-8-ubuntu:~$ cd Prometheus/
ubuntu@VM-0-8-ubuntu:~/Prometheus$ tar -xvf prometheus-2.15.2.linux-amd64.tar.gz
ubuntu@VM-0-8-ubuntu:~/Prometheus$ ls
grafana_6.5.3_amd64.deb  node_exporter-0.18.1.linux-amd64  prometheus-2.15.2.linux-amd64
ubuntu@VM-0-8-ubuntu:~/Prometheus$ cd prometheus-2.15.2.linux-amd64/
ubuntu@VM-0-8-ubuntu:~/Prometheus/prometheus-2.15.2.linux-amd64$ ls
console_libraries  consoles  data  LICENSE  nohup.out  NOTICE  prometheus  prometheus.yml  promtool  tsdb
  1. 进入到解压后的文件夹中,修改配置文件,添加要监控的服务器信息 192.168.1.26
    vi prometheus.yml

  2. 在 scrape_configs 配置项下添加 Linux 监控的 job,其中IP 修改为上面部署 node_exporter 机器的 ip,端口号为 9100,注意缩进

# my global config
global:
  scrape_interval:     2s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 2s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:

  # 新增的服务器配置信息
  - job_name: 'node'
    static_configs:
    - targets: ['192.168.1.26:9100']
  1. 保存配置文件,启动 prometheus
    nohup ./prometheus &

  2. 检查 nohup.out 日志,如果有以下信息,启动成功
    vi nohup.out
    通过反斜杠 '/Server is ready to receive' 回车查询
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  3. 在浏览器中访问部署的 prometheus:http://192.168.1.33:9090
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  4. 点击菜单栏“Status-Targets”,看到页面中有如下 node 节点,代表 prometheus 和node_exporter 链接成功
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

部署 Grafana

  1. 下载安装grafana(建议使用8.0.6版本,6.5.3有不兼容问题)
    sudo apt-get install -y adduser libfontconfig1
    wget https://dl.grafana.com/oss/release/grafana_6.5.3_amd64.deb
    sudo dpkg -i grafana_6.5.3_amd64.deb
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  2. 启动 grafana
    systemctl start grafana-server

  3. 在浏览器访问:http://192.168.1.33:3000/
    输入用户名/密码:admin/admin 登录
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  4. 添加数据源,选择 prometheus
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  5. 进行数据源配置,因为我的 prometheus 和 grafana 装在同一台机器上,所以 ip 写的是 localhost,如果没在一台机器上,写上 prometheus 的 IP
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控
    点击“save and test”,如果提示 success,代表配置成功

  6. 官网查找监控模板
    打开 grafana 官网,查找官网提供的 prometheus 监控模板
    https://grafana.com/grafana/dashboards
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控
    点击 Linux 服务器监控的中文模板,记录该模板的 id:8919
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  7. 在 grafana 系统页面中,通过 id 导入该模板,即可在 grafana 中看到 192.168.1.26 机器的性能监控数据
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  8. 将数据更新频率很具需要设置,就可以看到设置时间步长内的各项性能指标。包含了 CPU、Load、内存、网络、磁盘、IO 耗时等指标。监控数据永久保存,可以随时查看任意时间点内的历史统计数据,非常方便。
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  9. grafana服务启停

  • 设置开机自启:systemctl start grafana-server
  • 启动服务 sudo service grafana-server start
  • 重启 sudo service grafana-server restart
  • 停止服务 sudo service grafana-server stop

MySQL 的监控

  1. 下载 MySQL 的 exporter
    https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz

  2. 上传至 MySQL 服务器上,解压包
    tar xvf mysqld_exporter-0.12.1.linux-amd64.tar.gz

  3. 执行命令
    export DATA_SOURCE_NAME='root:admin1234@(192.168.1.30:3306)/'

  4. 启动 mysql exporter
    进入到解压后的文件夹中,执行命令
    nohup ./mysqld_exporter &
    监控 nohup.out 日志,有如下日志代表成功
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控

  5. 修改 prometheus 的配置文件 prometheus.yml vi prometheus.yml
    增加监控 MySQL 的 job(注意缩进格式)

# my global config
global:
  scrape_interval:     2s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 2s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:

  # 新增的服务器配置信息
  - job_name: 'node'
    static_configs:
    - targets: ['192.168.1.26:9100']

  # 新增的MySQL服务器配置信息
  - job_name: 'mysql'
    static_configs:
    - targets: ['192.168.1.30:9104']

targets 中的 IP 为 mysql_exporter 所在机器的 IP,端口号固定为 9104
重启 prometheus,进入 prometheus 的 UI 界面,在 status-targets 页面下,可以看
到 MySQL exporter 的状态

  1. 在 Grafana 中添加 MySQL 的监控模板
    在 grafana 官网模板中找到 MySQL 监控模板 Mysql Overview,id 为 7362,并导入
    到 Grafana 中(具体操作步骤参考上面导入 Linux 监控模板操作)
    Prometheus 监控平台部署
Prometheus 监控平台部署
MySQL 的监控
    这样在 grafana 中,就可以轻松监控 MySQL 的连接数、内存、表锁、慢查询、网
    络、查询缓存等监控数据