Conversion de format de date au format AAAA-MM-JJ de AAAA/MM/JJ HH:MM:SS dans Logstash pour nginx les journaux d'erreur
Je vais avoir nginx les journaux d'erreur du formulaire ci-dessous:-
2015/09/30 22:19:38 [erreur] 32317#0: *23 [lua] des réponses.lua:61:
handler(): Cassandra erreur: Erreur lors de l'UNIQUE case: Cassandra
erreur: connexion refusée, le client: 127.0.0.1, serveur: , demande: "POST
/consommateurs/HTTP/1.1", host: localhost:8001"
Comme mentionné ici je suis en mesure d'analyser cette des journaux.
Ma configuration de filtre est comme ci-dessous:-
filter {
grok {
match => {
"message" => [
"%{DATESTAMP:mydate} \[%{DATA:severity}\] (%{NUMBER:pid:int}#%{NUMBER}: \*%{NUMBER}|\*%{NUMBER}) %{GREEDYDATA:mymessage}",
"%{DATESTAMP:mydate} \[%{DATA:severity}\] %{GREEDYDATA:mymessage}",
"%{DATESTAMP:mydate} %{GREEDYDATA:mymessage}"
]
}
add_tag => ["nginx_error_pattern"]
}
if ("nginx_error_pattern" in [tags]) {
grok {
match => {
"mymessage" => [
"server: %{DATA:[request_server]},"
]
}
}
grok {
match => {
"mymessage" => [
"host: \"%{IPORHOST:[request_host]}:%{NUMBER:[port]}\""
]
}
}
grok {
match => {
"mymessage" => [
"request: \"%{WORD:[request_method]} %{DATA:[request_uri]} HTTP/%{NUMBER:[request_version]:float}\""
]
}
}
grok {
match => {
"mymessage" => [
"client: %{IPORHOST:[clientip]}",
"client %{IP:[clientip]} "
]
}
}
grok {
match => {
"mymessage" => [
"referrer: \"%{DATA:[request_referrer]}\""
]
}
}
}
}
mydate
est d'avoir la date de la forme:-
"mydate" => "15/09/30 22:19:38"
Quelqu'un peut-il me dire comment puis-je ajouter un champ plus (disons log_day
) ayant une date de la forme 2015-09-30
?
OriginalL'auteur tuk | 2015-10-06
Vous devez vous connecter pour publier un commentaire.
C'est toujours une bonne idée d'enregistrer la date et l'heure dans un champ de type
date
. Il vous permet de faire des gamme complexe des requêtes avec Elasticsearch ou Kibana.Vous pouvez utiliser logstash du filtre de date pour analyser la date.
Filtre:
Résultat:
La date de filtre met le résultat dans le
@timestamp
champ par défaut.À éviter le mappage par défaut en
@timestamp
champ, indiquez le champ cible comme "log_day", comme suit:Filtre:
Résultat:
Une fois que vous avez un champ de type
date
vous pouvez procéder à d'autres opérations. Vous pouvez utiliser le date_formatter filtre pour créer un autre champ de date dans votre format spécial.Résultat:
"log_day" => "2015-09-30"
@timestamp
champ? Maintenant cela va écraser@timestamp
avec la date dans le journal.Sûr, il suffit d'ajouter
target => "log_day"
à la date de votre filtre. Me voir modifier.OriginalL'auteur hurb