Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image Added

If you have a server hosting Jira and Confluence, what timezone do you set it to? UTC, or the timezone your users are in?

...

There are at least 3 log-generating things you'll be concerned with:

  • The app server (Jira, Confluence), and their its log files (atlassian-jira.log, atlassian-confluence.log)
  • The web server (Apache, nginx) and their its log files (access.log, error.log)
  • The operating system and its logs (/var/log/*) and persistent performance stats (e.g. /var/log/atop/*)

Events across these often need to be correlated - for instance, a spike in requests (access.log) triggers high server load (operating system), and eventually application errors (atlassian-jira.log). For your debugging sanity, it is essential that all these log files must have the same timezone.

The web server and OS logs are all in the OS timezone, obviously. How about app server logs, atlassian-jira.log and atlassian-confluence.log?

App server log timestamps will also be in the OS timezone, unless you've told Java otherwise by explicitly setting -Duser.timezone . If To spell it out: if you've set -Duser.timezone , you can no longer correlate datestamps between atlassian-jira.log, access.log and the rest of the system.

So don't do that. Don't ever set -Duser.timezone. Leave Java in the same timezone as your OS.

...

Users report problems relative to their timezone. Screenshots might be saved with timestamped filenames. "Things got really slow around 4pm" they'll say, and your job is to find what was happening on the server at 4pm.

I work on Linux, and my tooling hasn't evolved much since the 1970s. I don't know an easy way to convert log timestamps from UTC to that of an arbitrary usersomething else, on the fly. If the log's timezone is that of the user, life just is just easier.

Note
title2023 Update

The lnav log file utility now reinterprets timestamps using the system timezone and TZ environment variable (as of ticket #703,). This means if you're on a UTC server but want to see timestamps in your native timezone, just export TZ=Australia/Sydney  or whatever before running lnav

The argument from Confluence developer laziness

...

To review, the timezone users see in Jira and Confluence comes from one of various levels:

1) User preference

Users can explicitly set their timezone in their profile:

JiraConfluence

Image Modified

Image Modified


2) Default user preference

If your user preference isn't set, the default user preference will be in effect.

Jira

Jira conveniently lets you edit the default user timezone in General Configuration:

Image Modified

Confluence

Confluence does not let you edit the default timezone (

Jira
serverAtlassian JIRA
serverId144880e9-a353-312f-9412-ed028e8166fa
keyCONFSERVER-16057
). Instead you have to resort to editing XML files inside jars.


3) Java user.timezone 

The default user timezone preference inherits its value from the Java user.timezone Java property
You can set this user.timezone Java flag in bin/setenv.sh, e.g. to -Duser.timezone=America/Los_Angeles .

4) OS timezone

Finally, Java sets its user.timezone property default to the operating system's timezone:

Code Block
$ cat /etc/timezone
Australia/Sydney


So in Jira, everything is great. You can have atlassian-jira.log  use a timezone that's good for debugging (UTC if that's your preference), while the default timezone used to render dates can be something good appropriate for the majority of users.

...