Prometheus、Grafana安装-部署-nginx代理-监控MYSQL数据库
思路
1.安装mysqld_exporter监控数据库指标
2.安装普罗米修斯监控信息JOB
3.安装Grafana展示UI
下载镜像
#收集服务器硬件和操作系统信息(被监控)
docker pull prom/node-exporter
#收集mysql使用情况数据信息
docker pull prom/mysqld-exporter
#负责收集服务器运行的docker容器信息(被监控)
docker pull google/cadvisor
#普罗米修斯监控服务
docker pull prom/prometheus
#用于展示普罗米修斯监控的图形化界面
docker pull grafana/grafana
1.mysqld_exporter 安装
1.1创建mysqld用户
CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'mysqldExporter2022' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost';
注意:
在创建用户的时候,推荐执行 MAX_USER_CONNECTIONS参数,避免我们监控使用过多的数据库连接数,导致数据库压力过大。
1.2拉取mysqld镜像
docker pull prom/mysqld-exporter
1.3运行mysqld镜像服务
docker run -d --name mysqld_exporter -p 9104:9104 -e DATA_SOURCE_NAME="mysqld_exporter:mysqldExporter2022@(192.168.80.172:33061)/" prom/mysqld-exporter
1.4验证服务
浏览器访问主机+ip,查看是否有收集指标
http://192.168.81.128:9104/metrics
2. prometheus安装
2.1拉取镜像
docker pull prom/prometheus
2.2运行prometheus服务
2.2.1创建本地映射yml配置文件
mkdir -p /opt/prometheus
vi /opt/prometheus/prometheus.yml
global:
scrape_interval: 20s
evaluation_interval: 20s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
labels:
instance: 'prometheus'
2.2.2运行docker服务
# 创建prometheus容器
docker run -itd --name prometheus -p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/rules/:/etc/prometheus/rules/ \
-v /etc/localtime:/etc/localtime:ro \
prom/prometheus
2.2.3查看普罗米修斯targets
http://192.168.81.128:9090/
没有配置mysqld-exporter之前,只有一个job服务,就是prometheus任务
2.2.4新增mysqld-exporter的监控job
vi /opt/prometheus/prometheus.yml
global:
scrape_interval: 20s
evaluation_interval: 20s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
labels:
instance: 'prometheus'
- job_name: 'mysqld-exporter'
static_configs:
- targets: ['192.168.81.128:9104']
重启prometheus容器服务
docker restart *****
2.2.4验证普罗米修斯是否新增mysqld-exproter任务
3. grafana安装
3.1拉取镜像
docker pull grafana/grafana
3.2运行服务
在DockerMachine上运行Grafana, http://机器地址:3000,登录用admin 密码为刚创建Grafana时的admin8888,
docker run -d -i -p 3000:3000 \
-v "/etc/localtime:/etc/localtime" \
-e "GF_SECURITY_ADMIN_PASSWORD=smartW****" \
--net=bridge \
grafana/grafana
3.3挂载配置文件
进容器copy /etc/grafana/grafana.ini
文件到宿主机,方便下次修改配置,譬如加载反向代理。
docker stop ***
docker rm ****
在DockerMachine上运行Grafana, http://机器地址:3000,登录用admin 密码为刚创建Grafana时的smartWork@2022,
docker run -d -i -p 3000:3000 \
-v "/etc/localtime:/etc/localtime" \
-v "/mnt/data/prometheus/grafana.ini:/etc/grafana/grafana.ini" \
-e "GF_SECURITY_ADMIN_PASSWORD=smartWork@2022" \
--net=bridge \
grafana/grafana
登录系统
3.4配置数据源到-普罗米修斯
选择普罗米修斯
填写数据源
导入页面ui,可以导入线上的,或者json配置文件
MySQL仪表盘: grafana.com/grafana/das…
可以下载,导入json
选择仪表盘查看
4. grafana代理
4.1配置参数
``
4.2重新运行服务
运行Grafana, http://机器地址:3000,登录用admin 密码为刚创建Grafana时的smartWork@2022,
docker run -d -i -p 3000:3000 \
-v "/etc/localtime:/etc/localtime" \
//挂载配置
-v "/mnt/data/prometheus/grafana.ini:/etc/grafana/grafana.ini" \
-e "GF_SECURITY_ADMIN_PASSWORD=smartWork@2022" \
--net=bridge \
grafana/grafana
4.3配置ngxin
location /grafana{
# 因为存在2M的js,需要设置nginx的缓存配置调大
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4M;
proxy_busy_buffers_size 4M;
proxy_set_header Host $http_host;
proxy_pass http://10.2.8.213:3000/grafana;
}
location ^~ /grafana/api/live {
# 这是grafana的webSocket连接
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_pass http://10.2.8.213:3000/grafana/api/live;
}
4.4访问代理后的url
http://*****:30100/grafana
5参考文档:
Mysqld_exporter部署及常见的几种错误
普罗米修斯-docker安装
Prometheus、Grafana安装-部署-nginx代理-监控linux