在前文中我们介绍了 Prometheus 的基础知识,并演示了如何监控一台 Linux 服务器。这次我们来聊聊如何将 Prometheus 应用到几个常见的业务组件上,实现更细粒度的监控。
监控 MySQL 服务器
Prometheus 通过 Exporter 收集远程数据,对于 MySQL,我们需要用到 mysqld_exporter。
1. 部署架构与安装
首先下载并解压 exporter 二进制文件:
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz
$ tar xzvf mysqld_exporter-0.10.0.linux-amd64.tar.gz
$ mv mysqld_exporter-0.10.0.linux-amd64 /usr/local/prometheus/mysqld_exporter
2. 创建监控用户
Exporter 需要连接数据库获取指标,因此要创建一个专用账号并授权:
mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost' IDENTIFIED BY '000000';
mysql> GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost';
mysql> FLUSH PRIVILEGES;
3. 配置文件与服务启动
默认情况下,exporter 会读取 ~/.my.cnf。为了方便管理,我们将其放在安装目录下:
$ vim /usr/local/prometheus/mysqld_exporter/.my.cnf
[client]
user=mysqld_exporter
password=000000
接着配置 Systemd 服务,确保进程随系统启动并自动重启:
[Unit]
Description=mysql_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/mysqld_exporter/mysqld_exporter -config.my-cnf="/usr/local/prometheus/mysqld_exporter/.my.cnf"
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动并验证状态:
$ systemctl start mysql_exporter
$ systemctl status mysql_exporter
4. Prometheus 配置与 Grafana 展示
修改 prometheus.yml,添加抓取目标。Exporter 默认监听 9104 端口:
- job_name: mysql
static_configs:
- targets: ['192.168.2.210:9104']
labels:
instance: db1
重启 Prometheus 后,即可在 Grafana 中导入模板。官方虽未提供现成图表,但 Percona 开源的模板非常实用。克隆仓库后,可以批量导入到 /var/lib/grafana/dashboards,并在 grafana.ini 中启用 JSON 目录扫描功能。
重启 Grafana 服务后,选择 MySQL Overview 模板,就能看到详细的数据库运行状态了。
监控 Nginx 服务器
由于官方没有直接可用的 Nginx Exporter,且 nginx-vts-exporter 依赖 Nginx 的 nginx-module-vts 模块,所以需要先重新编译 Nginx。
1. 编译安装 Nginx
下载源码和模块:
$ cd /root
$ wget 'http://nginx.org/download/nginx-1.9.2.tar.gz'
$ git clone git://github.com/vozlt/nginx-module-vts.git
安装依赖并编译:
$ apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential
$ tar xzvf nginx-1.9.2.tar.gz
$ cd nginx-1.9.2
$ ./configure --add-module=/root/nginx-module-vts
$ make && make install
2. 修改 Nginx 配置
在 http 块中添加状态区域,并在 server 块中暴露状态接口:
http {
vhost_traffic_status_zone;
server {
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
访问 http://IP/status 确认模块生效,同时支持 JSON 格式输出。
3. 部署 Exporter
下载并解压 exporter:
$ wget -O nginx-vts-exporter-0.5.zip https://github.com/hnlq715/nginx-vts-exporter/archive/v0.5.zip
$ unzip nginx-vts-exporter-0.5.zip
$ mv nginx-vts-exporter-0.5 /usr/local/prometheus/nginx-vts-exporter
$ chmod +x /usr/local/prometheus/nginx-vts-exporter/bin/nginx-vts-exporter
配置 Systemd 服务,注意 scrape_uri 指向刚才配置的 JSON 状态接口:
[Unit]
Description=nginx_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/nginx-vts-exporter/bin/nginx-vts-exporter -nginx.scrape_uri=http://localhost/status/format/json
Restart=on-failure
[Install]
WantedBy=multi-user.target
4. 接入 Prometheus
修改 prometheus.yml,添加 nginx 任务(默认端口 9913):
- job_name: nginx
static_configs:
- targets: ['192.168.2.210:9913']
labels:
instance: web1
重启 Prometheus 后,导入 Nginx Stats 模板即可查看流量和性能数据。如果 Grafana 无数据,建议先检查 Prometheus 界面是否能查询到指标,排查网络或权限问题。
监控 Memcached 服务器
Memcached 的监控相对简单,直接使用官方提供的 memcached_exporter 即可。
1. 安装与配置
$ wget https://github.com/prometheus/memcached_exporter/releases/download/v0.3.0/memcached_exporter-0.3.0.linux-amd64.tar.gz
$ tar xzvf memcached_exporter-0.3.0.linux-amd64.tar.gz
$ mv memcached_exporter-0.3.0.linux-amd64 /usr/local/prometheus/memcached_exporter
编写 Systemd 服务文件,指定本地地址:
[Unit]
Description=memcached_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/memcached_exporter/memcached_exporter --memcached.address=127.0.0.1:11211
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动服务并验证状态无误后,在 prometheus.yml 中添加目标(默认端口 9150):
- job_name: memcached
static_configs:
- targets: ['192.168.2.210:9150']
labels:
instance: db2
重启 Prometheus,导入官方提供的 Memcached 模板,即可完成可视化监控。
以上涵盖了几个最常用的中间件监控方案。如果需要更完善的解决方案,可以参考 Percona Monitoring and Management (PMM) 工具。关于第三方 Exporter 的更多资源,可查阅 Prometheus 官方文档。

