Using PMM to track MySQL on ARM statistics

Percona Monitoring and Management (PMM) is an effective tool in tracking stats of the running MySQL servers. Especially, the timelines capability helps users to get the picture of how the given stats changes over tenure of the workload. PMM official packages are not yet available on ARM but part of the PMM (importantly the stats collector aka exporter) could be compiled on ARM that would facilitate reporting stats of the MySQL instance running on ARM to PMM-Server there-by allowing it to track MySQL on ARM.

Background

Few days back Agustin from Percona tried compiling PMM Client on ARM. You can read more about it here. I just extended the process to also compile mysqld_exporter that is needed to connect and collect MySQL stats.

Compiling mysqld-exporter

Steps assume you have followed the blog above and you have needed structure in place that compiles and enables node_exporter.

Next is to checkout and compile mysqld_exporter


cd ~/go/src/github.com/percona/
git clone https://github.com/percona/mysqld_exporter.git
cd mysqld_exporter
make build

<failure>
cmd/go: unsupported GOOS/GOARCH pair linux/aarch64
Makefile:65: recipe for target 'promu' failed
</failure>

<temp-fix>
diff --git a/Makefile b/Makefile
index 08304cb..d98a49a 100644
--- a/Makefile
+++ b/Makefile
@@ -63,7 +63,7 @@ docker:
 
 promu:
 	@GOOS=$(shell uname -s | tr A-Z a-z) \
-		GOARCH=$(subst x86_64,amd64,$(patsubst i%86,386,$(shell uname -m))) \
+		GOARCH=$(subst aarch64,arm64,$(shell uname -m)) \
 		$(GO) get -u github.com/prometheus/promu
 
</temp-fix>

make build
sudo cp -a mysqld_exporter /usr/local/percona/pmm2/exporters/

Starting mysqld-exporter

If you have used PMM then no changes here. Start mysqld-exporter using pmm-admin (assuming pmm-agent is running)

For example:
pmm-admin add mysql mysql-on-arm --socket=/tmp/n1.sock


Service type  Service name         Address and port  Service ID
MySQL         mysql-on-arm         /tmp/n1.sock      /service_id/c3c0c58d-97cd-468b-b6d5-1dfed40dc5df

Agent type                  Status     Agent ID                                        Service ID
pmm_agent                   Connected  /agent_id/7973fe6c-eda1-48d3-87ab-ec8f1ffddd02  
node_exporter               Running    /agent_id/4cae9b52-26b2-460f-8f96-f8dda89dee1a  
mysqld_exporter             Running    /agent_id/42a50302-cba4-40df-9fd9-cf4522852269  /service_id/c3c0c58d-97cd-468b-b6d5-1dfed40dc5df
mysql_slowlog_agent         Waiting    /agent_id/7417f44b-3dd4-4b25-9f0f-9479f86449aa  /service_id/c3c0c58d-97cd-468b-b6d5-1dfed40dc5df

We have not enabled slow-log (on MySQL Server) so the slow agent is in a waiting state.

Seeing things in action

Node-name auto-detected is krunal-bauskar-arm-2-new and mysql-instance name is mysql-on-arm. Graph below plots InnoDB Buffer Pool stats for mysql-instance running on ARM with sysbench workload active.


Conclusion

Start monitoring your MySQL on ARM instances with PMM.


If you have more questions/queries do let me know. Will try to answer them.




Written on September 22, 2020
All the product names, logo, trademarks and registered trademarks are property of their respective owners