阿里云RDS监控可以不那么“难看”【实操系列】

2023-11-28 12:38

本文主要是介绍阿里云RDS监控可以不那么“难看”【实操系列】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1. 工具收集阶段
      • 1.1 Prometheus+Grafana环境部署
      • 1.2 阿里云RDS(mysqld)相关监控
      • 1.3 资源监控
        • 1.3.1 重新打包Dockerfile
        • 1.3.2 修改bug配置
        • 1.3.3 启动docker
        • 1.3.4 Grafana配置图
    • 2. 工具组合
      • 2.1 架构图
      • 2.2 supervisor+mysqld_exporter
      • 2.3 prometheus服务发现
      • 2.4 最后一哆嗦
    • 3. 简单效果展示
    • 4. 遗憾

云厂商可以帮助我们解决8-90%的“脏乱臭”的活,方便的不要不要的,当然也是有得有失吧。但个人觉得 RDS监控用起来确实有点不是太方便,自然要想办法改善使用。

Prometheus+Grafana,这套万金流自然首当其冲(有的人喜欢zabbix,都可以,仁者见仁)

1. 工具收集阶段

1.1 Prometheus+Grafana环境部署

此处不做过多赘述,网上文章很多。推荐电子书链接:prometheus-book

1.2 阿里云RDS(mysqld)相关监控

MySQL数据采集工具:mysqld_exporter,此工具也是prometheus官方工具下载地址。
部署也相当简单,创建好采集MySQL数据需要的用户,以及选择需要采集的指标,直接启动即可,如:

export DATA_SOURCE_NAME='user:password@(hostname:3306)/'
./mysqld_exporter <flags>

1.3 资源监控

除了RDS(MySQL)本身的一些监控,还需要关注资源的一些信息。如果是自建IDC,肯定是使用node_exporter。

谁让我们使用的是云产品呢,哎~

幸运的是PingCAP的工程师Aylei写了一套aliyun-exporter,原理是调用阿里云API收集监控数据(可以监控ECS、SLB、Redis、Mongodb、RDS等),以prometheus格式存储,同时非常nice的做了非常漂亮的Grafana图。
但是,由于“年久失修”,在使用的时候遇到不少问题,再加上个人代码能力青铜三段,重写有点难,那就硬修吧。以下是在使用时遇到的问题。

1.3.1 重新打包Dockerfile

原因是,pip3 install aliyun-exporter拉的镜像没有SLB的模块(其实这个根RDS监控没什么关系,另一位同事在搞SLB的监控,顺道都修了),人肉了很久,发现github中最新的代码有这个功能。尴尬~想用也只能自己动手了,替换最新的代码文件info_provider.py,重新打包。脚本如下:

$ cat docker.file
FROM aylei/aliyun-exporter:0.3.0
RUN pip3 install -U aliyun-exporter==0.3.1 PyYAML==5.1.2
RUN pip3 install  aliyun-python-sdk-slb aliyun-python-sdk-dds
COPY info_provider.py /usr/local/lib/python3.7/site-packages/aliyun_exporter/info_provider.py # 注意:作者没有把最新的代码打包进docker中,没办法只能我们先去下载代码,然后替换$ docker build -f docker.file -t aliyun-exporter:0.3.1 .
1.3.2 修改bug配置

这个地方应该是一个bug。
首先说明,aliyun_exporter本身是可以获取所有监控信息,也就是说1.2中的mysqld_exporter完全可以不需要,但是,在实际使用中又发现,如果增加rds_performance的监控项,服务无法启动。所以无奈,对于RDS劲限于做资源监控。

幸运的是有mysqld_exporter作为补充。

1.3.3 启动docker
$ docker run -d  -p 9526:9525  -e "ALIYUN_ACCESS_ID=XXXX" -e "ALIYUN_ACCESS_SECRET=XXXX" -e "ALIYUN_REGION=cn-XXXX"  -v $(pwd)/aliyun-exporter-test.yml:/aliyun-exporter.yml  aliyun-exporter:0.3.1  -p 9525 -c  /aliyun-exporter.yml
1.3.4 Grafana配置图

