Grok'un log verilerini ayrıştırırken çok güçlü ve ölümcül olduğunu gördüm. Java olan uygulamada log ayrıştırma için Grok kullanmak istedim .. Nasıl Java dan Grok ile bağlanabilir/çalışabilirim.Java'dan Grok kullanarak nasıl ayrıştırılır .. Mevcut herhangi bir örnek var mı?
5
A
cevap
5
GitHub java-grok indirmeyi deneyin: https://github.com/NFLabs/java-grok kullanarak desenleri test edebilirsiniz Grok Debugger'ı: http://grokdebug.herokuapp.com/
4
Kontrol dışarı bu Java kütüphanesi
Sen olarak projenize dahil edebilirsiniz bir maven bağımlılık
<dependency>
<groupId>org.aicer.grok</groupId>
<artifactId>grok</artifactId>
<version>0.9.0</version>
</dependency>
O öncesi ile geliyor tanımlanmış desenler ve sizinkini de ekleyebilirsiniz.
Adlandırılmış kalıplar ayıklanır ve sonuçlar bir grupta anahtar olarak gruplar adları ile kullanılabilir ve alınan değerler bu anahtarlarla eşlenir.
final GrokDictionary dictionary = new GrokDictionary();
// Load the built-in dictionaries
dictionary.addBuiltInDictionaries();
// Add custom pattern
dictionary.addDictionary(new File(patternDirectoryOrFilePath));
// Resolve all expressions loaded
dictionary.bind();
Bu gelecek örnekler İşte
final GrokDictionary dictionary = new GrokDictionary();
// Load the built-in dictionaries
dictionary.addBuiltInDictionaries();
// Add custom pattern directly
dictionary.addDictionary(new StringReader("DOMAINTLD [a-zA-Z]+"));
dictionary.addDictionary(new StringReader("EMAIL %{NOTSPACE}@%{WORD}\.%{DOMAINTLD}"));
// Resolve all expressions loaded
dictionary.bind();
kütüphaneye
public final class GrokStage {
private static final void displayResults(final Map<String, String> results) {
if (results != null) {
for(Map.Entry<String, String> entry : results.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}
public static void main(String[] args) {
final String rawDataLine1 = "1234567 - [email protected] cc55ZZ35 1789 Hello Grok";
final String rawDataLine2 = "98AA541 - [email protected] mmddgg22 8800 Hello Grok";
final String rawDataLine3 = "55BB778 - [email protected] secret123 4439 Valid Data Stream";
final String expression = "%{EMAIL:username} %{USERNAME:password} %{INT:yearOfBirth}";
final GrokDictionary dictionary = new GrokDictionary();
// Load the built-in dictionaries
dictionary.addBuiltInDictionaries();
// Resolve all expressions loaded
dictionary.bind();
// Take a look at how many expressions have been loaded
System.out.println("Dictionary Size: " + dictionary.getDictionarySize());
Grok compiledPattern = dictionary.compileExpression(expression);
displayResults(compiledPattern.extractNamedGroups(rawDataLine1));
displayResults(compiledPattern.extractNamedGroups(rawDataLine2));
displayResults(compiledPattern.extractNamedGroups(rawDataLine3));
}
}
nasıl kullanılacağına ilişkin tam bir örnektir bir dosyayı kullanmadan sözlüğe doğrudan dize desenlerini ekler