Grok Timezone/DateTime parsing issues

I would do that using dissect.

    dissect { mapping => { "message" => "[%{ts} %{+ts} %{+ts}] %{level} - %{something} - %{somethingElse} - %{restOfLine}" } }
    date { match => [ "ts", "yyyy-MM-dd HH:mm:ss Z" ] }