I know how to access the activity report, but it doesn't tell me exactly how many posts they've read.
This is doable, although not through the web interface and provided that you have the correct permissions.
There is a Discussions Topics API that has a Get a Single Topic endpoint. It's covered in the API documentation Canvas LMS REST API Documentation
Basically, you make the API call GET /api/v1/courses/:course_id/discussion_topics/:topic_id
where :course_id and :discussion_id ger replaced by actual numbers that can be determined by the URL of the discussion from within the course.
It returns a JSON object that contains two values of interest here. I've shortened it for brevity.
discussion_subentry_count: 20 unread_count: 2
The discussion_subentry_count tells you the total number of posts in a discussion and the unread_count tells you the number that haven't been read. So, by using subtraction, you get that the number that have been read is 18.
Everything I've described so far can be done through the GUI (web interface), but it doesn't answer your question. It tells you how many items you've read, not how many a student has read.
To tell how many a student has read, you need an access token with admin privileges to masquerade as another user. Then you can do something like
The example shown above was actually from one of my students who has read 18 out of 20 posts in this week's discussion.
Unless you are the Canvas admin for your school, you'll most likely need to get the help of someone who has that capability and have them make API calls on your behalf.
If you feel that should be a feature built into Canvas or part of the activity stream, then see How do I create a new feature idea?
Dina, given the way discussions are displayed - all on one page - there is no way that I know of to tell how many discussion posts a student has read. I think this is why many instructors have students reply to other students posts - it's the best way to know that they read and (hopefully) thought about the post!
Retrieving data ...