Giter Club home page Giter Club logo

chia-monitor's People

Contributors

charnet3d avatar em-winterschon avatar nicezic avatar philippnormann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chia-monitor's Issues

systemd problem ?

when i use systemd to startup, it can't get RPC data, and nomore wrong log.
and just "sudo systemd restart chia-monitor" will return to normal.

i don't know why, do you have any clues?

Guys, what's the problem? Suddenly report an error

`2021-07-29T18:32:08.471 INFO 🏷️ Price in BTC: 0.0048449
2021-07-29T18:32:08.472 INFO 🏷️ Price in ETH: 0.08444829
2021-07-29T18:32:32.121 INFO 🛑 Shutting down!
2021-07-29T18:32:32.125 ERROR Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7fc02bb335e0>
2021-07-29T18:32:32.125 INFO 👋 Bye!
2021-07-29T18:32:32.157 ERROR Task exception was never retrieved
future: <Task finished name='Task-11' coro=<WsCollector.task() done, defined at /home/chia/soft/chia-monitor/monitor/collectors/ws_collector.py:78> exception=KeyboardInterrupt()>
Traceback (most recent call last):
File "/home/chia/soft/chia-monitor/monitor/collectors/ws_collector.py", line 81, in task
msg = await self.ws.receive_json()
File "/home/chia/.local/share/virtualenvs/chia-monitor-Iocbb-0M/lib/python3.8/site-packages/aiohttp/client_ws.py", line 291, in receive_json
data = await self.receive_str(timeout=timeout)
File "/home/chia/.local/share/virtualenvs/chia-monitor-Iocbb-0M/lib/python3.8/site-packages/aiohttp/client_ws.py", line 276, in receive_str
raise TypeError(f"Received message {msg.type}:{msg.data!r} is not str")
TypeError: Received message 257:None is not str

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/chia/soft/chia-monitor/monitor/main.py", line 136, in
asyncio.run(aggregator(exporter, notifier))
File "/usr/lib/python3.8/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.8/asyncio/base_events.py", line 603, in run_until_complete
self.run_forever()
File "/usr/lib/python3.8/asyncio/base_events.py", line 570, in run_forever
self._run_once()
File "/usr/lib/python3.8/asyncio/base_events.py", line 1859, in _run_once
handle._run()
File "/usr/lib/python3.8/asyncio/events.py", line 81, in _run
self._context.run(self._callback, *self._args)
File "/home/chia/soft/chia-monitor/monitor/collectors/ws_collector.py", line 91, in task
File "/usr/lib/python3.8/logging/init.py", line 1458, in warning
self._log(WARNING, msg, args, **kwargs)
File "/usr/lib/python3.8/logging/init.py", line 1589, in _log
self.handle(record)
File "/usr/lib/python3.8/logging/init.py", line 1599, in handle
self.callHandlers(record)
File "/usr/lib/python3.8/logging/init.py", line 1661, in callHandlers
hdlr.handle(record)
File "/usr/lib/python3.8/logging/init.py", line 954, in handle
self.emit(record)
File "/usr/lib/python3.8/logging/init.py", line 1085, in emit
msg = self.format(record)
File "/usr/lib/python3.8/logging/init.py", line 929, in format
return fmt.format(record)
File "/home/chia/.local/share/virtualenvs/chia-monitor-Iocbb-0M/lib/python3.8/site-packages/colorlog/colorlog.py", line 135, in format
message = super(ColoredFormatter, self).format(record)
File "/usr/lib/python3.8/logging/init.py", line 670, in format
record.asctime = self.formatTime(record, self.datefmt)
File "/usr/lib/python3.8/logging/init.py", line 606, in formatTime
ct = self.converter(record.created)
KeyboardInterrupt`

grafana dashboard showing no data

when i imported the graph, i chosed my prometheus instance as source of information

imagen

and some fields showed no data (even though i checked promethes scraper status and node/metrics)

imagen

imagen

imagen

found the issue after checking one of the queries, for some reason its trying to get the default DB of grafana as source (in my case infllux DB)

imagen

after changing my default db to prometheus

imagen

imagen

all data showed up then

imagen

I think it has something to do on how the dashboard was exported

chia-monitor setup in a secondary network reports a duplicate harvester

  • Configuration:

So I have a peculiar setup with 2 chia full nodes in different locations, each with its harvesters, and I wanted to set them up in a single dashboard, because all the plots are for the same wallet.

Node A - Harvester A1 (127.0.0.1)
Harvester A2 (192.168.1.200)

Node B - Harvester B1 (127.0.0.1)
Harvester B2 (192.168.2.205)
Harvester B3 (192.168.2.8)

(The IP adresses are the same ones seen in the screenshot below)

Grafana and prometheus are setup in Node A, whereas chia-monitor is installed on both nodes and they are made available to prometheus using this config:

scrape_configs:
  - job_name: chia_monitor_node_a
    static_configs:
    - targets: ['127.0.0.1:8000']
  - job_name: chia_monitor_node_b
    static_configs:
    - targets: ['NODE_B_DOMAIN_NAME.COM:8000']

So the issue is caused by the fact Node B and its harvesters are behind 2 routers before reaching the internet:

Node B
-------- Network2 - 192.168.2.0
Router2
-------- Network1 - 192.168.1.0
Router1
-------- INTERNET

Router1 is set to have Router2 as DMZ, and then port 8000 is forwarded in Router2 toward Node B.

In the dashboard I get 2 entries for harvester B2, one with its own IP address, and one with Router2's IP. and this doesn't happen with the other 2 harvesters.

image

All the metrics that report the harvester host have the same issue. One workaround I found was to change the PromQL query in Grafana to have a filter for that duplicate entry like so: chia_plot_size{host!="192.168.2.1"}. but I'm still wondering if it's not messing up other things like notifications (In telegram I have plots changed in 24H at -99 plots...).

Notification instability, possibly due to concurrent access to sqlite db?

Hi there,

Thanks for the awesome project! I'm having some trouble using this project with my farm. The code is connecting to the Chia RPC endpoints and getting data just fine, but the summary notifications seem to consistently break. I'm using discord for notifications, but I don't believe the issue is specific to the notification provider used.

The usual pattern I see is that I get one notification sent successfully, and then nothing after that. This error will show up in the console, typically within a few minutes of starting up:

2021-07-13T17:25:38.316 ERROR  Failed to retrieve event from DB. Please initialize DB using: 'pipenv run alembic upgrade head'

After instrumenting the code a bit to print more stack trace and exception info, it looks like the underlying error is typically saying that the database is locked, e.g.:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is locked
[SQL: SELECT sum(anon_1.plot_count) AS sum_1
FROM (SELECT max(harvester_events.plot_count) AS plot_count
FROM harvester_events
WHERE harvester_events.ts > ? GROUP BY harvester_events.host) AS anon_1]
[parameters: ('2021-07-13 17:25:03.302213',)]

This error is always thrown in notifier.py in the await asyncio.gather(*tasks) call.

