【发布时间】:2017-03-06 07:02:14
【问题描述】:
我是 ELK 堆栈的新手,我让 LogStash 将数据从 MySQL 发送到 ElasticSearch,在终端上,它看起来已经发送了所有 40,000 条记录,但是当我去查看 Kibana 时,我发现只有 200 条记录被输入。
这是我使用的 LogStash 配置文件。
# file: simple-out.conf
input {
jdbc {
# Postgres jdbc connection string to our database, mydb
jdbc_connection_string => "jdbc:mysql://localhost:3306/tweets_articles"
# The user we wish to execute our statement as
jdbc_user => "root"
# The path to our downloaded jdbc driver
jdbc_driver_library => "/etc/elasticsearch/elasticsearch-jdbc-2.3.3.1/lib/mysql-connector-java-5.1.38.jar"
# The name of the driver class for Postgresql
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_user => "**"
jdbc_password => "***"
# our query
statement => "SELECT * from tweets"
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
这会是日期的问题吗?在 MySQL 中,当我打印一条记录的时间时,它就是这种格式。
+---------------------+
| PUBLISHED_AT |
+---------------------+
| 2017-03-06 03:43:51 |
| 2017-03-06 03:43:45 |
| 2017-03-06 03:43:42 |
| 2017-03-06 03:43:30 |
| 2017-03-06 03:43:00 |
+---------------------+
5 rows in set (0.00 sec)
但是当我在终端中看到配置的输出时,它看起来像这样。
"id" => 41298,
"author" => "b'Terk'",
"retweet_count" => "0",
"favorite_count" => "0",
"followers_count" => "49",
"friends_count" => "23",
"body" => "create an ad",
"published_at" => "2017-03-06T07:30:47.000Z",
"@version" => "1",
"@timestamp" => "2017-03-06T06:44:04.756Z"
其他人能明白为什么我无法输入所有 40,000 条记录吗?
谢谢。
【问题讨论】:
-
您是否将 kibana 配置为始终搜索所有日志条目?
-
我使用了来自 Digital Ocean 的 ELK stack droplet,不太清楚它是如何配置的。我该怎么做?
-
在右上角(我相信)你可以定义你正在搜索的时间范围
-
另外,您可以使用手动 ES 查询来计算所有文档吗?您可以在 Elasticsearch 文档中查找 API。这样,您可以进行匹配所有查询,该查询将返回所有文档的文档计数。鉴于您的 ES 中唯一的内容是 40k 个文档,匹配计数也应该反映这一点:elastic.co/guide/en/elasticsearch/reference/current/…
标签: mysql elasticsearch logstash kibana elastic-stack