分享 | 交流
让学习成为一种习惯

用NGINX Amplify监控MySQL

网络服务器的最初浪潮倾向于运行着名的LAMP堆栈:L inux,A pache,M ySQL和P HP(或P erl)。然而,对于更高性能的站点,LAMP堆栈通常被LEMP堆栈取代:L inux,NGINX(E ngine-x),M ySQL和P HP,P erl和/或P ython。今天,世界上最繁忙的100,000个网站中有一半以上使用NGINX。

使用NGINX而不是Apache web服务器作为WordPress,Drupal和Joomla等流行的PHP应用程序的前端,可以更高效地利用底层服务器和操作系统资源,并且经常体现为服务至少10次更多的用户在同一个硬件上。

例如,NGINX部署一个流行的PHP应用程序是很常见的。在这种情况下,NGINX通常用作本地Web加速器,PHP-FPM用作应用程序服务器。此设置已被证明非常有用,可将SSL终止,内容缓存,身份验证和HTTP安全性的其他方面从PHP应用程序卸载到NGINX。

在之前的NGINX Amplify版本中,我们添加了收集PHP-FPM指标的功能。现在我们宣布Amplify的另一个有用的插件,它收集和可视化MySQL的指标,使用Amplify完成LEMP监控。相同的插件适用于与MySQL兼容的其他服务器,例如MariaDBPercona

MySQL和兼容的数据库非常流行。MySQL通常被认为是排在第一位的关系型数据库,比Microsoft SQL Server,MongoDB,PostgreSQL,NoSQL和Oracle等其他替代品都要好。因此,为Amplify添加MySQL指标集合将为NGINX的众多用户提供支持。

配置MySQL插件

当它监控NGINX或PHP-FPM时,Amplify代理需要能够在安装时自动检测MySQL主进程,并开始收集指标。如果所有设置都正确,您立即可以在Amplify 中看到MySQL 的一组开箱即用的图表,以及一些有用的扩展指标,如InnoDB缓冲池的利用率。

让我们继续进行Amplify MySQL插件的实际配置过程。为了让Amplify代理监控MySQL,您需要执行以下操作:

  1. 为Amplify代理创建一个名为amplify-agent的新MySQL用户。
    $ mysql -u root -p
    ...
    mysql> CREATE USER 'amplify-agent'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD_HERE';
    Query OK, 0 rows affected (0.01 sec)

    哪里YOUR_PASSWORD_HERE是专门用于放大代理用户帐户的安全密码。(注意,这不是MySQL root用户的密码!)

  2. 确认amplify-agent用户可以读取MySQL指标。
    $ mysql -u amplify-agent -p
    ...
    mysql> show global status;
    +---------------------------+----------------------------------------+
    | Variable_name             | Value                                  |
    +---------------------------+----------------------------------------+
    | Aborted_clients           | 0                                      |
    ...
    | Uptime_since_flush_status | 1993                                   |
    +---------------------------+----------------------------------------+
    353 rows in set (0.01 sec)
  3. 将Amplify代理软件更新到最新版本。
  4. 将以下内容添加到/etc/amplify-agent/agent.conf中:
    [extensions]
    ..
    mysql = True
    
    [mysql]
    #host =
    #port =
    unix_socket = /var/run/mysqld/mysqld.sock
    user = amplify-agent
    password = YOUR_PASSWORD_HERE

    其中YOUR_PASSWORD_HERE相同于步骤1。

  5. 重新启动 Amplify代理。

代理现在能够检测MySQL主进程并收集度量标准。

故障排除

要使MySQL度量标准收集起作用,Amplify代理必须与MySQL运行在相同的进程环境中,并能够使用它来查找mysqld进程ps(1)。例如,如果MySQL服务器在运行Amplify代理的主机系统上的Docker容器内运行,则需要将Amplify代理添加到该Docker容器。

