From 4c82c57b9764d7d0e2730fcd9baf9da566904685 Mon Sep 17 00:00:00 2001 From: zianazhao Date: Fri, 3 Feb 2023 15:36:37 +0800 Subject: [PATCH 1/3] fix-time zone --- pkg/util/time.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pkg/util/time.go b/pkg/util/time.go index 6c7b31f..e5bd6db 100644 --- a/pkg/util/time.go +++ b/pkg/util/time.go @@ -6,10 +6,6 @@ import "time" func FormatTime(t time.Time, format string) string { var local time.Time _, offset := t.Zone() - if offset == 0 { - local = t.Add(8 * time.Hour) - } else { - local = t - } + local = t.Add(time.Duration(8*3600-offset) * time.Second) return local.Format(format) } From f9f2b8732efc6d9d5e88be911d168a9c0409cffb Mon Sep 17 00:00:00 2001 From: zianazhao Date: Fri, 3 Feb 2023 17:00:23 +0800 Subject: [PATCH 2/3] =?UTF-8?q?1=E3=80=81cbs=E3=80=81tdmq=E3=80=81loadbala?= =?UTF-8?q?nce=E6=8C=87=E6=A0=87=E8=BF=87=E6=BB=A4=202=E3=80=81lb=5Fprivat?= =?UTF-8?q?e=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=85=B6=E4=BB=96=E7=BB=B4=E5=BA=A6=E6=8C=87=E6=A0=87?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/collector/handler_cbs.go | 8 ++++++ pkg/collector/handler_clb7.go | 8 ++++++ pkg/collector/handler_clb_private.go | 41 ++++++++++++++++------------ pkg/collector/handler_tdmq.go | 18 ++++++++++++ 4 files changed, 58 insertions(+), 17 deletions(-) diff --git a/pkg/collector/handler_cbs.go b/pkg/collector/handler_cbs.go index 1114e8c..716a134 100644 --- a/pkg/collector/handler_cbs.go +++ b/pkg/collector/handler_cbs.go @@ -33,6 +33,14 @@ func (h *cbsHandler) GetNamespace() string { } func (h *cbsHandler) IsMetricVaild(m *metric.TcmMetric) bool { + // 暂时过滤nvme盘类指标 + var dimensions []string + for _, v := range m.Meta.SupportDimensions { + dimensions = append(dimensions, v) + } + if util.IsStrInList(dimensions, "vmUuid") { + return false + } return true } diff --git a/pkg/collector/handler_clb7.go b/pkg/collector/handler_clb7.go index 098c63a..48768c3 100644 --- a/pkg/collector/handler_clb7.go +++ b/pkg/collector/handler_clb7.go @@ -23,6 +23,14 @@ var ( "activeconnratio", "newactiveconnratio", "outtrafficratio", + "rsptimeout", + "setreqavg", + "setreqmax", + "setrspavg", + "setrspmax", + "settotalreq", + "vrsptimeout", + "vsettotalreq", } ) diff --git a/pkg/collector/handler_clb_private.go b/pkg/collector/handler_clb_private.go index 44a9d57..a6627c9 100644 --- a/pkg/collector/handler_clb_private.go +++ b/pkg/collector/handler_clb_private.go @@ -23,6 +23,10 @@ var ( } ) +var ( + LbPrivateSupportDimensions = []string{"vip", "vpcId", "loadBalancerPort", "protocol", "lanIp", "port"} +) + func init() { registerHandler(ClbPrivateNamespace, defaultHandlerEnabled, NewClbPrivateHandler) } @@ -119,32 +123,35 @@ func (h *ClbPrivateHandler) GetSeriesByAll(m *metric.TcmMetric) ([]*metric.TcmSe return slist, nil } -func (h *ClbPrivateHandler) GetSeriesByCustom(m *metric.TcmMetric) ([]*metric.TcmSeries, error) { - var slist []*metric.TcmSeries +func (h *ClbPrivateHandler) GetSeriesByCustom(m *metric.TcmMetric) (slist []*metric.TcmSeries, err error) { for _, ql := range m.Conf.CustomQueryDimensions { - v, ok := ql[h.monitorQueryKey] - if !ok { - level.Error(h.logger).Log( - "msg", fmt.Sprintf("not found %s in queryDimensions", h.monitorQueryKey), - "ql", fmt.Sprintf("%v", ql)) - continue - } - ins, err := h.collector.InstanceRepo.Get(v) - if err != nil { - level.Error(h.logger).Log("msg", "Instance not found", "err", err, "id", v) + if !h.checkMonitorQueryKeys(m, ql) { continue } - sl, err := h.getSeriesByMetricType(m, ins) + s, err := metric.NewTcmSeries(m, ql, nil) if err != nil { - level.Error(h.logger).Log("msg", "Create metric series fail", - "metric", m.Meta.MetricName, "instacne", ins.GetInstanceId()) + level.Error(h.logger).Log("msg", "Create metric series fail", "metric", m.Meta.MetricName, + "ql", fmt.Sprintf("%v", ql)) continue } - slist = append(slist, sl...) + slist = append(slist, s) } - return slist, nil + return } +func (h *ClbPrivateHandler) checkMonitorQueryKeys(m *metric.TcmMetric, ql map[string]string) bool { + for k := range ql { + if !util.IsStrInList(LbPrivateSupportDimensions, k) { + level.Error(h.logger).Log("msg", fmt.Sprintf("not found %s in supportQueryDimensions", k), + "ql", fmt.Sprintf("%v", ql), + "sd", fmt.Sprintf("%v", m.Meta.SupportDimensions), + ) + return false + } + } + return true +} + func (h *ClbPrivateHandler) getSeriesByMetricType(m *metric.TcmMetric, ins instance.TcInstance) ([]*metric.TcmSeries, error) { var dimensions []string for _, v := range m.Meta.SupportDimensions { diff --git a/pkg/collector/handler_tdmq.go b/pkg/collector/handler_tdmq.go index b3834c2..95262e6 100644 --- a/pkg/collector/handler_tdmq.go +++ b/pkg/collector/handler_tdmq.go @@ -2,6 +2,7 @@ package collector import ( "fmt" + "strings" "time" "github.com/go-kit/log" @@ -17,6 +18,19 @@ const ( TdmqInstanceidKey = "tenant" ) +var ( + RocketMQOnlyIncludeMetrics = []string{ + "ropratein", + "roprateout", + "ropthroughputin", + "ropthroughputout", + "ropmsgbacklog", + "ropmsgaveragesize", + "ropinmessagetotal", + "ropgroupcount", + } +) + func init() { registerHandler(TdmqNamespace, defaultHandlerEnabled, NewTdmqHandler) } @@ -36,6 +50,10 @@ func (h *tdmqHandler) GetNamespace() string { } func (h *tdmqHandler) IsMetricVaild(m *metric.TcmMetric) bool { + // 暂时只支持 TDMQ RocketMQ 版指标 + if !util.IsStrInList(RocketMQOnlyIncludeMetrics, strings.ToLower(m.Meta.MetricName)) { + return false + } _, ok := excludeMetricName[m.Meta.MetricName] if ok { return false From 1ec97424ee92cd8a465a0f44bab892e1ed37d759 Mon Sep 17 00:00:00 2001 From: zianazhao Date: Mon, 6 Feb 2023 19:01:42 +0800 Subject: [PATCH 3/3] =?UTF-8?q?README=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index f70af7b..da55589 100644 --- a/README.md +++ b/README.md @@ -12,40 +12,41 @@ 产品 | 命名空间 |支持的指标| --------|---------|---------- -MongoDB |QCE/CMONGO|[指标详情](https://cloud.tencent.com/document/product/248/45104) -CDB|QCE/CDB|[指标详情](https://cloud.tencent.com/document/product/248/45147) +数据库MongoDB |QCE/CMONGO|[指标详情](https://cloud.tencent.com/document/product/248/45104) +数据库MySQL(CDB)|QCE/CDB|[指标详情](https://cloud.tencent.com/document/product/248/45147) Redis标准版|QCE/REDIS(即将下线,不推荐)|[指标详情](https://cloud.tencent.com/document/product/248/45111) Redis集群版|QCE/REDIS_CLUSTER(即将下线,不推荐)|[指标详情](https://cloud.tencent.com/document/product/248/45111) -Redis内存版监控指标|QCE/REDIS_MEM|[指标详情](https://cloud.tencent.com/document/product/248/49729) -CVM|QCE/CVM|[指标详情](https://cloud.tencent.com/document/product/248/6843) +数据库Redis(内存版)|QCE/REDIS_MEM|[指标详情](https://cloud.tencent.com/document/product/248/49729) +云服务器CVM|QCE/CVM|[指标详情](https://cloud.tencent.com/document/product/248/6843) COS|QCE/COS|[指标详情](https://cloud.tencent.com/document/product/248/45140) CDN|QCE/CDN|[指标详情](https://cloud.tencent.com/document/product/248/45138) -CLB(公网)|QCE/LB_PUBLIC|[指标详情](https://cloud.tencent.com/document/product/248/45047) -CLB(7层)|QCE/LOADBALANCE|[指标详情](https://cloud.tencent.com/document/product/248/45045) -NAT|QCE/NAT_GATEWAY|[指标详情](https://cloud.tencent.com/document/product/248/45069) +负载均衡CLB(公网)|QCE/LB_PUBLIC|[指标详情](https://cloud.tencent.com/document/product/248/45047) +负载均衡CLB(7层)|QCE/LOADBALANCE|[指标详情](https://cloud.tencent.com/document/product/248/45045) +NAT网关|QCE/NAT_GATEWAY|[指标详情](https://cloud.tencent.com/document/product/248/45069) 物理专线|QCE/DC|[指标详情](https://cloud.tencent.com/document/product/248/45102) 专用通道|QCE/DCX|[指标详情](https://cloud.tencent.com/document/product/248/45101) 云硬盘|QCE/CBS|[指标详情](https://cloud.tencent.com/document/product/248/45411) -SqlServer|QCE/SQLSERVER|[指标详情](https://cloud.tencent.com/document/product/248/45146) -MariaDB|QCE/MARIADB|[指标详情](https://cloud.tencent.com/document/product/248/54397) +数据库SQL Server|QCE/SQLSERVER|[指标详情](https://cloud.tencent.com/document/product/248/45146) +数据库MariaDB|QCE/MARIADB|[指标详情](https://cloud.tencent.com/document/product/248/54397) Elasticsearch|QCE/CES|[指标详情](https://cloud.tencent.com/document/product/248/45129) CMQ 队列服务|QCE/CMQ(即将下线,不推荐)|[指标详情](https://cloud.tencent.com/document/product/248/45114) CMQ 主题订阅|QCE/CMQTOPIC(即将下线,不推荐)|[指标详情](https://cloud.tencent.com/document/product/248/45113) -PostgreSQL|QCE/POSTGRES|[指标详情](https://cloud.tencent.com/document/product/248/45105) +数据库PostgreSQL|QCE/POSTGRES|[指标详情](https://cloud.tencent.com/document/product/248/45105) CKafka 实例|QCE/CKAFKA|[指标详情](https://cloud.tencent.com/document/product/248/45121) Memcached |QCE/MEMCACHED|指标详情说明文档(待上线) -Lighthouse |QCE/LIGHTHOUSE|[指标详情](https://cloud.tencent.com/document/product/248/60127) -分布式数据库 TDSQL MySQL 实例|QCE/TDMYSQL|[指标详情](https://cloud.tencent.com/document/product/248/54401) +轻量应用服务器Lighthouse |QCE/LIGHTHOUSE|[指标详情](https://cloud.tencent.com/document/product/248/60127) +分布式数据库 TDSQL MySQL|QCE/TDMYSQL|[指标详情](https://cloud.tencent.com/document/product/248/54401) 弹性公网 IP|QCE/LB|[指标详情](https://cloud.tencent.com/document/product/248/45099) -TDMQ RocketMQ 版|QCE/TDMQ|[指标详情](https://cloud.tencent.com/document/product/248/51450#tdmq-rocketmq-.E7.89.88) +消息队列RocketMQ版|QCE/TDMQ|[指标详情](https://cloud.tencent.com/document/product/248/51450#tdmq-rocketmq-.E7.89.88) VPN 网关|QCE/VPNGW|[指标详情](https://cloud.tencent.com/document/product/248/45070) VPN 通道|QCE/VPNX|[指标详情](https://cloud.tencent.com/document/product/248/45071) CYNOSDB_MYSQL|QCE/CYNOSDB_MYSQL|[指标详情](https://cloud.tencent.com/document/product/248/45106) 云联网|QCE/VBC|[指标详情](https://cloud.tencent.com/document/product/248/75629) -数据传输 |QCE/DTS|指标详情说明文档(待上线) +数据传输 |QCE/DTS|[指标详情](https://cloud.tencent.com/document/product/248/82251) 专线网关 |QCE/DCG|指标详情说明文档(待上线) 全球应用加速|QCE/QAAP|[指标详情](https://cloud.tencent.com/document/product/248/45062) - +Web应用防火墙 |QCE/WAF|[指标详情](https://cloud.tencent.com/document/product/248/48124) +负载均衡CLB(内网)|QCE/LB_PRIVATE|[指标详情](https://cloud.tencent.com/document/product/248/51899) `后续会有更多的产品支持` ## 二、快速开始