From 618d19c461d4351d301f07ce84cb582a21cf6cc7 Mon Sep 17 00:00:00 2001 From: Andrew Gorcester Date: Fri, 3 Nov 2017 16:45:54 -0700 Subject: [PATCH 1/3] Add error reporting sample for manual reporting --- error_reporting/report_exception.py | 16 +++++++++++++--- error_reporting/report_exception_test.py | 9 ++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/error_reporting/report_exception.py b/error_reporting/report_exception.py index 40b7ba369d94..31ef99b07e2c 100644 --- a/error_reporting/report_exception.py +++ b/error_reporting/report_exception.py @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -# [START error_reporting] -from google.cloud import error_reporting - +# [START error_reporting] def simulate_error(): + from google.cloud import error_reporting + client = error_reporting.Client() try: # simulate calling a method that's not defined @@ -26,5 +26,15 @@ def simulate_error(): # [END error_reporting] +# [START error_reporting_manual] +def report_manual_error(): + from google.cloud import error_reporting + + client = error_reporting.Client() + client.report("An error has occurred.") +# [END error_reporting_manual] + + if __name__ == '__main__': simulate_error() + report_manual_error() diff --git a/error_reporting/report_exception_test.py b/error_reporting/report_exception_test.py index fa51b03c0bdb..042951e9a487 100644 --- a/error_reporting/report_exception_test.py +++ b/error_reporting/report_exception_test.py @@ -12,13 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest - import report_exception -@pytest.mark.xfail( - strict=True, - reason='GoogleCloudPlatform/google-cloud-python#3263') def test_error_sends(): report_exception.simulate_error() + + +def test_manual_error_sends(): + report_exception.report_manual_error() From e419b081239d210b35b29ffe7f4ab13eb4a061a0 Mon Sep 17 00:00:00 2001 From: Andrew Gorcester Date: Fri, 3 Nov 2017 17:26:23 -0700 Subject: [PATCH 2/3] Readd fluentd samples --- error_reporting/{ => api}/README.rst | 0 error_reporting/{ => api}/README.rst.in | 0 error_reporting/{ => api}/report_exception.py | 0 .../{ => api}/report_exception_test.py | 0 error_reporting/{ => api}/requirements.txt | 0 error_reporting/fluentd_on_gce/README.md | 30 +++++++++++++ error_reporting/fluentd_on_gce/main.py | 42 +++++++++++++++++++ error_reporting/fluentd_on_gce/main_test.py | 23 ++++++++++ .../fluentd_on_gce/requirements.txt | 1 + .../fluentd_on_gce/startup_script.sh | 35 ++++++++++++++++ 10 files changed, 131 insertions(+) rename error_reporting/{ => api}/README.rst (100%) rename error_reporting/{ => api}/README.rst.in (100%) rename error_reporting/{ => api}/report_exception.py (100%) rename error_reporting/{ => api}/report_exception_test.py (100%) rename error_reporting/{ => api}/requirements.txt (100%) create mode 100644 error_reporting/fluentd_on_gce/README.md create mode 100644 error_reporting/fluentd_on_gce/main.py create mode 100644 error_reporting/fluentd_on_gce/main_test.py create mode 100644 error_reporting/fluentd_on_gce/requirements.txt create mode 100644 error_reporting/fluentd_on_gce/startup_script.sh diff --git a/error_reporting/README.rst b/error_reporting/api/README.rst similarity index 100% rename from error_reporting/README.rst rename to error_reporting/api/README.rst diff --git a/error_reporting/README.rst.in b/error_reporting/api/README.rst.in similarity index 100% rename from error_reporting/README.rst.in rename to error_reporting/api/README.rst.in diff --git a/error_reporting/report_exception.py b/error_reporting/api/report_exception.py similarity index 100% rename from error_reporting/report_exception.py rename to error_reporting/api/report_exception.py diff --git a/error_reporting/report_exception_test.py b/error_reporting/api/report_exception_test.py similarity index 100% rename from error_reporting/report_exception_test.py rename to error_reporting/api/report_exception_test.py diff --git a/error_reporting/requirements.txt b/error_reporting/api/requirements.txt similarity index 100% rename from error_reporting/requirements.txt rename to error_reporting/api/requirements.txt diff --git a/error_reporting/fluentd_on_gce/README.md b/error_reporting/fluentd_on_gce/README.md new file mode 100644 index 000000000000..4c9a24c60dc4 --- /dev/null +++ b/error_reporting/fluentd_on_gce/README.md @@ -0,0 +1,30 @@ +# Google Error Reorting Samples Samples + +This section contains samples for [Google Cloud Error Reporting](https://cloud.google.com/error-reporting). + +A startup script has been provided to demonstrated how to properly provision a GCE +instance with fluentd configured. Note the intallation of fluentd, the addition of the config file, + and the restarting of the fluetnd service. You can start an instance using +it like this: + + gcloud compute instances create example-instance --metadata-from-file startup-script=startup_script.sh + +or simply use it as reference when creating your own instance. + +After fluentd is configured, main.py could be used to simulate an error: + + gcloud compute copy-files main.py example-instance:~/main.py + +Then, + + gcloud compute ssh example-instance + python ~/main.py + +And you will see the message in the Errors Console. + + +These samples are used on the following documentation page: + +> https://cloud.google.com/error-reporting/docs/setting-up-on-compute-engine + + diff --git a/error_reporting/fluentd_on_gce/main.py b/error_reporting/fluentd_on_gce/main.py new file mode 100644 index 000000000000..45208c913ac5 --- /dev/null +++ b/error_reporting/fluentd_on_gce/main.py @@ -0,0 +1,42 @@ +# Copyright 2016 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# [START error_reporting] +import traceback + +import fluent.event +import fluent.sender + + +def simulate_error(): + fluent.sender.setup('myapp', host='localhost', port=24224) + + def report(ex): + data = {} + data['message'] = '{0}'.format(ex) + data['serviceContext'] = {'service': 'myapp'} + # ... add more metadata + fluent.event.Event('errors', data) + + # report exception data using: + try: + # simulate calling a method that's not defined + raise NameError + except Exception: + report(traceback.format_exc()) +# [END error_reporting] + + +if __name__ == '__main__': + simulate_error() diff --git a/error_reporting/fluentd_on_gce/main_test.py b/error_reporting/fluentd_on_gce/main_test.py new file mode 100644 index 000000000000..11a24d035438 --- /dev/null +++ b/error_reporting/fluentd_on_gce/main_test.py @@ -0,0 +1,23 @@ +# Copyright 2016 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import mock + +import main + + +@mock.patch("fluent.event") +def test_error_sends(event_mock): + main.simulate_error() + event_mock.Event.assert_called_once_with(mock.ANY, mock.ANY) diff --git a/error_reporting/fluentd_on_gce/requirements.txt b/error_reporting/fluentd_on_gce/requirements.txt new file mode 100644 index 000000000000..0119e25c6df4 --- /dev/null +++ b/error_reporting/fluentd_on_gce/requirements.txt @@ -0,0 +1 @@ +fluent-logger==0.4.4 diff --git a/error_reporting/fluentd_on_gce/startup_script.sh b/error_reporting/fluentd_on_gce/startup_script.sh new file mode 100644 index 000000000000..f2ef895dcfdc --- /dev/null +++ b/error_reporting/fluentd_on_gce/startup_script.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Copyright 2016 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -v + +curl -sSO "https://dl.google.com/cloudagents/install-logging-agent.sh" +chmod +x install-logging-agent.sh +./install-logging-agent.sh +mkdir -p /etc/google-fluentd/config.d/ +cat < /etc/google-fluentd/config.d/forward.conf + + type forward + port 24224 + +EOF +service google-fluentd restart + +apt-get update +apt-get install -yq \ + git build-essential supervisor python python-dev python-pip libffi-dev \ + libssl-dev +pip install fluent-logger + From 3825b46b96be018f6b66cff9ea61dd353ffa3e0c Mon Sep 17 00:00:00 2001 From: Andrew Gorcester Date: Fri, 3 Nov 2017 17:32:05 -0700 Subject: [PATCH 3/3] rename dir --- error_reporting/{fluentd_on_gce => fluent_on_compute}/README.md | 0 error_reporting/{fluentd_on_gce => fluent_on_compute}/main.py | 0 .../{fluentd_on_gce => fluent_on_compute}/main_test.py | 0 .../{fluentd_on_gce => fluent_on_compute}/requirements.txt | 0 .../{fluentd_on_gce => fluent_on_compute}/startup_script.sh | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename error_reporting/{fluentd_on_gce => fluent_on_compute}/README.md (100%) rename error_reporting/{fluentd_on_gce => fluent_on_compute}/main.py (100%) rename error_reporting/{fluentd_on_gce => fluent_on_compute}/main_test.py (100%) rename error_reporting/{fluentd_on_gce => fluent_on_compute}/requirements.txt (100%) rename error_reporting/{fluentd_on_gce => fluent_on_compute}/startup_script.sh (100%) diff --git a/error_reporting/fluentd_on_gce/README.md b/error_reporting/fluent_on_compute/README.md similarity index 100% rename from error_reporting/fluentd_on_gce/README.md rename to error_reporting/fluent_on_compute/README.md diff --git a/error_reporting/fluentd_on_gce/main.py b/error_reporting/fluent_on_compute/main.py similarity index 100% rename from error_reporting/fluentd_on_gce/main.py rename to error_reporting/fluent_on_compute/main.py diff --git a/error_reporting/fluentd_on_gce/main_test.py b/error_reporting/fluent_on_compute/main_test.py similarity index 100% rename from error_reporting/fluentd_on_gce/main_test.py rename to error_reporting/fluent_on_compute/main_test.py diff --git a/error_reporting/fluentd_on_gce/requirements.txt b/error_reporting/fluent_on_compute/requirements.txt similarity index 100% rename from error_reporting/fluentd_on_gce/requirements.txt rename to error_reporting/fluent_on_compute/requirements.txt diff --git a/error_reporting/fluentd_on_gce/startup_script.sh b/error_reporting/fluent_on_compute/startup_script.sh similarity index 100% rename from error_reporting/fluentd_on_gce/startup_script.sh rename to error_reporting/fluent_on_compute/startup_script.sh