以下是如果未收集MySQL度量标准的可能原因列表:

  • MySQL实例不是本地的。此时,您需要在启动MySQL服务器的主机上运行代理。
  • 该放大-代理用户无法查询全局状态指标。您可以轻松地将其作为mysql(1)客户端进行检查,并根据需要修复权限。

如果检查上述问题没有帮助,请启用放大代理的调试日志,重新启动座席,等待几分钟,然后通过放大窗口右下角的对讲机聊天按钮创建问题。将日志附加到对讲聊天。我们很乐意提供帮助。

放大的MySQL度量

以下是Amplify当前支持的MySQL指标列表。代理从MySQL全局状态变量中检索大部分度量标准。(为了改进表格布局,一些指标名称被分成多行。)

放大度量 描述 MySQL全局状态
mysql.global.connections 连接到MySQL服务器的尝试次数(成功与否)。 SHOW GLOBAL STATUS LIKE "Connections";
mysql.global.questions 服务器执行的语句数量。详情请参阅MySQL参考手册。 SHOW GLOBAL STATUS LIKE "Questions";
mysql.global.select select执行的语句数量。 SHOW GLOBAL STATUS LIKE "Com_select";
mysql.global.insert insert执行的语句数量。 SHOW GLOBAL STATUS LIKE "Com_insert";
mysql.global.update update执行的语句数量。 SHOW GLOBAL STATUS LIKE "Com_update";
mysql.global.delete delete执行的语句数量。 SHOW GLOBAL STATUS LIKE "Com_delete";
mysql.global.writes 前述的总和insertupdate以及delete计数器。
mysql.global.commit 编号commit语句执行。 SHOW GLOBAL STATUS LIKE "Com_commit";
>mysql.global.slow_queries 超过long_query_time秒的查询数。 SHOW GLOBAL STATUS LIKE "Slow_queries";
mysql.global.uptime 服务器启动的秒数。 SHOW GLOBAL STATUS LIKE "Uptime";
mysql.global.aborted_
connects
尝试连接到MySQL服务器失败的次数。 SHOW GLOBAL STATUS LIKE "Aborted_connects";
mysql.global.innodb_buffer_
pool_read_requests
InnoDB无法从缓冲池满足的逻辑读取次数,并且必须直接从磁盘读取。 SHOW GLOBAL STATUS LIKE "Innodb_buffer_pool_
reads";
mysql.global.innodb_buffer_
pool_hit_ratio<
命中率反映了InnoDB缓冲池的效率。
mysql.global.innodb_buffer_
pool_pages_total
InnoDB缓冲池的总大小,以页为单位。 SHOW GLOBAL STATUS LIKE "Innodb_buffer_pool_
pages_total";
mysql.global.innodb_buffer_
pool_pages_free
InnoDB缓冲池中的空闲页数。 SHOW GLOBAL STATUS LIKE "Innodb_buffer_pool_
pages_free";
mysql.global.innodb_buffer_
pool_util
InnoDB缓冲池利用率。
mysql.global.threads_
connected
当前打开的连接数。 SHOW GLOBAL STATUS LIKE "Threads_connected";
mysql.global.threads_running 未睡眠的线程数。 SHOW GLOBAL STATUS LIKE "Threads_running";

在这些指标中,定期检查是有意义的:

  • 当前打开的连接数
  • 执行的MySQL语句的数量(例如com_select
  • 慢查询的数量
  • InnoDB池效率
  • 整体MySQL可用性

结论

我们希望您能够方便地在NGINX Amplify中查看MySQL指标,并且可以更广泛地了解应用程序行为。通过NGINX,Linux OS,PHP-FPM和现在的MySQL的指标,使用Amplify监控LEMP堆栈变得完整。

以下是用Amplify监控MySQL的一些有用链接和资源:

我们计划尽快在Amplify中监控更多的应用程序堆栈组件,因此请保持联系。如果您有任何建议,请告诉我们。

非常感谢您使用NGINX Amplify!

未经允许不得转载:留时刻运维网 » 用NGINX Amplify监控MySQL

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

留时刻 - Linux系统教程,运维经验分享

加入我们给我留言