003 File Manager
Current Path:
/usr/local/lib/python3.8/site-packages/salt/engines
usr
/
local
/
lib
/
python3.8
/
site-packages
/
salt
/
engines
/
📁
..
📄
__init__.py
(3.62 KB)
📁
__pycache__
📄
docker_events.py
(2.84 KB)
📄
fluent.py
(2.05 KB)
📄
http_logstash.py
(2.84 KB)
📄
ircbot.py
(10.22 KB)
📄
junos_syslog.py
(13.18 KB)
📄
libvirt_events.py
(21.28 KB)
📄
logentries.py
(5.64 KB)
📄
logstash_engine.py
(1.77 KB)
📄
napalm_syslog.py
(11.59 KB)
📄
reactor.py
(720 B)
📄
redis_sentinel.py
(2.88 KB)
📄
script.py
(3.33 KB)
📄
slack.py
(35.79 KB)
📄
sqs_events.py
(4.65 KB)
📄
stalekey.py
(3.67 KB)
📄
test.py
(932 B)
📄
thorium.py
(314 B)
📄
webhook.py
(2.78 KB)
Editing: http_logstash.py
""" HTTP Logstash engine ========================== An engine that reads messages from the salt event bus and pushes them onto a logstash endpoint via HTTP requests. .. versionchanged:: 2018.3.0 .. note:: By default, this engine take everything from the Salt bus and exports into Logstash. For a better selection of the events that you want to publish, you can use the ``tags`` and ``funs`` options. :configuration: Example configuration .. code-block:: yaml engines: - http_logstash: url: http://blabla.com/salt-stuff tags: - salt/job/*/new - salt/job/*/ret/* funs: - probes.results - bgp.config """ import fnmatch import salt.utils.event import salt.utils.http import salt.utils.json _HEADERS = {"Content-Type": "application/json"} def _logstash(url, data): """ Issues HTTP queries to the logstash server. """ result = salt.utils.http.query( url, "POST", header_dict=_HEADERS, data=salt.utils.json.dumps(data), decode=True, status=True, opts=__opts__, ) return result def start(url, funs=None, tags=None): """ Listen to salt events and forward them to logstash. url The Logstash endpoint. funs: ``None`` A list of functions to be compared against, looking into the ``fun`` field from the event data. This option helps to select the events generated by one or more functions. If an event does not have the ``fun`` field in the data section, it will be published. For a better selection, consider using the ``tags`` option. By default, this option accepts any event to be submitted to Logstash. tags: ``None`` A list of pattern to compare the event tag against. By default, this option accepts any event to be submitted to Logstash. """ if __opts__.get("id").endswith("_master"): instance = "master" else: instance = "minion" with salt.utils.event.get_event( instance, sock_dir=__opts__["sock_dir"], transport=__opts__["transport"], opts=__opts__, ) as event_bus: while True: event = event_bus.get_event(full=True) if event: publish = True if tags and isinstance(tags, list): found_match = False for tag in tags: if fnmatch.fnmatch(event["tag"], tag): found_match = True publish = found_match if funs and "fun" in event["data"]: if not event["data"]["fun"] in funs: publish = False if publish: _logstash(url, event["data"])
Upload File
Create Folder