Prometheus监控MySQL使⽤grafana展⽰
⽬录
prometheus通过exporter监控mysql,并⽤grafana图表展⽰
1、测试机器
2、配置mysqlhost01
3、创建exporter帐号
4、下载,安装mysqld_exporter
4.1编辑⽂件输⼊密码
4.2添加启动服务⽂件
4.3启动mysqld_exporter
4.4测试验证
5、下载,安装node_exporter
5.1添加启动服务⽂件
5.2启动node_exporter
5.3测试验证
mysql下载下来没安装包6、安装prometheus+grafana
6.1安装
6.2解压并添加软链接
6.3增加启动服务
6.4添加mysql监控
6.5启动prometheus
6.7查看prometheus
7、下载,安装grafana
7.1访问grafana
7.2导⼊mysql监控模板
7.3启动sysbench压测⼯具
prometheus通过exporter监控mysql,并⽤grafana图表展⽰
概述:
prometheus是由SoundCloud开发的开源监控告警系统并且⾃带时序数据库,基于Go语⾔。Prometheus根据配置的任务(job)以周期性pull的⽅式获取指定⽬标(target)上的指标(metric)。
Prometheus ⽣态圈中包含了多个组件:
Prometheus Server: 根据配置完成数据采集,服务发现以及数据存储。
Push Gateway : 为应对部分push场景提供的插件,监控数据先推送到 Push Gateway 上,然后再由 Prometheus Server 端采集 pull 。⽤于存在时间较短,可能在 Prometheus 来 pull 之前就消失了的 jo
bs (若 Prometheus Server 采集间隔期间,Push Gateway 上的数据没有变化, Prometheus Server 将采集到2次相同的数据,仅时间戳不同)
Exporters(探针): 是Prometheus的⼀类数据采集组件的总称。它负责从⽬标处搜集数据,并将其转化为Prometheus⽀持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,⽽是等待中央服务器主动前来抓取。
Alertmanager: Prometheus server 主要负责根据基于PromQL的告警规则分析数据,如果满⾜PromQL定义的规则,则会产⽣⼀条告警,并发送告警信息到Alertmanager,Alertmanager则是根据配置处理告警信息并发送。常见的接收⽅式有:电⼦邮件,webhook 等。Alertmanager三种处理告警信息的⽅式:分组,抑制,静默。
接下来开始演⽰
1、测试机器
prometheus-server 192.168.56.140
MySQL host01 192.168.56.103
MySQL host02 192.168.56.104
2、配置mysql host01
MySQL使⽤版本:
8.0.25 MySQL Community Server
3、创建exporter帐号
mysqld_exporter通过查询mysql的状态表及状态命令获取数据。所以,需要先在mysql内,创建相应帐号
create user 'exporter'@'%' identified by 'Xiaopang*803';
GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'exporter'@'%';
GRANT SELECT ON performance_schema.* TO 'exporter'@'%';
flush privileges;
4、下载,安装mysqld_exporter
4.1 编辑⽂件输⼊密码
编缉如下⽂件,输⼊exporter⽤户句与密码(与前⾯mysql内创建的帐号密码⼀致)
[root@host01 mysqld_exporter]# vi .myf
[client]
user=exporter
password=Xiaopang*803
4.2 添加启动服务⽂件
[root@host01 ~]# vi /etc/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter ---cnf=/usr/local/mysqld_exporter/.myf
Restart=on-failure
[Install]
WantedBy=multi-user.target
4.3 启动mysqld_exporter
service mysqld_exporter start
4.4 测试验证
mysqld_exporter默认使⽤9104端⼝,我们可以在浏览器内输⼊如下地址。查看是否有数据输出。
输出信息类似如下:
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 2.5395e-05
go_gc_duration_seconds{quantile="0.25"} 3.5372e-05
go_gc_duration_seconds{quantile="0.5"} 3.9393e-05
go_gc_duration_seconds{quantile="0.75"} 5.5068e-05
go_gc_duration_seconds{quantile="1"} 0.062537624
go_gc_duration_seconds_sum 0.453204071
go_gc_duration_seconds_count 2131
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
5、下载,安装node_exporter
如果只安装mysqld_exporter则⽆法监控OS相关的数据,所以需要安装node_exporter进⾏OS监控。wget github/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.
tar xvzf node_exporter-1.2.2. -C /usr/local/.
cd /usr/local && ln -s node_exporter-1.2.2.linux-amd64/ node_exporter
5.1 添加启动服务⽂件
[root@host01 ~]# vi /etc/systemd/system/node_exporter.service
[Unit]
Description=node_export
Documentation=github/prometheus/node_exporter
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
5.2 启动node_exporter
service node_exporter start
5.3 测试验证
node_exporter默认使⽤9100端⼝,我们可以在浏览器内输⼊如下地址。查看是否有数据输出。
输出结果类似如下:
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 2.5934e-05
go_gc_duration_seconds{quantile="0.25"} 4.0072e-05
go_gc_duration_seconds{quantile="0.5"} 4.7616e-05
go_gc_duration_seconds{quantile="0.75"} 6.726e-05
go_gc_duration_seconds{quantile="1"} 0.228887598
go_gc_duration_seconds_sum 0.550266258
go_gc_duration_seconds_count 793
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
6、安装prometheus+grafana
使⽤版本:
prometheus 2.28
grafana 6.7.6
6.1 安装
下载软件包
wget github/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.
6.2 解压并添加软链接
tar xvzf prometheus-2.28.1. -C /usr/local/.
cd /usr/local/
ln -s prometheus-2.28.1.linux-amd64/ prometheus
6.3 增加启动服务
[root@prometheus-server prometheus]# vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/prometheus/prometheus \
-
-config.file=/usr/local/l \
--storage.tsdb.path="data/" \
--ion.time=15d \
--web.max-connections=512 \
--web.listen-address=:9090
6.4 添加mysql监控
vi /usr/local/l
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'mysql'
static_configs:
-
targets: ['192.168.56.103:9104']
labels:
instance: mysql_instance1
- job_name: 'linux'
static_configs:
- targets: ['192.168.56.103:9100']
labels:
instance: mysql_instance1
6.5 启动prometheus
service prometheus start
6.7 查看prometheus
prometheus默认监控端⼝
点击status->target。如果⼀切正常,可以看到如下mysql/linux的state为UP
7、下载,安装grafana
rpm -ivh grafana-6.7.6-1.x86_64.rpm
7.1 访问grafana
prometheus的展⽰功能很弱,为了更好的进⾏图形展⽰,所以我们需要grafana
配置data source为proemtheus的HTTP链接(注意是HTTP,⽽不是HTTPS)
7.2导⼊mysql监控模板
grafana数据的展⽰是通过模板实现的。grafana⽹站上⾯有很多共享的模板,你可以⾃⾏探索。
本例模板,我是从如下链接下载的。
版本不匹配问题
因为版本不太匹配的原因,完成后有些项⽬如法正常显⽰。它使⽤的版本是grafana5.0版本,我的是6.x版本。
但是这点⼩问题,难不倒我,我⾃⼰修改了⼀下。就能正常显⽰了,如下是修改后的JSON⽂件。
修改过程
很多时候,很多东西并不完全能拿来即⽤。我们需要根据⾃⼰的需要进⾏⼀些修改。
接下来⼤概花了半个多⼩时,弄清楚了如何修改了。⽽后⼤概⼜花了两⼩时,修改完成的相应的项⽬。
修改过程中,碰到的问题,主要就两类:
1)grafana 5.x和6.x组件的名称发⽣了变化。
"Buffer Pool Size of Total RAM"⽆法正常显⽰,原因是6.0和5.0组件名不同。
替换 pmm-singlestat-panel -> singlestat搞定
2)exporter提取的属性名字发⽣了变化
我⽤的是node_exporter-1.2.2,这⾥⾯关于OS提取的属性与JSON⽂件的定义属性名不匹配。
例如:
替换 node_memory_MemTotal->node_memory_MemTotal_bytes
替换 node_memory_MemTotal->node_memory_MemTotal_bytes
进⾏导⼊
因为我进⾏了⼀些修改,你可以import的时候,直接把JSON的内容输⼊进去。
点击Load加载,接下来,选择数据源为prometheus。
7.3 启动sysbench压测⼯具
开启sysbench⼯具的⽬的是通过压测⽣成有数据变化的图表(不然,没有流量,数据也不会动)。
这⾥,我从远端压测(在另⼀台机器host02上运⾏sysbench)。⽬的是为了⽣成⽹络流量数据。
[root@host02 ~]# sysbench /usr/share/sysbench/oltp_read_write.lua --time=9180 --mysql-host=host0
1 --mysql-port=3306 --mysql-user=dbusr --mysql-password=Xiaopang*803 --mysql-db=db1 --table-size=50000 --tables=15 --threads=15 --report-interval=10 run sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 15
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing
Threads started!
[ 10s ] thds: 15 tps: 112.68 qps: 2268.92 (r/w/o: 1589.76/452.30/226.85) lat (ms,95%): 277.21 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 15 tps: 113.91 qps: 2282.81 (r/w/o: 1598.47/456.52/227.81) lat (ms,95%): 211.60 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 15 tps: 109.80 qps: 2192.95 (r/w/o: 1536.66/436.69/219.59) lat (ms,95%): 240.02 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 15 tps: 112.70 qps: 2265.36 (r/w/o: 1583.17/456.79/225.40) lat (ms,95%): 193.38 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 15 tps: 101.00 qps: 2013.42 (r/w/o: 1413.32/398.10/202.00) lat (ms,95%): 325.98 err/s: 0.00 reconn/s: 0.00
7.4查看grafana,完成后效果
这⾥只贴出了部分图表。
到此这篇关于Prometheus MySQL监控使⽤grafana展⽰的⽂章就介绍到这了,更多相关 MySQL grafana内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论