adds mysql exporter. Installs on database host

This commit is contained in:
2025-11-07 20:07:21 +01:00
parent 069f1c59ad
commit 871b42855c
8 changed files with 89 additions and 7 deletions

View File

@@ -5,5 +5,5 @@ custom_firewall_ports:
- 3306
apt_packages:
- nfs-kernel-server
# install_mysql_exporter: true
install_mysqld_exporter: true
description: 'database & filestorage node for hosting app.retailor.io'

View File

@@ -6,12 +6,16 @@
nginx_exporter_version: "1.4.1"
cadvisor_version: "0.46.0"
fail2ban_exporter_version: "0.10.2"
mysqld_exporter_version: "0.17.2"
roles:
- role: roles/node_exporter
- role: roles/fail2ban_exporter
- role: roles/redis_exporter
- role: roles/exporter-node
- role: roles/exporter-fail2ban
- role: roles/exporter-redis
when: install_redis_exporter
- role: roles/cadvisor
- role: roles/exporter-cadvisor
when: install_cadvisor_exporter
- role: roles/nginx_prometheus_exporter
when: install_nginx_exporter
- role: roles/exporter-mysql
when: install_mysqld_exporter

View File

@@ -0,0 +1,11 @@
# mysqld exporter
(https://github.com/prometheus/mysqld_exporter)[https://github.com/prometheus/mysqld_exporter]
## Required Grants
```mysql
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
```

View File

@@ -0,0 +1,23 @@
---
- name: Download MySQL Prometheus Exporter
get_url:
url: "https://github.com/prometheus/mysqld_exporter/releases/download/v{{ mysqld_exporter_version }}/mysqld_exporter-{{ mysqld_exporter_version }}.linux-amd64.tar.gz"
dest: "/tmp/mysqld-exporter.tar.gz"
- name: Extract MySQL Prometheus Exporter
unarchive:
src: "/tmp/mysqld-exporter.tar.gz"
dest: "/tmp"
remote_src: yes
- name: copy my.cnf config
template:
src: "my.cnf.j2"
dest: "/root/my.cnf.j2"
- name: Move MySQL Prometheus Exporter binary
copy:
src: "/tmp/mysqld_exporter-{{ mysqld_exporter_version }}.linux-amd64/mysqld_exporter"
dest: "/usr/local/bin/mysqld_exporter"
remote_src: yes
mode: '0755'

View File

@@ -0,0 +1,6 @@
---
# ensure we have variables from .env files
- include_tasks: ../roles/env/tasks/main.yml
- include_tasks: install.yml
- include_tasks: service.yml

View File

@@ -0,0 +1,23 @@
---
- name: Create mysqld_exporter service file
template:
src: "mysqld_exporter.service.j2"
dest: "/etc/systemd/system/mysqld_exporter.service"
mode: '0644'
tags:
- create_service
- name: Reload systemd to pick up the mysqld_exporter service
systemd:
daemon_reload: yes
tags:
- reload_systemd
- name: Enable and start the mysqld_exporter service
systemd:
name: mysqld_exporter
state: started
enabled: yes
tags:
- start_mysqld_exporter

View File

@@ -0,0 +1,3 @@
[client]
user = {{ env_vars.DB_USERNAME }}
password = {{ env_vars.DB_PASSWORD }}

View File

@@ -0,0 +1,12 @@
[Unit]
Description=mysqld exporter
After=network.target
[Service]
User=nobody
ExecStart=/usr/local/bin/mysqld_exporter --config.my-cnf=/home/forge/.my.cnf
Restart=always
[Install]
WantedBy=multi-user.target