Skip to content

Commit 786065d

Browse files
author
Bill Prin
committed
Add Error Reporting Code
1 parent fddf5e6 commit 786065d

File tree

5 files changed

+126
-0
lines changed

5 files changed

+126
-0
lines changed

error_reporting/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Google Error Reorting Samples Samples
2+
3+
This section contains samples for [Google Cloud Error Reporting](https://cloud.google.com/error-reporting).
4+
5+
A startup script has been provided to demonstrated how to properly provision a GCE
6+
instance with fluentd configured. Note the intallation of fluentd, the addition of the config file,
7+
and the restarting of the fluetnd service. You can start an instance using
8+
it like this:
9+
10+
gcloud compute instances create example-instance --metadata-from-file startup-script=startup_script.sh
11+
12+
or simply use it as reference when creating your own instance.
13+
14+
After fluentd is configured, main.py could be used to simulate an error:
15+
16+
gcloud compute copy-files main.py example-instance:~/main.py
17+
18+
Then,
19+
20+
gcloud compute ssh example-instance
21+
python ~/main.py
22+
23+
And you will see the message in the Errors Console.
24+
25+
<!-- auto-doc-link -->
26+
27+
<!-- end-auto-doc-link -->

error_reporting/main.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Copyright 2016 Google Inc. All rights reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
# [START error_reporting]
16+
import traceback
17+
18+
import fluent.event
19+
import fluent.sender
20+
21+
22+
def simulate_error():
23+
fluent.sender.setup('myapp', host='localhost', port=24224)
24+
25+
def report(ex):
26+
data = {}
27+
data['message'] = '{0}'.format(ex)
28+
data['serviceContext'] = {'service': 'myapp'}
29+
# ... add more metadata
30+
fluent.event.Event('errors', data)
31+
32+
# report exception data using:
33+
try:
34+
# simulate calling a method that's not defined
35+
raise NameError
36+
except Exception:
37+
report(traceback.format_exc())
38+
# [END error_reporting]
39+
40+
if __name__ == '__main__':
41+
simulate_error()

error_reporting/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fluent-logger==0.4.1

error_reporting/startup_script.sh

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env bash
2+
# Copyright 2016 Google Inc. All rights reserved.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
16+
set -v
17+
18+
curl -sSO "https://dl.google.com/cloudagents/install-logging-agent.sh"
19+
chmod +x install-logging-agent.sh
20+
./install-logging-agent.sh
21+
mkdir -p /etc/google-fluentd/config.d/
22+
cat <<EOF > /etc/google-fluentd/config.d/forward.conf
23+
<source>
24+
type forward
25+
port 24224
26+
</source>
27+
EOF
28+
service google-fluentd restart
29+
30+
apt-get update
31+
apt-get install -yq \
32+
git build-essential supervisor python python-dev python-pip libffi-dev \
33+
libssl-dev
34+
pip install fluent-logger
35+

error_reporting/test_main.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Copyright 2016 Google Inc. All rights reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import main
16+
import mock
17+
18+
19+
@mock.patch("fluent.event")
20+
def test_error_sends(event_mock):
21+
main.simulate_error()
22+
event_mock.Event.assert_called_once_with(mock.ANY, mock.ANY)

0 commit comments

Comments
 (0)