Prometheus+Grafana搭建监控系统 引入exporter
前置条件与搭建系统时候一致,需要安装docker-compose和建立网桥。
新建mysql用户
首先mysql-exporter建议我们使用权限控制的用户,所以我们需要创建一个用户。
可以通过navicat使用root用户进行创建,如果配置有root用户无法远程连接,可以进入mysql容器中进行创建用户或使用有权限的其他用户进行创建。
docker进入mysql容器命令:
#进入容器名为mysql的容器:
docker exec -it mysql bash
#使用root登录mysql
mysql -u root -p
然后执行以下创建用户的sql
/*1.创建用户readuser 最大连接数3*/
create user 'readuser'@'%' identified by 'password' WITH MAX_USER_CONNECTIONS 3 ;
/*2.赋予用户readuser某个库的权限
*特别的权限:ALL: 允许做任何事(和root一样)。
*USAGE: 只允许登录--其它什么也不允许做。
*/
grant PROCESS, REPLICATION CLIENT, SELECT on *.* to 'readuser'@'%' ;
/*3.刷新权限*/
flush privileges;
/*4.查看MySQL某个用户的权限*/
show grants for 用户名
/*5.如果权限赋予错误可以撤销用户权限:
REVOKE ALL PRIVILEGES ON `库名`.* FROM 'readuser'@'%';
编写docker-compose-exporter.yml
docker-compose-exporter.yml文件如下:
version: '2'
services:
exporter:
container_name: mysql-exporter #这个是监控mysql的插件
image: prom/mysqld-exporter
environment:
# 这里指定的是要监控的 MySQL 数据库,这里我们以启动的容器(mysql)为示范。
# 配置具体的数据库实例。这边改成刚刚创建的mysql用户
- DATA_SOURCE_NAME=username:password@(mysql:3306)/
ports:
- 9104:9104
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node_exporter #引入监控CPU、内存、磁盘IO、网络、温度等指标的插件
command:
- '--path.rootfs=/host'
network_mode: projectDocker
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
networks:
default:
external:
name: projectDocker
参考文档:
node_exprter:
https://github.com/prometheus/node_exporter
mysqld-exporter:
https://github.com/prometheus/mysqld_exporter
prometheus官网exporters:
prometheus引入exporter
还记得之前搭建Prometheus+Grafana监控系统时挂载的Prometheus配置文件prometheus-standalone.yaml吗?
接下来我们需要将插件配置进此文件之中,加入新的job_name
global:
scrape_interval: 15s
evaluation_interval: 15s
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
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'
scheme: http
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['prometheus:9090']
- job_name: 'mysql-exporter'
scrape_interval: 15s # 抓取间隔
static_configs:
- targets: ['mysql-exporter:9104']
- job_name: 'grafana_metrics'
scrape_interval: 15s
scrape_timeout: 5s
basic_auth:
username: grafana
password: grafana
static_configs:
- targets: ['grafana:3000']
- job_name: 'node_exporter'
static_configs:
- targets: ['node_exporter:9100']
上传compose文件,并运行
sudo docker-compose -f docker-compose-exporter.yml up -d
可以前往ip:9090查看prometheus界面中这三个配置的实例是否在线,登录默认无用户
6. ###### 进入ip:3000,登录grafana,配置数据源并创建仪表盘查看监控信息
创建数据源,选择prometheus数据源
配置prometheus数据源
最后点击下方的save&test查看配置是否成功,如果报错请仔细查看前面步骤是否错误,建议进入docker容器中查看日志锁定问题所在
导入仪表盘,进行可视化监控
我在这边导入node-exporter插件的仪表盘是8919,导入的mysql仪表盘12826
参考:
prometheus查看可导入线上仪表盘:
https://grafana.com/grafana/dashboards?dataSource=prometheus
node-exporter:
https://grafana.com/grafana/dashboards/8919
https://github.com/starsliao/Prometheus
mysql–exporter:
查看刚刚导入的仪表盘