Sending Search Queries to Graylog Server Using Python

  • Share this:

Code introduction


This function uses the Graylog Python client library to send a search query to the Graylog server and return the search results.


Technology Stack : graypy, GelfUdpTransport, JSONFormatter

Code Type : Graylog API call

Code Difficulty : Intermediate


                
                    
def graylog_search_query(query, stream_name):
    """
    Search for messages in Graylog based on a query and a specific stream name.

    Args:
        query (str): The search query to execute.
        stream_name (str): The name of the stream to search within.

    Returns:
        list: A list of search results.
    """
    from graypy import transport
    from graypy.formatter import JSONFormatter

    # Create a transport for Graylog
    transport = transport.GelfUdpTransport(transport.GELF_UDP_PORT, 'localhost')

    # Create a formatter to format the message
    formatter = JSONFormatter()

    # Create a message with the query and stream name
    message = formatter.format({
        'short_message': query,
        'stream': stream_name
    })

    # Send the message to Graylog
    transport.send(message)

    # Return a placeholder for the search results
    return ["Search results for: " + query]