Updating log file is effecting date value on kibana dashboard

Hi,

I am new in ElasticSearch, please help me on this.
When my log is updating(SOA Admin log), even single line added, that time My complete Kibana dashboard (discover tab) time option is updating with the current timestamp as shown in below screenshot.
Might be as I understood filebeat is reading the log every time from the scratch.
so due to that, I am not able to draw the graph because timestamp contain only one day value.

Below is my machine description:
OS : Linux 7
ELK: 6.4
tools : elasticsearch, kibana, logstash, filebeat.

Below is my logstash input, filter & output files:

Filter :
[root@okmt-linux conf.d]# cat 02-beats-filter.conf
filter {
if [message] !~ /^####/ {
drop {
}
}

grok {
match => { "message" => "####<%{DATA:msg_timestamp}> <%{DATA:msg_severity}> <%{DATA:msg_subsystem}>%{GREEDYDATA:msg_details}" }
}

Input:

[root@okmt-linux conf.d]# cat 01-beats-input.conf
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
[root@okmt-linux conf.d]#

output:

[root@okmt-linux conf.d]# cat 03-beats-output.conf
output {
elasticsearch {
hosts => ["XX.XX.XX.XXX:9200"]
sniffing => true
manage_template => false
index => "admin_%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
stdout { codec => rubydebug }
}
[root@okmt-linux conf.d]#

Please also let me know if i need to modify my logstash filter.

Regards
Sanchit Gupta

Hi there,

I tried to understand what you mean but I don't fully understand. Could you try to explain again please?

Thanks

Hi ,

suppose in log file i have 1000 entries with different dates.

In my kibana dashboard time showing as 27th Nov for all the entries (but on 27th I added only one entry ) as shown below screenshot.

Now suppose tomorrow i update my logfile again manually/auto with one log entry that time my complete kibana time would be 28th Nov.

Image1:

I understand a little better now, can you please post your full logstash config?

below are the content:

input.conf :
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}

output.conf
elasticsearch {
hosts => ["XX.XXX.XX.XXX:9200"]
sniffing => true
manage_template => false
index => "admin_%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
stdout { codec => rubydebug }
}

Filter:
filter {
if [message] !~ /^####/ {
drop {
}
}

grok {
match => { "message" => "####<%{DATA:msg_timestamp}> <%{DATA:msg_severity}> <%{DATA:msg_subsystem}>%{GREEDYDATA:msg_details}" }
}

}

Can you post the raw output from some events from a few days ago?

are you asking for log file content ?

####<Jul 15, 2018 5:30:56 PM CDT> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <04a8865b-6081-470c-ba5a-e5d69fa34bc8-00000286> <1531693856023> <Received exception while creating connection for pool "LocalSvcTblDataSource": Listener refused the connection with the following error:
java.sql.SQLException: Listener refused the connection with the following error:
Caused By: oracle.net.ns.NetException: Listener refused the connection with the following error:
####<Jul 15, 2018 5:30:56 PM CDT> <[ACTIVE] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <04a8865b-6081-470c-ba5a-e5d69fa34bc8-00000287> <1531693856946> <Received exception while creating connection for pool "SOALogDataSource": Listener refused the connection with the following error:
java.sql.SQLException: Listener refused the connection with the following error:
Caused By: oracle.net.ns.NetException: Listener refused the connection with the following error:
####<Jul 15, 2018 5:30:57 PM CDT> <[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <04a8865b-6081-470c-ba5a-e5d69fa34bc8-00000288> <1531693857399> <Received exception while creating connection for pool "mds-owsm": Listener refused the connection with the following error:
java.sql.SQLException: Listener refused the connection with the following error:
Caused By: oracle.net.ns.NetException: Listener refused the connection with the following error:
####<Jul 15, 2018 5:30:57 PM CDT> <[ACTIVE] ExecuteThread: '15' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <04a8865b-6081-470c-ba5a-e5d69fa34bc8-00000289> <1531693857834> <Received exception while creating connection for pool "mds-soa": Listener refused the connection with the following error:
java.sql.SQLException: Listener refused the connection with the following error:
Caused By: oracle.net.ns.NetException: Listener refused the connection with the following error:
####<Jul 15, 2018 5:30:58 PM CDT> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <04a8865b-6081-470c-ba5a-e5d69fa34bc8-0000028a> <1531693858298> <Received exception while creating connection for pool "opss-audit-DBDS": Listener refused the connection with the following error:
java.sql.SQLException: Listener refused the connection with the following error:
Caused By: oracle.net.ns.NetException: Listener refused the connection with the following error:
####<Jul 15, 2018 5:30:58 PM CDT> <[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <04a8865b-6081-470c-ba5a-e5d69fa34bc8-0000028b> <1531693858766> <Received exception while creating connection for pool "opss-audit-viewDS": Listener refused the connection with the following error:
java.sql.SQLException: Listener refused the connection with the following error:
Caused By: oracle.net.ns.NetException: Listener refused the connection with the following error:
####<Jul 15, 2018 5:30:59 PM CDT> <[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <04a8865b-6081-470c-ba5a-e5d69fa34bc8-0000028c> <1531693859309> <Received exception while creating connection for pool "opss-data-source": Listener refused the connection with the following error:
java.sql.SQLException: Listener refused the connection with the following error:
Caused By: oracle.net.ns.NetException: Listener refused the connection with the following error:
####<Jul 15, 2018 5:31:01 PM CDT> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <04a8865b-6081-470c-ba5a-e5d69fa34bc8-0000028e> <1531693861024> <Received exception while creating connection for pool "LocalSvcTblDataSource": Listener refused the connection with the following error:
java.sql.SQLException: Listener refused the connection with the following error:
Caused By: oracle.net.ns.NetException: Listener refused the connection with the

