mysql&node监控
1.监控简介
1.通过服务或者脚本对某⼀指标进⾏分析,并对指标进⾏留存,⽅便故障回溯,分析,性能优化等等 2.⽬的 # 对系统不间断监控:采集指标 # 实时反馈系统状态:分析指标,得出结论 # 保证服务可靠安全:保证服务安全,⽐如mysql服务稳定运⾏ # 保证业务稳定运⾏:报警及故障处理,业务访问数据库稳定 3.监控⽅法 # 确定监控对象 # 定义性能基准指标 # 定义报警阈值 # 故障处理 4.核⼼ # 定位 发现 解决 复盘 5.分类 # 开源⼯具监控(通⽤组合) zabbix+mysql+grafana promethus+influxdb+grafana 第三⽅公司监控:听云等
2.监控指标
1.服务器运⾏状态 # CPU # 内存 # IO # ⽹卡 # TCP
2.MySQL主要监控指标 # QPS和TPS # InnoDB状态 # mysql连接 # # 总连接,活跃连接 # Lick - slowsql # 主从监控 3.监控⼯具选择 # zabbix:Percona有官⽅监控模板 # Prometheus(个⼈推荐) + grafana + 官⽅有mysqld_exporter
4.指标来源 # show global status # performance_schema # information_schame
3.部署&启动
1.安装&启动prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.35.0/prometheus-2.35.0.linux-amd64.tar.gz 启动prometheus nohup /data/monitor/prometheus/prometheus --storage.tsdb.retention=30d --web.listen-address=0.0.0.0:9090 --web.enable-admin-api --log.format=json --web.enable-lifecycle --config.file=/data/monitor/prometheus/prometheus.yml 2>/data/monitor/prometheus/prometheus.log & --storage.tsdb.retention=30 # 只保留30天的数据 --web.enable-admin-api # 控制对admin HTTP API的访问,其中包括删除时间序列等功能 --web.enable-lifecycle # 支持热更新,直接执行localhost:9090/-/reload立即生效 查看服务状态 http://172.29.64.41:9090/targets pro重新加载配置 curl -X POST http://172.29.64.41:9090/-/reload curl -X POST -g 'http://172.29.64.41:9090/api/v1/admin/tsdb/delete_series?match[]={instance="10.244.2.158:9090"}' # 删除instance=''的数据 curl -X POST -g 'http://172.29.64.41:9090/api/v1/admin/tsdb/delete_series?match[]={job="172.29.64.42-5306"}' # 删除job=''的数据 curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={__name__=~".+"}' # 删除全部数据 # 不过需要注意的是上面的 API 调用并不会立即删除数据,实际数据任然还存在磁盘上,会在后面进行数据清理。 https://my.oschina.net/54188zz/blog/3070563 # prometheus中监控参数修改 2.安装&启动node_exporter # node_exporter 帮助文档 https://github.com/prometheus/node_exporter # 默认端口9100 wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz nohup /data/monitor/node_exporter/node_exporter --log.level=error 2>/data/monitor/node_exporter/error.log & nohup /data/soft/node_exporter/node_exporter --web.config=web-config.yml 2>/data/soft/node_exporter/node_exporter.log & # 已配置文件方式启动 添加到prometheus # 需要重新启动prometheus或者reload - job_name: node-172.29.64.41 static_configs: - targets: ['172.29.64.41:9100'] # 需要写ip地址,不要写domain curl http://172.29.64.41:9100/metrics 3.安装&启动mysqld_exporter # mysqld_exporter帮助文档 https://github.com/prometheus/mysqld_exporter # 默认端口9104 # 注意: # mysqld_exporter可以监控一台主机上的多个mysql实例,通过配置文件名称和port来区分多个服务器上的mysql实例 # 创建监控用户 # create user root@'%' identified by 'root@123'; # 监控用户权限为:GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO root@'%'; wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz 1.创建配置文件 vim /data/soft/mysqld_exporter/conf/mysql-5306.cnf [client] host=172.29.64.41 user=root password=root@123 port=5306 2.启动mysqld_exporter nohup /data/monitor/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/monitor/mysqld_exporter/conf/5306.cnf --web.listen-address=:9104 2>/data/monitor/mysqld_exporter/mysqld_exporter.log & 3.验证 curl http://101.43.2.244:9104/metrics |grep -v "^#" 4.添加到prometheus # 需要重新启动prometheus或者reload - job_name: 'mysql' static_configs: - targets: ['172.29.64.41:9104'] curl http://172.29.64.41:9004/metrics 4.安装grafana wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.2.linux-amd64.tar.gz # 默认端口3000 nohup /data/monitor/grafana/bin/grafana-server 2>/data/monitor/grafana/grafana.log & # 打开grafana验证,admin/admin/ http://172.29.64.41:3000 # grafana中的模板地址 https://grafana.com/grafana/dashboards/ # mysql监控模板 https://grafana.com/grafana/dashboards/7371 # 主从监控 https://grafana.com/grafana/dashboards/7362 # Overview监控 https://grafana.com/grafana/dashboards/7365 # InnoDB监控 # node监控模板 https://grafana.com/grafana/dashboards/12633 https://grafana.com/grafana/dashboards/11074 https://grafana.com/grafana/dashboards/16098 # 基于consul node监控 # https://github.com/starsliao/ConsulManager # https://grafana.com/dashboards/8919
5.配置报警规则
在prometheus的配置文件中的rules标签,添加如下内容
rule_files:
- /data/monitor/prometheus/rules/*.yml # alert规则配置文件,然后重启prometheus。
prometheus配合alertmanager这个组件报警,报警规则需要手动编写,这需要对prometheus+alertmanager有一定的了解,grafana配合SaaS模式的云告警平台onealert报警,onealert也是需要时间熟悉的
其他选项
https://blog.csdn.net/aixiaoyang168/article/details/103022342
https://www.cnblogs.com/zqj-blog/p/12205063.html
https://awesome-prometheus-alerts.grep.to/rules#mysql # MySQL报警规则
https://blog.csdn.net/weixin_29057619/article/details/113185371 # prometheus + alertmanager + 企业微信报警
4.node_export使用systemctl来管理
touch /usr/lib/systemd/system/node_exporter.service vim /usr/lib/systemd/system/node_exporter.service [Unit] Description=node_exporter After=network.target [Service] Type=simple User=root ExecStart=/data/monitor/node_exporter/node_exporter --log.level=error Restart=on-failure [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl enable node_exporter.service systemctl start/stop/status node_exporter.service
pass
上帝说要有光,于是便有了光;上帝说要有女人,于是便有了女人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?