节后开工,打开熟悉的页面,发现PMM在6月25日偷偷发布了一个新版本。
偷窥一眼更新内容令人泪崩,作为PMM2的老大难问题--远程节点只能加不能删 的问题,终于解决了。
关于这个删除问题的诟病,在社区中吐槽已久,终于在5月16日,大佬立下了flag,这一个多月还真就搞好了,大爷终究还是大爷。
那今天就主要探讨下PMM中几种常见的节点删除方法。
在安装PMM-client的服务器上,节点的删除,可以通过remove命令来实现
pmm-admin remove [<flags>] <service-type> <service-name># 例: pmm-admin remove mongodb address=127.0.0.1:27017/admin要注意在PMM1 和 2版本中命令是有些不同的,具体要看下手册。
对于一些无法安装client的环境,如RDS,我们一般通过remote方式监控。这种实际上是在PMM Server上启动不同的exporter和端口,来充当client监控远端数据库。
[root@d82370aaccdb opt]# ps -ef|grep export root 137 37 0 Jun01 ? 00:00:43 /usr/local/percona/pmm2/exporters/node_exporter --collector.bonding --collector.buddyinfo --collector.cpu --collector.diskstats --collector.entropy --collector.filefd --collector.filesystem --collector.hwmon --collector.loadavg --collector.meminfo --collector.meminfo_numa --collector.netdev --collector.netstat --collector.netstat.fields=^(.*_(InErrors|InErrs|InCsumErrors)|Tcp_(ActiveOpens|PassiveOpens|RetransSegs|CurrEstab|AttemptFails|OutSegs|InSegs|EstabResets|OutRsts|OutSegs)|Tcp_Rto(Algorithm|Min|Max)|Udp_(RcvbufErrors|SndbufErrors)|Udp(6?|Lite6?)_(InDatagrams|OutDatagrams|RcvbufErrors|SndbufErrors|NoPorts)|Icmp6?_(OutEchoReps|OutEchos|InEchos|InEchoReps|InAddrMaskReps|InAddrMasks|OutAddrMaskReps|OutAddrMasks|InTimestampReps|InTimestamps|OutTimestampReps|OutTimestamps|OutErrors|InDestUnreachs|OutDestUnreachs|InTimeExcds|InRedirects|OutRedirects|InMsgs|OutMsgs)|IcmpMsg_(InType3|OutType3)|Ip(6|Ext)_(InOctets|OutOctets)|Ip_Forwarding|TcpExt_(Listen.*|Syncookies.*|TCPTimeouts))$ --collector.processes --collector.standard.go --collector.standard.process --collector.stat --collector.textfile.directory.hr=/usr/local/percona/pmm2/collectors/textfile-collector/high-resolution --collector.textfile.directory.lr=/usr/local/percona/pmm2/collectors/textfile-collector/low-resolution --collector.textfile.directory.mr=/usr/local/percona/pmm2/collectors/textfile-collector/medium-resolution --collector.textfile.hr --collector.textfile.lr --collector.textfile.mr --collector.time --collector.uname --collector.vmstat --collector.vmstat.fields=^(pg(steal_(kswapd|direct)|refill|alloc)_(movable|normal|dma3?2?)|nr_(dirty.*|slab.*|vmscan.*|isolated.*|free.*|shmem.*|i?n?active.*|anon_transparent_.*|writeback.*|unstable|unevictable|mlock|mapped|bounce|page_table_pages|kernel_stack)|drop_slab|slabs_scanned|pgd?e?activate|pgpg(in|out)|pswp(in|out)|pgm?a?j?fault)$ --no-collector.arp --no-collector.bcache --no-collector.conntrack --no-collector.drbd --no-collector.edac --no-collector.infiniband --no-collector.interrupts --no-collector.ipvs --no-collector.ksmd --no-collector.logind --no-collector.mdadm --no-collector.mountstats --no-collector.netclass --no-collector.nfs --no-collector.nfsd --no-collector.ntp --no-collector.qdisc --no-collector.runit --no-collector.sockstat --no-collector.supervisord --no-collector.systemd --no-collector.tcpstat --no-collector.timex --no-collector.wifi --no-collector.xfs --no-collector.zfs --web.disable-exporter-metrics --web.listen-address=:42002 root 142 37 0 Jun01 ? 00:00:59 /usr/local/percona/pmm2/exporters/mysqld_exporter --collect.binlog_size --collect.custom_query.hr --collect.custom_query.hr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/high-resolution --collect.custom_query.lr --collect.custom_query.lr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/low-resolution --collect.custom_query.mr --collect.custom_query.mr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/medium-resolution --collect.engine_innodb_status --collect.engine_tokudb_status --collect.global_status --collect.global_variables --collect.heartbeat --collect.info_schema.clientstats --collect.info_schema.innodb_cmp --collect.info_schema.innodb_cmpmem --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.processlist --collect.info_schema.query_response_time --collect.info_schema.userstats --collect.perf_schema.eventsstatements --collect.perf_schema.eventswaits --collect.perf_schema.file_events --collect.perf_schema.file_instances --collect.slave_status --collect.standard.go --collect.standard.process --exporter.conn-max-lifetime=55s --exporter.global-conn-pool --exporter.max-idle-conns=3 --exporter.max-open-conns=3 --web.listen-address=:42000 root 148 37 0 Jun01 ? 00:00:40 /usr/local/percona/pmm2/exporters/mysqld_exporter --collect.auto_increment.columns --collect.binlog_size --collect.custom_query.hr --collect.custom_query.hr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/high-resolution --collect.custom_query.lr --collect.custom_query.lr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/low-resolution --collect.custom_query.mr --collect.custom_query.mr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/medium-resolution --collect.engine_innodb_status --collect.engine_tokudb_status --collect.global_status --collect.global_variables --collect.heartbeat --collect.info_schema.clientstats --collect.info_schema.innodb_cmp --collect.info_schema.innodb_cmpmem --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.processlist --collect.info_schema.query_response_time --collect.info_schema.tables --collect.info_schema.tablestats --collect.info_schema.userstats --collect.perf_schema.eventsstatements --collect.perf_schema.eventswaits --collect.perf_schema.file_events --collect.perf_schema.file_instances --collect.perf_schema.indexiowaits --collect.perf_schema.tableiowaits --collect.perf_schema.tablelocks --collect.slave_status --collect.standard.go --collect.standard.process --exporter.conn-max-lifetime=55s --exporter.global-conn-pool --exporter.max-idle-conns=3 --exporter.max-open-conns=3 --web.listen-address=:42001 root 153 37 0 Jun01 ? 00:01:05 /usr/local/percona/pmm2/exporters/mysqld_exporter --collect.auto_increment.columns --collect.binlog_size --collect.custom_query.hr --collect.custom_query.hr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/high-resolution --collect.custom_query.lr --collect.custom_query.lr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/low-resolution --collect.custom_query.mr --collect.custom_query.mr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/medium-resolution --collect.engine_innodb_status --collect.engine_tokudb_status --collect.global_status --collect.global_variables --collect.heartbeat --collect.info_schema.clientstats --collect.info_schema.innodb_cmp --collect.info_schema.innodb_cmpmem --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.processlist --collect.info_schema.query_response_time --collect.info_schema.tables --collect.info_schema.tablestats --collect.info_schema.userstats --collect.perf_schema.eventsstatements --collect.perf_schema.eventswaits --collect.perf_schema.file_events --collect.perf_schema.file_instances --collect.perf_schema.indexiowaits --collect.perf_schema.tableiowaits --collect.perf_schema.tablelocks --collect.slave_status --collect.standard.go --collect.standard.process --exporter.conn-max-lifetime=55s --exporter.global-conn-pool --exporter.max-idle-conns=3 --exporter.max-open-conns=3 --web.listen-address=:42003 root 157 37 0 Jun01 ? 00:09:06 /usr/local/percona/pmm2/exporters/mysqld_exporter --collect.binlog_size --collect.custom_query.hr --collect.custom_query.hr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/high-resolution --collect.custom_query.lr --collect.custom_query.lr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/low-resolution --collect.custom_query.mr --collect.custom_query.mr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/medium-resolution --collect.engine_innodb_status --collect.engine_tokudb_status --collect.global_status --collect.global_variables --collect.heartbeat --collect.info_schema.clientstats --collect.info_schema.innodb_cmp --collect.info_schema.innodb_cmpmem --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.processlist --collect.info_schema.query_response_time --collect.info_schema.userstats --collect.perf_schema.eventsstatements --collect.perf_schema.eventswaits --collect.perf_schema.file_events --collect.perf_schema.file_instances --collect.slave_status --collect.standard.go --collect.standard.process --exporter.conn-max-lifetime=55s --exporter.global-conn-pool --exporter.max-idle-conns=3 --exporter.max-open-conns=3 --web.listen-address=:42004 root 163 37 0 Jun01 ? 00:00:27 /usr/local/percona/pmm2/exporters/postgres_exporter --collect.custom_query.hr --collect.custom_query.hr.directory=/usr/local/percona/pmm2/collectors/custom-queries/postgresql/high-resolution --collect.custom_query.lr --collect.custom_query.lr.directory=/usr/local/percona/pmm2/collectors/custom-queries/postgresql/low-resolution --collect.custom_query.mr --collect.custom_query.mr.directory=/usr/local/percona/pmm2/collectors/custom-queries/postgresql/medium-resolution --web.listen-address=:42005 root 635 37 0 Jun01 ? 00:00:43 /usr/local/percona/pmm2/exporters/mysqld_exporter --collect.binlog_size --collect.custom_query.hr --collect.custom_query.hr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/high-resolution --collect.custom_query.lr --collect.custom_query.lr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/low-resolution --collect.custom_query.mr --collect.custom_query.mr.directory=/usr/local/percona/pmm2/collectors/custom-queries/mysql/medium-resolution --collect.engine_innodb_status --collect.engine_tokudb_status --collect.global_status --collect.global_variables --collect.heartbeat --collect.info_schema.clientstats --collect.info_schema.innodb_cmp --collect.info_schema.innodb_cmpmem --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.processlist --collect.info_schema.query_response_time --collect.info_schema.userstats --collect.perf_schema.eventsstatements --collect.perf_schema.eventswaits --collect.perf_schema.file_events --collect.perf_schema.file_instances --collect.slave_status --collect.standard.go --collect.standard.process --exporter.conn-max-lifetime=55s --exporter.global-conn-pool --exporter.max-idle-conns=3 --exporter.max-open-conns=3 --web.listen-address=:42006 root 3747 3731 0 06:55 ? 00:00:00 grep --color=auto export [root@d82370aaccdb opt]#RDS添加的方式可以看看之前的文章:
PMM:监控RDS与一些新功能
添加之后的远程节点可以在Nodes中找到,还有对应的services,注意类型是remote
一般远程监控的MySQL , service和node是一一对应的。
对于MySQL每个service通常对应2个agent: MySQL exporter 和 Qan慢查询采集
想要删除这些,就只能通过swagger的API页面来删除
https://10.0.0.97/swagger/
这个页面下包含了所有PMM操作的API,可以供其他程序调用,页面也可以直接执行。
找到service下的remove,填写需要删除的sercice_id
删除结果,返回空值即是成功
如删除失败,会返回错误原因
如果管理的数据库达到一定规模而需要批量删除,建议用以下方法:
获取所有node信息,返回结果是json格式。
curl -k -u admin:管理员密码 -X POST "https://10.0.0.97/v1/inventory/Nodes/List"找到需要删除对象的node_id来批量删除:
curl -k -u admin:管理员密码 -X POST "https://10.0.0.97/v1/inventory/Nodes/Remove" -H "Content-Type: application/json" -d "{ \"node_id\": \"/node_id/c86c4ab1-4b29-49be-bc7b-3da903591fd1\", \"force\": true}" curl -k -u admin:管理员密码 -X POST "https://10.0.0.97/v1/inventory/Nodes/Remove" -H "Content-Type: application/json" -d "{ \"node_id\": \"/node_id/c86c4ab1-4b29-49be-bc7b-3da903591d22\", \"force\": true}" curl -k -u admin:管理员密码 -X POST "https://10.0.0.97/v1/inventory/Nodes/Remove" -H "Content-Type: application/json" -d "{ \"node_id\": \"/node_id/c86c4ab1-4b29-49be-bc7b-3da903591fd3\", \"force\": true}"升级到2.8版本,试试新加的删除功能
支持多选、批量删除。
在5月份PMM 2.6版本发布中,推出了一个全新功能--安全威胁工具(STT),就数据库的安全性相关问题,向PMM用户提供建议。
安全威胁工具(STT)对注册的实例执行一系列与安全相关的检查,并报告调查结果。
默认情况下,安全威胁工具是禁用的。
目前检查需要24小时才能完成。
可以在PMM -> PMM Database Checks中查看结果。
默认情况下安全威胁工具未激活,因此需要手动启用。
可以在 PMM -> PMM Settings -> Settings -> Advanced settings -> Security Threat Tool 中启用它。
开启方式:
初始版本(PMM 2.6.0),每天仅执行一次检查。
未来可能修改成更频繁检查,并可以自己定义检查间隔。
配置后可以在PMM主页看到相关的检查结果:
点进去后,是详细的信息与建议
目前的STT只做2方面的检查:
针对每个数据库,检查并提醒MySQL,MariaDB,MongoDB和PostgreSQL的最新版本。
STT将检查使用空密码的MySQL用户,并提醒设置密码,提高安全性。
根据上面的提示,一个RDS里有10个用户是空密码,检查下确实如此,不过看上去好像是腾讯云自己本机使用。
MySQL [mysql]> select Host,user,Password from mysql.user; +-----------------+-------------+-------------------------------------------+ | Host | user | Password | +-----------------+-------------+-------------------------------------------+ | localhost | root | | | tencent64.site | root | | | 127.0.0.1 | root | | | ::1 | root | | | localhost | | | | tencent64.site | | | | % | root | *321C6A19E65718800AB5A1F1C1114BC54FF9617D | | % | m***a | *321C6A19E65718800AB5A1F1C1114BC54FF9617D | | % | li****wei | *13EA11314CB401D6266D29FB926449E22A30CDB2 | | 10.252.216.11 | tencentroot | | | 9.20.170.107 | tencentroot | | | 100.104.172.158 | tencentroot | | | 10.237.150.34 | tencentroot | | | 10.0.% | pmm | *D0A50CB4D76E26B0ED9F78D24193115E4F945580 | +-----------------+-------------+-------------------------------------------+ 14 rows in set (0.00 sec)虽然目前STT的功能比较简单,但从它的名字--Security Threat Tool预示着未来的重点应该还是数据库的安全检查与防护。
从PMM社区的建设,到新功能不断添加、版本更新频繁,可见Percona的野心绝对不仅如此,PMM加油吧。
# 历史文章归档
GitHub都在用的高可用工具Orch:
Orchestrator:01 基础篇
Orchestrator:02 高可用方案VIP篇
Orchestrator:03 高可用方案ProxySQL篇
Orchestrator:04 高可用方式部署
Percona 全力打造的监控平台 PMM:
监控利器 PMM2.0X GA 版本发布!
PMM监控的告警配置
PMM的Ansible部署与重点指标
在PMM中添加Redis和ES