Discrepancy in logstash timestamp output and kibana

Kibana auto-adjusts from UTC (which is how the date is stored in Elasticsearch) to your local timezone. The correct way is as you stated, with the timezone parameter, and your example should work timezone => "America/Chicago"

I tested 2017-02-27 00:55:32.844021 with:

input { stdin {} }

filter {
  date {
    match => [ "message", "yyyy-MM-dd HH:mm:ss.SSSSSS" ]
  }
}

output { stdout { codec => rubydebug } }

And got output:

2017-02-27 00:55:32.844021
{
    "@timestamp" => 2017-02-27T07:55:32.844Z,
      "@version" => "1",
          "host" => "Steiny-2.local",
       "message" => "2017-02-27 00:55:32.844021"
}

But I'm in Mountain time. So I added timezone => "America/Chicago":

2017-02-27 00:55:32.844021
{
    "@timestamp" => 2017-02-27T06:55:32.844Z,
      "@version" => "1",
          "host" => "Steiny-2.local",
       "message" => "2017-02-27 00:55:32.844021"
}

And you can see that the @timestamp changed from 2017-02-27T07:55:32.844Z to 2017-02-27T06:55:32.844Z