首页 > 数据库 >Prometheus+Grafana监控Mysql数据库

Prometheus+Grafana监控Mysql数据库

时间:2024-08-22 11:07:17浏览次数:10  
标签:bin exporter prometheus Grafana Prometheus systemctl mysqld usr Mysql

安装配置

Prometheus是Go语言编写的,所以仅依赖二进制编译库,从官网根据操作系统下载对应的二进制库:https://prometheus.io/download/
解压到/usr/local/prometheus目录下

tar -xzvf prometheus-2.45.2.linux-amd64.tar.gz
mv prometheus-2.45.2.linux-amd64 /usr/local/prometheus

其中prometheus.yml是其配置文件,其内容如下所示

# 全局配置
global:
  scrape_interval: 15s # 设置采集信息的间隔,默认一分钟
  evaluation_interval: 15s # 设置评估数据的间隔,默认一分钟
  # scrape_timeout 采集超时时间默认10s.

# 报警设置
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# 规则文件,一次性加载后间隔固定时间会对监测数据进行评估
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# 设置采集数据的来源
scrape_configs:
  # 定义采集任务的名字
  - job_name: "prometheus"

		# 定义数据来源,由于prometheus自己会在9090端口暴露自己的监测数据,因此可以通过如下路径采集自身监测数据
		# 默认采用http协议,数据路径参数metrics_path默认为'/metrics',因此可以从http://localhost:9090/metrics得到监测数据
    static_configs:
      - targets: ["localhost:9090"]

添加系统prometheus服务,在启动命令中指定配置文件和数据目录

vim /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus/prometheus \
    --config.file /usr/local/bin/prometheus/prometheus.yml \
    --storage.tsdb.path /usr/local/bin/prometheus/data

[Install]
WantedBy=multi-user.target

指定使用上述配置文件启动应用

# 添加用户
useradd --no-create-home --shell /bin/false prometheus
# 为用户赋予文件夹权限
chown -R prometheus:prometheus /usr/local/bin/prometheus

# 重新加载system服务
systemctl daemon-reload
# 设置开机启动
systemctl enable prometheus.service
# 启动
systemctl start prometheus
# 查看状态
systemctl status prometheus

通过http://localhost:9090端口可以看到prometheus的管理页面

Grafana

Grafana: https://grafana.com/

Grafana是一个跨平台的开源的度量分析和可视化工具,支持从多种数据源(如prometheus)获取数据进行可视化数据展示。

下载页面:https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1

CentOS可以通过yum命令直接安装

sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.3-1.x86_64.rpm

默认安装在/usr/share/grafana目录下

配置

配置文件在/etc/grafana/grafana.ini ,其中服务的协议、域名、端口的配置如下

#################################### Server ####################################
[server]
# Protocol (http, https, h2, socket)
protocol = http

# This is the minimum TLS version allowed. By default, this value is empty. Accepted values are: TLS1.2, TLS1.3. If nothing is set TLS1.2 would be taken
;min_tls_version = ""

# The ip address to bind to, empty will bind to all interfaces
;http_addr =

# The http port  to use
http_port = 3000

# The public facing domain name used to access grafana from a browser
domain = localhost

# Redirect to correct domain if host header does not match domain
# Prevents DNS rebinding attacks
;enforce_domain = false

# The full public facing url you use in browser, used for redirects and emails
# If you use reverse proxy and sub path specify full url (with sub path)
root_url = %(protocol)s://%(domain)s:%(http_port)s/

启动

通过如下命令启动Grafana

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server

之后访问上面配置的3000端口就可以看到Grafana页面,第一次登陆默认用户名和密码都是admin

监控mysql

为mysql数据库创建一个exporter账户

# 切换到自带的权限管理数据库
use mysql; 
# 创建work帐号,同时设置密码   
CREATE USER 'exporter'@'%' IDENTIFIED BY 'Exporter1234!';
# 分配权限
grant SELECT,UPDATE,INSERT,DELETE on *.* To 'exporter'@'%';
# 刷新使配置生效
flush privileges;

从prometheus官网下载mysqld_exporter,之后解压并启动即可

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz

tar xvzf mysqld_exporter-0.15.1.linux-amd64.tar.gz 
mv mysqld_exporter-0.15.1.linux-amd64 /usr/local/bin/mysqld_exporter

在当前目录下编辑配置文件.my-exporter.cnf

[client]
user=exporter
password=Exporter1234!
host=localhost
port=3306

根据配置文件启动mysqld_exporter,并将数据暴露到9104端口,并且通过参数指定暴露的数据

./mysqld_exporter --web.listen-address=localhost:9104 --config.my-cnf=/usr/bin/mysqld_exporter/.my-exporter.cnf

也可以注册到系统服务,

vim /etc/systemd/system/mysqld_exporter.service

