mirror of
https://github.com/elastic/logstash.git
synced 2025-06-29 02:03:30 -04:00
* geoip: extract database manager to stand-alone feature Introduces an Elastic-licensed GeoipDatabaseManagement tool that can be used by ANY plugin running on Elastic-licensed Logstash to retrieve a subscription to a GeoIP database that ensures EULA-compliance and frequent updates, and migrates the previous Elastic-licensed code-in-Logstash-core extension to the Geoip Filter to use this new tool, requiring ZERO changes to in-the-wild versions of the plugin. The implementation of the new tool follows the previous implementation as closely as possible, but presents a new interface that ensures that a consumer can ATOMICALLY subscribe to a database path without risk that the subscriber will receive an update or expiry before it is finished applying the initial value: ~~~ ruby geoip_manager = LogStash::GeoipDatabaseManagement::Manager.instance subscription = geoip_manager.subscribe('City') subscription.observe(construct: ->(initial_dbinfo){ }, on_update: ->(updated_dbinfo){ }, on_expire: ->( _ ){ }) subscription.release! ~~~ * docs: link in geoip database manager docs * docs: reorganize pending 'geoip database management' feature * docs: link to geoip pages from feature index * geoip: add SubscriptionObserver "interface" simplifies using Subscription#observe from Java * geoip: fixup SubscriptionObserver after rename * geoip: quacking like a SubscriptionObserver is enough * geoip: simplify constants of legacy geoip filter extension * geoip: bump logging level to debug for non-actionable log * geoip: refine log message to omit non-actionable info * re-enable invokedynamic (was disabled to avoid upstream bug) * geoip: resolve testing fall-out from filter extension's "private" constants removal * geoip: consistently use `DataPath#resolve` internally, too
56 lines
1.8 KiB
Text
56 lines
1.8 KiB
Text
|
|
[[logstash-geoip-database-management-metrics]]
|
|
==== Database Metrics
|
|
|
|
You can monitor the managed database's status through the <<node-stats-api,Node Stats API>>.
|
|
|
|
The following request returns a JSON document containing database manager stats,
|
|
including:
|
|
|
|
* database status and freshness
|
|
** `geoip_download_manager.database.*.status`
|
|
*** `init` : initial CC database status
|
|
*** `up_to_date` : using up-to-date EULA database
|
|
*** `to_be_expired` : 25 days without calling service
|
|
*** `expired` : 30 days without calling service
|
|
** `fail_check_in_days` : number of days Logstash fails to call service since the last success
|
|
* info about download successes and failures
|
|
** `geoip_download_manager.download_stats.successes` number of successful checks and downloads
|
|
** `geoip_download_manager.download_stats.failures` number of failed check or download
|
|
** `geoip_download_manager.download_stats.status`
|
|
*** `updating` : check and download at the moment
|
|
*** `succeeded` : last download succeed
|
|
*** `failed` : last download failed
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
curl -XGET 'localhost:9600/_node/stats/geoip_download_manager?pretty'
|
|
--------------------------------------------------
|
|
|
|
Example response:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"geoip_download_manager" : {
|
|
"database" : {
|
|
"ASN" : {
|
|
"status" : "up_to_date",
|
|
"fail_check_in_days" : 0,
|
|
"last_updated_at": "2021-06-21T16:06:54+02:00"
|
|
},
|
|
"City" : {
|
|
"status" : "up_to_date",
|
|
"fail_check_in_days" : 0,
|
|
"last_updated_at": "2021-06-21T16:06:54+02:00"
|
|
}
|
|
},
|
|
"download_stats" : {
|
|
"successes" : 15,
|
|
"failures" : 1,
|
|
"last_checked_at" : "2021-06-21T16:07:03+02:00",
|
|
"status" : "succeeded"
|
|
}
|
|
}
|
|
}
|
|
--------------------------------------------------
|