通过prometheus实现的docker部署mysql监控

 
1、安装mysql
docker pull hub.c.163.com/library/mysql:latest

# 建立挂载的数据卷

mkdir -p /opt/mysql/data

# 虚拟机 3306 端口和容器里的3306端口对应,虚拟机路径和容器里路径(下图,来自头部参考地址)对应

docker run -p 3306:3306 --restart="always" --name mysql -v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d --privileged=true hub.c.163.com/library/mysql:latest

进入 Mysql 容器

# 这里的 mysql ,docker ps 查询后,写 CONTAINER ID 或者 IMAGE NAMES 都行
# 此时已经进入容器,登录容器内数据库
mysql -uroot -p123456

# 在操作容器里数据的同时,数据也进到了 /opt/mysql/data 目录里,两边是同步的!

登录mysql为exporter创建账号并授权
在mysql上配置监控使用的用户
# 创建数据库用户。
mysql> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'root';
# 可查看主从运行情况查看线程,及所有数据库。
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
 
2、安装mysql exporter
docker network create my-mysql-network
docker run -d \
  -p 9104:9104 \
  --network my-mysql-network --restart="always" \
  -e DATA_SOURCE_NAME="root:123456@(192.168.1.36:3306)/" \
  prom/mysqld-exporter

 

3.docker compose方式运行(与上面的docker run是一样的效果)
先安装docker compose 
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

授权文件

chmod +x /opt

然后编辑docker-compose-mysql-exporter.yml文件

version: '2'


networks:
    monitor:
        driver: bridge


services:
    mysql-exporter:
        image: prom/mysqld-exporter
        container_name: mysql-exporter
        hostname: mysql-exporter
        restart: always
        ports:
            - "9104:9104"
        networks:
            - my-mysql-network


        environment:
            DATA_SOURCE_NAME: "root:123456@(192.168.1.36:3306)/"
networks:
    my-mysql-network:
        driver: bridge

 

 
通过docker-compose启动
#启动容器:
docker-compose -f /opt/docker-compose-mysql-exporter.yml up -d

#删除容器:
 

docker-compose -f /opt/docker-compose-mysql-exporter.yml down

#重启容器:

docker restart 容器id
 
此时,本地浏览器访问 http://localhost:9104/metrics 可以看到 mysql(mysql是容器名称) 相关的所有监控指标列表
然后编辑配置prometheus.yml文件
- job_name: 'mysql' 
    static_configs: 
    - targets: ['192.168.1.36:9104'] 
        labels: 
            instance: mysql

 

 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章