[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
User=mysqld_exporter
ExecStart=/usr/local/bin/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/bin/mysqld_exporter/.my-exporter.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target

以服务的方式进行启动管理

# 添加用户
useradd --no-create-home --shell /bin/false mysqld_exporter
# 为用户赋予文件夹权限
chown -R mysqld_exporter:mysqld_exporter /usr/local/bin/mysqld_exporter

# 重新加载系统配置
systemctl daemon-reload
# 开机启动
systemctl enable mysqld_exporter.service
# 启动服务
systemctl start mysqld_exporter
# 查看状态
systemctl status mysqld_exporter

看到mysqld_exporter启动成功,默认在9104端口,通过http://localhost:9104/metrics可以看到采集到的数据
修改prometheus配置文件信息并重启prometheus

scrape_configs:
  # 添加作业并命名
  - job_name: 'mysql'
    # 静态添加node
    static_configs:
    # 指定监控端
    - targets: ['47.98.138.176:9104']

在Grafana创建Dashboard可视化地观测数据,这里可以选择监控模版来显示mysql的关键指标,模版ID为7362
image

标签:bin,exporter,prometheus,Grafana,Prometheus,systemctl,mysqld,usr,Mysql
From: https://www.cnblogs.com/wanxun/p/18373388

相关文章

  • 深入探索分布式任务调度框架:MySQL实现高效锁机制
    本文主要介绍项目中怎么使用MySQL实现分布式锁的背景假如我们现在要做一个高性能、可扩展的分布式任务调度框架,要怎么设计呢?下面是我之前自己设计的一个架构图。为了方便后续的分布式锁的设计,我们大致描述下各个角色都做了哪些事情(这不是本篇文章的重点)scheduler-c......
  • Mysql锁查看
    查看InnoDB的锁情况SHOWENGINEINNODBSTATUS;命令会返回一个包含详细InnoDB引擎状态的报告,其中包含当前锁的详细信息。在输出的LATESTDETECTEDDEADLOCK部分找到死锁信息,并在TRANSACTIONS部分找到当前的锁等待信息。查看MyISAM锁情况--方法一:查看表锁SHOWOPEN......
  • Mac导出Mysql千万级表数据
    MysqlDumpmysqldump-h[服务器地址]-u[用户名]-p[密码]--single-transaction--quick[数据库名][表名]>[导出文件.sql]•--single-transaction保证了数据的一致性,并且不会在导出期间锁定表(只针对InnoDB有效)。•--quick选项进一步减少了内存使用,因为它逐行导出数......
  • Windows-安装MySQL数据库
    mysql安装:11.将zip包解压到指定目录,例如:D:\tools\mysql-8.0.18-winx64注:不放到C硬盘,win10系统权限不够会报错,麻烦2.复制改变my.ini文件放在目录:D:\tools\mysql-8.0.18-winx64\bin,并添加相关配置(给的文件中配置内容已经都有了)注1:my.ini配置文件里面非注释语句不要有“”双引......
  • 京东面试:mysql分库分表,深度翻页太慢,如何解决
    京东面试:mysql分库分表,深度翻页太慢,如何解决?在40岁老架构师尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein希音、shopee、百度、网易的面试资格,遇到很多很重要的面试题:mysql分库分表,深度翻页太慢,如何解决?分库分表后,分页......
  • MySQL基本数据类型
    MySQL数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以......
  • 银河麒麟系统V10(arm版)安装Mysql-5.7.29说明
    #银河麒麟系统适配#随着2024年微软全球蓝屏丑闻的出现,系统安全越来越重要。目前很多企业开始尝试国产化操作系统上,本文介绍如何在国产化银河麒麟系统V10(arm)版上安装mysql。本资源使用的是arm版本的Mysql-5.7.29离线安装包,能够在arm版国产化银河麒麟系统上进行安装,并配置防火......
  • MySQL 源码|51 - 语法解析:高级表达式
    目录文档:MySQL源码|源码剖析文档目录源码位置(版本=MySQL8.0.37):sql/sql_yacc.yy前置文档:MySQL源码|50-语法解析:基础表达式(simple_expr)在梳理了基础表达式simple_expr之后,我们就可以梳理更高级的表达式了。高级表达式的相关关系如下图所示:其中绿色节点为本章节梳......
  • 数据库MySQL之事务、索引
    目录1.概述2.事务3.索引3.1索引结构3.2操作语法1.概述场景:假如我们需要解散教学部,那么该部门下的所有员工都需要删除。如果教学部成功删除了,但员工出于某些原因(比如SQL语句写错了等)并没有删除,此时就会出现数据不一致的问题。这时我们可以通过数据库中的事务来解决。......
  • MySQL 源码|50 - 语法解析:基础表达式(simple_expr)
    目录文档:MySQL源码|源码剖析文档目录源码位置(版本=MySQL8.0.37):sql/sql_yacc.yy前置文档:MySQL源码|37-语法解析:聚集函数MySQL源码|38-语法解析:窗口函数MySQL源码|43-语法解析:关键字函数MySQL源码|44-语法解析:非关键字函数MySQL源码|45-语法解析:通用函数MySQL......