diff options
author | Vincent Ambo <mail@tazj.in> | 2019-02-04T14·48+0100 |
---|---|---|
committer | Vincent Ambo <github@tazj.in> | 2019-02-04T15·31+0100 |
commit | 6d2a8adacc223f9eb7c607b5b0408fd5e8a60e7f (patch) | |
tree | d7fc002d8bf82ec5ee742cfea6bf1c642eba1426 | |
parent | 9fed0bdb45962b5b54541c2563ae84f5a2d8ebdb (diff) |
feat: Add best-effort support for non-GCP Error Reporting
This adds support for a special log stream name called "global", which instead of setting that as a log stream changes the resource descriptor to be of the `global` monitored resource descriptor. According to the information we have in #4 logs submitted to that resource descriptor should be compatible with Stackdriver Error Reporting. This is relevant when running journaldriver outside of GCP as there is no way to utilise Error Reporting with the log stream resource. This relates to #4. I'm unsure about saying whether or not it "fixes" it.
-rw-r--r-- | src/main.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 03b57517cc28..a57bb3505ddc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -160,9 +160,24 @@ fn get_project_id() -> String { /// the metadata server. /// /// On non-GCP machines the value is determined by using the -/// `GOOGLE_CLOUD_PROJECT` and `LOG_NAME` environment variables. +/// `GOOGLE_CLOUD_PROJECT` and `LOG_STREAM` environment variables. +/// +/// [issue #4]: https://github.com/tazjin/journaldriver/issues/4 fn determine_monitored_resource() -> Value { if let Ok(log) = env::var("LOG_STREAM") { + // The special value `global` is recognised as a log stream name that + // results in a `global`-type resource descriptor. This is useful in + // cases where Stackdriver Error Reporting is intended to be used on + // a non-GCE instance. See [issue #4][] for details. + if log == "global" { + return json!({ + "type": "global", + "labels": { + "project_id": PROJECT_ID.as_str(), + } + }); + } + json!({ "type": "logging_log", "labels": { |