这部分的大小改动也不少:数据源的配置啊、怎么划分部门啊、加标签啊、Alter怎么解决不能给模版加告警啊 等等等等,就不赘述了。具体问题具体分析吧。

2. 工具组合

2.1 架构图

+----+
|RDS1+---------+
+----+         |        ECS>+----------------------+    +-------------+.             |  mysqld_exporter     |    | Prometheus  |.   +-------->+         +            +---->      +      |.             |  aliyun_exporter     |    |   Grafana   |.            >+----------------------+    +-------------+|
+----+         |
|RDSn+---------+
+----+

如上图,需要一台ECS部署mysqld_exporteraliyun_exporter进行信息采集,再将采集的信息丢给Prometheus

2.2 supervisor+mysqld_exporter

mysqld_exporter裸跑有点慌。所以使用进程管理工具supervisor协助管理。

# 脚本模版
$  cat mysqld_exporter.xxxx.conf
[program:xxxx]
directory = /opt/mysqld_exporter
command = /bin/nohup /opt/mysqld_exporter/mysqld_exporter --web.listen-address=[IP]:[PORT] --collect.global_status --collect.global_variables --collect.slave_status --collect.binlog_size --collect.engine_innodb_status --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.processlist --collect.info_schema.tablestats --collect.perf_schema.eventsstatements --collect.perf_schema.eventswaits --collect.perf_schema.file_events
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /var/log/supervisor/xxxx.log
environment=DATA_SOURCE_NAME='user:password@(hostname:3306)/'

查看服务

$ supervisorctl status
mysql_xxx_01                  RUNNING   pid 13935, uptime 4:15:15
mysql_xxx_02                  RUNNING   pid 14053, uptime 4:15:15
mysql_xxx_03                  RUNNING   pid 13866, uptime 4:15:15
...

2.3 prometheus服务发现

# 主配置文件
$ cat prometheus.yml
...- job_name: 'mysqld_exporter'file_sd_configs:- files:- '/usr/local/prometheus/sd_cfg/mysqld_exporter.yml'refresh_interval: 15s
...# 服务发现配置文件
$ cat /usr/local/prometheus/sd_cfg/mysqld_exporter.yml
- labels:alias : testdepart : "TEST"targets:- [ECS_IP]:[PORT_TEST]- labels:alias : qadepart : "QA"targets:- [ECS_IP]:[PORT_QA]- labels:alias : pro1depart : "PRO"targets:- [ECS_IP]:[PORT_PRO1]- labels:alias : pro2depart : "PRO"targets:- [ECS_IP]:[PORT_PRO2]
...

服务发现好处不言而喻,自动加载新增RDS

2.4 最后一哆嗦

目前已经完成了阿里云RDS所有层面的监控,难道每次新增一套RDS都要人肉一遍这个流程?显然有点二了。

只描述思路,就不贴脚本了:

  1. 通过阿里云API,获取所有RDS信息;
  2. 根据获取的信息为每个RDS生成mysqld_exporter启动脚本,并通过supervisor控制自启动;
  3. 根据获取的信息更新sd_cfg/mysqld_exporter.yml,实现服务自发现;
  4. 最后,计划任务定期去扫阿里云API,判断是否有新的RDS创建/删除

至此,再也不用人肉去加监控了,脚本不死,一切自动。

3. 简单效果展示

Alien_exporter采集的数据
看板

Detail的数据源是两部分

  • 资源监控
    在这里插入图片描述

  • mysql监控
    在这里插入图片描述
    在这里插入图片描述

4. 遗憾

一个mysqld_exporter进程只能监控一个RDS实例,所以N多RDS实例,就要对应启动N个mysqld_exporter,同时要分配N个不同端口(后续可以通过修改mysqld_exporter源码优化只启动一个mysqld_exporter服务)

水平有限,一个监控搞的那么碎,东拼西凑的,如哪位大佬有更优的解决方案求指导。

另外,调用阿里云API每个月是有上限的,超出要付费的,还好一个月50块钱的足够用。

另外,会有API获取不到数据的情况。出现断图也是很常见,但mysqld_exporter还是很ok的。

在这里插入图片描述

这篇关于阿里云RDS监控可以不那么“难看”【实操系列】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/429703

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma