基于Elasticsearch Serverless监控自建MySQL指标
当您需要查看并分析MySQL的监控数据时,可通过Prometheus采集MySQL日志并发送到阿里云Elasticsearch Serverless中,然后在控制台完成可视化查询、分析和展示。本文介绍具体的实现方法。
操作流程
步骤一:准备环境
开通阿里云Elasticsearch Serverless服务,并创建应用和指标类型的数据流。
创建阿里云ECS实例。
具体操作,请参见自定义购买实例。
安装并启动MySQL。
如果您还未安装MySQL,可参考以下步骤进行安装:
连接ECS实例。
具体操作请参见通过密码或密钥认证登录Linux实例。
说明本文档以普通用户权限为例。
下载并安装MySQL源。
sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
说明rpm命令仅支持CentOS和Alibaba Cloud Linux类型的系统。
安装MySQL。
sudo yum install mysql-server
启动MySQL并查看服务状态。
sudo systemctl start mysqld sudo systemctl status mysqld
步骤二:安装mysqld_exporter并配置MySQL
连接ECS实例。
具体操作请参见通过密码或密钥认证登录Linux实例。
说明本文档以普通用户权限为例。
安装mysqld_exporter。
下载安装包。
本示例以mysqld_exporter 1.4.0版本为例,下载命令如下。
sudo wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
解压安装包。
sudo tar -zxf mysqld_exporter-0.14.0.linux-amd64.tar.gz
在MySQL中添加mysqld_exporter用户并授权。
登录MySQL。
sudo mysql -u root -p <your_password>
添加mysqld_exporter用户并授权。
CREATE USER '<user_name>'@'localhost' IDENTIFIED BY '<user_password>'; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO '<user_name>'@'localhost';
说明<user_name>和<user_password>需要您自定义输入。
在mysqld_exporter目录下创建my.cnf文件。
创建文件。
cd mysqld_exporter-0.14.0.linux-amd64 sudo vim my.cnf
添加内容。
[client] user=<user_name> password=<user_password> host=localhost port=3306
说明<user_name>和<user_password>需要与添加mysqld_exporter用户并授权步骤中设置的值保持一致。
启动mysqld_exporter。
sudo nohup ./mysqld_exporter --config.my-cnf "./my.cnf" --web.listen-address "0.0.0.0:9104" --log.level debug > mysqld_exporter.log 2>&1 &
步骤三:下载、配置并启动Prometheus
连接ECS实例。
具体操作请参见通过密码或密钥认证登录Linux实例。
说明本文档以普通用户权限为例。
在根目录下载Prometheus安装包。
本示例以Prometheus 2.40.1版本为例,下载命令如下。
cd ~ sudo wget https://github.com/prometheus/prometheus/releases/download/v2.40.1/prometheus-2.40.1.linux-amd64.tar.gz
解压安装包。
sudo tar -zxf prometheus-2.40.1.linux-amd64.tar.gz
在Prometheus目录的prometheus.yml文件中,配置mysqld_exporter和remote_write。
cd prometheus-2.40.1.linux-amd64/ sudo vim prometheus.yml
配置示例如下。
scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] #配置mysql_exporter - job_name: "mysql" static_configs: - targets: ["127.0.0.1:9104"] #配置remote_write,确保Prometheus能够访问Elasticsearch Serverless服务,即网络是通的。 remote_write: - url: "https://[域名]/[应用]/[数据流]/prometheus/metrics/push" headers: X-Api-Key: <your_token>
参数
说明
mysqld_exporter
配置mysql_exporter的连接信息。targets需要配置为mysqld_exporter的访问地址:端口。
由于本示例使用同一个ECS实例部署Prometheus和mysqld_exporter,因此mysqld_exporter的访问地址使用本地访问IP地址127.0.0.1,端口使用默认的9104端口。
remote_write
配置Elasticsearch Serverless服务的连接信息。需要配置以下基础参数,更多高级参数请可见remote_write。
启动Prometheus。
sudo nohup ./prometheus --config.file="prometheus.yml" > node2serverless.log 2>&1 &
步骤四:在Elasticsearch Serverless服务控制台上查看MySQL日志监控信息
在指标监控页面,创建Grafana指标监控大盘。
具体操作请参见指标监控。
选择指标数据流、Metrics及监控时间段,查看对应时间段内的指标监控信息。
说明您也可以设置查询选项以及大盘的显示样式,具体操作请参见Grafana Dashboard。