当你看数据库的性能,它不仅取决于内部数据库操作的事情也操作系统,网络,存储系统,硬件,等等,如果你构建软件来帮助分析和优化数据库的性能,如raybetapp官方下载
(PMM),您需要访问信息的数据库软件和操作系统级别。操作系统会提供一个接口的最佳可用“硬件”指标,。
一个经典的方法来访问都是安装一些代理每一个监控主机上提raybet雷竞技竞猜在线官网供所需的数据。这种方法的问题是,它可能并不总是可用的。
最常见的用例是数据库即服务(DBaaS)部署,用户不能在数据库主机上运行其他软件。尽管如此,它还可以与数据库团队内部政治和职责分离,谁有兴趣最好的数据库可观测性和不决定哪些软件可以在数据库的主机上运行。它也可能是一个额外的复杂性的问题。
有一个操作系统指标插件为MySQLPGNodeMX插件PostgreSQL,两个最流行的开源数据库,做一个伟大的工作暴露自己格式的最重要指标。
这个方法创建了两个问题;首先,指标暴露于Linux内核的数量总是生长,第二,它甚至可能不是100%兼容不同的Linux发行版之间,那些插件总是需要迎头赶上。你只需要解决的一些信息,或者最有可能。
引入ProcFS UDF
我们正在采取另一种方法ProcFS UDF,一个插件可用雷竞技下载官网Percona服务器MySQL 8在技术预览版(目前)。
而不是写一个插件,可以解析各类ProcFS和SysFS文件(最标准的方式访问系统指标在Linux上),我们有一个插件,只是公开这些文件的内容:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
29日
30.
31日
|
mysql
比;
选择
*
从
INFORMATION_SCHEMA
.PROCFS
在哪里
文件
=
的/ proc /版本
\
G
* * * * * * * * * * * * * * * * * * * * * * * * * * *
1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
文件
:
/proc/版本
内容
:
Linux
版本
5.4.0- - - - - -125年- - - - - -通用的
(
buildd
@
lcy02- - - - - -amd64- - - - - -083年
)
(
海湾合作委员会
版本
9.4.0
(
Ubuntu
9.4.0- - - - - -1 ubuntu1
~
20.04.1
)
)
# 141 - ubuntu SMP结婚2022年8月10 13:42:03 UTC
1
行
在
集
(
0.00
证券交易委员会
)
mysql
比;
选择
*
从
INFORMATION_SCHEMA
.PROCFS
在哪里
文件
=
' / proc / vmstat '
\
G
* * * * * * * * * * * * * * * * * * * * * * * * * * *
1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
文件
:
/proc/vmstat
内容
:
nr_free_pages
9722272
nr_zone_inactive_anon
90年
nr_zone_active_anon
22786408
nr_zone_inactive_file
168228年
nr_zone_active_file
52298年
nr_zone_unevictable
4650年
…
thp_deferred_split_page
0
thp_split_pmd
0
thp_split_pud
0
thp_zero_page_alloc
0
thp_zero_page_alloc_failed
0
thp_swpout
0
thp_swpout_fallback
0
balloon_inflate
0
balloon_deflate
0
balloon_migrate
0
swap_ra
0
swap_ra_hit
0
1
行
在
集
(
0.00
证券交易委员会
)
|
如果你想提取特定值你可以写一个存储功能,这可能是比一群C代码更容易维护。
您可以使用从图书馆专业维护良好代码解析ProcFS格式等GoLang ProcFS包。
这个包是伟大的,因为它可以从ProcFS阅读内容和SysFS安装在任何位置,意味着可以实现ProcFS MySQL包所提供的内容在一个内存中的文件系统和快速和肮脏的合理的开销。
安全
你可能会说哇,这太棒了,但是安全呢?这个插件提供了一个后门阅读我的文件系统上的文件吗?当然不是!
首先,只允许专门文件,其中包括“procfs_files_spec”配置变量是允许的。额外的安全,这不是一个动态变量,所以你不能改变它而不需要重新启动MySQL,它只允许文件名称从“/ proc”和“/ sys”。
撰写本文时的默认配置是这样的:
|
1
2
3
4
|
mysql
>
显示
变量
就像
“procfs_files_spec”
\
G
* * * * * * * * * * * * * * * * * * * * * * * * * * *
1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
Variable_name
:
procfs_files_spec
价值
:
/proc/cpuinfo
;/proc/硬中断请求优先级别/ * / *;/proc/loadavg
;/proc/净/dev
;/proc/净/sockstat
;/proc/净/sockstat_rhe4
;/proc/净/tcpstat
;/proc/自我/净/netstat
;/proc/自我/统计
;/proc/自我/io
;/proc/自我/numa_maps/proc/软中断
;/proc/spl/kstat/zfs/arcstats
;/proc/统计
;/proc/sys/fs/文件- - - - - -nr
;/proc/版本
;/proc/vmstat
|
注意:此外,您可能需要检查你的SELinux / AppArmor对配置,以确保MySQL进程可以访问这些文件。
其次,访问数据产生的插件需要ACCESS_PROCFS动态权限默认甚至“根”用户无法访问这些数据。
使用MySQL的普罗米修斯节点出口国ProcFS插件
正如我提到的,普罗米修斯节点出口国依赖于奇妙的ProcFS图书馆很容易破解使用信息检索通过MySQL ProcFS插件。
在这里是一个原型,由一个美妙的Percona工程师Nickolay Ihalainen。雷竞技下载官网
这样您可以构建并运行:
|
1
2
3
4
5
6
7
8
9
10
|
mkdir
node_exporter
出口
GOPATH=美元
松材线虫病
mkdir
- - - - - -p
本
包裹
src/github
com/普罗米修斯
git
克隆
https
:/ /github
com/ihanick/node_exporter
.
src/github
com/普罗米修斯/node_exporter
cd
src/github
com/普罗米修斯/node_exporter
去
构建
。
mkdir
rootfs/
cd
rootfs/
mkdir
sys
proc
。
。/node_exporter
- - -收集器
.mysqlprocfs=“MYSQLUSER:(电子邮件保护)(MYSQLHOST: 3306)”
- - -路径
.sysfs=“$ PWD / sys”
- - -路径
.procfs=" $ PWD / proc "
|
或者,您可以运行它在一个容器,我们为你预先构建的:
|
1
|
码头工人/podman
运行
- - - - - -p
9100年
:
9100年
- - - - - -d
码头工人
.io/雷竞技下载官网perconalab/node_exporter
:
procfs
- - -收集器
.mysqlprocfs=“MYSQLUSER:(电子邮件保护)(MYSQLHOST: 3306)”
|
的- - -路径.sysfs和- - -路径.procfs图像中已经预先配置的所以你不应该担心。
你可以看到同一个节点出口国统计你习惯了,但来自远程MySQL主机而不是一个本地操作系统!
正如您将查询指标从出口国,您可能会看到一些错误:
|
1
2
3
4
5
6
7
8
|
信息
(
0000年
]
开始
HTTP
服务器
为
http
:/ /:
9100年/指标
。
。
。
源=“server.go: 140”
埃罗
(
0006年
]
错误
:
熵
收集器
失败的
后
0.000033秒
:
也”t
得到
entropy_avail
:
开放
/tmp/rootfs/proc/sys/内核/随机/entropy_avail
:
没有
这样的
文件
或
目录
源=“collector.go: 135”
埃罗
(
0006年
]
错误
:
diskstats
收集器
失败的
后
0.000010秒
:
也”t
得到
diskstats
:
开放
/tmp/rootfs/proc/diskstats
:
没有
这样的
文件
或
目录
源=“collector.go: 135”
埃罗
(
0006年
]
错误
:
netclass
收集器
失败的
后
0.000028秒
:
可以
不
得到
净
类
信息
:
错误
获得
净
类
信息
:
不能
访问
/tmp/rootfs/sys/类/净
dir
开放
/tmp/rootfs/sys/类/净
:
没有
这样的
文件
或
目录
源=“collector.go: 135”
埃罗
(
0006年
]
错误
:
arp
收集器
失败的
后
0.000009秒
:
可以
不
得到
ARP
条目
:
开放
/tmp/rootfs/proc/净/arp
:
没有
这样的
文件
或
目录
源=“collector.go: 135”
埃罗
(
0006年
]
错误
:
文件系统
收集器
失败的
后
0.000013秒
:
开放
/tmp/rootfs/proc/挂载
:
没有
这样的
文件
或
目录
源=“collector.go: 135”
埃罗
(
0006年
]
错误
:
netstat
收集器
失败的
后
0.000025秒
:
也”t
得到
netstat
:
开放
/tmp/rootfs/proc/净/netstat
:
没有
这样的
文件
或
目录
源=“collector.go: 135”
埃罗
(
0006年
]
错误
:
meminfo
收集器
失败的
后
0.000007秒
:
也”t
得到
meminfo
:
开放
/tmp/rootfs/proc/meminfo
:
没有
这样的
文件
或
目录
源=“collector.go: 135”
|
你可以继续添加文件考虑适合ProcFS UDF配置文件:
|
1
2
3
|
猫
/等/mysql/mysql
. conf
.d/procfs
.cnf
(
mysqld
]
procfs_files_spec= /proc/cpuinfo
;/proc/硬中断请求优先级别/ * / *;/proc/loadavg
;/proc/净/dev
;/proc/净/sockstat
;/proc/净/sockstat_rhe4
;/proc/净/tcpstat
;/proc/自我/净/netstat
;/proc/自我/统计
;/proc/自我/io
;/proc/自我/numa_maps/proc/软中断
;/proc/spl/kstat/zfs/arcstats
;/proc/统计
;/proc/sys/fs/文件- - - - - -nr
;/proc/版本
;/proc/vmstat
;/proc/sys/内核/随机/entropy_avail
;/proc/diskstats
;/sys/类/净/ *;/proc/净/arp
;/proc/挂载
;/proc/净/netstat
;/proc/meminfo
;/proc/净/snmp
;
|
下一个步骤
这是一个预览的解决方案,所以你的反馈是非常宝贵的。让我们知道我们在正确的轨道上还是应该以一个完全不同的方式解决这个问题。尝试插件和原型出口国和让我们知道它是如何为你工作
从我们这边,我们正寻求释放更抛光的版本节点从MySQL ProcFS出口国可以获取数据插件无代理监控。raybet雷竞技竞猜在线官网我们将使我们的补丁可用上游的团队,但我不确定他们会结合节点出口国的焦点。这将使该解决方案有用的任何指示板,和任何软件使用普罗米修斯作为数据源节点出口国。
我们也考虑无缝地集成与Percona监视和管理“无代理”如果ProcFS插件是发现和访问,操作系统一起统计数雷竞技下载官网据raybet雷竞技竞猜在线官网将成为可用的数据库数据,不需要行动。
如果这种方法被证明是有用的MySQL,我们希望为PostgreSQL和MongoDB提供相同的功能,以及与社区工作希望将这种方法与其他开源数据库技术Percona目前不支持。雷竞技下载官网
最后,如果这种方法通常是无用的对于许多监视应用程序,我们将倡导云供应商提供这样的插件选择与DBaaS服务。raybet雷竞技竞猜在线官网目前,只能操作系统数据与系统监测,StackDriver, Azure监控,只能支持有限数量的指标和有限的决议,在额外的成本。raybet雷竞技竞猜在线官网
你怎么认为?







我已经为PostgreSQL编码类似:
https://github.com/pierreforstmann/pg_procfs