Each of the following applications are hereby incorporated by reference: application Ser. No. 16/383,773 filed on Apr. 15, 2019; application Ser. No. 15/089,180 filed on Apr. 1, 2016; application No. 62/142,987 filed on Apr. 3, 2015; application Ser. No. 16/695,031 filed on Nov. 25, 2019; application Ser. No. 15/689,232 filed on Aug. 29, 2017; application Ser. No. 15/088,943 filed on Apr. 1, 2016; application Ser. No. 15/089,005 filed on Apr. 1, 2016; application Ser. No. 15/089,049 filed on Apr. 1, 2016; application Ser. No. 15/089,129 filed on Apr. 1, 2016; application Ser. No. 15/089,226 filed on Apr. 1, 2016. The applicant hereby rescinds any disclaimer of claim scope in the parent application(s) or the prosecution history thereof and advises the USPTO that the claims in this application may be broader than any claim in the parent application(s).
Many types of computing systems and applications generate vast amounts of data pertaining to or resulting from the operation of that computing system or application. These vast amounts of data are stored into collected locations, such as log files/records, which can then be reviewed at a later time period if there is a need to analyze the behavior or operation of the system or application.
Server administrators and application administrators can benefit by learning about and analyzing the contents of the system log records. However, it can be a very challenging task to collect and analyze these records. There are many reasons for these challenges.
One significant issue pertains to the fact that many modern organizations possess a very large number of computing systems, each having numerous applications that run on those computing systems. It can be very difficult in a large system to configure, collect, and analyze log records given the large number of disparate systems and applications that run on those computing devices. Furthermore, some of those applications may actually run on and across multiple computing systems, making the task of coordinating log configuration and collection even more problematic.
Conventional log analytics tools provide rudimentary abilities to collect and analyze log records. However, conventional systems cannot efficiently scale when posed with the problem of massive systems involving large numbers of computing systems having large numbers of applications running on those systems. This is because conventional systems often work on a per-host basis, where set-up and configuration activities need to be performed each and every time a new host is added or newly configured in the system, or even where new log collection/configuration activities need to be performed for existing hosts. This approach is highly inefficient given the extensive number of hosts that exist in modern systems. Furthermore, the conventional approaches, particularly on-premise solutions, also fail to adequately permit sharing of resources and analysis components. This causes significant and excessive amounts of redundant processing and resource usage.
Conventional log analytics tools are also very inefficient when it comes to the construction of log parsers used by the log analytics tools. A log parser is a tool that understands how to parse the entries within a log. Conventionally, a log parser must be manually constructed by a person that must be both knowledgeable about the exact format of the log file to be analyzed, as well as skilled in the specific programming infrastructure that would be used to implement the parser.
One problem with the conventional approach of manually constructing log parsers is that this process requires significant amounts of both time and resources from skilled technology personnel to build the parser. In addition, this approach also requires an inordinate amount of manual resources to maintain the parsers in the event of changes to the format of a log file. Moreover, this manual approach necessarily requires a priori knowledge of the log file formats.
Some embodiments of the invention solve these problems by providing an approach to automatically construct a log parser. Instead of requiring a person to manually create the contents of the log parser, the log contents themselves are used to construct the parser. Other additional objects, features, and advantages of the invention are described in the detailed description, figures, and claims.
Various embodiments are described hereinafter with reference to the figures. It should be noted that the figures are not drawn to scale and that the elements of similar structures or functions are represented by like reference numerals throughout the figures. It should also be noted that the figures are only intended to facilitate the description of the embodiments. They are not intended as an exhaustive description of the invention or as a limitation on the scope of the invention.
As noted above, many types of computing systems and applications generate vast amounts of data pertaining or resulting from operation of that computing system or application. These vast amounts of data are then stored into collected locations, such as log files/records, which can be reviewed at a later time period if there is a need to analyze the behavior or operation of the system or application.
Some embodiments of the invention provide an approach to automatically construct a log parser. Instead of requiring a person to manually create the contents of the log parser, the log contents themselves are used to construct he parser. Other additional objects, features, and advantages of the invention are described in the detailed description, figures, and claims.
While the below description may describe the invention by way of illustration with respect to “log” data, the invention is not limited in its scope only to the analysis of log data, and indeed is applicable to wide range of data types. Therefore, the invention is not to be limited in its application only to log data unless specifically claimed as such. In addition, the following description may also interchangeably refer to the data being processed as “records” or “messages”, without intent to limit the scope of the invention to any particular format for the data.
Log Analytics System
This portion of the disclosure provides a description of a method and system for implementing high volume log collection and analytics, which can be used in conjunction with log parsers constructed as described below.
Each customer network 104 may include any number of hosts 109. The hosts 109 are the computing platforms within the customer network 104 that generate log data as one or more log files. The raw log data produced within hosts 109 may originate from any log-producing source. For example, the raw log data may originate from a database management system (DBMS), database application (DB App), middleware, operating system, hardware components, or any other log-producing application, component, or system. One or more gateways 108 are provided in each customer network to communicate with the log analytics system 101.
The system 100 may include one or more users at one or more user stations 103 that use the system 100 to operate and interact with the log analytics system 101. The user station 103 comprises any type of computing station that may be used to operate or interface with the log analytics system 101 in the system 100. Examples of such user stations include, for example, workstations, personal computers, mobile devices, or remote computing terminals. The user station comprises a display device, such as a display monitor, for displaying a user interface to users at the user station. The user station also comprises one or more input devices for the user to provide operational control over the activities of the system 100, such as a mouse or keyboard to manipulate a pointing object in a graphical user interface to generate user inputs. In some embodiments, the user stations 103 may be (although not required to be) located within the customer network 104.
The log analytics system 101 comprises functionality that is accessible to users at the user stations 101, e.g., where log analytics system 101 is implemented as a set of engines, mechanisms, and/or modules (whether hardware, software, or a mixture of hardware and software) to perform configuration, collection, and analysis of log data. A user interface (UI) mechanism generates the UI to display the classification and analysis results, and to allow the user to interact with the log analytics system.
At 120, log monitoring is configured within the system. This may occur, for example, by a user/customer to configure the type of log monitoring/data gathering desired by the user/customer. Within system 101, a configuration mechanism 129 comprising UI controls is operable by the user to select and configure log collection configuration 111 and target representations 113 for the log collection configuration.
As discussed in more detail below, the log collection configuration 111 comprise the set of information (e.g., log rules, log source information, and log type information) that identify what data to collect (e.g., which log files), the location of the data to collect (e.g., directory locations), how to access the data (e.g., the format of the log and/or specific fields within the log to acquire), and/or when to collect the data (e.g., on a periodic basis). The log collection configuration 111 may include out-of-the-box rules that are included by a service provider. The log collection configuration 111 may also include customer-defined/customer-customized rules.
The target representations 113 identify “targets”, which are individual components within the customer environment that contain and/or produce logs. These targets are associated with specific components/hosts in the customer environment. An example target may be a specific database application, which are associated with one or more logs one or more hosts.
The ability of the current embodiment to configure log collection/monitoring by associating targets with log rules and/or log sources provides unique advantages for the invention. This is because the user that configures log monitoring does not need to specifically understand exactly how the logs for a given application are located or distributed across the different hosts and components within the environment. Instead, the user only needs to select the specific target (e.g., application) for which monitoring is to be performed, and to then configure the specific parameters under which the log collection process is to be performed.
This solves the significant issue with conventional systems that require configuration of log monitoring on a per-host basis, where set-up and configuration activities need to be performed each and every time a new host is added or newly configured in the system, or even where new log collection/configuration activities need to be performed for existing hosts. Unlike conventional approaches, the log analytics user can be insulated from the specifics of the exact hosts/components that pertain to the logs for a given target. This information can be encapsulated in underlying metadata that is maintained by administrators of the system that understand the correspondence between the applications, hosts, and components in the system.
The next action at 122 is to capture the log data according to the user configurations. The association between the log rules 111 and the target representations is sent to the customer network 104 for processing. An agent of the log analytics system is present on each of the hosts 109 to collect data from the appropriate logs on the hosts 109.
In some embodiments, data masking may be performed upon the captured data. The masking is performed at collection time, which protects the customer data before it leaves the customer network. For example, various types of information in the collected log data (such as user names and other personal information) may be sensitive enough to be masked before it is sent to the server. Patterns are identified for such data, which can be removed and/or changed to proxy data before it is collected for the server. This allows the data to still be used for analysis purposes, while hiding the sensitive data. Some embodiments permanently remove the sensitive data (e.g., change all such data to “***” symbols), or changed to data that is mapped so that the original data can be recovered.
At 124, the collected log data is delivered from the customer network 104 to the log analytics system 101. The multiple hosts 109 in the customer network 104 provide the collected data to a smaller number of one or more gateways 108, which then sends the log data to edge services 106 at the log analytics system 101. The edge services 106 receives the collected data one or more customer networks and places the data into an inbound data store for further processing by a log processing pipeline 107.
At 126, the log processing pipeline 107 performs a series of data processing and analytical operations upon the collected log data, which is described in more detail below. At 128, the processed data is then stored into a data storage device 110. The computer readable storage device 110 comprises any combination of hardware and software that allows for ready access to the data that is located at the computer readable storage device 110. For example, the computer readable storage device 110 could be implemented as computer memory operatively managed by an operating system. The data in the computer readable storage device 110 could also be implemented as database objects, cloud objects, and/or files in a file system. In some embodiments, the processed data is stored within both a text/indexed data store 110a (e.g., as a SOLR cluster) and a raw/historical data store 110b (e.g., as a HDFS cluster).
At 130, reporting may be performed on the processed data using a reporting mechanism/UI 115. As illustrated in
At 132, incident management may be performed upon the processed data. One or more alert conditions can be configured within log analytics system such that upon the detection of the alert condition, an incident management mechanism 117 provides a notification to a designated set of users of the incident/alert.
At 134, a Corrective Action Engine 119 may perform any necessary actions to be taken within the customer network 104. For example, a log entry may be received that a database system is down. When such a log entry is identified, a possible automated corrective action is to attempt to bring the database system back up. The customer may create a corrective action script to address this situation. A trigger may be performed to run the script to perform the corrective action (e.g., the trigger causes an instruction to be sent to the agent on the customer network to run the script). In an alternative embodiment, the appropriate script for the situation is pushed down from the server to the customer network to be executed. In addition, at 136, any other additional functions and/or actions may be taken as appropriate based at last upon the processed data.
In the customer environment 342 within a single customer host/server 344, the LA (log analytics) agent 333 takes the log monitoring configuration data 332 (e.g., sniffer configuration or target-side configuration materials), and calls a log file 336 sniffer (also referred to herein as the “log collector”) to gather log data from one or more log files 338. A daemon manager 334 can be employed to interface with the log file sniffer 336. The log file sniffer 336 reads from one or more log files 338 on the host machine 344. The daemon manager 334 takes the log content and packages it up so that it can be handed back to the LA agent 333. It is noted that the system may include any number of different kinds of sniffers, and a log sniffer 336 is merely an example of a single type of sniffer that can be used in the system. Other types of sniffers may therefore be employed within various embodiments of the invention, e.g., sniffers to monitor registries, databases, windows event logs, etc. In addition, the log sniffer in some embodiments is configured to handle collective/compressed files, e.g., a Zip file.
The LA agent 333 sends the gathered log data to the gateway agent 330. The gateway agent 330 packages up the log data that is collected from multiple customer hosts/servers, essentially acting as an aggregator to aggregate the log content from multiple hosts. The packaged content is then sent from the gateway agent 330 to the edge services 306. The edge services 306 receive a large amount of data from multiple gateway agents 330 from any number of different customer environments 342.
Given the potentially large volume of data that may be received at the edge services 306, the data is immediately stored into an inbound data storage device 304 (the “platform inbound store”). This acts as a queue for the log processing pipeline 308. A data structure is provided to manage the items to be processed within the inbound data store. In some embodiments, a messaging platform 302 (e.g., implemented using the Kafka product) can be used to track the to-be-processed items within the queue. Within the log processing pipeline 308, a queue consumer 310 identifies the next item within the queue to be processed, which is then retrieved from the platform inbound store. The queue consumer 310 comprises any entity that is capable of processing work within the system off the queue, such as a process, thread, node, or task.
The retrieved log data undergoes a “parse” stage 312, where the log entries are parsed and broken up into specific fields. As discussed in more detail below, the “log type” configured for the log specifies how to break up the log entry into the desired fields.
In the “normalize” stage 314, the identified fields are normalized. For example, a “time” field may be represented in any number of different ways in different logs. This time field can be normalized into a single recognizable format (e.g., UTC format). As another example, the word “error” may be represented in different ways on different systems (e.g., all upper case “ERROR”, all lower case “error”, first letter capitalized “Error”, or abbreviation “err”). This situation may require the different word forms/types to be normalized into a single format (e.g., all lower case un-abbreviated term “error”).
The “transform” stage 316 can be used to synthesize new content from the log data. As an example and which will be discussed in more detail below, “tags” can be added to the log data to provide additional information about the log entries. As another example, field extraction can be performed to extract additional fields from the existing log entry fields.
A “condition evaluation” stage 318 is used to evaluate for specified conditions upon the log data. This stage can be performed to identify patterns within the log data, and to create/identify alerts conditions within the logs. Any type of notifications may be performed at this stage, including for example, emails/text messages/call sent to administrators/customers or alert to another system or mechanism.
A log writer 320 then writes the processed log data to one or more data stores 324. In some embodiments, the processed data is stored within both a text/indexed data store (e.g., as a SOLR cluster) and a raw and/or historical data store (e.g., as a HDFS cluster). The log writer can also send the log data to another processing stage 322 and/or downstream processing engine.
As shown in
In this model the “Log Type” 406 defines how the system reads the log file, as well as how to decompose the log file into its parts. In some embodiments, a log file contains several base fields. The base fields that exist may vary for different types of logs. A “base parser” can be used to breaks a log entry into the specified fields. The base parser may also perform transformations. For instance, a Date field can be converted to a normalized format and time adjusted to be in UTC so data from many locations can be mixed together.
The “Log Source” 404 defines where log files are located and how to read them. In some embodiments, the log source is a named definition that contains a list of log files described using patterns, along with the parser that is needed to parse that file. For instance, one source could be “SSH Log files”. This source may list each log file related to SSH separately, or could describe the log files using a wildcard (e.g., “/var/log/ssh*”). For each pattern, a base parser can be chosen (e.g., by a user) to parse the base fields from the file. This approach can be used to ensure that for a single pattern that all files conform to the same base parse structure. For one source, one can choose from among multiple log types, and give a priority to those possible types. For example, types A, B, and C can be identified, where the analysis works through each of these in order to determine whether the source matches one of these identified types. Therefore, for each pattern, the user can choose multiple base parsers. In some embodiments, the same source may match against and be analyzed using multiple types.
The “Log Rule” 402 defines a set of sources along with conditions and actions to be triggered during continuous monitoring. The “Targets” 408 identify individual components in an IT environment that contain logs. Associating a rule to a target starts the monitoring process in some embodiments.
In the embodiment of
In some embodiments, the rule can be used to specific a target type, which identifies the type of the target that the rule is intended to address. A rule can be specified for a single target type or multiple target types. For example, when monitoring a log file for a database instance, the target type can be set to Database Instance so that reporting of activities in the log goes against the proper target type; In some embodiments, even though the rule may be configured for a “File” as a log type, the target type can still be any managed target type, such as a database.
The rule may specify a source type, which identifies the type of log file that the rule is intended to address. For example the rule may specify that the log file types will be: (i) File: OS level log file; (ii) Database Table: a table that stores log content in a database; (iii) Windows Event Log: read events from windows event as log content.
A target property filter may be specified in the rule to filter for targets to specify conditions under which the rule is applicable, such as for example, a particular operating system (OS), target version, and/or target platform. For instance, the user could create a rule that is only for a given OS on a given platform (e.g., only for Linux OEL5 on X86_64 hardware).
When creating rules in some embodiments, the rule the may also include: (a) the name of the rule; (b) a severity level indicating how important the outcome of this rule is if this rule leads to an event being generated; (c) a description of the rule; and/or (d) a textual rationale of why this monitoring is occurring.
In some embodiments, one or more conditions can be established for which the rule will “trigger”. Multiple conditions may be specified, where each condition can be combined with others using a Boolean operator. For example, a set of conditions that is ORed with others means that if any of these conditions match an entry in a log file under evaluation, then that entry triggers this rule. When the conditions are ANDed together, all clauses of the condition must be met for the condition to trigger an entry in a log file. The specified actions will then be taken as a response to this entry that is matched. The following is an example condition clause that includes a regular expression: “MESSAGE contains “START: telnet pid=[0-9]* from=[.]*””, where this condition triggers the rule if the message matches the regular expression.
The “operator” in the condition is how the comparison is to be performed. The following are some example operators that may be employed in some embodiments of the invention: (a) <, >, >=, <=: compare a value to be larger or smaller (or equal) than some set value; (b) Contains: pattern match with ability to include regular expression clauses, where an implicit wildcard may be placed at the beginning and end unless the user uses the {circumflex over ( )} A and $ regular expression symbols to specify the beginning of a string or end of the string; (c) In: list of possible values; (d) Is: exact string match (no regular expression capability); (e) Is Not; (f) Does Not Contain; (g) Not In: List of values to not match.
Actions may be specified to identify what to do when a match is found on the selected sources for a given condition. For example, one possible action is to capture a complete log entry as an observation when matching conditions of the rule. This approach lets the system/user, when monitoring a log from any source and when a single entry is seen that matches the conditions of this rule, to save that complete entry and store it in the repository as an observation. Observations are stored for later viewing through the log observations UI or other reporting features. Another possible action is to create an event entry for each matching condition. When a log entry is seen as matching the specified conditions, this approaches raise an event. In some embodiments, the event will be created directly at the agent. The source definition will define any special fields that may be needed for capturing events if there are any. An additional option for this action is to have repeat log entries bundled at the agent and only report the event at most only once for the time range the user specified. The matching conditions can be used to help identify the existence of a repeat entry. Another example action is to create a metric for the rule to capture each occurrence of a matching condition. In this approach, a new metric is created for this rule using a metric subsystem. Thereafter, when there is a log entry that matches the rule's conditions, some number of the fields are captured as metric data and uploaded as part of this metric. The fields can be selected to include, for example, information such as “key” fields like target, time, source, etc.
At 504, one or more targets are identified in the system. The targets are individual components within the customer environment that contain logs. These targets are associated with specific components/hosts in the customer environment. Example targets include hosts, database application, middleware applications, and/or other software applications, which are associated with one or more logs one or more hosts. More details regarding an approach to specify targets are described below.
At 506, an association is made between a target and a rule. Metadata may be maintained in the system to track the associations between a given target and a given rule. A user interface may be provided that allows a user to see what targets a selected rule is associated with and/or to add more associations, where the associations are the way the rule becomes active by associating the rule against a real target.
Thereafter, at 508, log collection and processing are performed based at least in part upon the association between the rule and the target. As discussed in more detail below, target-based configuration may involve various types of configuration data that is created at both the server-side and the target-side to implement the log collection as well as log processing.
The ability of the current embodiment to configure log collection/monitoring by associating targets with log rules provides unique advantages. This is because the user that configures log monitoring does not need to specifically understand exactly how the logs for a given application are located or distributed across the different hosts and components within the environment. Instead, the user only needs to select the specific target (e.g., application) for which monitoring is to be performed and to then configure the rules under which the log collection process is to be performed.
This solves the significant issue with conventional systems that require configuration of log monitoring on a per-host basis, where set-up and configuration activities need to be performed each and every time a new host is added or newly configured in the system, or even where new log collection/configuration activities need to be performed for existing hosts. Unlike conventional approaches, the log analytics user can be insulated from the specifics of the exact hosts/components that pertain to the logs for a given target. This information can be encapsulated in underlying metadata that is maintained by administrators of the system that understand the correspondence between the applications, hosts, and components in the system.
Instead of, or in addition to the rules, log processing can also be configured by associating a log source to a target.
The log source may also be associated with a file pattern and/or pathname expression. For instance, “/var/log/messages*” is an example of a file pattern (that may actually pertain to a number of multiple files). Regarding file patterns, one reason for their use in the present log analytics system is because it is possible that the exact location of the logs to monitor varies. Some of the time, a system will expect logs to be in a particular place, e.g., in a specific directory. When the system is dealing with a large number of streaming logs, it may not be clear which directory the logs are expected to be in. This prevents a system that relies upon static log file locations to operate correctly. Therefore, the file pattern is useful to address these possibly varying log locations.
In some embodiments, a log source is created by specifying a source name and description for the log source. The definition of the log source may comprise included file name patterns and excluded file name patterns. The file name patterns are patterns that correspond to files (or directories) to include for the log source. The excluded file name patterns correspond to patterns for files (or directories) to explicitly exclude from the log source, e.g., which is useful in the situation where the included file name pattern identifies a directory having numerous files, and some of those files (such as dummy files or non-log files) are excluded using the excluded file name pattern. For each pattern, the system captures the pattern string, the description, and the base parser (log type) that will be used to parse the file. The base parser may define the basic structure of the file, e.g., how to parse the data, hostname, and message from the file.
The definition of the log source may also specify whether the source contains secure log content. This is available so that a source creator can specify a special role that users must have to view any log data may be captured. This log data may include security-related content that not any target owner can view.
As noted above, the log rules may reference log sources, and vice versa. In some embodiments, the system metadata tracks these associations, so that a count is maintained of rules that are currently using sources. This helps with understanding the impact if a source and/or rule is changed or deleted.
At 604, one or more targets are identified. As noted above, targets are components within the environment that contain, correspond, and/or create logs or other data to be processed, where the targets are associated with specific components/hosts in the customer environment. Example targets include hosts, database application, middleware applications, and/or other software applications, which are associated with one or more logs one or more hosts.
At 606, an association is made between a target and a source. Metadata may be maintained in the system to track the associations between a given target and a given source. A user interface may be provided that allows a user to see what targets a selected source is associated with and/or to add more associations.
The association of the target to the source creates, at 608, a specific instance of the log source. For example, consider a log source that generically specifies that a given file is located at a given directory location (e.g., c:/log_directory/log_file). It may be the case that any number of servers (Server A, Server B, Server C, Server D) within a customer environment may have a copy of that file (log_file) in that directory (c:/log directory). However, by associating a specific target (e.g., Server A) to the log source, this creates an instance of the log source so that the new instance is specific regarding the log file in the specified directory on a specific target (e.g., to begin monitoring c:/log_directory/log_file specifically on Server A).
Thereafter, at 610, log collection and processing are performed based at least in part upon the association between the rule and the log source. As discussed in more detail below, target-based configuration may involve various types of configuration data that is created at both the server-side and the target-side to implement the log collection and processing activities.
There are numerous benefits when using this type of model for configuring log collection. One benefit is that the Log Types, Sources, Rules can be easily reused as necessary. In addition, this approach avoids having to make numerous duplicate configurations by enabling sharing at multiple levels. Moreover, users can create custom rules that use sources and log types defined by other people or ship with the product. This approach also easily builds on top of shared knowledge.
Associating rules/sources to targets provides knowledge that identifies where to physically enable log collections via the agents. This means that users do not need to know anything about where the targets are located. In addition, bulk association of rules/sources to targets can be facilitated. In some embodiments, rules/sources can be automatically associated to all targets based on the configuration. As noted above, out-of-the-box configurations can be provided by the service provider. In addition, users can create their own configurations, including extending the provided out-of-the-box configurations. This permits the users to customize without building their own content.
At 700, target-based processing is initiated. Example approaches for initiating target-based processing includes, for example, installation of a log analytics agent onto a specific log collection location. The target-based processing pertains to associations made between one or more targets and one or more log sources and/or rules.
At 702, configuration materials are generated for the target-based processing. In some embodiment, the target-based configuration file is implemented as configuration XML files, although other formats may also be used to implement the configuration materials. The target-based configuration file may be created at a master site (e.g., to create a master version 704), with specific versions then passed to both the server side and the target side.
The target-side materials 708 may comprise those portions of the configuration details that are pertinent for log collection efforts. This includes, for example, information about log source details and target details. The server-side materials 706 may comprise portions of the configuration details that are pertinent to the server-side log processing. This includes, for example, information about parser details.
In some embodiments, a database at the server maintains a master version and a target version of the configuration materials. As noted above, the target version includes configuration details that are pertinent to log collection efforts, and is passed to the customer environment to be used by the agent in the customer environment to collect the appropriate log data from the customer environment. The master version includes the full set of configuration details needed at the server, and becomes the ‘server side” materials when selected and used for processing at the server. This may occur, for example, when the log data collected at the targets are passed to the server, where the transmission of the log data includes an identifier that uniquely identifies the target-side materials used to collect the log data (e.g., the configuration version or “CV” number 903 shown in the example targets-side materials of
At 710, the configuration materials are then distributed to the appropriate locations within the log processing system. In some embodiments, the target-side materials 708 are distributed to the customer system as the sniffer configuration files 332 shown in
Thereafter, at 712, log collection processing is performed at the target using the target-side configuration materials. In addition, at 714, server-side log processing is performed using the server-side configuration materials.
One or more consumer/worker entities may wake up periodically to process the work items. For example, a worker entity (e.g., thread or process) wakes up (e.g., every 10 seconds) to check whether there are any pending association tasks. The set of one or more workers will iterate through the tasks to process the work in the queue.
At 804, one of the workers identifies an association task to process. At 806, the association request is processed by accessing information collected for the rules, sources, parsers, fields, and/or target. This action identifies what target is being addressed, finds that target, and then looks up details of the log source and/or log rule that has been associated with the target.
At 808, the worker then generate configuration content for the specific association task that it is handling. In some embodiments, the configuration content is embodied as XML content. This action creates both the target-side details and the server-side details for the configuration materials. For the server-side, this action will create configuration data for the server to process collected log data. For example, parser details in XML format are created for the server-side materials for the log data expected to be received. For the target-side, this action will create configuration data for log collection from the target. For example, as discussed below, variable pathnames (e.g., having variables instead of absolute pathnames) may be specified for a given log source to identify a directory that contains log files to monitor. These varying pathnames may be replaced with actual pathnames and inserted into the target-side materials at step 808.
A determination is made at 810 whether there are any additional association tasks to process. If there are additional tasks on the queue, then the process returns back to 804 to select another task to process. If not, then at 812, the configuration materials are finalized.
It is noted that the same configuration/XML file can be used to address multiple associations. For example, if multiple targets are on the same host, then a single configuration file may be generated for all of the targets on the host. In this case, step 808 described above appends the XML content to the same XML file for multiple iterations through the processing loop.
Updates may occur in a similar manner. When a change occurs that requires updating of the materials, then one or more new association tasks may be placed onto a queue and addressed as described above. Furthermore, de-associations may also occur, e.g., where the log analytics agent is de-installed. In this situation, the configuration files may be deleted. When a target is deleted, a message may be broadcast to notify all listeners about this event by a target model service, which may be consumed to delete the corresponding associations and to update the XML content.
In the log processor at the server side, additional information can be included in the configuration file to facilitate the log parsing, e.g., as shown in the server-side content portion 1000 of
In addition to the above-described auto-associations, target-source manual associations may also be performed. For example, a user interface may be provided to perform the manual associations. This also causes the above-described actions to be performed, but is triggered by the manual actions.
Re-syncshronization may be performed of target-source associations. To explain, consider that when a log analytics agent is installed, monitored targets connected through the agent can be associated with certain pre-defined log sources Similarly, when the agent is de-installed, such associations can be deleted from the appropriate database tables. In addition, when a target is added to be monitored by an agent, the target can be associated with certain pre-defined log sources for that target type, and when the target is deleted from an agent, such association can be deleted from database tables.
Over time, these associations could become out-of-sync due to various reasons. For example, when a log analytics agent is being installed, the auto-association may occur due to some network issue that causes the loss of the configuration materials during its transfer. In addition, when a target is added or deleted, an event may not processed properly so the configuration XML file when updating does not occur as appropriate.
To handle these cases and maintain the association consistency between targets and their corresponding log sources, a web service is provided in some embodiments to synchronize the associations periodically. In at least one embodiment, only the auto-associations are synched, and not the manual associations customized by users manually.
Associations may be performed for a specific log analytics agent. A delta analysis can be performed between targets in a data model data store and targets in a log analytics data store to implement this action. Processing may occur where: (a) For targets in data model data store but not in log analytics data store, add associations for these targets; (b) For targets not in data model data store but in log analytics data store, delete associations for these targets; (c) For targets in data model data store and log analytics data store, keep the same associations for these targets in case of user customization. One potential issue for adding associations pertains to the situation where a user may have deleted all associations for a particular target so there is no entry in the log analytics data store, but there is an entry in the data model data store. The issue is that when applying the above approach, the auto-associations not wanted could be brought in again after the synchronization operation. To avoid this, the system can record the user action to identify the potential issue.
In addition, associations may be synchronized for a specified tenant. When this action is performed, delta analysis can be performed between the agent for the data model data store and agent for the log analytics data store. Processing may occur by: (a) For an agent in the data model data store but not in the log analytics data store, add associations for these agents; (b) For agents not in the data model data store but in the log analytics data store, delete associations for these agents; (c) For agents in the data model data store and the log analytics data store, perform the same delta analysis and synchronization as described above.
Synchronization may be performed for associations for all tenants. When this action is performed, it should perform agent-level synchronization as described for each tenant.
Turning the attention of this document to file patterns, one reason for their use in log analytics systems is because it is possible that the exact location of the logs to monitor varies. Most of the time, a system will expect logs to be in a particular place, in a specific directory. When the system dealing with a large number of streaming logs, it may not be clear which directory the logs are expected to be in. This prevents a system that relies upon static log file locations from operating correctly.
The inventive approach in some embodiments can associate log analysis rules to variable locations. One approach is to use metadata that replaces variable parts that correspond to locations for the log files. A path expression is used to represent the pathname for the log files, where the path expression includes a fixed portion and a varying portion, and different values are implemented for the variable part. The placeholder for location is eventually replaced with the actual location in the directory path.
Some embodiments provide for “parameters”, which are flexible fields (e.g., text fields) that users can use in either the include file name patterns or exclude file name patterns. The parameters may be implemented by enclosing a parameter name in curly brackets {and}. A user-defined default value is provided in this source. A user can then provide a parameter override on a per target basis when associating a log monitoring rule using this source to a target. The overrides are particularly applicable, for example, with regards to changes from out-of-the-box content (e.g., to override rules, definitions, etc. without actually changing the OOTB content). This is implemented, for example, by implementing a mapping/annotation table that includes the user overrides and indicate of an override for the OOTB content.
The reason this is very helpful is because in the log sources, paths may be defined for log files to monitor. In some cases, the paths are fixed, such as in the Linux syslog file, the path is “/var/log/messages*”. However, in other cases, one may want to monitor a database alert log, where each database target will be installed in a completely different path, and the path to find the alert log may be different. For example, the alert log for one database is located at this location: “/xxx/db/yyyy/oracle/diag/rdbms/set2/set2/alert/log*.xml”. The underlined portions may vary for every database target. However, each target has the notion of target properties. Included in these properties are metadata that can be used to fill in the variable parts in the path. In the current embodiment, one can express this path instead as: “{DIAGNOSTIC_DEST}/diag/rdbms/{SID}/{SID}/alert/log*.xml”
When this source is used in a rule and this rule is associated to the target, the system replaces the parameters “DIAGNOSTIC_DEST” and “SID” with those that are known for that target. This allows the system to associate a single rule and source to thousands of targets at once.
As another example, the user may want to monitor the pattern: “/xxx/oracle/log/*”. In this case, “/xxx/oracle” is a variable path depending on the host. One could instead write the pattern as: “{INSTALL_DIR}/log/*”. For this source, the user can provide a default value (/xxx/oracle) to the INSTALL_DIR parameter. Later, when rule is associated to a target, the user can provide a target override value of “/xxx/oracle” for this parameter on this target without having to create a new source or rule.
With regards to system-defined fixed parameters, there may be a case where the user wishes to reference a built-in parameter (e.g., ORACLE_HOME). Here, the system will replace that variable with the ORACLE_HOME that is known for the selected target. The pattern could be written as: “{ORACLE_HOME}/log/*”. This path will automatically be understood by the agent, where ORACLE_HOME is a special built-in parameter that does not need a default to be set by the user. The system could be provided with a list of fixed parameters that integrators/users can choose to use.
At 1104, a path is specified for the target locations having a fixed portion and a varying portion. The varying portion may be represented with one or more parameters. During log processing, at 1106, the one or more parameters are replaced with values corresponding to one or more target log files, wherein a single rule for implementing log monitoring is associated with multiple different targets to be monitored.
This approach is quite advantageous over approaches where every log is in a different directory that one cannot know about ahead of time, and where a separate forwarder mechanism would have to be set up for each path. Instead, the present approach can be used to set up one rule for a very large number of paths.
In some embodiments, configuration information from the log analytics system can be coupled to this approach to configure and setup the rules for identifying log file assignments. Some examples of configuration information that can be used include, for example, how a database is connected, how the components are connected, which datacenter is being used, etc.
Some embodiments specify how to map sources to targets based on their relationships. For instance, a defined source Source1 can be assigned to all related targets belonging to a certain system. Any association type and/or rule can be used in this embodiment, e.g., where a common set of association types is used to provide configuration information useful for determining rules for log locations. Such association types may include, for example, “contains”, “application_contains”, “app_composite_contains”, “authenticated_by”, “composite_contains (abstract)”, “cluster_contains”, “connects_through”, “contains (abstract)”, “depends_on(abstract)”, “deployed_on”, “exposes”, “hosted_by”, “installed_at”, “managed_by”, “monitored_by”, “provided_by”, “runs_on (abstract)”, “stores_on”, “stores_on_db”, and “uses (abstract)”.
It is noted that the target relationship information/model can be used in other ways as well. For example, the target model can also be used to help correlate log entry findings to aid in root cause analysis. As another example, the host model can be used for comparing all hosts in one system. For instance, if there are a number of databases in a first system, this feature can be used to see logs across these systems together, and in isolation from databases used for a second system.
Here, the reference material 1210 may be accessed to identify the correct replacement of the variable portions of the paths for the target locations. Any suitable type of reference materials may be implemented. As noted above, a defined source Source1 can be assigned to all related targets belonging to a certain system, and/or an association type and/or rule can be used as well. In addition, target relationship information/models can be employed as well as the reference material.
Embodiments of the invention therefore provides improved functionality to perform target-based log monitoring. Two possible use cases this functionality includes log monitoring and ad hoc log browsing. Log monitoring pertains, for example, to the situation where there is continuous monitoring and capture of logs. Some embodiments of log monitoring pertains to the some or all of the following: (a) monitor any log for any target and capture significant entries from the logs; (b) create events based on some log entries; (c) identify existence of log entries that can affect a compliance score; (d) perform user as well as integrator defined monitoring; (e) capture log entries that are not events to enable analytics on a subset of all logs; (f) use cases such as intrusion detection, potential security risk detection, problem detection; (g) implement long term persistent storage of log contents; (h) search for log content; (i) customizable search-based views; (j) log anomaly detection and scoring
Ad hoc log browsing pertains, for example, to the situation where there is not continuous monitoring of logs. In this approach, the user can browse live logs on a host without having to collect the logs and send them up to the SaaS server. The model for configuring what to monitor is similar to what was described earlier. The difference pertains to the fact that the user can select a rule, source, and some filters from the UI and the search is sent down to agent to obtain log files that match and bring them back, storing them in a temporary storage in the server. The user can continue to narrow their search down on that result set. If the user adds another target, rule, or extends the time range, the system goes back to the agent to obtain only the delta content, and not the entire content again. The user can therefore get the same benefits of log analytics without configuring continuous log monitoring. The feature can be very low-latency since the system only needs to go back to get more data from agent when the search is expanded. All searches that are narrowing down current result set goes against the data that have been cached from a previous get from the agent.
The embodiments of the invention can be used to store log data into a long-term centralized location in a raw/historical datastore. For example, target owners in the company IT department can monitor incoming issues for all responsible targets. This may include thousands of targets (hosts, databases, middle wares, and applications) that are managed by the SaaS log analytics system for the company. Many log entries (e.g., hundreds of GB of entries) may be generated each day. For compliance reasons, these logs may be required to be stored permanently, and based on these logs, the data center manager may wish to obtain some big pictures of them in long run and IT administrators may wish to search through them to figure out some possible causes of a particular issue. In this scenario, a very large amount of logs could be stored in a centralized storage, on top of which users can search logs and view log trends with acceptable performance. In some embodiments, the log data can be stored in an off-line repository. This can be used, for example, when data kept online for a certain period of time, and then transferred offline. This is particularly applicable when there are different pricing tiers for the different types of storage (e.g., lower price for offline storage), and the user is given the choice of where to store the data. In this approach, the data may held in offline storage may be brought back online at a later point in time.
The logs can be searched to analyze for possible causes of issues. For example, when a particular issue occurs to a target, the target owner can analyze logs from various sources to pinpoint the causes of the issue. Particularly, time-related logs from different components of the same application or from different but related applications could be reported in a time-interleaved format in a consolidated view to help target owner to figure out possible causes of the issue. The target owner could perform some ad-hoc searches to find same or similar log entries over the time, and jump to the interested log entry, and then drill down to the detailed message and browse other logs generated before/after the interested point.
In some embodiments, restrictions can be applied such that users have access only to logs for which access permissions are provided to those users. Different classes of users may be associated with access to different sets of logs. Various roles can be associated with permissions to access certain logs.
Some embodiments can be employed to view long-term log distribution, trends, and correlations. With many logs generated by many different targets and log sources over long time, data center managers may wish to view the long-term log distributions and patterns.
Some embodiments can be employed to search logs to identify causes of an application outage. Consider the situation where an IT administrator or target owner of a web application receives some notification that some customers who used the application reported that they could not complete their online transactions and the confirmation page could not be shown after the submit button was clicked. With embodiments of the invention, the IT administrator can search the logs generated by the application with the user name as key and within the issue reporting time range. Some application exception may be found in the log indicating that some database error occurred when the application tried to commit the transaction. By adding the database and its corresponding hosting server via target association relationship and their availability related log sources for the search, the IT administrator could browse the logs around the application exception time to find some database errors, which was related for example to some hosting server partial disk failure and high volume of committing transactions.
Some embodiments can be employed to view long-term log distributions, trends, and correlations by tags. A data center manager may define some tags for logs collected in the data center, such as security logs for production databases, security logs for development servers, logs for testing servers, noise logs, etc. The data manager may be interested, for example, in knowing the followings: log distributions by these tags over the past half year, their daily incoming rates during last month, and whether there are any correlations between the security log entries for production databases and the changes of their compliance scores during a given time period.
Some embodiments permit log data to be stored as metrics. In certain embodiments, the system will store several log fields as key fields. The key fields will include (but may not be limited to): Time, Target, Rule, Source, and Log File. The system may also create a hash or GUID to distinguish possible log entries that have the same time and all other key fields. When a rule that is using this metric action for log entries is associated with the first target, a metric extension is created and deployed. This metric extension will be named similar to the rule to make it easy for the user to reference it.
In some embodiments, the log monitoring rule has a possible action to create an event when a log entry matches the condition of the rule. Additionally, users will be able to indicate that this event should also trigger a compliance violation which will cause an impact on the compliance score for a compliance standard and framework.
As noted above, one possible use case is to provide a log browser, e.g., where browsing is employed to browse live logs on a host without collecting the logs and sending them to a SaaS Server. The user can select a rule, source, and some filters from the UI and the search is sent down to agent to obtain log files that match and bring them back, storing them in a temporary storage in the server. One use case for this feature is to allow users to browse a short time period of log files across multiple targets in a system to try to discover a source of a problem, especially when there is a rich topology mapping and dependency mapping of the customer's environment. This content can be used to help find related elements and show the logs together. This allows the users to see logs for all targets related to a given system for instance and see what happened across all targets in time sequence. In many cases, when there is a target failure, it may be a dependent target that is experiencing the problem, not the target that is failing.
The user may choose to start a new log browsing session in context of a system/group/individual target. If coming in from a target home page, the target home page context is to be retained. This means that the outer shell of the page still belongs to the target home page, and just the content panel will contain the browse UI functionality. This means the browse UI can be implemented to be modular to plug into other pages dynamically. In some embodiments, multiple row-content can be provided per entry to show additional details per row. This is one row at a time, or the user could decide to perform this for all rows. Sorting can be provided on the parsed fields, but in addition, can be used to see additional details per row (including the original log entry).
Search filters can be provided. For example, a search filter in the form of a date range can be provided, e.g., where the options are Most Recent, and Specific Date Range. With the Most Recent option, the user can enter some time and scale of Minutes or Hours. With the Specific Date Range, the user will enter a start and end time. With the date range option, Targets, Sources, and Filters can be specified. These allow the users to select what they want to see in this log browsing session. After the user has selected the targets, sources, and applied any filters, they can begin the browse session to initiate retrieval of the logs from various targets and ultimately have them shown on the interface.
Search queries can be implemented in any suitable manner. In some embodiments, natural language search processing is performed to implement search queries. The search can be performed across dependency graphs using the search processing. Various relationships can be queried in the data, such as “runs on”, “used by”, “uses”, and “member of”.
In some embodiments, the search query is a text expression (e.g., based on Lucene query language). Users can enter search query in the search box to search logs. The following are example of what could be included in the search query: (a) Terms; (b) Fields; (c) Term modifiers; (d) Wildcard searches; (e) Fuzzy searches; (d) Proximity searches; (f) Range searches; (g) Boosting a term; (h) Boolean operators; (i) Grouping; (j) Field grouping; (k) Escaping special characters.
A tabular view can be provided of the search findings. Some query refinement can be performed via table cells to allow users to add/remove some field-based conditions in the query text contained in the search box via UI actions. For example, when a user right-mouse clicks a field, a pop-up provides some options for him/her to add or remove a condition to filter the logs during the searches. This is convenient for users to modify the query text, and with this approach, users do not need to know the internal field names to be able to refine the query at field level.
There are numerous ways that can be provided to list fields for user to select/de-select them for display purpose in the search findings table. One example approach is based on static metadata, and another possible way is based on dynamic search results.
For list fields based on static metadata, a basic field shuttle is used to list all defined fields. Some example fields that can be defined by the log entry metadata include: (a) Log file; (b) Entry content; (c) Rule name; (d) Source name; (e) Parser name; (f) Source type; (g) Target type; (h) Target name. The values of these fields can be obtained from the agent with log entry (although source, parser, rule, target are all GUIDs/IDs) that will need to be looked up at display time.
For list fields based on dynamic search findings, the top n fields (e.g., 10) will be shown that would be suggested as making the most difference for that search. A “more fields” link will lead to a popup for users to select other fields. Users can see more information of those fields on the popup than form the View menu. When listing the fields, the system could use any suitable algorithm, for example, to assign a number to each field that is influenced by how many rows in the search results having non-null value, or how many different values there are across all search results for that field, etc.
Given so many dynamic fields available for users to select/de-select, it is desired for a user to be able to save the fields selection (field names and sizes). The system can store the last selected fields so when the user comes back to the page, he/she still gets the fields picked last time.
There may be a very large number (e.g., thousands) of log entries resulting from a search and it may not be possible for users to browse all of them to find the interested logs. For a particular search, users should be able to drill down to the details of the search findings with a few clicks. In some embodiments, features include clickable bar charts and table pagination. With these navigation features, plus customizable time range, users should be able to jump to some interested point quickly. Correspondingly, some embodiments provide for drilling up from details to higher levels so users can easily navigate to desired log entries via bar graphs. An example use case is: after users drill down a few levels they may want to drill up back to a previous level to go down from another bar. After users identify an interested log entry via some searches, they likely want to explore logs from a particular log source around the interested log entry, or explore logs from multiple log sources around the interested log entry in time-interleaved pattern. Some embodiments provide an option for users to browse forward/backward the logs around a specified log entry page by page. A graphical view can be provided of the search findings. This allows the user to pick fields to render the results graphically.
Some embodiments pertain to improved techniques to address log distributions, trends, and correlations. For search findings resulted from a particular search, distributions can be based on log counts to give users some high-level information about the logs. For each distribution type, the top n (e.g., 5 or 10) items are listed with number of found logs (where a “more . . . ” link will lead to a popup with all other items listed). When users select a particular item, only logs corresponding to that item would be shown in the right table, so the action is equivalent to filtering the search findings with that item. Such information may be presented: (a) By target type; (b) By target, such as target owner and/or lifecycle status; (c) By log source; (d) By tag. Besides showing the search findings in the results table, the system can also provide options for users to switch between table view and the corresponding distribution chart view.
In some embodiments, results can be filtered by selecting distribution items. Users can filter the results table by selecting one or more distribution items. By default, all distribution items are selected and all log entries are listed in the results table. After selecting one or more distribution items, users can navigate the log entries via pagination. With one or more distribution items selected, when users click the search button for a new search, the selections of distribution items will be reset to be selected for all distribution items.
Some embodiments provide a feature to show search finding trends. Some embodiments provide a feature to show search finding correlations. Related to this feature, some embodiments provides launching links for users to navigate to search/view detailed logs when they perform correlation analysis among events, metrics, and infrastructure changes. Launching links could be provided, e.g., for users to navigate to an IT analytics product to analyze/view detailed events/metrics when they wish to see some bigger pictures related to the logs here.
Another feature in some embodiments pertains to process-time extended field definitions. Even with the same baseline log type, it is possible for individual log entries to contain inconsistent information from one log to the next. This can be handled in some embodiments by defining base fields common to the log type, and to then permit extended field definitions for the additional data in the log entries.
To explain, consider that a source definition defines log files to monitor. The log files are parsed into their base fields based on the log type definition. One can extract additional data that is not consistent across all log entries, e.g., as shown in 1300 of
According to some embodiments, the processing for implementing process-time extended field definitions comprises: identifying one or more log files to monitor, wherein some of the entries in the one or more log files may include additional data that does not exist in other entries or is inconsistent with entries in the other entries, such as an additional IP address field in one entry that does not appear in another entry; identifying a source definition for one or more log files to monitor; parsing the one or more log files into a plurality of base fields using the source definition; defining one or more extended fields for the one or more log files; and extracting the one or more extended fields from the one or more log files.
Therefore, some embodiments permit the user to add extended field definitions. These are defined patterns that are seen within a field. A user could perform a create-like on a source and then the source and all extensions will become a new user-created source. The extended field definition defines new fields to create based on the content in a given file field. In some embodiments, the extended field definitions (and tagging) can be applied retroactively. This allows past log data to be processed with after-defined field definitions and tags.
The last entry is another example where the user has defined two new fields and in the first field, they have also defined the way to get this content using a regular expression. Here, there are some characters containing a-z,A-Z,0-9 or a hyphen before a period ‘.’. Everything that matches that expression should be added to a new extended field called the HOSTNAME. Anything after the first period will be put into a new extended field called DOMAINNAME. The HOST field which came from the file parser will still have all of the content, but this extended field definition is telling our feature to add two NEW fields in addition to the HOST field (HOSTNAME and DOMAINNAME).
All extended field definitions where a new field is defined using the { } delimiters uses a parse expression. However in this example, except the HOSTNAME field in the last example, there is none shown. This is because in some embodiments, there is a default known regular expression pattern of (.)* which means any number of character. This expression is implicitly used if the user does not provide a regular expression. If there is static text, the system will take any characters between the two pieces of static text. If there is no static text or characters after a field expression, it is assumed that every character to the end of the file field is part of the new extended field's value (like DOMAINNAME in the last example and CONTENT_LENGTH_LIMIT in the third example.) This could lead to some issues if there were variants of this log entry that have additional text sometimes. The way to solve this is to also define the parse regular expression for each field and not rely on the default implicit (.)*.
Some embodiments provide the ability to define regular expressions and save them with a name. For instance, the regular expression for hostname used above is [a-zA-Z0-9\-]+.
One example of a saved regular expression may be:
Extended expression definitions can be evaluated at the agent (e.g., using a Perl parsing engine) directly with minor changes to the input string from the user.
In some embodiments, field reference definitions can be provided. This provides a feature where users can provide a lookup table of a SQL query to transform a field which may have a not-easily-readable value into more human readable content. Three example use cases highlight this need: (a) In a log entry, there may be an error code field (either a core field or an extended field) that simply has a number, where the user can provide a lookup reference so that the system adds another new field to store the textual description of what this error code means; (b) In a log entry, there may be a field (either a core file field or an extended field) that has the GUID of a target, and the system can provide a lookup using a SQL query to a target table that will create another new field that stores the display name of the target; (c) IP to hostname lookup may also be performed as a common use case, where in a log, there may be IP addresses for clients, where the IP addresses are used to look up hostnames.
As noted above, log types (also referred to herein to include “Parsers” in some cases in this document) may also be defined to parse the log data. One example log type pertains to the “Log Parser”, which is the parser that can be used to parse the core fields of the source. Another example log type pertains to a “Saved Regular Expressions”, which can be used when defining extended field definitions. For example, a hostname can be defined via a regular expression as “[a-zA-Z0-9\-]+”. This regular expression can be saved with a name and then used a later time when creating extended field definitions.
A log parser is a meta-data definition of how to read a log file and extract the content into fields. Every log file can be described by a single parser to break each log entry into its base fields. The log type may correspond to a parse expression field, such as for example, a Perl regular expression for parsing a file. When defining a log parser, the author identifies the fields that will always exist in the log file. In this case, the following are the fields that exist in every entry of the above log file:
Some fields may be very complex, meaning that the field will actually contain additionally structured content for some log entries but not for others. These may not be handled by the log file parser in some embodiments because it is not consistent in every line. Instead, when defining a source, extended fields can be defined to break this field into more fields to handle these cases.
Profiles can be implemented for various constructs in the system, such as parsers, rules, and sources. The profiles capture differences between different usages and/or versions of data items and products for users. For example, a source profile can be created that accounts for different versions of a user's products that are monitored, e.g., where a source profile changes the source definition between version 1 and version 2 of a database being monitored. Rule profiles may be used to account for differences in rules to be applied. As another example, parser profiles can be provided to adjust parsing functionality, e.g., due to difference in date formats between logs from different geographic locations. Different regular expressions can be provided for the different parser profiles.
With regards to a log entry delimiter, log files can have content that is always known to be one row per entry (syslog), or can have content that can span multiple lines (Java Log4j format). The Log Entry Delimiter input lets the user specify to always parse this log file as one row per entry, or to provide a header parse expression that tells us how to find each new entry. The entry start expression will typically be the same as the first few sections of the parse expression. The system uses this expression to detect when a new entry is seen versus seeing the continuation of the previous entry.
For this example, the entry start expression may be:
In some embodiments, a table is maintained corresponding to parsed fields, and which starts empty (no rows) as the parse expression is empty. As users are creating the parse expression, the fields being defined are added to this table. This can be implemented by monitoring the text entered in this field and when a ‘)’ is added, a function is called to determine how many fields have been defined. The system can ignore some cases of (and), e.g., when they are escaped or when they are used with control characters.
For instance, consider the following parsing language:
In this example, there are two pairs of ( ) which means there are two fields defined. The content inside is how to find the field from the log entry. The UI for this create parser page does not care about what is inside the parenthesis. This is evaluated and used on the agent only. The content outside of the (and) are just static text that helps parse the line (this UI also does not care about this). For creating the right number of fields in the table, the approach counts the number of ( ) pairs in the parse expression. For each field that is parsed out by the parse expression, the user provides a field name based on one of the existing common fields.
Log Parser Construction
As noted above, a log parser is typically constructed in a manual process by a person that must be both knowledgeable about the exact format of the log file to be analyzed, as well as skilled in the specific programming infrastructure that would be used to implement the parser. There are numerous problems with this approach. For example, this highly manual process requires significant amounts of time and resources from skilled technology personnel, both upfront to create the parser, as well as on an ongoing basis to maintain the parsers in the face of possible changes to the log file formats. Moreover, this manual approach necessarily requires a priori knowledge of the log file formats, which may not always be available before the log files start streamlining into the log analytics system. Finally, the lack of a suitable parser could potentially bring the log analysis pipeline to a halt with respect to analysis of the affected log data.
Some embodiments of the invention solve these problems by providing an approach to automatically construct a log parser. Instead of requiring a person to manually create the contents of the log parser, the log contents themselves are used to construct he parser.
At 1504, the lines from the log file are analyzed. The analysis is performed to identify the specific contents and differentiated sections within the log file lines. As additional lines are processed and more information is obtained about the lines, a greater level of certainty can be obtained of the basic structure of the log file lines. It is noted that the number of lines that needs to be reviewed to generate an accurate parser depends upon the complexity and content of the log file lines. However, using the techniques described herein, many log files may only need 10-20 lines (or even less) to be analyzed to construct an acceptably accurate log parser. This ability to generate a log parser based upon review of a relatively small number of lines permits the log parser generation processes to be performed in a very time-efficient manner, and therefore improves the functioning of the computing system itself since it allows the log parser generation process to be performed in real-time as the log file data is streamed into the log analytics system.
At 1506, the parser is then constructed based upon analysis of the lines from the log files. This is performed, for example, by scanning the contents of one or more sets of logs to construct a regular expression to parse the logs. The present embodiment operates by walking through a selected set of the lines to identify commonalities between the lines, and to then construct a regular expression that can be used to generally parse through logs files containing similar lines of log entries.
Once the first line has been processed, then at 1604, another line from the log is selected for analysis. At 1606, the analysis is performed by moving through the line under analysis to compare against the master list. This action is performed to identify the variable and non-variable parts of the line(s) being analyzed. This can be performed by starting from beginning of line, and moving forward until there is a mismatch. At this point, the process finds the next common character(s). One of the identified common characters is considered a “delimiter”, so that the intervening range is marked as variable. It is noted that the intervening range may be variable in size between the two lines, and so the algorithm should be robust enough to handle this. An example algorithm for identifying the common parts that should be considered the delimiter is described in more detail below. The process loops through until the end of line is reached.
At 1608, the master line can then be updated to reflect the common portions and the variable portions. In addition, the values of the variable portions can be stored if desired.
At 1610, a determination is made whether there are any additional lines to analyze. In some embodiments, there is no need to analyze each and every line in the log to perform the analysis for the log. Instead, only a subset of the lines (e.g., 10 lines) needs to be analyzed to construct the parser. If additional lines needs to be analyzed (e.g., only 2 of the 10 lines for analyzed has been processed), then the process returns back to 1604 through 1608 to select and analyze another line from the log.
If no additional lines need to be analyzed, then at 1612, the updated master line is ready to be processed. One example type of processing, as described in more detail below is, for at least one of the variable parts, assigning the at least one variable part to a least restrictive data type that encompasses a variability of values detected in the at least one variable part. In addition, commonalities can be identified between the lines to then construct a regular expression from the commonalities. The regular expression can be generated for the non-variable parts with placeholders for the variable parts to implement a log parser, where at least two different placeholders are associated with different data types.
The first action is to select line 1 from the log file 1702 to construct a master list 1704. A shown in
To construct the master list 1704, each portion/unit of the content within Line 1 is examined to identify a unit type (also referred to herein as a “parse unit”) that is associated with the portion of the line. According to one embodiment, each portion of the line is identified from one of the following parse units: (a) string—this is a default parse unit type that correspond to any type of element that may exist within a string; (b) alpha—this parse unit type corresponds to any number of contiguous alphabetic elements; (c) integer—this parse unit type corresponds to any number of contiguous integer elements; and/or (d) field rule type—this parse unit type corresponds to a type that is identified based upon a rule definition, and may correlate to complex combinations of any numbers of characters, integers, or symbols. The more restrictive the type, the more favored is the selection of that type for element(s) within the line.
Next, as shown in
However, as shown in
The process then proceeds to identify the next common element(s) that should be considered a delimiter between common and variable portions. In the current example, the “.” element in the sixth element position is the next common element. An approach is described in more detail below in conjunction with
As shown in
The variable portion forms an analysis range where its contents can be analyzed as a collective group of elements. In addition, within the variable portion, common parse unit types may be collapsed together, e.g., for the variable portion of both the master list and line 2, this corresponds to “Bob” for the master list and “Sue” from line 2. The most restrictive parse unit type that correlates to these values is the alpha parse unit. Therefore, as shown in
When considering content from both the master list and line 2, the parse unit definition within the master list 1704 may also be used to track the specific contents from each of the lines that have been analyzed. Here, the “Bob” and “Sue” values from both line 1 and line 2 for this element position can be included within the parse unit definition for the alpha parse unit within the master list. This results in the master list 1704 shown in
Within a line of the log file, there may be sections of content that can be interpreted to have a meaningful label/type associated with it. For example, a sequence of numbers separated by the “.” value such as “123.45.67.89” may be recognizable as an IP address. Therefore, instead of representing such sequences generically as integer, alpha, or string parse units, “field rule” types can be constructed that associate meaningful labels to these types of sequences. The field rule type may include a rule definition that correlates to combinations of characters, integers, and/or symbols associated with a given sequence of interest.
It is noted that processing of the master list to identify field rules may be performed in a post-processing action after construction of the master list—after analysis of multiple lines from the log file. Alternatively, the field rules may be identified as the lines are individually analyzed in a streamed manner. In another embodiment, field rules may be identified both during processing of the lines, and also afterwards in a post-processing step.
In some embodiments, the field rule processing is performed only for sections of the line that are identified as variable. Alternatively field rules may correlate to both constant and variable parts of the line.
Once a sufficient number of lines have been processed from the log file, a regular expression can be constructed from the master list. For example, as shown in
Finally, as shown in
One key advantage of this approach is that diverse sub-patterns can be efficiently detected, which separately matches high-level patterns and then attempts to characterize variable portions that were not fixed parts of the high-level patterns, using sub-pattern detection. An example sub-pattern is key-value pairs.
This approach can also be used to define skeletal parts to construct a regular expression and build a parser that is capable of assigning parts of the expression to variables. This approach can also handle patterns that are below a similarity threshold by assigning variable parts to keep items in the same log consistent if possible. In some embodiments, the parser is generated for future processing rather than just categorizing.
Using this approach, logs having any level of complexity may be processed to construct a log parser. Consider the following log entries which are slightly more complex examples:
The present embodiment operates by walking through a selected set of the lines to identify commonalities between the lines, and to then construct a regular expression that can be used to generally parse through logs files containing similar lines of log entries. A master list can be constructed from the first line, which is compared against the second line. The analysis identifies the variable and non-variable parts of the line(s) being analyzed.
Assume that the first line (with name=Bob) was used to initially construct the master list. The next line (with name-Sue) is then analyzed to identify the variable and non-variable portions between the two lines. Here, the first portion of the line has the same common character “[”. Moving from this character, it can be seen that there is an intervening range of different values until it reaches a closing bracket “]”. The intervening range can optionally be considered to include common values for the “.” characters. The rest of line similarly can be analyzed such that “Name=” and “Age=” portions are found to be common portions, while the range of characters after those common portions are found to be variable portions. The master line can be updated to reflect the common portions and the variable portions. In addition, the variable values can also be stored if desired.
The updated master line can then be processed to construct a regular expression from the commonalities. For the above example lines, the following identify the common portions, the variable portions, along with the values of the variable portions.
This can then be used to construct an appropriate regular expression to parse the lines from the logs. For example, the first portion of the line of the IP_address may correspond to the following regular expression: “\[[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.\]”. It is noted that a field rule (defined to include this regular expression) may also be used to correlate this portion of a line to an IP_address.
According to some embodiments, line pre-processing may be performed ahead of time to prepare the log data for processing. To explain, consider the example log file 1902 shown in
At 1804, the lines are analyzed for grouping purposes. One possible approach that can be taken to group lines together is to check timestamps of the lines. For example, it is possible in some systems that multiple lines that relate to one another only includes a timestamp for the first line. In this situation, lines are grouped together until another timestamp is identified. Even if each line includes its own timestamp, commonality of timestamp values permits multiple lines to be identified as parts of a unitary whole. As another alternative, clustering may be performed to cluster together grouping of lines that are supposed to link with one another. Another possibility is to perform pre-classification of lines to identify the line structures to identify lines that should be grouped together.
Once the groupings have been identified, then the grouped lines can be considered together for log parsing purposes. According to 1806a, one possible approach is to manipulate the lines so that grouped content appears within a single line. At 1806b, another approach is to categorize the multiple related lines into a single log entry for analysis purposes.
Portion 1904a of
In the alternative approach shown in portion 1904b, a new line is not created to combine multiple related lines together. Instead, the multiple lines are merely logically grouped together as a single log entry for analysis purposes. As shown in portion 1904b, a first logical log entry 1906s is formed by the first two lines and a second logical log entry 1906b is formed by the third and fourth lines. The master list described above would be constructed by walking through the elements of both lines that pertain to a common logical log entry. In this situation, the “newline” character that separates the lines within a single log entry can be considered as merely another character to be identified and processed within the master list for a given entry.
As previously noted, sequential sections of a log line can be considered as a unit when constructing a log parser. Delimiters within the line can be identified to determine the sequential sections to identify. Each lines can be considered for its common portions and variable portions, where common portions may correspond to a delimiter that separates one or more elements within the variable portions as a sequence of elements for analysis. For example, in the first line of the log file 1702 shown in
However, the simplistic solution of just identifying common portions as a delimiter fails if one or more of the common portions should really be considered part of the content section that should analyzed as a unit. To illustrate this problem, consider the log file 2102 shown in
According to some embodiments, an inventive approach is provided to identify which of one or more common elements within a line should be considered a delimiter. The approach operates by walking through a line to identify common elements, where a combination of the element position and element weight are considered to determine a score for each common element. The element having the greatest score (or least score depending upon how the score is calculated) can then be identified as the delimiter.
At 2004, the process then iterates through the rest of the line to identify additional common element(s) within the line. There may be any number of one or more additional common elements.
At 2008, scoring is calculated for each of the identified common elements. The position of the common element within the line is first determined for the scoring. The general idea is that all else being equal, a possible delimiter that is found earlier (e.g, closer to the left side when walking from left-to-right within the line) should be the first delimiter to be considered. For example, consider the following line: “Names:Bob Joe Sam”. In this example line, there is a first space between “Bob” and “Joe”, and a second space between “Joe and “Sam”. In this situation, both spaces may be delimiters, but the first space (the one to the left between “Bob” and “Joe”) should be first identified. Only afterwards, as the delimiter identification process is run again, will the second space (between “Joe” and “Sam”) be identified as the next delimiter. Therefore, when choosing between the first space and the second space, the position of the first space should receive a more prominent score than the second space. This is accomplished, at 2010, by providing a score factor determined by the position of the element within the line. For example, either a sum or an average of the position of the element can be identified and associated with the element.
In addition, the type of element that is found should also be factored into the delimiter score for the element. This is accomplished, at 2012, by applying a weighting factor to the identified common element(s) within the line.
Weighting factors may also be associated with more complex rules that consider combinations of elements. For example, since a typical IP_address has sequences of numbers interspersed with the “.” element, this means that a “.” set between two sequences of integers is less likely to be a delimiter and more likely to be part of an IP address field. In addition, non-integer numbers (e.g., floating point numbers) may include a decimal between two numbers (e.g., for “.” element between two number elements in “2.3”), which also makes the “.” element unlikely to be a delimiter and more likely to be part of the numeric value in this situation. Therefore, as shown in row 2208, this combination of elements may be associated with a rule that identifies the “.” element between two integers, where this rule is associated with a weighting factor to bias against “.” in this type of combination of elements from being a delimiter.
As another example rule, consider when a given character has already been found to be a delimiter in a line. In this situation, that same character located later in the same line is very likely to also be a delimiter, e.g., where a “=” element found to be a delimiter for a key-value pair earlier in a line is very likely to also be a delimiter for other key=value pairs later in the same line. Therefore, as shown in row 2204, a rule for this situation can be associated with a weighting factor to bias heavily in favor of an element previously identified as a delimiter as being considered again as a delimiter.
Once the scores have been calculated, then at 2014, a delimiter can be identified from comparing the scores of the different possible delimiters. For example, if the scoring is configured such that lower scores correspond to a greater likelihood of being a delimiter, than the element in the line(s) having the lowest calculated score would be identified as the delimiter. The process can then be repeated to identify any number of additional delimiters (if they exist) within the line.
It is noted that while this example calculates delimiter scores where the lowest score is the most likely to be a delimiter, an application of the principles disclosed herein may also operate to calculate scores where the highest scores correspond to the most likely delimiters. In this alternate approach, the weighting factors would be configured such that the element types most likely to be delimiters would be associated with higher weighting factors, and the element types less likely to be considered delimiters would be associated with lower weighting factors.
A delimiter score will then be calculated for each of these two common elements.
Next a weighting factor is identified for each element.
The score is calculated in this example by multiplying the weighting factor by the sum of the position locations for the element. For the “o” element, the score would therefore be position sum (2)*weighting factor (100)=delimiter score of 200. For the “.” element, the score is the position sum (6)*weighting factor (1)=delimiter score of 6.
The scores are then compared to identify the lowest score, where the element having the lowest score is considered the delimiter. Here, the “.” element has a lower score than the “o” element (6<200). Therefore, the “.” element is identified as the delimiter.
As shown in
Another technique that may be applied in some embodiments is to automatically perform key value extraction from the log data. This approach is particularly useful, for example, to implement the extended field definitions that were described above. The current embodiment is implemented by identifying the first and last key value pair dividers in the lines, and to then process the content in-between with split functionality to extract the key value data.
Next, at 2304, an attempt is made to find a key-value (KV) pair divider (with a break if the KV divider is found). This pair divider can be, for example, the space between different key-value pairs. The process loops through this step to find additional pair dividers. This therefore identifies the range of key-value pairs that exist within the line for processing.
The process then returns back to the beginning of the identified range to extract key-value content. At 2306, identification is made of the key to the left of the very first key value divider. At 2308, the value to the right of the last KV divider is identified. At 2310, the identified portion of the line is then parsed to identify the key values. For example, the “split” function from Java or Perl can be used to perform this action. For the current line, this action therefore identifies the key values for each of the key value pairs in the lines. This approach therefore can be used to automatically perform key value extraction. The process iterates through the rest of the key value pairs in the identified range to extract the key value data for all of the key value pairs.
Next, as shown in
At this point the range of analysis has been identified for the key-value content extraction process. As shown in
Processing will now occur to extract the “key” and the “value” for each key value pair. As shown in
Processing then proceeds to the next key value pair. As shown in
Processing then proceeds to the last key value pair. As shown in
Additional optimizations may be performed to efficiently extract key-value content from the log files. To explain, consider again the log file line 2402 shown in
However, as shown within line 2504 of
This problem cannot be corrected merely by considering the space character as the delimiter for identifying keys and values. This is because certain keys and/or values may intend to include spaces as part of the key/value content. To explain, consider the line 2506 shown in
One possible approach to address this problem is to perform pre-processing to classify portions of the line, so that key-value portions of the lines can be identified for key-value extraction. With this approach, the non-KV portion of line 2504 in
Another approach is to perform post-processing to correct any problematic assignments of content to the key or value fields. This approach can be used, for example, to check for incorrect type(s) of values within the key value fields. To explain, consider line 2506 shown in
Therefore, what has been described is an improved system, method, and computer program product for implementing a log analytics method and system that can configure, collect, and analyze log records in an efficient manner. In particular, an improved approach has been described to automatically generate a log parser by analysis of the line content of a log. In addition, an efficient approach has been described to extract key-value content from the log content.
System Architecture Overview
According to one embodiment of the invention, computer system 1400 performs specific operations by processor 1407 executing one or more sequences of one or more instructions contained in system memory 1408. Such instructions may be read into system memory 1408 from another computer readable/usable medium, such as static storage device 1409 or disk drive 1410. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and/or software. In one embodiment, the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the invention.
The term “computer readable medium” or “computer usable medium” as used herein refers to any medium that participates in providing instructions to processor 1407 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 1410. Volatile media includes dynamic memory, such as system memory 1408.
Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, cloud-based storage, or any other medium from which a computer can read.
In an embodiment of the invention, execution of the sequences of instructions to practice the invention is performed by a single computer system 1400. According to other embodiments of the invention, two or more computer systems 1400 coupled by communication link 1415 (e.g., LAN, PSTN, or wireless network) may perform the sequence of instructions required to practice the invention in coordination with one another.
Computer system 1400 may transmit and receive messages, data, and instructions, including program, i.e., application code, through communication link 1415 and communication interface 1414. Received program code may be executed by processor 1407 as it is received, and/or stored in disk drive 1410, or other non-volatile storage for later execution. Data may be accessed from a database 1432 that is maintained in a storage device 1431, which is accessed using data interface 1433.
In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. For example, the above-described process flows are described with reference to a particular ordering of process actions. However, the ordering of many of the described process actions may be changed without affecting the scope or operation of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than restrictive sense. In addition, an illustrated embodiment need not have all the aspects or advantages shown. An aspect or an advantage described in conjunction with a particular embodiment is not necessarily limited to that embodiment and can be practiced in any other embodiments even if not so illustrated. Also, reference throughout this specification to “some embodiments” or “other embodiments” means that a particular feature, structure, material, or characteristic described in connection with the embodiments is included in at least one embodiment. Thus, the appearances of the phrase “in some embodiment” or “in other embodiments” in various places throughout this specification are not necessarily referring to the same embodiment or embodiments.
Number | Name | Date | Kind |
---|---|---|---|
5832511 | Beck et al. | Nov 1998 | A |
6725262 | Choquier et al. | Apr 2004 | B1 |
6738911 | Hayes | May 2004 | B2 |
6910183 | Maier et al. | Jun 2005 | B2 |
7111075 | Pankovcin et al. | Sep 2006 | B2 |
7155514 | Milford | Dec 2006 | B1 |
7523433 | Anderson | Apr 2009 | B1 |
7653633 | Villella et al. | Jan 2010 | B2 |
7822850 | Brikman et al. | Oct 2010 | B1 |
7844999 | Aguilar-Macias et al. | Nov 2010 | B1 |
8041683 | Korolev et al. | Oct 2011 | B1 |
8612377 | Beg et al. | Dec 2013 | B2 |
8620928 | Walton | Dec 2013 | B1 |
8832125 | Boctor | Sep 2014 | B2 |
9092625 | Kashyap et al. | Jul 2015 | B1 |
9262519 | Saurabh et al. | Feb 2016 | B1 |
9292328 | Pratt et al. | Mar 2016 | B2 |
20020138762 | Horne | Sep 2002 | A1 |
20030061025 | Abir | Mar 2003 | A1 |
20040254919 | Giuseppini | Dec 2004 | A1 |
20040261055 | Bertelrud et al. | Dec 2004 | A1 |
20050027858 | Sloth et al. | Feb 2005 | A1 |
20050044075 | Steere et al. | Feb 2005 | A1 |
20050228885 | Winfield et al. | Oct 2005 | A1 |
20060136177 | Patanian | Jun 2006 | A1 |
20060195297 | Kubota et al. | Aug 2006 | A1 |
20060195731 | Patterson et al. | Aug 2006 | A1 |
20060214963 | Komatsu | Sep 2006 | A1 |
20080005265 | Miettinen et al. | Jan 2008 | A1 |
20080155103 | Bailey | Jun 2008 | A1 |
20080215546 | Baum et al. | Sep 2008 | A1 |
20090089252 | Galitsky et al. | Apr 2009 | A1 |
20090119307 | Braun et al. | May 2009 | A1 |
20090249250 | Gajula et al. | Oct 2009 | A1 |
20100115010 | Anderson et al. | May 2010 | A1 |
20110246826 | Hsieh et al. | Oct 2011 | A1 |
20120005542 | Petersen et al. | Jan 2012 | A1 |
20120072381 | Cao et al. | Mar 2012 | A1 |
20120117079 | Baum et al. | May 2012 | A1 |
20120124047 | Hubbard | May 2012 | A1 |
20120278872 | Woelfel et al. | Nov 2012 | A1 |
20130042147 | Tonouchi | Feb 2013 | A1 |
20130054402 | Asherman et al. | Feb 2013 | A1 |
20130227352 | Kumarasamy et al. | Aug 2013 | A1 |
20130282739 | Anderson et al. | Oct 2013 | A1 |
20140089744 | Oshiro | Mar 2014 | A1 |
20140157370 | Plattner et al. | Jun 2014 | A1 |
20140289428 | Walter et al. | Sep 2014 | A1 |
20140304197 | Jaiswal et al. | Oct 2014 | A1 |
20150149480 | Swan et al. | May 2015 | A1 |
20150154192 | Lysne et al. | Jun 2015 | A1 |
20150293920 | Kanjirathinkal et al. | Oct 2015 | A1 |
20150379052 | Agarwal et al. | Dec 2015 | A1 |
20160019286 | Bach et al. | Jan 2016 | A1 |
20160034510 | Gukal | Feb 2016 | A1 |
20160041894 | Reid et al. | Feb 2016 | A1 |
20160092427 | Bittmann | Mar 2016 | A1 |
20160092558 | Ago et al. | Mar 2016 | A1 |
20160099953 | Hebert | Apr 2016 | A1 |
20160224570 | Sharp et al. | Aug 2016 | A1 |
20160246849 | Frampton et al. | Aug 2016 | A1 |
20160247205 | Ziliacus et al. | Aug 2016 | A1 |
20160253425 | Stoops et al. | Sep 2016 | A1 |
20160292263 | Ferrar | Oct 2016 | A1 |
20160292592 | Patthak et al. | Oct 2016 | A1 |
20160371363 | Muro et al. | Dec 2016 | A1 |
20170344625 | Hosokawa et al. | Nov 2017 | A1 |
Number | Date | Country |
---|---|---|
1352768 | Jun 2002 | CN |
101267352 | May 2011 | CN |
102164050 | Aug 2011 | CN |
103412924 | Nov 2013 | CN |
105138593 | Dec 2015 | CN |
2012031259 | Mar 2012 | WO |
Entry |
---|
“Log monitoring/analysis” May 13, 2014, 4 pages http://ossec-docs.readthedocs.org/en/latest/manual/monitoring/. |
Cohn et al., “Audio De-identification: a New Entity Recognition Task,” NAACL-HLT, 2019, 8 pages. |
Cumby et al., “A Machine Learning Based System for Semi-Automatically Redacting Documents,” Proceedings of the Twenty-Third Innovative Applications of Artificial Intelligence Conference, 2011, pp. 1628-1635. |
DataDOG Docs, “Log Parsing in the Agent”, Jul. 20, 2013, 3 pages http://docs.datadoghq.com/guides/logs/. |
Demoncourt et al., “De-identification of patient notes with recurrent neural networks,” Journal of the American Medical Informatics Association, JAMIA, vol. 24, No. 3, 2016, pp. 596-606. |
F1 score, Wikipedia, https://en.wikipedia.org/wiki/F1 score, retrieved on Aug. 2, 2018. |
Gamuts Software, “Log File Parsers”, Mar. 5, 2015, 1 page http://www.gamutsoftware.com/index.php/help/logfileconfiguration/. |
Han et al(“Centroid-Based Document Classification: Analysis and Experimental Results”, In: Zighed D.A., Komorowski J., Zytkow J. (eds) Principles of Data Mining and Knowledge Discovery. PKDD 2000. Lecture Notes in Computer Science, vol. 1910. Springer, 2000, pp. 1-8) (Year:200). |
Hayta et al (“Language Identification Based on N-Gram Feature Extraction Method by Using Classifiers”, IU-JEEE vol. 13(2), 2013, pp. 1-10) (Year: 2013). |
Hongyong Yu, et al., “Mass log data processing and mining based on Hadoop and cloud computing” Computer Science & Education (ICCSE), 2010, 7th International Conference on, IEEE, Jul. 14, 2012, pp. 197-202,XP032232566. |
Irmak et al., “A Scalable Machine-Learning Approach for Semi-Structured Named Entity Recognition,” WWW '10 Proceedings of the 19th international conference on World wide web, Apr. 26-30, 2010, pp. 461-470. |
Li, Weixi “Automatic Log Analysis Using Machine Learning: Awesome Automatic Log Analysis Version 2.0”, Uppsala Universitet, Nov. 2013. (Year: 2013). |
Liu et al., “De-identification of clinical notes via recurrent neural network and conditional random field,” Journal of Biomedical Informatics, vol. 75, 2017, pp. S34-S42. |
Logentries, “Tags and Alerts”, Jul. 6, 2015, 5 pages https://logentries.com/doc/setup-tags-alerts/. |
Loggly, “Automated Parsing Log Types”, Support Center, Apr. 8, 2015, 15 pages https://vww.loagly.com/docs/automated-parsing/. |
Loggly, “Tag Your Sources for More Focused Searching” Sep. 26, 2015, 5 pages https://www.loggly.com/blog/log-management-tags-searching/. |
Loggly, “Tags”, Support Center, Apr. 30, 2015, 5 pages https://www.loggly.com/docs/tags/. |
Malmasi et al (“NLI Shared Task 2013: MQ Submission”, Proceedings of the Eighth Workshop on Innovative Use of NLP for Building Educational Applications, pp. 124-133, Atlanta, Georgia, Jun. 13, 2013) (Year: 2013). |
Mamou et al., “Term Set Expansion based NLP Architect by Intel AI Lab,” Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing (System Demonstrations), 2018, pp. 19-24. |
Marco Lui (“Generalized Language Identification”, PHD Thesis, Department of Computing and Information Systems, the University of Melbourne, Jul. 2014, pp. 1-326. |
Meiyappan Nagappan, et al., “Abstracting log lines to log event types for mining software system logs”, Mining Software Repositories (MSR), 2010, 7th IEEE Working Conference on, IEEE, Piscataway, NJ, USA May 2, 2010, pp. 114-117, XP031675571. |
Ning et al (“HLAer: a System for Heterogeneous Log Analysis”, “HLAer: a System for Heterogeneous Log Analysis,” in SDM Workshop on Heterogeneous Machine Learning, 2014, pp. 1-22) (Year: 2014). |
Qiu et al., “Learning Word Representation Considering Proximity and Ambiguity,” AAAI'14 Proceedings of the Twenty-Eighth AAAI Conference on Artificial Intelligence, 2014, pp. 1572-1578. |
Sahlgren et al., “Learning Representations for Detecting Abusive Language,” Proceedings of the Second Workshop on Abusive Language Online (ALW2), 2018, pp. 115-123. |
Scalyr, “Parsing Logs”, Apr. 19, 2015, 9 pages https://www.scalyr.com/help/parsing-logs/. |
School of Haskell, “Parsing Log Files in Haskell”, Feb. 1, 2015, 22 pages. |
Selamat et al. (“Arabic Script Web Document Language Identifications Using Neural Network” iiWAS, 2007, pp. 329-338) (Year:2007). |
Shin et al., “Electronic Medical Records privacy preservation through k-anonymity clustering method,” the 6th International Conference on Soft Computing and Intelligent Systems, and the 13th International Symposium on Advanced Intelligence Systems, 2012, 1119-1124. |
T. G. Dietterich (“Ensemble methods in machine learning”, in Multiple Classifier System, Springer, pp. 1-15, 2000) (Year: 2000). |
Tf-idf, Wikipedia, https://en.wikipedia.org/wiki/Tf-idf, retrieved on Aug. 9, 2018. |
Towards Automated Log Parsing for Large-Scale Log Data Analysis Pinjia He;Jieming Zhu;Shilin He;Jian Li;Michael R. Lyu IEEE Transactions on Dependable and Secure Computing, 933-944 (Year: 2019). |
Trevino, Introduction to K-means Clustering, https://www.datascience.com/blog/k-means-clustering, Jun. 12, 2016. |
William Lam, “How to Add a Tag (Log prefix) to Syslog Entries”, May 7, 2013, 4 pages. |
Xu et al (“Detecting Large-Scale System Problems by Mining Console Logs”, SOSP'09, Oct. 11-14, 2009, pp. 117-131) (Year: 2009). |
Yarowsky algorithm, Wikipedia, https://en.wikipedia.org/wiki/Yarowsky_algorithm, retrieved on Sep. 12, 2018. |
Bai et al. {“Feasibility Analysis of Big Log Data Real Time Search Based on Hbase and Elastic Search”, 2013 Ninth International Conference on Natural Computation (ICNC), 2013, pp. 1-5) (Year: 2013). |
Giuseppini et al. (“Managing Log Files,” Chapter 6 of Microsoft Log Parser Toolkit: A complete Toolkit for Microsoft's undocumented log analysis tool, Elsevier, 2005, pp. 165-189) (Year: 2005). |
Number | Date | Country | |
---|---|---|---|
20220092062 A1 | Mar 2022 | US |
Number | Date | Country | |
---|---|---|---|
62142987 | Apr 2015 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16383773 | Apr 2019 | US |
Child | 17540731 | US | |
Parent | 15089180 | Apr 2016 | US |
Child | 16383773 | US |