forked from facebookarchive/scribe
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
175 lines (129 loc) · 5.83 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
## Copyright (c) 2007-2008 Facebook
##
## 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.
##
## See accompanying file LICENSE or visit the Scribe site at:
## http://developers.facebook.com/scribe/
# This file contains a couple of simple examples of how to configure and use
# Scribe.
#
# Example code in this directory:
# scribe_cat: a simple example of a client that can send messages to Scribe
# scribe_ctrl: a script that manages a running Scribe instance (requires root)
# example1.conf: sample configuration file for running Example 1
# example2.conf: sample configuration file for running Example 2
#
# EXAMPLE 1
#
# This is a simple example that shows how to configure and send messages to
# Scribe.
#Create a directory to log messages:
mkdir /tmp/scribetest
#Start scribe using the configuration in example1.conf:
src/scribed examples/example1.conf
#From another terminal, use scribe_cat to send a message to scribe:
echo "hello world" | examples/scribe_cat test
#Note that extra newline after "hello world" from example1.conf's add_newlines
#If the previous command failed, make sure you did a 'make install' from the
#root scribe directory and that $PYTHONPATH is set correctly (see README)
#Verify that the message got logged:
cat /tmp/scribetest/test/test_current
#Check the status of scribe (requires root):
examples/scribe_ctrl status
#Check scribe's counters (you should see 1 message 'received good'):
examples/scribe_ctrl counters
#Shutdown scribe:
examples/scribe_ctrl stop
#
# Example 2
#
# This example shows you how to log messages between multiple Scribe instances.
# In this example, we will run each Scribe server on a different port to simulate
# running Scribe on multiple machines.
'client' 'central'
---------------------------- --------------------
| Port 1464 | | Port 1463 |
| ---------------- | | ---------------- |
| -> | scribe server |--|--->| | scribe server | |
| ---------------- | | ---------------- |
| | | | | | |
| temp file | | | temp file |
|--------------------------- |-------------------
|
-------------------
| /tmp/scribetest/ |
-------------------
#Create a directory for the second scribe instance (used in example2client.conf):
mkdir /tmp/scribetest2
#Start up the 'central' instance of Scribe on port 1463 to write messages to disk
#(See example2central.conf):
src/scribed examples/example2central.conf
#Start up the 'client' instance of Scribe on port 1464 to forward messages to
#the 'central' Scribe server (See example2client.conf):
src/scribed examples/example2client.conf
#Use scribe_cat to send some messages to the 'client' Scribe instance:
echo "test message" | examples/scribe_cat -h localhost:1464 test2
echo "this message will be ignored" | examples/scribe_cat -h localhost:1464 ignore_me
echo "123:this message will be bucketed" | examples/scribe_cat -h localhost:1464 bucket_me
#The first message will be logged similar to example 1.
#The second message will not get logged on the central server and will be
#forgotten by the client server. The ignore_me dir will remain.
#The third message will be bucketized into 1 of 5 buckets
#(See example2central.conf)
#Verify that the first message got logged:
cat /tmp/scribetest/test2/test2_current
#Verify that the third message got logged into a subdirectory:
cat /tmp/scribetest/bucket*/bucket_me_current
#Check the status and counters of both instances:
examples/scribe_ctrl status 1463
examples/scribe_ctrl status 1464
examples/scribe_ctrl counters 1463
examples/scribe_ctrl counters 1464
#Shutdown both servers:
examples/scribe_ctrl stop 1463
examples/scribe_ctrl stop 1464
#
# Example 3
#
# Test Scribe buffering
#Startup the two Scribe instances used in Example 2.
#Start the 'central' server first:
src/scribed examples/example2central.conf
#Then start the 'client':
src/scribed examples/example2client.conf
#Log a message to the 'client' Scribe instance:
echo "test message 1" | examples/scribe_cat -h localhost:1464 test3
#Verify that the message got logged:
cat /tmp/scribetest/test3/test3_current
#Stop the 'central' Scribe instance:
examples/scribe_ctrl stop 1463
#Attempting to check the status of this server will return failure since it not running:
examples/scribe_ctrl status 1463
#Try to Log another message:
echo "test message 2" | examples/scribe_cat -h localhost:1464 test3
#This message will be buffered by the 'client' since it cannot be forwarded to
#the 'central' server. Scribe will keep retrying until it is able to send.
#After a couple seconds, the status of the 'client' will be set to a warning message:
examples/scribe_ctrl status 1464
#Try to Log yet another message(which will also get buffered):
echo "test message 3" | examples/scribe_cat -h localhost:1464 test3
#Restart the 'central' instance:
src/scribed examples/example2central.conf
#Wait for both Scribe instance's statuses to change to ALIVE:
examples/scribe_ctrl status 1463
examples/scribe_ctrl status 1464
#Verify that all 3 messages have now been received by the 'central' server:
cat /tmp/scribetest/test3/test3_current
#Shutdown:
examples/scribe_ctrl stop 1463
examples/scribe_ctrl stop 1464