@@ -4,11 +4,11 @@ import (
44 "fmt"
55 "github.com/go-kit/log"
66 "github.com/go-kit/log/level"
7- sdk "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529"
87 "github.com/tencentyun/tencentcloud-exporter/pkg/common"
98 "github.com/tencentyun/tencentcloud-exporter/pkg/instance"
109 "github.com/tencentyun/tencentcloud-exporter/pkg/metric"
1110 "github.com/tencentyun/tencentcloud-exporter/pkg/util"
11+ "time"
1212)
1313
1414const (
@@ -22,6 +22,8 @@ func init() {
2222
2323type QaapHandler struct {
2424 baseProductHandler
25+ tcpListenersRepo instance.QaapTcInstanceTCPListenersRepository
26+ udpListenersRepo instance.QaapTcInstanceUDPListenersRepository
2527}
2628
2729func (h * QaapHandler ) IsMetricMetaVaild (meta * metric.TcmMeta ) bool {
@@ -160,18 +162,36 @@ func (h *QaapHandler) getInstanceSeries(m *metric.TcmMetric, ins instance.TcInst
160162
161163func (h * QaapHandler ) getListenerIdSeries (m * metric.TcmMetric , ins instance.TcInstance ) ([]* metric.TcmSeries , error ) {
162164 var series []* metric.TcmSeries
163- meta , ok := ins .GetMeta ().(* sdk.ProxyDetail )
164- if ! ok {
165- return nil , fmt .Errorf ("get instacne raw meta fail, metric=%s, instacne=%s" ,
166- m .Meta .MetricName , ins .GetInstanceId ())
165+ tcpListenersInfos , err := h .tcpListenersRepo .GetTCPListenersInfo (ins .GetInstanceId ())
166+ if err != nil {
167+ return nil , err
167168 }
168- for _ , l4ListenerSet := range meta . L4ListenerSet {
169- for _ , rsSet := range l4ListenerSet . RsSet {
169+ for _ , tcpListenersInfo := range tcpListenersInfos . Response . ListenerSet {
170+ for _ , realServerSet := range tcpListenersInfo . RealServerSet {
170171 ql := map [string ]string {
171172 h .monitorQueryKey : ins .GetMonitorQueryKey (),
172- "listenerId" : * l4ListenerSet .ListenerId ,
173- "originServerInfo" : * rsSet .RsInfo ,
174- "protocol" : * l4ListenerSet .Protocol ,
173+ "listenerId" : * tcpListenersInfo .ListenerId ,
174+ "originServerInfo" : * realServerSet .RealServerIP ,
175+ "protocol" : * tcpListenersInfo .Protocol ,
176+ }
177+ s , err := metric .NewTcmSeries (m , ql , ins )
178+ if err != nil {
179+ return nil , err
180+ }
181+ series = append (series , s )
182+ }
183+ }
184+ udpListenersInfos , err := h .udpListenersRepo .GetUDPListenersInfo (ins .GetInstanceId ())
185+ if err != nil {
186+ return nil , err
187+ }
188+ for _ , udpListenersInfo := range udpListenersInfos .Response .ListenerSet {
189+ for _ , realServerSet := range udpListenersInfo .RealServerSet {
190+ ql := map [string ]string {
191+ h .monitorQueryKey : ins .GetMonitorQueryKey (),
192+ "listenerId" : * udpListenersInfo .ListenerId ,
193+ "originServerInfo" : * realServerSet .RealServerIP ,
194+ "protocol" : * udpListenersInfo .Protocol ,
175195 }
176196 s , err := metric .NewTcmSeries (m , ql , ins )
177197 if err != nil {
@@ -184,12 +204,27 @@ func (h *QaapHandler) getListenerIdSeries(m *metric.TcmMetric, ins instance.TcIn
184204}
185205
186206func NewQaapHandler (cred common.CredentialIface , c * TcProductCollector , logger log.Logger ) (handler ProductHandler , err error ) {
207+ tcpListenersRepo , err := instance .NewQaapTcInstanceTCPListenersRepository (cred , c .Conf , logger )
208+ if err != nil {
209+ return nil , err
210+ }
211+ relodInterval := time .Duration (c .ProductConf .RelodIntervalMinutes * int64 (time .Minute ))
212+ tcpListenersRepoCache := instance .NewTcGaapInstanceeTCPListenersCache (tcpListenersRepo , relodInterval , logger )
213+
214+ udpListenersRepo , err := instance .NewQaapTcInstanceUDPListenersRepository (cred , c .Conf , logger )
215+ if err != nil {
216+ return nil , err
217+ }
218+ udpListenersRepoCache := instance .NewTcGaapInstanceeUDPListenersCache (udpListenersRepo , relodInterval , logger )
219+
187220 handler = & QaapHandler {
188- baseProductHandler {
221+ baseProductHandler : baseProductHandler {
189222 monitorQueryKey : QaapInstanceidKey ,
190223 collector : c ,
191224 logger : logger ,
192225 },
226+ tcpListenersRepo : tcpListenersRepoCache ,
227+ udpListenersRepo : udpListenersRepoCache ,
193228 }
194229 return
195230
0 commit comments