No sorry, go to discover tab in Kbana, view single document > JSON and copy the output

Hi Lewis,

Below is the output, pl check:

{
"_index": "admin_filebeat-2018.11.27",
"_type": "doc",
"_id": "NEelVGcBLCbRLhh1JpEh",
"score": 1,
"source": {
"input": {
"type": "log"
},
"msg_details": " <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <005Td9qwVSO5e_rFCJbACC0007pZ0000e
> <1537746320169> <vmohsmnhm149.oracleoutsourcing.com:42046> ",
"message": "####<Sep 23, 2018 6:45:20 PM CDT> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <005Td9qwVSO5e_rFCJbACC0007pZ0000e
> <1537746320169> <vmohsmnhm149.oracleoutsourcing.com:42046> ",
"beat": {
"hostname": "hostname-linux",
"version": "6.4.1",
"name": "hostname-linux"
},
"msg_severity": "Debug",
"msg_subsystem": "NodeManager",
"tags": [
"soa-server-logs",
"beats_input_codec_plain_applied"
],
"prospector": {
"type": "log"
},
"offset": 51180979,
"@timestamp": "2018-11-27T10:09:23.122Z",
"@version": "1",
"host": {
"name": "hostname-linux"
},
"source": "/home/app/temp/soa_logs/AdminServer.log",
"msg_timestamp": "Sep 23, 2018 6:45:20 PM CDT"
},
"fields": {
"@timestamp": [
"2018-11-27T10:09:23.122Z"
]
}
}

Can you show me an event from more than a week ago?

Hi Lewis,

Below is the event of 19th Nov (check msg_timestamp as 19th Nov).

{
"_index": "admin_filebeat-2018.11.27",
"_type": "doc",
"_id": "o0elVGcBLCbRLhh1JpHJ",
"_score": 1,
"_source": {
"input": {
"type": "log"
},
"msg_details": " <[ACTIVE] ExecuteThread: '24' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <005T80dR76V5e_rFCJaASC000PPK0002k3> <1535468683177> <[ServletContext@1312741095[app:em module:/em path:null spec-version:3.0]] error-page location: "/error/error404.jsp" for the error-code: "404" does not exist. Serving the default error page.>",
"message": "####<Nov 19, 2018 10:30:30 AM CDT> <[ACTIVE] ExecuteThread: '24' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <005T80dR76V5e_rFCJaASC000PPK0002k3> <1535468683177> <[ServletContext@1312741095[app:em module:/em path:null spec-version:3.0]] error-page location: "/error/error404.jsp" for the error-code: "404" does not exist. Serving the default error page.>",
"beat": {
"hostname": "sancgupt-linux",
"version": "6.4.1",
"name": "sancgupt-linux"
},
"msg_severity": "Error",
"msg_subsystem": "HTTP",
"tags": [
"soa-server-logs",
"beats_input_codec_plain_applied"
],
"prospector": {
"type": "log"
},
"offset": 51219954,
"@timestamp": "2018-11-27T10:09:23.128Z",
"@version": "1",
"host": {
"name": "sancgupt-linux"
},
"source": "/home/app/soft/soa_logs/AdminServer.log",
"msg_timestamp": "Nov 19, 2018 10:30:30 AM CDT"
},
"fields": {
"@timestamp": [
"2018-11-27T10:09:23.128Z"
]
}
}

please see in below screenshot, kibana date is 27th Nov (image 1) and event date is 19th Nov (image 2)

Image 1:

Image 2:

Can I see your filebeat config please? Are you sure it is not re-reading the entire file each time?

