You can do so in two ways:
1) direct observation:
You can keep an eye on the number of pending compactions. This will fluctuate with load, compaction strategy, ongoing repairs and nodes bootstrapping but generally the pattern is it should trend towards 0.
There have been a number of bugs in past versions of Cassandra whereby the number of pending compactions is not reported correctly, so depending on what version of Cassandra you run this could impact you.
2) Indirect observation
You can keep an eye on metrics that healthy compaction will directly contribute to. These include the number of sstables per read histogram, estimated droppable tombstones, tombstones per read etc. You should keep an eye on these things anyway as they can often show you areas where you can fine tune compaction or your data model.
Everything exposed by nodetool is consumable via JMX which is great to plug into your metrics/monitoring/observability system :)