PMM is indeed the best option for you. Deadlocks are error conditions returned to applications so there’s no need to monitor mysql for this if your app is properly coded to check errors. For long running transactions, you would need to run something like ‘SELECT * FROM performance_schema.processlist WHERE time > XX’ But then what do you do with that information once you have it? You can use pt-kill to kill long running transactions.
Which logs do you want? There are error logs and slow-query logs. Use any general tool for monitoring the error logs, but you will need to process/parse the slow log. Again PMM is the best for this.