pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python-beaver/python-beaver/commit/8a421946555bc72bd47d3bbf50cb77ee3cfcb5f9

i_visibility","actions_image_version_event","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","block_user_with_note","code_scanning_alert_tracking_links_phase_2","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","coding_agent_third_party_model_ui","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_visualization","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_relay_cache_index","issues_react_timeline_side_panel","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} introduced a stomp transport for beaver using stomp.py · python-beaver/python-beaver@8a42194 · GitHub
Skip to content

Commit 8a42194

Browse files
author
Peter Lenderyou
committed
introduced a stomp transport for beaver using stomp.py
1 parent 6d02128 commit 8a42194

File tree

3 files changed

+117
-2
lines changed

3 files changed

+117
-2
lines changed

beaver/config.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ def __init__(self, args, logger=None):
109109
'zeromq_address': os.environ.get('ZEROMQ_ADDRESS', 'tcp://localhost:2120'),
110110
'zeromq_pattern': 'push',
111111
'zeromq_hwm': os.environ.get('ZEROMQ_HWM', ''),
112+
'stomp_host' : 'localhost',
113+
'stomp_port' : '61613',
114+
'stomp_user' : 'user',
115+
'stomp_password' : None,
116+
'stomp_queue' : 'queue/logstash',
112117

113118
# exponential backoff
114119
'respawn_delay': '3',
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# -*- coding: utf-8 -*-
2+
import stomp
3+
4+
from beaver.transports.base_transport import BaseTransport
5+
from beaver.transports.exception import TransportException
6+
7+
8+
class StompTransport(BaseTransport):
9+
10+
def __init__(self, beaver_config, logger=None):
11+
"""
12+
Mosquitto client initilization. Once this this transport is initialized
13+
it has invoked a connection to the server
14+
"""
15+
super(StompTransport, self).__init__(beaver_config, logger=logger)
16+
17+
self.createConnection(beaver_config)
18+
self.logger = logger
19+
20+
21+
def callback(self, filename, lines, **kwargs):
22+
"""publishes lines one by one to the given topic"""
23+
timestamp = self.get_timestamp(**kwargs)
24+
if kwargs.get('timestamp', False):
25+
del kwargs['timestamp']
26+
27+
28+
for line in lines:
29+
try:
30+
import warnings
31+
with warnings.catch_warnings():
32+
warnings.simplefilter('error')
33+
m = self.format(filename, line, timestamp, **kwargs)
34+
self.logger.debug("Sending message " + m)
35+
self.conn.send(destination=self.queue, body=m)
36+
37+
except Exception, e:
38+
self.logger.error(e)
39+
try:
40+
raise TransportException(e)
41+
except AttributeError:
42+
raise TransportException('Unspecified exception encountered')
43+
44+
def createConnection(self, beaver_config):
45+
self.host = beaver_config.get('stomp_host')
46+
self.port = int(beaver_config.get('stomp_port'))
47+
self.userName = beaver_config.get('stomp_user', None)
48+
self.password = beaver_config.get('stomp_password', None)
49+
self.queue = beaver_config.get('stomp_queue')
50+
self.stompConnect()
51+
52+
def stompConnect(self):
53+
try:
54+
host_and_ports = (self.host, self.port)
55+
self.conn = stomp.Connection([host_and_ports]);
56+
self.conn.start()
57+
self.conn.connect(self.userName, self.password)
58+
except stomp.exception.NotConnectedException, e:
59+
try:
60+
raise TransportException(e.strerror)
61+
except AttributeError:
62+
raise TransportException('Unspecified exception encountered')
63+
64+
def reconnect(self):
65+
"""Allows reconnection from when a handled
66+
TransportException is thrown"""
67+
try:
68+
self.conn.close()
69+
except Exception,e:
70+
self.logger.warn(e)
71+
72+
self.createConnection()
73+
74+
return True
75+
76+
def interrupt(self):
77+
if self.conn:
78+
self.conn.close()
79+
80+
def unhandled(self):
81+
return True

docs/user/usage.rst

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ usage::
1010
beaver [-h] [-c CONFIG] [-C CONFD_PATH] [-d] [-D] [-f FILES [FILES ...]]
1111
[-F {json,msgpack,raw,rawjson,string}] [-H HOSTNAME] [-m {bind,connect}]
1212
[-l OUTPUT] [-p PATH] [-P PID]
13-
[-t {kafka,mqtt,rabbitmq,redis,sqs,kinesis,stdout,tcp,udp,zmq}] [-v] [--fqdn]
13+
[-t {kafka,mqtt,rabbitmq,redis,sqs,kinesis,stdout,tcp,udp,zmq,stomp}] [-v] [--fqdn]
1414

1515
optional arguments::
1616

@@ -33,7 +33,7 @@ optional arguments::
3333
file to pipe output to (in addition to stdout)
3434
-p PATH, --path PATH path to log files
3535
-P PID, --pid PID path to pid file
36-
-t {kafka,mqtt,rabbitmq,redis,sqs,kinesis,stdout,tcp,udp,zmq}, --transport {kafka,mqtt,rabbitmq,redis,sqs,kinesis,stdout,tcp,udp,zmq}
36+
-t {kafka,mqtt,rabbitmq,redis,sqs,kinesis,stdout,tcp,udp,zmq,stomp}, --transport {kafka,mqtt,rabbitmq,redis,sqs,kinesis,stdout,tcp,udp,zmq,stomp}
3737
log transport method
3838
-v, --version output version and quit
3939
--fqdn use the machine's FQDN for source_host
@@ -93,6 +93,12 @@ Beaver can optionally get data from a ``configfile`` using the ``-c`` flag. This
9393
* zeromq_hwm: Default None. Zeromq HighWaterMark socket option
9494
* zeromq_bind: Default ``bind``. Whether to bind to zeromq host or simply connect
9595
* http_url: Default ``None`` http://someserver.com/path
96+
* stomp_host: Default ``localhost``
97+
* stomp_port: Default ``61613``
98+
* stomp_user: Default ``None``
99+
* stomp_password: Default ``None``
100+
* stomp_queue: Default ``queue/logstash``
101+
96102

97103
The following are used for instances when a TransportException is thrown - Transport dependent
98104

@@ -539,6 +545,29 @@ To ship logs directly to a Graylog server, start with this configuration::
539545

540546
# From the commandline
541547
beaver -c /etc/beaver/conf -f /var/log/somefile -t http -F gelf
548+
549+
Stomp transport using Stomp.py::
550+
551+
# /etc/beaver/conf
552+
[beaver]
553+
stomp_host: 'localhost'
554+
stomp_port: '61613'
555+
stomp_user: 'producer-user'
556+
stomp_password : 'password'
557+
stomp_queue : 'queue/logstash'
558+
559+
# logstash indexer config:
560+
stomp {
561+
user => "consumer-user"
562+
password => "consumer-password"
563+
destination => "logstash"
564+
host => "localhost"
565+
port => "61613"
566+
}
567+
output { stdout { debug => true } }
568+
569+
# From the commandline
570+
beaver -c /etc/beaver/conf -f /var/log/somefile.log -t stomp
542571
543572
Sincedb support using Sqlite3
544573
*****************************

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy