当前位置: 首页 > news >正文

现在的网站做多大尺寸的昌邑做网站

现在的网站做多大尺寸的,昌邑做网站,做软测的网站,连云港建设局网站MySQL监控平台的构建方法发布时间#xff1a;2020-05-23 14:13:12来源#xff1a;亿速云阅读#xff1a;159作者#xff1a;鸽子概述对于MySQL的监控平台#xff0c;相信大家实现起来有很多了#xff1a;基于天兔的监控#xff0c;还有基于zabbix相关的二次开发。相信很…MySQL监控平台的构建方法发布时间2020-05-23 14:13:12来源亿速云阅读159作者鸽子概述对于MySQL的监控平台相信大家实现起来有很多了基于天兔的监控还有基于zabbix相关的二次开发。相信很多同行都应该已经开始玩起来了。我这边的选型是prometheus granafa的实现方式。简而言之就是我现在的生产环境使用的是prometheus还有就是granafa满足的我的日常工作需要。在入门的简介和安装大家可以参考这里https://blog.51cto.com/cloumn/detail/771、首先看下我们的监控效果、mysql主从2、mysql状态3、缓冲池状态exporter 相关部署1、安装exporter[rootcontroller2 opt]# https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz[rootcontroller2 opt]# tar -xf mysqld_exporter-0.10.0.linux-amd64.tar.gz2、添加mysql 账户GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO exporter% IDENTIFIED BY localhost;flush privileges;3、编辑配置文件[rootcontroller2 mysqld_exporter-0.10.0.linux-amd64]# cat /opt/mysqld_exporter-0.10.0.linux-amd64/.my.cnf[client]userexporterpassword1234564、设置配置文件[rootcontroller2 mysqld_exporter-0.10.0.linux-amd64]# cat /etc/systemd/system/mysql_exporter.service[Unit]Descriptionmysql Monitoring SystemDocumentationmysql Monitoring System[Service]ExecStart/opt/mysqld_exporter-0.10.0.linux-amd64/mysqld_exporter \-collect.info_schema.processlist \-collect.info_schema.innodb_tablespaces \-collect.info_schema.innodb_metrics  \-collect.perf_schema.tableiowaits \-collect.perf_schema.indexiowaits \-collect.perf_schema.tablelocks \-collect.engine_innodb_status \-collect.perf_schema.file_events \-collect.info_schema.processlist \-collect.binlog_size \-collect.info_schema.clientstats \-collect.perf_schema.eventswaits \-config.my-cnf/opt/mysqld_exporter-0.10.0.linux-amd64/.my.cnf[Install]WantedBymulti-user.target5、添加配置到prometheus server- job_name: mysqlstatic_configs:- targets: [192.168.1.11:9104,192.168.1.12:9104]6、测试看有没有返回数值http://192.168.1.12:9104/metrics正常我们通过mysql_up可以查询倒mysql监控是否已经生效是否起起来#HELP mysql_up Whether the MySQL server is up.#TYPE mysql_up gaugemysql_up 1监控相关指标在做任何一个东西监控的时候我们要时刻明白我们要监控的是什么指标是啥才能更好的去监控我们的服务在mysql里面我们通常可以通过一下指标去衡量mysql的运行情况mysql主从运行情况、查询吞吐量、慢查询情况、连接数情况、缓冲池使用情况以及查询执行性能等。主从复制运行指标1、主从复制线程监控大部分情况下很多企业使用的都是主从复制的环境监控两个线程是非常重要的在mysql里面我们通常是通过命令MariaDB [(none)] show slave status\G;*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 172.16.1.1Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000045Read_Master_Log_Pos: 72904854Relay_Log_File: mariadb-relay-bin.000127Relay_Log_Pos: 72905142Relay_Master_Log_File: mysql-bin.000045Slave_IO_Running: YesSlave_SQL_Running: Yes#Slave_IO_Running、Slave_SQL_Running两个线程正常那么说明我们的复制集群是健康状态的。MySQLD Exporter中返回的样本数据中通过mysql_slave_status_slave_sql_running来获取主从集群的健康状况。# HELP mysql_slave_status_slave_sql_running Generic metric from SHOW SLAVE STATUS.# TYPE mysql_slave_status_slave_sql_running untypedmysql_slave_status_slave_sql_running{channel_name,connection_name,master_host172.16.1.1,master_uuid} 12、主从复制落后时间在使用show slave status 里面还有一个关键的参数Seconds_Behind_Master。Seconds_Behind_Master表示slave上SQL thread与IO thread之间的延迟我们都知道在MySQL的复制环境中slave先从master上将binlog拉取到本地(通过IO thread)然后通过SQL thread将binlog重放而Seconds_Behind_Master表示本地relaylog中未被执行完的那部分的差值。所以如果slave拉取到本地的relaylog(实际上就是binlog只是在slave上习惯称呼relaylog而已)都执行完此时通过show slave status看到的会是0Seconds_Behind_Master: 0MySQLD Exporter中返回的样本数据中通过mysql_slave_status_seconds_behind_master 来获取相关状态。# HELP mysql_slave_status_seconds_behind_master Generic metric from SHOW SLAVE STATUS.# TYPE mysql_slave_status_seconds_behind_master untypedmysql_slave_status_seconds_behind_master{channel_name,connection_name,master_host172.16.1.1,master_uuid} 0查询吞吐量说到吞吐量那么我们如何从那方面来衡量呢通常来说我们可以根据mysql 的插入、查询、删除、更新等操作来为了获取吞吐量MySQL 有一个名为 Questions 的内部计数器(根据 MySQL 用语这是一个服务器状态变量)客户端每发送一个查询语句其值就会加一。由 Questions 指标带来的以客户端为中心的视角常常比相关的Queries 计数器更容易解释。作为存储程序的一部分后者也会计算已执行语句的数量以及诸如PREPARE 和 DEALLOCATE PREPARE 指令运行的次数作为服务器端预处理语句的一部分。可以通过命令来查询MariaDB [(none)] SHOW GLOBAL STATUS LIKE Questions;----------------------| Variable_name | Value |----------------------| Questions     | 15071 |----------------------MySQLD Exporter中返回的样本数据中通过mysql_global_status_questions反映当前Questions计数器的大小# HELP mysql_global_status_questions Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_questions untypedmysql_global_status_questions 13253当然由于prometheus 具有非常丰富的查询语言我们可以通过这个累加的计数器来查询某一短时间内的查询增长率情况可以做相关的阈值告警处理、例如一下查询2分钟时间内的查询情况rate(mysql_global_status_questions[2m])当然上面是总量我们可以分别从监控读、写指令的分解情况从而更好地理解数据库的工作负载、找到可能的瓶颈。通常通常读取查询会由 Com_select 指标抓取而写入查询则可能增加三个状态变量中某一个的值这取决于具体的指令Writes  Com_insert  Com_update  Com_delete下面我们通过命令获取插入的情况MariaDB [(none)] SHOW GLOBAL STATUS LIKE Com_insert;----------------------| Variable_name | Value |----------------------| Com_insert    | 10578 |----------------------从MySQLD Exporter的/metrics返回的监控样本中可以通过global_status_commands_total获取当前实例各类指令执行的次数# HELP mysql_global_status_commands_total Total number of executed MySQL commands.# TYPE mysql_global_status_commands_total countermysql_global_status_commands_total{commandcreate_trigger} 0mysql_global_status_commands_total{commandcreate_udf} 0mysql_global_status_commands_total{commandcreate_user} 1mysql_global_status_commands_total{commandcreate_view} 0mysql_global_status_commands_total{commanddealloc_sql} 0mysql_global_status_commands_total{commanddelete} 3369mysql_global_status_commands_total{commanddelete_multi} 0慢查询性能查询性能方面慢查询也是查询告警的一个重要的指标。MySQL还提供了一个Slow_queries的计数器当查询的执行时间超过long_query_time的值后计数器就会1其默认值为10秒可以通过以下指令在MySQL中查询当前long_query_time的设置MariaDB [(none)] SHOW VARIABLES LIKE long_query_time;----------------------------| Variable_name   | Value     |----------------------------| long_query_time | 10.000000 |----------------------------1 row in set (0.00 sec)#当然我们也可以修改时间MariaDB [(none)] SET GLOBAL long_query_time 5;Query OK, 0 rows affected (0.00 sec)然后我们而已通过sql语言查询MySQL实例中Slow_queries的数量MariaDB [(none)] SHOW GLOBAL STATUS LIKE Slow_queries;----------------------| Variable_name | Value |----------------------| Slow_queries  | 0     |----------------------1 row in set (0.00 sec)MySQLD Exporter返回的样本数据中通过mysql_global_status_slow_queries指标展示当前的Slow_queries的值# HELP mysql_global_status_slow_queries Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_slow_queries untypedmysql_global_status_slow_queries 0同样的更具根据Prometheus 慢查询语句我们也可以查询倒他某段时间内的增长率rate(mysql_global_status_slow_queries[5m])连接数监控监控客户端连接情况相当重要因为一旦可用连接耗尽新的客户端连接就会遭到拒绝。MySQL 默认的连接数限制为 151。MariaDB [(none)] SHOW VARIABLES LIKE max_connections;------------------------| Variable_name   | Value |------------------------| max_connections | 151   |------------------------当然我们可以修改配置文件的形式来增加这个数值。与之对应的就是当前连接数量当我们当前连接出来超过系统设置的最大值之后常会出现我们看到的Too many connections(连接数过多)下面我查找一下当前连接数MariaDB [(none)] SHOW GLOBAL STATUS LIKE Threads_connected;--------------------------| Variable_name     | Value |--------------------------| Threads_connected | 41     |--------------------------当然mysql 还提供Threads_running 这个指标帮助你分隔在任意时间正在积极处理查询的线程与那些虽然可用但是闲置的连接。MariaDB [(none)] SHOW GLOBAL STATUS LIKE Threads_running;------------------------| Variable_name   | Value |------------------------| Threads_running | 10     |------------------------如果服务器真的达到 max_connections 限制它就会开始拒绝新的连接。在这种情况下Connection_errors_max_connections 指标就会开始增加同时追踪所有失败连接尝试的Aborted_connects 指标也会开始增加。MySQLD Exporter返回的样本数据中:# HELP mysql_global_variables_max_connections Generic gauge metric from SHOW GLOBAL VARIABLES.# TYPE mysql_global_variables_max_connections gaugemysql_global_variables_max_connections 151#表示最大连接数# HELP mysql_global_status_threads_connected Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_threads_connected untypedmysql_global_status_threads_connected 41#表示当前的连接数# HELP mysql_global_status_threads_running Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_threads_running untypedmysql_global_status_threads_running 1#表示当前活跃的连接数# HELP mysql_global_status_aborted_connects Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_aborted_connects untypedmysql_global_status_aborted_connects 31#累计所有的连接数# HELP mysql_global_status_connection_errors_total Total number of MySQL connection errors.# TYPE mysql_global_status_connection_errors_total countermysql_global_status_connection_errors_total{errorinternal} 0#服务器内部引起的错误、如内存硬盘等mysql_global_status_connection_errors_total{errormax_connections} 0#超出连接处引起的错误当然根据prom表达式我们可以查询当前剩余可用的连接数mysql_global_variables_max_connections - mysql_global_status_threads_connected查询mysq拒绝连接数mysql_global_status_aborted_connects缓冲池情况MySQL 默认的存储引擎 InnoDB 使用了一片称为缓冲池的内存区域用于缓存数据表与索引的数据。缓冲池指标属于资源指标而非工作指标前者更多地用于调查(而非检测)性能问题。如果数据库性能开始下滑而磁盘 I/O 在不断攀升扩大缓冲池往往能带来性能回升。默认设置下缓冲池的大小通常相对较小为 128MiB。不过MySQL 建议可将其扩大至专用数据库服务器物理内存的 80% 大小。我们可以查看一下MariaDB [(none)] show global variables like innodb_buffer_pool_size;------------------------------------| Variable_name           | Value     |------------------------------------| innodb_buffer_pool_size | 134217728 |------------------------------------MySQLD Exporter返回的样本数据中使用mysql_global_variables_innodb_buffer_pool_size来表示。# HELP mysql_global_variables_innodb_buffer_pool_size Generic gauge metric from SHOW GLOBAL VARIABLES.# TYPE mysql_global_variables_innodb_buffer_pool_size gaugemysql_global_variables_innodb_buffer_pool_size 1.34217728e08Innodb_buffer_pool_read_requests记录了正常从缓冲池读取数据的请求数量。可以通过以下指令查看MariaDB [(none)] SHOW GLOBAL STATUS LIKE Innodb_buffer_pool_read_requests;-----------------------------------------------| Variable_name                    | Value       |-----------------------------------------------| Innodb_buffer_pool_read_requests | 38465 |-----------------------------------------------MySQLD Exporter返回的样本数据中使用mysql_global_status_innodb_buffer_pool_read_requests来表示。# HELP mysql_global_status_innodb_buffer_pool_read_requests Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_innodb_buffer_pool_read_requests untypedmysql_global_status_innodb_buffer_pool_read_requests 2.7711547168e10当缓冲池无法满足时MySQL只能从磁盘中读取数据。Innodb_buffer_pool_reads即记录了从磁盘读取数据的请求数量。通常来说从内存中读取数据的速度要比从磁盘中读取快很多因此如果Innodb_buffer_pool_reads的值开始增加可能意味着数据库的性能有问题。 可以通过以下只能查看Innodb_buffer_pool_reads的数量MariaDB [(none)] SHOW GLOBAL STATUS LIKE Innodb_buffer_pool_reads;---------------------------------| Variable_name            | Value |---------------------------------| Innodb_buffer_pool_reads | 138  |---------------------------------1 row in set (0.00 sec)MySQLD Exporter返回的样本数据中使用mysql_global_status_innodb_buffer_pool_read_requests来表示。# HELP mysql_global_status_innodb_buffer_pool_reads Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_innodb_buffer_pool_reads untypedmysql_global_status_innodb_buffer_pool_reads 138通过以上监控指标以及实际监控的场景我们可以利用PromQL快速建立多个监控项。可以查看两分钟内读取磁盘的增长率的增长率rate(mysql_global_status_innodb_buffer_pool_reads[2m])官方模板ID上面是我们简单列举的一些指标下面我们使用granafa给 MySQLD_Exporter添加监控图表主从主群监控(模板7371)相关mysql 状态监控7362缓冲池状态7365简单的告警规则除了相关模板之外没有告警规则那么我们的监控就是不完美的下面列一下我们的监控告警规则groups:- name: MySQL-rulesrules:- alert: MySQL Statusexpr: up 0for: 5slabels:severity: warningannotations:summary: {{$labels.instance}}: MySQL has stop !!!description: 检测MySQL数据库运行状态- alert: MySQL Slave IO Thread Statusexpr: mysql_slave_status_slave_io_running 0for: 5slabels:severity: warningannotations:summary: {{$labels.instance}}: MySQL Slave IO Thread has stop !!!description: 检测MySQL主从IO线程运行状态- alert: MySQL Slave SQL Thread Statusexpr: mysql_slave_status_slave_sql_running 0for: 5slabels:severity: warningannotations:summary: {{$labels.instance}}: MySQL Slave SQL Thread has stop !!!description: 检测MySQL主从SQL线程运行状态- alert: MySQL Slave Delay Statusexpr: mysql_slave_status_sql_delay 30for: 5slabels:severity: warningannotations:summary: {{$labels.instance}}: MySQL Slave Delay has more than 30s !!!description: 检测MySQL主从延时状态- alert: Mysql_Too_Many_Connectionsexpr: rate(mysql_global_status_threads_connected[5m]) 200for: 2mlabels:severity: warningannotations:summary: {{$labels.instance}}: 连接数过多description: {{$labels.instance}}: 连接数过多请处理 ,(current value is: {{ $value }})- alert: Mysql_Too_Many_slow_queriesexpr: rate(mysql_global_status_slow_queries[5m]) 3for: 2mlabels:severity: warningannotations:summary: {{$labels.instance}}: 慢查询有点多请检查处理description: {{$labels.instance}}: Mysql slow_queries is more than 3 per second ,(current value is: {{ $value }})2、添加规则到prometheusrule_files:- rules/*.yml3、打开web ui我们可以看到规则生效了总结到处监控mysql的相关状态已经完成大家可以根据mysql更多的监控指标去完善自己的监控当然这一套就是我用在线上环境的可以参考参考。
http://www.zqtcl.cn/news/393955/

相关文章:

  • Soho外贸常用网站wordpress下不了插件吗
  • 企业网站建设小技巧有哪些WordPress网站小程序
  • 公司招聘网站续费申请seo编辑是干什么的
  • 58同城泉州网站建设人工投票平台app
  • dede 网站地图 插件网站引导页flash
  • 聊城做网站的公司渠道网站总体结构
  • 北京比较大的网站建设公司wap网站引导页特效
  • 做关于植物的网站即墨网站设计
  • 怎么提升网站收录商品网页制作
  • 做网站建设的平台wordpress5.0发布
  • 站长工具a级查网站域名
  • 免费做网站电话手机开发者模式打开有什么影响
  • 上海免费网站建站模板毕节做网站优化
  • 影响网站建设的关键点手机网站制作app
  • 商务网站建设的流程深圳模板网站建设案例
  • 做中英文网站多少钱方维制网站
  • 做一个信息发布网站要多少钱开发小程序多少钱一个
  • 山东网站设计网站关键词设置技巧
  • 做网站服务怎么赚钱产品展示型的网站功能有哪些
  • 丹东网站制作宁波网站建设公司制作网站
  • 南宁建设工程质量网站九江网站建设九江
  • 永州市住房和城乡建设厅网站服务器可以做几个网站
  • 哪里学网站建设与管理做移动端电影网站
  • 境外企业网站推广大冶市建设局网站
  • 户网站建设的不全.阿里巴巴国际站
  • 定制手机壳的网站能在家做的兼职的网站
  • 温州营销型网站建设郴州网络推广公司
  • asp.net 做网站源代码网站怎么做配置文件夹
  • 网站建设云尚网络wordpress首页flash
  • 北京优化网站宁波网络营销策划公司