async def setup_graphite_exporter(): graphite_server = os.environ.get("GRAPHITE_SERVER", None) graphite_key = os.environ.get("GRAPHITE_KEY", None) graphite_port = os.environ.get("GRAPHITE_PORT", 2003) if graphite_server is None or graphite_key is None: logger.warn( "Graphite server (" + str(graphite_server) + ") or Graphite key (" + str(graphite_key) + ") is not defined. Not setting up Monitoring graphite server!" ) return logger.info( "Monitoring graphite server setup! Reporting to server: " + graphite_server + ":" + str(graphite_port) + " with prefix: " + str(graphite_key) ) gb = GraphiteBridge((graphite_server, graphite_port)) gb.start(60.0, prefix=graphite_key)
def set_config(self, config: ValueExtractor) -> None: super().set_config(config) registry = get_registry(self.config.get('registry', REGISTRY)) if MULTIPROC_DIR: registry = MultiProcessCollector(registry) self._registry = registry port: int = self.config.get_int('port', default=0) if port: start_http_server(port=port, registry=registry) graphite: Optional[ValueExtractor] = self.config.get('graphite') if graphite: address = graphite.get('address') if isinstance(address, str): addr = address.split(':') address = (addr[0], int(addr[-1])) gb = GraphiteBridge(address, registry=registry) interval: float = graphite.get_duration('interval', 60) prefix: str = graphite.get('prefix', '') gb.start(interval, prefix=prefix)
def start(self): print("Starting energy monitor:") print(" GPIO: {:d}".format(self.sensor_gpio)) print(" graphite:") print(" server : {}:{}".format(self.graphite_host, self.graphite_port)) print(" metric prefix : {}".format(self.graphite_metric_prefix)) print(" report interval: {:d}".format( self.graphite_report_interval)) print(" influxdb (graphite protocol):") print(" server : {}:{}".format(self.influxdb_host, self.influxdb_port)) print(" metric prefix : {}".format(self.graphite_metric_prefix)) print(" report interval: {:d}".format( self.graphite_report_interval)) print(" prometheus:") print(" port: {}".format(self.prometheus_port)) print(" path: /metrics") registry = CollectorRegistry() self.counter = Counter('meter_power', 'Total watt-hours consumed', registry=registry) gb = GraphiteBridge((self.graphite_host, self.graphite_port), registry=registry) gb.start(self.graphite_report_interval, prefix=self.graphite_metric_prefix) influxbridge = GraphiteBridge((self.influxdb_host, self.influxdb_port), registry=registry) influxbridge.start(self.graphite_report_interval, prefix=self.graphite_metric_prefix) start_http_server(self.prometheus_port, registry=registry) GPIO.setmode(GPIO.BCM) GPIO.setup(self.sensor_gpio, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.add_event_detect(self.sensor_gpio, GPIO.RISING, callback=self.increment, bouncetime=100)
import time from prometheus_client.bridge.graphite import GraphiteBridge gb = GraphiteBridge(['graphite.your.org', 2003]) gb.start(10) while True: time.sleep(1)