No, I think filebeat is re-reading the entire file each time.
Below is the Filebeat config file :
#=========================== Filebeat inputs =============================

filebeat.inputs:

# Below are the input specific configurations.

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  #include_lines: ['^####'] 
  #exclude_lines: ['<Info>']
  tags: ["soa-server-logs"]
  paths:
    #- /var/log/secure
    #- /var/log/messages
    - /home/app/soft/soa_logs/wls_soatx1.out
    - /home/app/soft/soa_logs/soatx_domain.log
    - /home/app/soft/soa_logs/AdminServer.log
   input_type: log
  # Exclude files. A list of regular expressions to match. Filebeat drops the files that
  # are matching any regular expression from the list. By default, no files are dropped.
  #exclude_files: ['.gz$']

  # Optional additional fields. These fields can be freely picked
  # to add additional information to the crawled log files for filtering
  #fields:
  #  level: debug
  #  review: 1

  ### Multiline options

  # Multiline can be used for log messages spanning multiple lines. This is common
  # for Java Stack Traces or C-Line Continuation

  # The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
  #multiline.pattern: ^\[

  # Defines if the pattern set under pattern should be negated or not. Default is false.
  #multiline.negate: false

  # Match can be set to "after" or "before". It is used to define if lines should be append to a pattern
  # that was (not) matched before or after or as long as a pattern is not matched based on negate.
  # Note: After is the equivalent to previous and before is the equivalent to to next in Logstash
  #multiline.match: after


#============================= Filebeat modules ===============================

filebeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml

  # Set to true to enable config reloading
  reload.enabled: false

  # Period on which files under path should be checked for changes
  #reload.period: 10s

#==================== Elasticsearch template setting ==========================

setup.template.settings:
  index.number_of_shards: 3
  #index.codec: best_compression
  #_source.enabled: false

#================================ General =====================================

# The name of the shipper that publishes the network data. It can be used to group
# all the transactions sent by a single shipper in the web interface.
#name:

# The tags of the shipper are included in their own field with each
# transaction published.
#tags: ["service-X", "web-tier"]

# Optional fields that you can specify to add additional information to the
# output.
#fields:
#  env: staging


#============================== Dashboards =====================================
# These settings control loading the sample dashboards to the Kibana index. Loading
# the dashboards is disabled by default and can be enabled either by setting the
# options here, or by using the `-setup` CLI flag or the `setup` command.
#setup.dashboards.enabled: false

# The URL from where to download the dashboards archive. By default this URL
# has a value which is computed based on the Beat name and version. For released
# versions, this URL points to the dashboard archive on the artifacts.elastic.co
# website.
#setup.dashboards.url:

#============================== Kibana =====================================

# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  #host: "localhost:5601"

#============================= Elastic Cloud ==================================

# These settings simplify using filebeat with the Elastic Cloud (https://cloud.elastic.co/).

# The cloud.id setting overwrites the `output.elasticsearch.hosts` and
# `setup.kibana.host` options.
# You can find the `cloud.id` in the Elastic Cloud web UI.
#cloud.id:

# The cloud.auth setting overwrites the `output.elasticsearch.username` and
# `output.elasticsearch.password` settings. The format is `<user>:<pass>`.
#cloud.auth:

#================================ Outputs =====================================

# Configure what output to use when sending the data collected by the beat.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["XX.XXX.XX.XX:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"

#================================ Logging =====================================

# Sets log level. The default log level is info.
# Available log levels are: error, warning, info, debug
logging.level: debug
logging.path: "/var/log/filebeat"
logging.name: filebeat.log

# At debug level, you can selectively enable logging only for some components.
# To enable all selectors use ["*"]. Examples of other selectors are "beat",
# "publish", "service".
#logging.selectors: ["*"]

Are you sure your application is not rotating log files causing them to be read again? I.e it move adminserver.log to adminserver.log.1 then adminserver.log.2 etc etc?

Hi Lewis,

first, I would like to tell you it is my Lab server. on daily basis, i copy the log from my real environment server to lab server for POC.

yes, my application becomes log as adminserver.log.1, adminserver.log.2., etc, etc.
but what I did, i copied all the log data from all the files to one single file.

Ah, then filebeat will see it as a new file and re-read it I think, thats why you are getting everything ingested again!

why, file is same just adding the new files content in one file (append mode).

Yes in appended mode.

As i am new user this thread not allowing to reply now as i have crossed my 21 limit. so i m replying on same again and again.... Please bear me

Are you overwriting the file like you said? Or appending to the end?

Hi Lewis,

i tried to reply but my limit expired so i cant reply.

Yes in appended mode.