Beats is a data shipper and part of the Elastic (ELK) stack. It can be thought of as a tiny version of Logstash that runs locally. It monitors a single resource, collects new data (either in real time or on a schedule), processes it, and forwards it to a downstream such as Logstash or Elasticsearch.
When communicating with Logstash, Beats transmits using a specialized, compressed TCP-based protocol called the Beats protocol. Otherwise, it just transmits via HTTP.
Beats is not strictly necessary for the ELK stack and was not originally part of it. If you are running in the cloud and your app is containerized, the logs will likely wind up somewhere that Logstash can consume directly (such as Cloudwatch or a Google Cloud Pub-Sub channel).