The best accelerometer depends on the intensity and bandwidth of the vibrations you need to measure.
For example, if the bandwidth of the vibrations is really large, you would need to use a wide band accelerometer such as IIS3DWB which has a 6kHz bandwidth with an output data rate of 26.7kHz (max full scale is 16g).
If the vibrations are really strong, you would need to use an high-g acceleremoter such as H3LIS331 which has a full scale up to 400g (max output data rate is 1kHz meaning vibrations up to 500Hz can be measured in the best case).
If the vibrations intensity is below 16g or 32g and bandwidth is below 3.5kHz then LSM6DSV16X or LSM6DSV32X can fit the bill. Both are equipped with MLC (machine learning core) and FSM (finite state machine) engines.
With MLC you can digitally filter the data, extract features (such as norm), and run a decision tree to detect what is happening. You just collect data logs and run MEMS Studio, MLC tool, to automatically select the best feature/filter and automatically design the decision tree. Multiple decision trees can be run in parallel.
With FSM you can detect if a specific sequence of events has happened. Again, use MEMS Studio, FSM tool, to write the program, which is made of a sequence of conditions related to acceleration, time, or MLC outputs, that must be met for the end state to be reached (which is where you typically trigger an interrupt). Multiple FSM programs can be run in parallel.
The first step would then be to collect the logs with the sensor of choice and have a look at the data in the time and frequency domain (FFT), MEMS Studio can be used for that. After that, one can verify if vibrations can be isolated by a suitable 2nd order IIR filter (check the app note dedicated to MLC to learn more); one can also check if a suitable lowpass filter can isolate the components needed to check the gravity vector and the presence of any residual acceleration.
The gyro can also help in case motion does also mean a change in orientation.