I've attempted to rule out any DB corruption issues by deleting my DB and re-running alembic to create a fresh DB, but that doesn't seem to make any difference.

Have you seen any issues like this in the past? Could it be due to multiple coroutines attempting to use the DB simultaneously?

Happy to provide additional logs/context, just let me know. Thanks!

Script gets stuck at "WARNING Error while collecting events. Trying again..."

Once in a while I found the script getting stuck at:

WARNING Error while collecting events. Trying again...

This message is generated from 2 places in ws_collector and rpc_collector. I haven't verified again which one it is in my case, I'll update once I have this info.

A workaround I did to have it running in a somewhat stable way, is to raise an asyncio.CancelledError() after the message self.log.warning(f"Error while collecting events....") so the process exits (hopefully.. I haven't dug deeper to make sure). And in addition to this chia-monitor is run from a .bat script that restarts it whenever it stops.

About Time To Win

In 1.2.0, we can run chia farm summay to know Expected time to win time.
But, in chia-monitor, calculated time difference is large.
In chia farm summay:

(venv) root@full-node:~# chia farm summary
Farming status: Farming
Total chia farmed: 28.000000320027
User transaction fees: 3.20027e-07
Block rewards: 28.0
Last height farmed: 514214
Remote Harvester for IP: 10.142.0.2
   1170 plots of size: 115.814 TiB
Remote Harvester for IP: 10.142.0.19
   3840 plots of size: 380.107 TiB
Remote Harvester for IP: 10.142.0.21
   4027 plots of size: 398.616 TiB
Remote Harvester for IP: 10.142.0.16
   4046 plots of size: 400.492 TiB
Remote Harvester for IP: 10.142.0.14
   4000 plots of size: 395.921 TiB
Remote Harvester for IP: 10.142.0.17
   3898 plots of size: 385.843 TiB
Remote Harvester for IP: 10.142.0.20
   3953 plots of size: 391.286 TiB
Remote Harvester for IP: 10.142.0.18
   4084 plots of size: 404.255 TiB
Plot count for all harvesters: 29018
Total size of plots: 2.805 PiB
Estimated network space: 31.102 EiB
Expected time to win: 2 days and 3 hours
Note: log into your key using 'chia wallet show' to see rewards for each key

and chia-monitor:

** 👨‍🌾 Farm Status 👩‍🌾 **
🌾 OG Plot Count: 29018
🌾 Portable Plot Count: 0
🧺 OG Plot Size: 2.805 PiB
🧺 Portable Plot Size: 0.000 MiB
🚜 Plot Change 24h: +0 (-0.000 MiB)
⌛ Signage Points Per Minute: 5.93
🔎 Passed Filters Per Minute: 335.42
✅ Total Proofs found: 0
💰 Total Balance: 0.00000 XCH
🕰️ Time To Win: 2 days and 11 hours
💾 Current Netspace: 31.076 EiB
🏔️ Peak Height: 546442
📶 Full Node Peer Count: 13
🔄 Synced: True

Reduce history.sqlite size

Hi @philippnormann! I've been using your monitor for a long time and love it. Thank you.

I'm wondering, is there a way to limit the growth on the history.sqlite data? That file is just past 3 gig and it seems like I probably don't need all that since I don't display anything in my dashboard longer than 7 days. Thanks.

Windows pipenv install does not install packages

I ended up having to pipenv shell then run

pip install bitstring==3.1.7 chiabip158==1.0 chiapos==1.0.3 chiavdf==1.0.2 clvm==0.9.7 clvm-rs==0.1.8 clvm-tools==0.4.3 concurrent-log-handler==0.9.19 dnspython==2.1.0 keyring==23.0.1 keyrings.cryptfile==1.3.4 setproctitle==1.2.2 sortedcontainers==2.3.0 websockets==8.1.0 aiohttp==3.7.4 click==7.1.2

Quick PR to add requirements.txt and update readme #10

Enhancement Req: Include Time for Plot Checks

Thank you for a great tool to keep an eye on our farms. One thing that I think is important to track and helpful in understanding the health of a node is the speed of the plot checks. It looks like you're capturing all the key elements except the speed of the check. Would it be possible to include this in a future release?

Here's an example from the log file:

"6 plots were eligible for farming a1e9e688b1... Found 0 proofs. Time: 0.61389 s. Total 790 plots"

Again you're already capturing # of plots eligible, # of proofs found and total number of plots. Only thing missing is the time.

Please let me know if you need any additional information or help. Thanks in advance for your consideration.

Plot count in 1.2.1 seems wrong

Hi,

I checked the OG plot count and it seems it reports it as (OG+Portable Plots) whereas the Portable Plot count is correct.

On one node I should have 124 total: 76 OG + 48 PP but it reports OG=124 and PP=48 totaling 172

image

support 1.2.0

Are there plans to support the latest 1.2.0 protocol?
The current version will be incompatible when using the 1.2.0 protocol

Can I moniting only harvester?

I hava 4 harvester machine, these machines only running harvester, because they connect another full_node machine.

So, Can I moniting only harvester?

problem with price_collector.p

Grabbed the latest update, DB update failed... renamed history.sqlite and created a new one.

When I run it I get the following error now.

madbuda@tank:~/chia-monitor$ pipenv run python -m monitor
Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/madbuda/chia-monitor/monitor/__main__.py", line 14, in <module>
    from monitor.collectors.price_collector import PriceCollector
  File "/home/madbuda/chia-monitor/monitor/collectors/price_collector.py", line 17, in <module>
    class PriceCollector(Collector):
  File "/home/madbuda/chia-monitor/monitor/collectors/price_collector.py", line 21, in PriceCollector
    async def create(_root_path: Path, _net_config: Dict, event_queue: Queue[ChiaEvent]) -> Collector:
TypeError: 'type' object is not subscriptable

Optional additions?

I love the look at feel of this tool. It looks as if it would be a great replacement for Chiadog. Wonder if options to add other notification applications like Discord or Pushover?

The options to turn on/off specific notifications, or eve pick what notification application they goto?

JSON notifications are sent every 5 seconds

When I use the JSON notification (json://{hostname}), the notifications get sent every 5 seconds or so.
It doesn't seem to respect the status_interval_minutes value.

As a test, I've tried using the Telegram notification -- And that works as expected. So perhaps it's related to specific types of notifications.

Ideally there should also be a way to disable notifications entirely. I'm personally only interested in the prometheus/grapfana part, and used JSON notifications as way to have a valid configuration file. That's when I've noticed my web server was receiving these constant POST requests.

[BUG] RuntimeError: Event loop is closed

I am running perfect with this code for amost 20 hours.
But then there is an error and the monitor stop.

Operating System: Windows 10

Here is the log

2021-07-20T17:18:40.174 ERROR  Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x000001E9EE70D670>
transport: <_ProactorSocketTransport fd=2804 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "C:\Python\Python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
  File "C:\Python\Python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "C:\Python\Python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x000001E9EA4B80D0>
Traceback (most recent call last):
  File "C:\Python\Python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "C:\Python\Python39\lib\asyncio\sslproto.py", line 316, in close
  File "C:\Python\Python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "C:\Python\Python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "C:\Python\Python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "C:\Python\Python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "C:\Python\Python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "C:\Python\Python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "C:\Python\Python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed

Startup fails sqlite3.IntegrityError: UNIQUE constraint failed

Hi!
Errors occur after pipenv run python -m monitor.
Unable to start, latest version.

root@chia-ubuntu:~/chia-monitor# pipenv run python -m monitor
2021-07-23T11:19:56.669 INFO   🔌 Creating RPC Collector...
2021-07-23T11:19:56.687 INFO   🔌 Creating WebSocket Collector...
2021-07-23T11:19:56.694 INFO   🔌 Creating Price Collector...
2021-07-23T11:19:56.694 INFO   🚀 Starting monitoring loop!
2021-07-23T11:19:56.707 INFO   ----------------------------------------------------------------
2021-07-23T11:19:56.707 INFO   💾 Current Netspace: 31.223 EiB
2021-07-23T11:19:56.707 INFO   📈 Farming Difficulty: 2544
2021-07-23T11:19:56.707 INFO   🏔️  Peak Height: 611608
2021-07-23T11:19:56.707 INFO   🔄 Synced: True
2021-07-23T11:19:56.751 INFO   ----------------------------------------------------------------
2021-07-23T11:19:56.751 INFO   🟣 Current Points: 1041
2021-07-23T11:19:56.752 INFO   📈 Pool Difficulty: 34
2021-07-23T11:19:56.752 INFO   🟡 Pool Found: 11179
2021-07-23T11:19:56.752 INFO   🟢 Pool Acknowledged: 11193
2021-07-23T11:19:56.752 INFO   🟡 Pool Found Last 24H: 11179
2021-07-23T11:19:56.752 INFO   🟢 Pool Acknowledged Last 24H: 11193
2021-07-23T11:19:56.753 INFO   ❌ Pool Errors 24h: 0
2021-07-23T11:19:56.761 INFO   ----------------------------------------------------------------
2021-07-23T11:19:56.761 INFO   🌾 OG Plot Count: 0
2021-07-23T11:19:56.761 INFO   🌾 Portable Plot Count: 396
2021-07-23T11:19:56.762 INFO   🧺 OG Plot Size: 0.000 MiB
2021-07-23T11:19:56.762 INFO   🧺 Portable Plot Size: 39.193 TiB
2021-07-23T11:19:56.762 INFO   🖥️  Host: 192.168.1.1
2021-07-23T11:19:56.770 INFO   ----------------------------------------------------------------
2021-07-23T11:19:56.770 INFO   🌾 OG Plot Count: 0
2021-07-23T11:19:56.771 INFO   🌾 Portable Plot Count: 0
2021-07-23T11:19:56.771 INFO   🧺 OG Plot Size: 0.000 MiB
2021-07-23T11:19:56.771 INFO   🧺 Portable Plot Size: 0.000 MiB
2021-07-23T11:19:56.771 INFO   🖥️  Host: 127.0.0.1
2021-07-23T11:19:56.780 INFO   ----------------------------------------------------------------
2021-07-23T11:19:56.780 INFO   🌾 OG Plot Count: 0
2021-07-23T11:19:56.780 INFO   🌾 Portable Plot Count: 844
2021-07-23T11:19:56.780 INFO   🧺 OG Plot Size: 0.000 MiB
2021-07-23T11:19:56.780 INFO   🧺 Portable Plot Size: 83.533 TiB
2021-07-23T11:19:56.780 INFO   🖥️  Host: 192.168.1.1
Traceback (most recent call last):
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context
    self.dialect.do_execute(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute
    cursor.execute(statement, parameters)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 99, in execute
    self._adapt_connection._handle_exception(error)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 228, in _handle_exception
    raise error
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 81, in execute
    self.await_(_cursor.execute(operation, parameters))
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 69, in await_only
    return current.driver.switch(awaitable)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 122, in greenlet_spawn
    value = await result
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/aiosqlite/cursor.py", line 37, in execute
    await self._execute(self._cursor.execute, sql, parameters)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/aiosqlite/cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/aiosqlite/core.py", line 129, in _execute
    return await future
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/aiosqlite/core.py", line 102, in run
    result = function()
sqlite3.IntegrityError: UNIQUE constraint failed: harvester_events.ts, harvester_events.host

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/root/chia-monitor/monitor/__main__.py", line 136, in <module>
    asyncio.run(aggregator(exporter, notifier))
  File "/usr/lib/python3.8/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/root/chia-monitor/monitor/__main__.py", line 77, in aggregator
    await persist_event(event)
  File "/root/chia-monitor/monitor/__main__.py", line 39, in persist_event
    await db_session.commit()
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/ext/asyncio/session.py", line 333, in commit
    return await greenlet_spawn(self.sync_session.commit)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 129, in greenlet_spawn
    result = context.switch(value)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1428, in commit
    self._transaction.commit(_to_root=self.future)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 829, in commit
    self._prepare_impl()
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
    self.session.flush()
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3298, in flush
    self._flush(objects)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3438, in _flush
    transaction.rollback(_capture_exception=True)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
    raise exception
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3398, in _flush
    flush_context.execute()
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
    rec.execute(self)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 630, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 242, in save_obj
    _emit_insert_statements(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 1094, in _emit_insert_statements
    c = connection._execute_20(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1582, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1451, in _execute_clauseelement
    ret = self._execute_context(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1813, in _execute_context
    self._handle_dbapi_exception(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1994, in _handle_dbapi_exception
    util.raise_(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
    raise exception
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context
    self.dialect.do_execute(
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute
    cursor.execute(statement, parameters)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 99, in execute
    self._adapt_connection._handle_exception(error)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 228, in _handle_exception
    raise error
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 81, in execute
    self.await_(_cursor.execute(operation, parameters))
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 69, in await_only
    return current.driver.switch(awaitable)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 122, in greenlet_spawn
    value = await result
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/aiosqlite/cursor.py", line 37, in execute
    await self._execute(self._cursor.execute, sql, parameters)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/aiosqlite/cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/aiosqlite/core.py", line 129, in _execute
    return await future
  File "/root/.local/share/virtualenvs/chia-monitor-ToXQE9iy/lib/python3.8/site-packages/aiosqlite/core.py", line 102, in run
    result = function()
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: harvester_events.ts, harvester_events.host
[SQL: INSERT INTO harvester_events (ts, host, plot_count, portable_plot_count, plot_size, portable_plot_size) VALUES (?, ?, ?, ?, ?, ?)]
[parameters: ('2021-07-23 11:19:56.723106', '192.168.1.1', 0, 844, 0, 91845464709906)]
(Background on this error at: http://sqlalche.me/e/14/gkpj)
2021-07-23T11:19:56.841 ERROR  Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f56acf726a0>
2021-07-23T11:19:56.841 ERROR  Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f56acfce8e0>
2021-07-23T11:19:56.841 ERROR  Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f56acfdcf70>
2021-07-23T11:19:56.841 ERROR  Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f56acf72040>
2021-07-23T11:19:56.841 ERROR  Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f56acf72760>
2021-07-23T11:19:56.842 ERROR  Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x7f56acf9bfa0>, 76765.947169551), (<aiohttp.client_proto.ResponseHandler object at 0x7f56acf66760>, 76765.952335297)]']
connector: <aiohttp.connector.TCPConnector object at 0x7f56acfdcdf0>
2021-07-23T11:19:56.842 ERROR  Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x7f56acf4d820>, 76765.957695482), (<aiohttp.client_proto.ResponseHandler object at 0x7f56ac6eee20>, 76765.957754708), (<aiohttp.client_proto.ResponseHandler object at 0x7f56ac712dc0>, 76765.974993511)]']
connector: <aiohttp.connector.TCPConnector object at 0x7f56acf72d00>

Using IP address as unique constraint

My harvesters are all behind a NAT / VPN so they all show up with the same ip address

Running monitor gives the following exception
sqlite3.IntegrityError: UNIQUE constraint failed: harvester_events.ts
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: harvester_events.ts
[SQL: INSERT INTO harvester_events (ts, plot_count, portable_plot_count, plot_size, portable_plot_size, host) VALUES (?, ?, ?, ?, ?, ?)]
[parameters: ('2021-07-10 19:24:21.317341', 153, 0, 16649650377080, 0, 'X.X.X.X')]

Possibly use the Node ID and not the IP address?

Add discussion to repo

As title states, can we have discussions here? I would like to share my dashboard, we can bounce ideas off each other this way

space pool

sorry for newbie question.. but where to add pool link ?

error when using command pipenv run alembic upgrade head

Hello,

When I run the command pipenv run alembic upgrade head I get the following error:

Traceback (most recent call last):
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/bin/alembic", line 5, in
from alembic.config import main
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/init.py", line 3, in
from . import context
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/context.py", line 1, in
from .runtime.environment import EnvironmentContext
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/runtime/environment.py", line 12, in
from .migration import MigrationContext
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/runtime/migration.py", line 27, in
from .. import ddl
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/ddl/init.py", line 1, in
from . import mssql
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/ddl/mssql.py", line 14, in
from .base import AddColumn
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/ddl/base.py", line 14, in
from ..util.sqla_compat import _columns_for_constraint # noqa
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/util/init.py", line 1, in
from .editor import open_in_editor
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/util/editor.py", line 11, in
from .compat import is_posix
File "/home/jorgen/.local/share/virtualenvs/chia-monitor-ou3YiYOO/lib/python3.8/site-packages/alembic/util/compat.py", line 33, in
import importlib_resources # type:ignore[no-redef] # noqa
ModuleNotFoundError: No module named 'importlib_resources'

Crash when running in windows

  • I have 5 remote harvesters connecting to a farmer.

Here is the error logs:

Traceback (most recent call last):
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\engine\base.py", line 1770, in _execute_context
    self.dialect.do_execute(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\engine\default.py", line 717, in do_execute
    cursor.execute(statement, parameters)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 99, in execute
    self._adapt_connection._handle_exception(error)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 228, in _handle_exception
    raise error
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 81, in execute
    self.await_(_cursor.execute(operation, parameters))
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 69, in await_only
    return current.driver.switch(awaitable)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 122, in greenlet_spawn
    value = await result
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiosqlite\cursor.py", line 37, in execute
    await self._execute(self._cursor.execute, sql, parameters)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiosqlite\cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiosqlite\core.py", line 129, in _execute
    return await future
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiosqlite\core.py", line 102, in run
    result = function()
sqlite3.IntegrityError: UNIQUE constraint failed: farming_info_events.ts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\admin\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\Admin\chia-monitor\monitor\__main__.py", line 112, in <module>
    asyncio.run(aggregator(exporter, notifier))
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 642, in run_until_complete
    return future.result()
  File "C:\Users\Admin\chia-monitor\monitor\__main__.py", line 65, in aggregator
    await persist_event(event)
  File "C:\Users\Admin\chia-monitor\monitor\__main__.py", line 36, in persist_event
    await db_session.commit()
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 333, in commit
    return await greenlet_spawn(self.sync_session.commit)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 129, in greenlet_spawn
    result = context.switch(value)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\session.py", line 1428, in commit
    self._transaction.commit(_to_root=self.future)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\session.py", line 829, in commit
    self._prepare_impl()
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\session.py", line 808, in _prepare_impl
    self.session.flush()
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\session.py", line 3298, in flush
    self._flush(objects)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\session.py", line 3438, in _flush
    transaction.rollback(_capture_exception=True)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\session.py", line 3398, in _flush
    flush_context.execute()
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 456, in execute
    rec.execute(self)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 630, in execute
    util.preloaded.orm_persistence.save_obj(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\persistence.py", line 242, in save_obj
    _emit_insert_statements(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\orm\persistence.py", line 1094, in _emit_insert_statements
    c = connection._execute_20(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\engine\base.py", line 1582, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\sql\elements.py", line 323, in _execute_on_connection
    return connection._execute_clauseelement(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\engine\base.py", line 1451, in _execute_clauseelement
    ret = self._execute_context(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\engine\base.py", line 1813, in _execute_context
    self._handle_dbapi_exception(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\engine\base.py", line 1994, in _handle_dbapi_exception
    util.raise_(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\engine\base.py", line 1770, in _execute_context
    self.dialect.do_execute(
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\engine\default.py", line 717, in do_execute
    cursor.execute(statement, parameters)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 99, in execute
    self._adapt_connection._handle_exception(error)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 228, in _handle_exception
    raise error
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 81, in execute
    self.await_(_cursor.execute(operation, parameters))
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 69, in await_only
    return current.driver.switch(awaitable)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 122, in greenlet_spawn
    value = await result
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiosqlite\cursor.py", line 37, in execute
    await self._execute(self._cursor.execute, sql, parameters)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiosqlite\cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiosqlite\core.py", line 129, in _execute
    return await future
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiosqlite\core.py", line 102, in run
    result = function()
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: farming_info_events.ts
[SQL: INSERT INTO farming_info_events (ts, challenge_hash, signage_point, passed_filter, proofs, total_plots) VALUES (?, ?, ?, ?, ?, ?)]
[parameters: ('2021-07-12 17:27:17.517614', '0x06570eeaf05dee5c1255a107302bc7f62ae09f1a54db17fcf8727113e17e96d0', '0xc47c18b5091fa835e2f3632b01f91fb7a17874e7d5119d9b66d38ca2e5c5fff8', 1, 0, 778)]
(Background on this error at: http://sqlalche.me/e/14/gkpj)
2021-07-12T17:27:17.743 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x000002523B232970>←[0m
2021-07-12T17:27:17.743 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x000002523B20C280>←[0m
2021-07-12T17:27:17.745 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x000002523B20C7C0>←[0m
2021-07-12T17:27:17.745 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x000002523B20CFA0>←[0m
2021-07-12T17:27:17.745 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x000002523B232EB0>
transport: <_ProactorSocketTransport fd=1160 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function ClientResponse.__del__ at 0x0000025239309940>
Traceback (most recent call last):
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiohttp\client_reqrep.py", line 803, in __del__
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiohttp\connector.py", line 170, in release
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiohttp\connector.py", line 650, in _release
  File "C:\Users\Admin\.virtualenvs\chia-monitor--AE16joc\lib\site-packages\aiohttp\client_proto.py", line 63, in close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-12T17:27:17.748 ←[31mERROR ←[0m Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x000002523B28B400>, 680519.984), (<aiohttp.client_proto.ResponseHandler object at 0x000002523B244B20>, 680519.984)]']
connector: <aiohttp.connector.TCPConnector object at 0x000002523B20C2B0>←[0m
2021-07-12T17:27:17.748 ←[31mERROR ←[0m Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x000002523B28B520>, 680521.125)]']
connector: <aiohttp.connector.TCPConnector object at 0x000002523B20CC40>←[0m
2021-07-12T17:27:17.748 ←[31mERROR ←[0m Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x000002523B2CC9A0>, 680520.89), (<aiohttp.client_proto.ResponseHandler object at 0x000002523B2B4760>, 680520.89), (<aiohttp.client_proto.ResponseHandler object at 0x000002523B28B9A0>, 680520.921)]']
connector: <aiohttp.connector.TCPConnector object at 0x000002523B20C3A0>←[0m
2021-07-12T17:27:17.749 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x000002523B20C970>
transport: <_ProactorSocketTransport fd=1128 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000025237288E50>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-12T17:27:17.750 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x000002523B20CCA0>
transport: <_ProactorSocketTransport fd=1248 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000025237288E50>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-12T17:27:17.752 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x000002523B232310>
transport: <_ProactorSocketTransport fd=1152 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000025237288E50>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-12T17:27:17.754 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x000002523B2327C0>
transport: <_ProactorSocketTransport fd=1156 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000025237288E50>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-12T17:27:17.755 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x000002523B25AD30>
transport: <_ProactorSocketTransport fd=1252 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000025237288E50>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-12T17:27:17.757 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x000002523B24FF10>
transport: <_ProactorSocketTransport fd=1516 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000025237288E50>
Traceback (most recent call last):
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\users\admin\appdata\local\programs\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed

change update frequency

Hi,

how can I reduce the update frequency of chia-monitor to get less CPU usage from the monitor? It's currently using about 4-5% of my CPU, which I would like to reduce.

chives-monitor?

Hi, I just installed chia-monitor and it is great! I'd like to also use this for chives (chiafork). can somebody tell me what to change in chia-monitor to be able to monitor both coins in parallel?

best regards

Near future changes to INFO log-level by chia devs

Saw this mentioned in the flexpool discord and thought I'd give you a heads up:

Sargonas — Today at 9:12 PM
Info is a funny thing.. it wasn't meant to be run day to day, as it's super I/O and resourece intensive.. but you DO need it for like, 90% of the monitoring tools out there. So we're trying to move things out of it monitoring tools don't need and/or make a new class of "monitoring" between info and warn that ONLY has what tools want/need. Alternatively maybe we can make hooks for tools to get info from less resource heavy methods. I have some ongoing chats with Foxy (dashboard) and Gil (farmr) and a few others about how we can make this easier for them and less effort on your nodes.

random db crash

after starting the chia monitor it crashes producing the following errors

image

Random Useless Values shown in Dashboard

Hi. I have installed chia monitor as written in README. I am using Ubuntu 20.04 LTS.

Then I installed Grafana 8 (also tried Grafana 7.5.10) and Prometheus. Changed prometheus.yml as instructed:

scrape_configs:
  - job_name: chia_monitor
    static_configs:
    - targets: ['localhost:8000']

Launched Grafana at localhost:3000, imported dashboard, set data source as Prometeus and entered URL: http://localhost:8000/metrics and also tried http://localhost:8000. Also, I tried both Access settings: Server and Browser.

At the end, I get the random useless values. Here are 3 screenshots within 30 sec.

Screenshot from 2021-07-26 23-02-35
Screenshot from 2021-07-26 23-02-45
Screenshot from 2021-07-26 23-02-55

Random crash

PC Specs: Windows 10, Ryzen 9 3900x, B550 Steel Legend, NO GPU.
Python: 3.8.10, Chia: 1.1.7
The PC is it used with Remote Desktop Connection, the error happens some time (this time 10 min) after I have disconnected from the PC.
The Error is large so I put it in a .txt file. Error.txt

Too many disk I/O operations per second

Used chia-monitor for a few days.
Find this monitor process had I/O reads above 500 miliions and increase 10k per second When I look at the win10 taskmgr.
It's a huge number for I/O reads.
I think it may be damage to disk.
Can you fixed it and reduce I/O operations by using cache?

When running alembic upgrade head, get error

After trying to update chia-mon following the steps from documentation I get the below Error message. I have also tried installing from a fresh git clone with the same results. Running on ubuntu server 20.04.

ubuntu@hip-sloth:~/gitclones/chia-monitor$ pipenv run alembic upgrade head
Traceback (most recent call last):
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/bin/alembic", line 5, in <module>
    from alembic.config import main
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/__init__.py", line 3, in <module>
    from . import context
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/context.py", line 1, in <module>
    from .runtime.environment import EnvironmentContext
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/runtime/environment.py", line 12, in <module>
    from .migration import MigrationContext
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/runtime/migration.py", line 27, in <module>
    from .. import ddl
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/ddl/__init__.py", line 1, in <module>
    from . import mssql
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/ddl/mssql.py", line 14, in <module>
    from .base import AddColumn
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/ddl/base.py", line 14, in <module>
    from ..util.sqla_compat import _columns_for_constraint  # noqa
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/util/__init__.py", line 1, in <module>
    from .editor import open_in_editor
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/util/editor.py", line 11, in <module>
    from .compat import is_posix
  File "/home/ubuntu/.local/share/virtualenvs/chia-monitor-R7JNndPq/lib/python3.8/site-packages/alembic/util/compat.py", line 33, in <module>
    import importlib_resources  # type:ignore[no-redef] # noqa
ModuleNotFoundError: No module named 'importlib_resources'

sth went wrong

Hi,

first of all. Thanks for your great work.
Today after updating i cant get it to run.

Even tried complete reinstall.

error:

Traceback (most recent call last):
  File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/chia/chia-monitor/monitor/__main__.py", line 85, in <module>
    lost_plots_alert_threshold = config["notifications"]["lost_plots_alert_threshold"]
KeyError: 'lost_plots_alert_threshold'

any suggestions?

Crashing with this exception sqlite3.IntegrityError: UNIQUE constraint failed: signage_point_events.ts

I'm getting this crash pretty consistently:

2021-07-20T08:59:29.369 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:29.369 ←[32mINFO  ←[0m 🏷️  Price in USD: 169.06←[0m
2021-07-20T08:59:29.369 ←[32mINFO  ←[0m 🏷️  Price in EUR: 143.44←[0m
2021-07-20T08:59:29.369 ←[32mINFO  ←[0m 🏷️  Price in BTC: 0.00566428←[0m
2021-07-20T08:59:29.369 ←[32mINFO  ←[0m 🏷️  Price in ETH: 0.09555288←[0m
2021-07-20T08:59:31.291 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:31.291 ←[32mINFO  ←[0m 🌾 OG Plot Count: 186←[0m
2021-07-20T08:59:31.291 ←[32mINFO  ←[0m 🌾 Portable Plot Count: 43←[0m
2021-07-20T08:59:31.292 ←[32mINFO  ←[0m 🧺 OG Plot Size: 18.411 TiB←[0m
2021-07-20T08:59:31.292 ←[32mINFO  ←[0m 🧺 Portable Plot Size: 4.257 TiB←[0m
2021-07-20T08:59:31.292 ←[32mINFO  ←[0m 🖥️  Host: 127.0.0.1←[0m
2021-07-20T08:59:31.470 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:31.471 ←[32mINFO  ←[0m 🌾 OG Plot Count: 81←[0m
2021-07-20T08:59:31.471 ←[32mINFO  ←[0m 🌾 Portable Plot Count: 0←[0m
2021-07-20T08:59:31.471 ←[32mINFO  ←[0m 🧺 OG Plot Size: 8.018 TiB←[0m
2021-07-20T08:59:31.471 ←[32mINFO  ←[0m 🧺 Portable Plot Size: 0.000 MiB←[0m
2021-07-20T08:59:31.471 ←[32mINFO  ←[0m 🖥️  Host: 192.168.2.206←[0m
2021-07-20T08:59:31.649 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:31.649 ←[32mINFO  ←[0m 🌾 OG Plot Count: 92←[0m
2021-07-20T08:59:31.649 ←[32mINFO  ←[0m 🌾 Portable Plot Count: 12←[0m
2021-07-20T08:59:31.650 ←[32mINFO  ←[0m 🧺 OG Plot Size: 9.107 TiB←[0m
2021-07-20T08:59:31.650 ←[32mINFO  ←[0m 🧺 Portable Plot Size: 1.188 TiB←[0m
2021-07-20T08:59:31.650 ←[32mINFO  ←[0m 🖥️  Host: 192.168.2.205←[0m
2021-07-20T08:59:31.825 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:31.825 ←[32mINFO  ←[0m 🟣 Current Points: 114←[0m
2021-07-20T08:59:31.825 ←[32mINFO  ←[0m 📈 Pool Difficulty: 4←[0m
2021-07-20T08:59:31.826 ←[32mINFO  ←[0m 🟡 Pool Found: 394←[0m
2021-07-20T08:59:31.826 ←[32mINFO  ←[0m 🟢 Pool Acknowledged: 384←[0m
2021-07-20T08:59:31.826 ←[32mINFO  ←[0m 🟡 Pool Found Last 24H: 394←[0m
2021-07-20T08:59:31.826 ←[32mINFO  ←[0m 🟢 Pool Acknowledged Last 24H: 384←[0m
2021-07-20T08:59:31.826 ←[32mINFO  ←[0m ❌ Pool Errors 24h: 0←[0m
2021-07-20T08:59:32.001 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:32.002 ←[32mINFO  ←[0m 📶 Full Node Peer Count: 27←[0m
2021-07-20T08:59:32.002 ←[32mINFO  ←[0m 📶 Farmer Peer Count: 1←[0m
2021-07-20T08:59:32.002 ←[32mINFO  ←[0m 📶 Harvester Peer Count: 3←[0m
2021-07-20T08:59:32.147 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:32.147 ←[32mINFO  ←[0m 💰 Total Balance: x.xxxxx XCH←[0m
2021-07-20T08:59:32.147 ←[32mINFO  ←[0m 💸 Total Farmed: x.xxxxx XCH←[0m
2021-07-20T08:59:32.325 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:32.325 ←[32mINFO  ←[0m 💾 Current Netspace: 30.066 EiB←[0m
2021-07-20T08:59:32.325 ←[32mINFO  ←[0m 📈 Farming Difficulty: 2464←[0m
2021-07-20T08:59:32.325 ←[32mINFO  ←[0m 🏔️  Peak Height: 597510←[0m
2021-07-20T08:59:32.325 ←[32mINFO  ←[0m 🔄 Synced: Yes←[0m
2021-07-20T08:59:32.325 ←[32mINFO  ←[0m 🏔️ Syncing Peak Height: 0←[0m
2021-07-20T08:59:32.326 ←[32mINFO  ←[0m 🏔️ Syncing Progress Height: 0←[0m
2021-07-20T08:59:38.213 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:38.213 ←[32mINFO  ←[0m 🔏 Signage Point Index: xx←[0m
2021-07-20T08:59:38.213 ←[32mINFO  ←[0m 🎰 Challenge Hash: xxx←[0m
2021-07-20T08:59:38.213 ←[32mINFO  ←[0m ⌛ Signage Point: xxx←[0m
2021-07-20T08:59:38.603 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:38.603 ←[32mINFO  ←[0m 🎰 Challenge Hash: xxx←[0m
2021-07-20T08:59:38.603 ←[32mINFO  ←[0m ⌛ Signage Point: xxx←[0m
2021-07-20T08:59:38.603 ←[32mINFO  ←[0m 🌾 Plot Count: 81←[0m
2021-07-20T08:59:38.603 ←[32mINFO  ←[0m 🔎 Passed Filter: 1←[0m
2021-07-20T08:59:38.604 ←[32mINFO  ←[0m ✅ Total Proofs found: 0←[0m
2021-07-20T08:59:42.031 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:42.031 ←[32mINFO  ←[0m 🎰 Challenge Hash: xxx←[0m
2021-07-20T08:59:42.031 ←[32mINFO  ←[0m ⌛ Signage Point: xxx←[0m
2021-07-20T08:59:42.032 ←[32mINFO  ←[0m 🌾 Plot Count: 229←[0m
2021-07-20T08:59:42.032 ←[32mINFO  ←[0m 🔎 Passed Filter: 1←[0m
2021-07-20T08:59:42.032 ←[32mINFO  ←[0m ✅ Total Proofs found: 0←[0m
2021-07-20T08:59:42.322 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:42.322 ←[32mINFO  ←[0m 🎰 Challenge Hash: xxx←[0m
2021-07-20T08:59:42.322 ←[32mINFO  ←[0m ⌛ Signage Point: xxx←[0m
2021-07-20T08:59:42.323 ←[32mINFO  ←[0m 🌾 Plot Count: 104←[0m
2021-07-20T08:59:42.323 ←[32mINFO  ←[0m 🔎 Passed Filter: 1←[0m
2021-07-20T08:59:42.323 ←[32mINFO  ←[0m ✅ Total Proofs found: 0←[0m
2021-07-20T08:59:42.824 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:42.824 ←[32mINFO  ←[0m 🔏 Signage Point Index: xx←[0m
2021-07-20T08:59:42.825 ←[32mINFO  ←[0m 🎰 Challenge Hash: xxx←[0m
2021-07-20T08:59:42.825 ←[32mINFO  ←[0m ⌛ Signage Point: xxx←[0m
2021-07-20T08:59:46.795 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:46.796 ←[32mINFO  ←[0m 🔏 Signage Point Index: xx←[0m
2021-07-20T08:59:46.800 ←[32mINFO  ←[0m 🎰 Challenge Hash: xxx←[0m
2021-07-20T08:59:46.801 ←[32mINFO  ←[0m ⌛ Signage Point: xxx←[0m
2021-07-20T08:59:49.916 ←[32mINFO  ←[0m ----------------------------------------------------------------←[0m
2021-07-20T08:59:49.916 ←[32mINFO  ←[0m 🔏 Signage Point Index: xx←[0m
2021-07-20T08:59:49.920 ←[32mINFO  ←[0m 🎰 Challenge Hash: xxx←[0m
2021-07-20T08:59:49.921 ←[32mINFO  ←[0m ⌛ Signage Point: xxx←[0m
Traceback (most recent call last):
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\engine\base.py", line 1770, in _execute_context
    self.dialect.do_execute(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\engine\default.py", line 717, in do_execute
    cursor.execute(statement, parameters)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 99, in execute
    self._adapt_connection._handle_exception(error)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 228, in _handle_exception
    raise error
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 81, in execute
    self.await_(_cursor.execute(operation, parameters))
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 69, in await_only
    return current.driver.switch(awaitable)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 122, in greenlet_spawn
    value = await result
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiosqlite\cursor.py", line 37, in execute
    await self._execute(self._cursor.execute, sql, parameters)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiosqlite\cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiosqlite\core.py", line 129, in _execute
    return await future
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiosqlite\core.py", line 102, in run
    result = function()
sqlite3.IntegrityError: UNIQUE constraint failed: signage_point_events.ts

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "c:\python\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\python\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:\Programs\chia-monitor\monitor\__main__.py", line 136, in <module>
    asyncio.run(aggregator(exporter, notifier))
  File "c:\python\python39\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "c:\python\python39\lib\asyncio\base_events.py", line 642, in run_until_complete
    return future.result()
  File "D:\Programs\chia-monitor\monitor\__main__.py", line 77, in aggregator
    await persist_event(event)
  File "D:\Programs\chia-monitor\monitor\__main__.py", line 39, in persist_event
    await db_session.commit()
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 333, in commit
    return await greenlet_spawn(self.sync_session.commit)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 129, in greenlet_spawn
    result = context.switch(value)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\session.py", line 1428, in commit
    self._transaction.commit(_to_root=self.future)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\session.py", line 829, in commit
    self._prepare_impl()
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\session.py", line 808, in _prepare_impl
    self.session.flush()
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\session.py", line 3298, in flush
    self._flush(objects)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\session.py", line 3438, in _flush
    transaction.rollback(_capture_exception=True)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\session.py", line 3398, in _flush
    flush_context.execute()
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 456, in execute
    rec.execute(self)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 630, in execute
    util.preloaded.orm_persistence.save_obj(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\persistence.py", line 242, in save_obj
    _emit_insert_statements(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\orm\persistence.py", line 1094, in _emit_insert_statements
    c = connection._execute_20(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\engine\base.py", line 1582, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\sql\elements.py", line 323, in _execute_on_connection
    return connection._execute_clauseelement(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\engine\base.py", line 1451, in _execute_clauseelement
    ret = self._execute_context(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\engine\base.py", line 1813, in _execute_context
    self._handle_dbapi_exception(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\engine\base.py", line 1994, in _handle_dbapi_exception
    util.raise_(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\engine\base.py", line 1770, in _execute_context
    self.dialect.do_execute(
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\engine\default.py", line 717, in do_execute
    cursor.execute(statement, parameters)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 99, in execute
    self._adapt_connection._handle_exception(error)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 228, in _handle_exception
    raise error
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 81, in execute
    self.await_(_cursor.execute(operation, parameters))
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 69, in await_only
    return current.driver.switch(awaitable)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 122, in greenlet_spawn
    value = await result
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiosqlite\cursor.py", line 37, in execute
    await self._execute(self._cursor.execute, sql, parameters)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiosqlite\cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiosqlite\core.py", line 129, in _execute
    return await future
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiosqlite\core.py", line 102, in run
    result = function()
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: signage_point_events.ts
[SQL: INSERT INTO signage_point_events (ts, challenge_hash, signage_point, signage_point_index) VALUES (?, ?, ?, ?)]
[parameters: ('2021-07-20 08:59:38.943587', 'xxx', 'xxx', xx)]
(Background on this error at: http://sqlalche.me/e/14/gkpj)
Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x0000020C9568D820>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 116, in __del__
    self.close()
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 108, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "c:\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
    self._check_closed()
  File "c:\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
2021-07-20T08:59:52.619 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000020C9820ECA0>←[0m
2021-07-20T08:59:52.619 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000020C981F7DC0>←[0m
2021-07-20T08:59:52.621 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000020C981E35B0>←[0m
2021-07-20T08:59:52.624 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000020C9820E220>←[0m
2021-07-20T08:59:52.624 ←[31mERROR ←[0m Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000020C9820E4F0>←[0m
2021-07-20T08:59:52.625 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x0000020C981F79D0>
transport: <_ProactorSocketTransport fd=1040 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function ClientResponse.__del__ at 0x0000020C97687C10>
Traceback (most recent call last):
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiohttp\client_reqrep.py", line 803, in __del__
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiohttp\connector.py", line 170, in release
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiohttp\connector.py", line 650, in _release
  File "C:\Users\Sam\.virtualenvs\chia-monitor-MiorTuYS\lib\site-packages\aiohttp\client_proto.py", line 63, in close
  File "c:\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-20T08:59:52.660 ←[31mERROR ←[0m Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x0000020C982703A0>, 451174.968), (<aiohttp.client_proto.ResponseHandler object at 0x0000020C9823CAC0>, 451175.484)]']
connector: <aiohttp.connector.TCPConnector object at 0x0000020C981E37F0>←[0m
2021-07-20T08:59:52.660 ←[31mERROR ←[0m Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x0000020C98270460>, 451175.156)]']
connector: <aiohttp.connector.TCPConnector object at 0x0000020C9820E490>←[0m
2021-07-20T08:59:52.660 ←[31mERROR ←[0m Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x0000020C982708E0>, 451174.984), (<aiohttp.client_proto.ResponseHandler object at 0x0000020C9828B5E0>, 451174.984), (<aiohttp.client_proto.ResponseHandler object at 0x0000020C9828BB80>, 451174.984)]']
connector: <aiohttp.connector.TCPConnector object at 0x0000020C9820E940>←[0m
2021-07-20T08:59:52.661 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x0000020C9820E130>
transport: <_ProactorSocketTransport fd=1016 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000020C9562C700>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-20T08:59:52.672 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x0000020C981F7430>
transport: <_ProactorSocketTransport fd=1108 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000020C9562C700>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-20T08:59:52.678 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x0000020C9820EA00>
transport: <_ProactorSocketTransport fd=1036 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000020C9562C700>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-20T08:59:52.688 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x0000020C98207D30>
transport: <_ProactorSocketTransport fd=1136 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000020C9562C700>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-20T08:59:52.694 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x0000020C9820E280>
transport: <_ProactorSocketTransport fd=1132 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000020C9562C700>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
2021-07-20T08:59:52.706 ←[31mERROR ←[0m Fatal error on SSL transport
protocol: <asyncio.sslproto.SSLProtocol object at 0x0000020C981F77F0>
transport: <_ProactorSocketTransport fd=1048 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
    self._transport.write(chunk)
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 359, in write
    self._loop_writing(data=bytes(data))
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 395, in _loop_writing
    self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'←[0m
Exception ignored in: <function _SSLProtocolTransport.__del__ at 0x0000020C9562C700>
Traceback (most recent call last):
  File "c:\python\python39\lib\asyncio\sslproto.py", line 321, in __del__
  File "c:\python\python39\lib\asyncio\sslproto.py", line 316, in close
  File "c:\python\python39\lib\asyncio\sslproto.py", line 593, in _start_shutdown
  File "c:\python\python39\lib\asyncio\sslproto.py", line 598, in _write_appdata
  File "c:\python\python39\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
  File "c:\python\python39\lib\asyncio\sslproto.py", line 720, in _fatal_error
  File "c:\python\python39\lib\asyncio\proactor_events.py", line 151, in _force_close
  File "c:\python\python39\lib\asyncio\base_events.py", line 746, in call_soon
  File "c:\python\python39\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed

Add option to turn off "Proof found!" notifications

As the title states, with pool plots, we don't need to see 100's of notifications throughout the day anymore
You could differentiate between a partial and a full so we can still be alerted if we actually find a proof, whether via OG or pool plots
Of course, seeing all of these notifications lets us know that things are working, to some degree
Perhaps you could incorporate some of the notifications in chiadog such as skipped signage points, "did not participate in any challenges for X time", etc

WARNING Error while collecting events. Trying again... Failed to get harvesters via RPC. Is your farmer running?

I update 1.2.0 and the newest chia-monitor.
throw WARNING Error while collecting events. Trying again... Failed to get harvesters via RPC. Is your farmer running?.
full log:

2021-07-09T06:13:20.416 INFO   🔌 Creating RPC Collector...
2021-07-09T06:13:25.078 INFO   🔌 Creating WebSocket Collector...
2021-07-09T06:13:25.084 INFO   🚀 Starting monitoring loop!
2021-07-09T06:13:25.089 WARNING Error while collecting events. Trying again... Failed to get harvesters via RPC. Is your farmer running?
2021-07-09T06:13:25.098 INFO   ----------------------------------------------------------------
2021-07-09T06:13:25.098 INFO   💾 Current Netspace: 30.926 EiB
2021-07-09T06:13:25.098 INFO   📈 Farming Difficulty: 2288
2021-07-09T06:13:25.098 INFO   🏔️  Peak Height: 546093
2021-07-09T06:13:25.099 INFO   🔄 Synced: True
2021-07-09T06:13:25.111 INFO   ----------------------------------------------------------------
2021-07-09T06:13:25.111 INFO   💰 Total Balance: 0.00000 XCH
2021-07-09T06:13:25.117 INFO   ----------------------------------------------------------------
2021-07-09T06:13:25.117 INFO   📶 Full Node Peer Count: 11
2021-07-09T06:13:25.117 INFO   📶 Farmer Peer Count: 1
2021-07-09T06:13:25.117 INFO   📶 Harvester Peer Count: 8
2021-07-09T06:13:26.107 INFO   ----------------------------------------------------------------
2021-07-09T06:13:26.107 INFO   🎰 Challenge Hash: 0x956d3e7589901483b80b4bd859094d5f4e58c0142f74bfdc5938984f4799f1f6
2021-07-09T06:13:26.107 INFO   ⌛ Signage Point: 0xc18fe1bae9be5a88049c28b4bb938bac9f4d806a8a5fdd076d232407cff03988
2021-07-09T06:13:26.107 INFO   🌾 Plot Count: 3953
2021-07-09T06:13:26.107 INFO   🔎 Passed Filter: 10
2021-07-09T06:13:26.107 INFO   ✅ Total Proofs found: 0
2021-07-09T06:13:27.745 INFO   ----------------------------------------------------------------
2021-07-09T06:13:27.745 INFO   🎰 Challenge Hash: 0x956d3e7589901483b80b4bd859094d5f4e58c0142f74bfdc5938984f4799f1f6
2021-07-09T06:13:27.745 INFO   ⌛ Signage Point: 0x13bab5b0b3580305d8884f0c576abc69d474e7b4af572fb6bc9b52406d6e911e
2021-07-09T06:13:27.745 INFO   🌾 Plot Count: 4046
2021-07-09T06:13:27.745 INFO   🔎 Passed Filter: 6
2021-07-09T06:13:27.745 INFO   ✅ Total Proofs found: 0
2021-07-09T06:13:28.700 INFO   ----------------------------------------------------------------
2021-07-09T06:13:28.700 INFO   🎰 Challenge Hash: 0x956d3e7589901483b80b4bd859094d5f4e58c0142f74bfdc5938984f4799f1f6
2021-07-09T06:13:28.700 INFO   ⌛ Signage Point: 0x13bab5b0b3580305d8884f0c576abc69d474e7b4af572fb6bc9b52406d6e911e
2021-07-09T06:13:28.700 INFO   🌾 Plot Count: 3953
2021-07-09T06:13:28.700 INFO   🔎 Passed Filter: 3
2021-07-09T06:13:28.700 INFO   ✅ Total Proofs found: 0
^C2021-07-09T06:13:28.748 INFO   🛑 Shutting down!
2021-07-09T06:13:28.750 INFO   👋 Bye!

grafana: Data not refreshing fast enough in dashboard

I noticed that the panels in the dashboard weren't refreshing fast enough (even when chia-monitor has read new values). They stay out of sync quite a while and when I open an individual panel and focus some of the fields in the query UI then it gets the new values. I looked up this issue online and it seems to be known in grafana.

https://community.grafana.com/t/data-is-not-refreshing-in-grafana-dashboard-but-refreshing-in-panel/41138

One of the workarounds being suggested was to open "Query Options" and setting "Max Data Points" to some high value like 999999. I tried this on all panels and now the refreshing of the dashboard seems to follow more closely the realtime values.

Maybe the provided grafana dashboard.json can be updated with this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.