func()

in agent/stats/snapshotter.go [39:67]


func (snapshotter *Snapshotter) StartSnapshot(agentConfig config.AgentConfig) {
	httpClient, err := client.CreateRetryableHttpClientForEnvoyServer(agentConfig)
	httpClient.HTTPClient.Timeout = EnvoyStatsClientHttpTimeout
	if err != nil {
		log.Errorf("unable to create Retryable Http Client: %v", err)
		return
	}
	snapshotter.HttpClient = httpClient
	queryParams := url.Values{}
	queryParams.Add(usedOnlyQueryKey, "")
	queryParams.Add(filterQueryKey, QuerySet[filterQueryKey].(string))
	queryString := constructQueryString(queryParams)
	requestUrl := getEnvoyStatsUrl(&agentConfig, queryString)
	statsRequest, err := client.CreateRetryableAgentRequest(http.MethodGet, requestUrl, nil)
	if err != nil {
		log.Errorf("failed to create Retryable Http request, requestUrl: %s, error: %v", requestUrl, err)
		return
	}
	snapshotter.HttpRequest = statsRequest

	ticker := time.NewTicker(snapshotInterval)
	// Loop forever
	for {
		select {
		case <-ticker.C:
			snapshotter.makeSnapshot()
		}
	}
}