---
# System prepended metadata

title: Configuração exporter-mysql Prometheus

---

# Configuração exporter-mysql Prometheus
# 
> Para realizar o teste de ambiente mysql foi utilizado o repositório :  https://github.com/vbabak/docker-mysql-master-slave
> Nele econtramos um ambiente que simula a replicação entre dois bancos de dados. Para inicia-lo basta utilizar o docker-compose up -d 

Passo 01: Criação do Usuário para se conectar aos bancos com o exporter mysql.

Acessando os containers : 
```gerkhin=
docker exec -it mysql_master bash
docker exec -it mysql_slave bash
```
Em cada container realizar o procedimento comum de criação de usuários para nysql com os comandos:

```gerkhin=
mysql -u root -p111 #Acessando mysql
```

Comandos de Criação Usuário MySql:

```gerkhin=
mysql> CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporterpassword' WITH MAX_USER_CONNECTIONS 3;
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
```

Iniciando os exporters do Prometheus para MySql

```gerkhin=
docker run -d   -p 9104:9104   --network docker-mysql-master-master_overlay    -e DATA_SOURCE_NAME="exporter:exporterpassword@(mysql_master:3306)/"   prom/mysqld-exporter\
--collect.info_schema.processlist \
--collect.info_schema.innodb_metrics \
--collect.info_schema.tablestats \
--collect.info_schema.tables \
--collect.info_schema.userstats \
--collect.engine_innodb_status \
--collect.slave_status \
--collect.slave_hosts
```
No caso do Slave iremos publicar uma porta automatica a ele, assim evitamos conflito:

```gerkhin=
docker run -d   --publish 9104    --network docker-mysql-master-slave_overlay    -e DATA_SOURCE_NAME="exporter:exporterpassword@(mysql_slave:3306)/"   prom/mysqld-exporter\
--collect.info_schema.processlist \
--collect.info_schema.innodb_metrics \
--collect.info_schema.tablestats \
--collect.info_schema.tables \
--collect.info_schema.userstats \
--collect.engine_innodb_status \
--collect.slave_status \
--collect.slave_hosts
```
Passo 02 configurando a targer do exporter do mysql no arquivo prometheus.yml:

```gerkhin=
 - job_name: 'mysql_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['172.19.0.1:9104','172.19.0.1:32768']
     
```

Passo 05 configurar o arquivo alert.rules, para que interaja com alertmanager e dispare métricas de saúde do ambiente



Passo 04: Grafana, métricas configuradas disponíveis para importação com arquivo Json


> Pontos de atenção:
> 
> Arquivos .yml possuem identalção similar ao do Python, para forçar organização do código, sendo assim é de extrema importância para que ocorra o funcionamento.

Diagrama :

  ![](https://i.imgur.com/Xk0OCsV.png)



