In Internet of Things (IoT) environments, there are multiple sensors and devices monitoring different metrics and producing massive amounts of data. Monitoring of metrics can be done at different frequencies. Systems and applications that consume monitoring data typically use constrained IT resources, e.g., constrained network facilities, storage, display, processing/computing power, and energy. Given the limited quantity of resources used by these monitoring systems and applications, it is impossible to be able to collect data of all metrics in the application's context with a very high monitoring frequency. Additionally, changes in the IoT environmental context may affect the choice of metrics that should be monitored and their monitoring frequencies. To address these issues, we propose in this paper a novel approach based on optimization model to optimally determine the metrics that should be monitored and the frequencies at which these metrics are to be monitored. Our approach is an adaptive iterative approach in which the metric frequencies are re-optimized whenever an environmental event or a monitored metric value triggers the need for such re-optimization. We also present a proof-of-concept implementation of our approach that shows the efficiency of adopting it.