”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在Kubernetes上搭建MySQL并使用Prometheus和Grafana监控

在Kubernetes上搭建MySQL并使用Prometheus和Grafana监控

发布于2025-04-16
浏览:748

在本教程中,我们将详细介绍如何在Kubernetes(K8S)群集上设置MySQL,并集成Prometheus和Grafana进行监视。我们将使用MySQL,Prometheus和Grafana的Bitnami Helm图表,并向您展示如何创建自定义的Grafana仪表板来监视MySQL。

1。为您的实验室创建一个名称空间

首先,创建一个kubernetes名称空间,您将在其中部署mySQL并监视组件。


要验证命名空间的创建,运行:
kubectl create namespace my-lab

kubectl获取名称空间

这应该将my-lab列为群集中的名称空间之一。
kubectl get namespaces

我们将使用Bitnami Helm图表在my-Lab名称空间中安装MySQL。如果您尚未添加Bitnami图表存储库,请使用以下命令进行操作:

现在,使用此命令安装mySQL:

helm repo add bitnami https://charts.bitnami.com/bitnami
检查状态并确保MySQL运行,使用:


helm upgrade --install mysql bitnami/mysql --namespace my-lab

要连接到MySQL,首先,您需要从Kubernetes Secrets检索MySQL密码。使用此命令获取秘密:

helm repo add bitnami https://charts.bitnami.com/bitnami
然后解码mysql-root-password和mysql-password如下:


您可以使用base64解码密码:

kubectl get secret -n my-lab

现在,使用kubectl exec访问mySQL POD:

kubectl get secret/mysql -oyaml -n my-lab

一旦在吊舱内,请使用root密码连接到mySQL:

echo  | base64 -d

在提示时输入解码的root密码。

创建一个数据库和一些表
kubectl get secret -n my-lab
一旦在mysql中,创建一个数据库和一些表格以监视:


创建数据库my_db_1; 使用my_db_1; 创建表my_table_1(a varchar(100)); 创建表My_table_2(varchar(100)); 创建表my_table_3(varchar(100)); 插入my_table_1 values('一个'); 插入my_table_1 values('一对一'); 从my_table_1中选择 *;
helm repo add bitnami https://charts.bitnami.com/bitnami
3。安装Prometheus和Grafana

接下来,我们将安装Prometheus和Grafana监视MySQL。

安装Prometheus和Grafana

首先,添加Prometheus社区头盔图表:

helm repo add bitnami https://charts.bitnami.com/bitnami
创建一个grafana名称空间:

kubectl创建NS Grafana

现在,使用头盔安装Prometheus-Grafana堆栈:


您可以通过检查POD来验证安装:
kubectl create namespace my-lab

kubectl获取豆荚-N grafana

用LoadBalancer
kubectl create ns grafana
要从Kubernetes群集外访问MySQL,我们需要使用LoadBalancer公开MySQL服务。编辑MySQL服务:


helm upgrade --install grafana prometheus-community/kube-prometheus-stack --namespace grafana


规格: 类型:LoadBalancer

kubectl get pods -n grafana

如果您使用的是Minikube,则可能需要运行Minikube隧道以外部公开服务:

kubectl edit svc/mysql -n my-lab
[2

现在,使用分配的IP访问MySQL:

[2
helm repo add bitnami https://charts.bitnami.com/bitnami
4。安装Prometheus mysql出口商


我们需要安装MySQL导出器来收集MySQL指标,并将其展示为Prometheus刮擦。

kubectl get svc -n my-lab

创建一个文件mysql-exporter-values.yaml,并使用您的mySQL连接详细信息:

minikube tunnel

现在,使用Helm安装MySQL出口商:Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring


Port-Forward Prometheus mysql Exporter

mysql -h  -u root -p

kubectl Port-Forward SVC/mysql-Exporter-prometheus-mysql-exporter 9104 -N my-Lab

通过访问http:// localhost:9104/metrics。 [2

5。将Grafana连接到Prometheus

现在设置了Prometheus和MySQL Exporter,让我们将Grafana连接到Prometheus。

port-forward grafana

要访问grafana仪表板,运行以下port-forward命令:
kubectl create namespace my-lab

kubectl Port -Forward SVC/Grafana 3000:80 -N Grafana

这将使Grafana在http:// localhost:3000上可以访问。默认登录凭据是:
kubectl get secret -n my-lab
用户名:admin

密码:Prom-Operator

[2

一旦登录,将Prometheus添加为Grafana中的数据源:

转到配置>数据源。
kubectl port-forward svc/mysql-exporter-prometheus-mysql-exporter 9104 -n my-lab
6。导入Grafana仪表板

要监视mysql,我们可以从Grafana的仪表板存储库中导入预配置的仪表板。

导入仪表板Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

转到仪表板>导入并输入以下仪表板IDS:

仪表板ID 14057(mysql概述)

仪表板ID 7362(mysql performance)

这些仪表板将自动加载并显示相关的MySQL指标,例如连接,查询和资源利用率。 [2

7。结论


您现在可以使用Grafana仪表板实时监视您的MySQL实例。

kubectl port-forward svc/grafana 3000:80 -n grafana

Prometheus用于使用MySQL Exporter从MySQL刮擦指标。

您可以使用LoadBalancer服务在外部访问MySQL。

在此设置中,您可以在Kubernetes上轻松地扩展和监视您的数据库基础结构。

Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

版本声明 本文转载于:https://dev.to/dm8ry/setting-up-mysql-on-kubernetes-with-prometheus-grafana-monitoring-3jd3?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-05-03
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-05-03
  • 图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    在chrome 在使用Chrome and IE9中的图像时遇到的一个频繁的问题是围绕图像的持续薄薄边框,尽管指定了图像,尽管指定了;和“边境:无;”在CSS中。要解决此问题,请考虑以下方法: Chrome具有忽略“ border:none; none;”的已知错误,风格。要解决此问题,请使用以下...
    编程 发布于2025-05-03
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-05-03
  • 在Python中如何创建动态变量?
    在Python中如何创建动态变量?
    在Python 中,动态创建变量的功能可以是一种强大的工具,尤其是在使用复杂的数据结构或算法时,Dynamic Variable Creation的动态变量创建。 Python提供了几种创造性的方法来实现这一目标。利用dictionaries 一种有效的方法是利用字典。字典允许您动态创建密钥并分...
    编程 发布于2025-05-03
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-05-03
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-05-03
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-05-03
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-05-03
  • Java数组中元素位置查找技巧
    Java数组中元素位置查找技巧
    在Java数组中检索元素的位置 利用Java的反射API将数组转换为列表中,允许您使用indexof方法。 (primitives)(链接到Mishax的解决方案) 用于排序阵列的数组此方法此方法返回元素的索引,如果发现了元素的索引,或一个负值,指示应放置元素的插入点。
    编程 发布于2025-05-03
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-05-03
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-05-03
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-05-03
  • 在Go语言中如何简洁定义10的幂常量
    在Go语言中如何简洁定义10的幂常量
    在GO 利用浮点线文字一种简洁的方式是使用浮点文字,该方法是使用floingpoint protals。写作1E3比写作1000更有效。这是一个示例(67个没有空间的字符):的文字用于未构图的整数常数,我们可以将1000用于KB,并用KB将随后的常量乘以KB,如下所示(77个没有空格的字符):,作...
    编程 发布于2025-05-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3