[discourse의 대시보드 시간표기 관련 질문] 안녕하십니까? 새로 가입했습니다. 가입하자마자 질문 올립니다.


(JPY) #1

안녕하세요.
사내에서 DIscourse로 구현된 포럼을 운영하다 모르는것이 너무 많아 헤매다가 이곳을 알게되어 들어오게 됐습니다.
정말 너무너무 반갑고 기쁜 마음으로 이렇게 가입 인사를 쓰네요 ^^

그런데 가입하자마자 질문을 하나 드리려고 합니다.
정말 여쭤보고 싶은 질문은 너무 많지만 한꺼번에 너무 많이 올리면 예의가 아닌거 같아 하루에 한두개만 올리려고 합니다. ^^;;;

저희 회사는 Discourse를 Docker로 설치하여 운영하고 있습니다.
그동안의 글이 등록되는 추이, 로그인 추이등을 대시보드에서 보려고 하는데 시간이 안맞는것 같아 확인해보니 Time Zone 이 UCT 로 되어 있더군요. 그래서 백업할 때도 한국 KST 보다 9시간 늦은 시간으로 표시가 됩니다.
대시보드에서 데이터를 봐도 9시간 늦은 시간으로 데이터가 저장되는것 같고요.

찾아보니 Docker 컨테이너 안으로 들어가서 application.rb 를 수정하면 될것 같은 글을 보게되었습니다.

그 글대로 한번 따라해보았습니다.

먼저 ./launcher enter app 으로 컨테이너로 들어가야지만 application.rb 를 수정할 수 있더라고요.

cd / var/discourse
./launcher enter app
vi /var/www/discourse/config/application.rb

application.rb 에서 config.time_zone = ‘UTC’ 를 ‘KST’ 로 변경하고 저장을 했습니다.

exit 
./launcher restart app 

변경 사항을 저장을 하고 컨테이너에서 Exit 를 한 후에 Discourse를 재시작 합니다.

그리고 웹페이지로 접속하게 되면,

502 Bad Gateway 페이지가 뜹니다. ㅠㅠ

rebuild 하게 되면, 아예 다시 새로운 source를 pull 하게 되는것 같아서 설정 값이 다 지워지는거 같고요

어떻게 TimeZone 을 변경할 수 있을까요??

답변을 알려주시면 너무너무 감사하겠습니다. ㅠㅠ


(이종은(Jong Lee)) #2

먼저 왜 timezone을 수정하려 하는지 궁금합니다. 시간 정보는 정상적으로 되고 결국 표기의 문제여서 클라이언트(사용자의 브라우저)에 따라 되는 것이기에 apllication.rb를 수정할 일은 없습니다.

그리고 컨테이너 내부를 수정이 필요한 부분이 있다면 컨테이너에 들어가서 discourse 소스파일을 수정하는 것이 아니라 애플리케이션에 해당하는 yml을 수정해야 rebuild시에 해당 내용이 반영됩니다.


(JPY) #3

답변 감사드립니다. ^^
timezone 변경 이유는 본문에도 써놓긴 했는데, 관리자가 볼 수 있는 대시보드에 보면 “사용자 방문”, “글타래들”, 페이지뷰 등의 정보를 날짜별 추이로 알 수 있습니다.
그런데 이상하게 9시간 전으로 계산된 정보가 보여지는것 같습니다. 만약 누군가가 지금 제가 글을 쓰고 있는
시간인 3월14일 오전 8시 20분에 글을 등록하면 주제의 작성시간에는 1분전 등으로표기는 되지만 대시보드에서 저장되는것은 이상하게 3월 13일(오후11시 20분)로 등록이 된다는 점입니다.
그래서 timezone 을 변경하면 정상적인 시간(3월14일)으로 된 데이터를 볼 수 있지 않을까 해서 timezone 을 변경하려고 했습니다. ^^;;
사용자들은 전혀 알수 없지만 운영하는 관리자 입장으로써는 보고할 때의 데이터가 필요하거든요.

말씀해주신 애플리케이션에 해당하는 yml 파일이라고 하면

containers/app.yml 또는 /templates 경로의 yml

을 말씀하시는건가요?
해당 파일들을 봐도 timezone 설정은 없는거 같은데, 혹시 제가 잘못 알고 있는건가요? ㅠㅠ
어느 부분을 수정해야 하는건지 답답하기만 합니다.

부족한것이 너무 많습니다.

다시한번 답변 너무 감사드립니다. 즐거운 하루 보내십시요~


(이종은(Jong Lee)) #4

대시보드에 등록시간이 어디에 표시되나요? :slight_smile: 제가 못찾겠네요.

제가 헛갈리게 설명했나보네요. :smile: 파일에 timezone을 설정하는게 있다는게 아니라 컨테이너의 내용을 바꿀 필요가 있다면 직접 컨테이너안에 들어가서 수정하지 말고 yml에 설정을 통해 수정해야한다는 얘기입니다. hook을 이용해서 플러그인 설치 설정을 하듯이 특정파일의 내용을 바꾸는 것을 yml에 묘사해야 rebuild를 해도 해당 사항이 다시 재적용 되니까요.


(JPY) #5

답변 감사합니다. ^^

대시보드에 시간표시가 된다고 헷갈리게 작성을 해 드린거 같습니다.

대시보드의 그래프를 보시면 2월 25일에 글타래가 1이 등록되어 있습니다.

2월 25일은 일요일이라 아무도 출근을 하지 않기 때문에 글이 등록될일이 없습니다.

누군가가 주말 근무를 했겠지~ 라고 생각하실수도 있지만 아직 저희 회사 포럼에 일요일까지 나와서 글을 등록하실만한 분이 없는거 같고, 등록된 글을 봐도 일요일에 나와서 등록하지 않고 월요일 아침에 등록한 글로 판명이 났습니다.

월요일 아침이면 2월 26일인데 2월 25일로 등록이 되어버린거죠.

이건 9시간 차니까 누군가가 9시전에 출근해서 8시 40분에 글을 쓴다고 하면 2월 25일 11시 40분으로 등록이 되어 버립니다.

물론 시간은 표시되지 않고 날짜만 대시보드에서는 표시하고 있네요.

시간이 표시되는거는 백업을 해보면 시간을 알 수 있습니다.

지금 시간이 오후 6시 50분인데 백업 버튼을 클릭하면 3월 14일 오전 9시 50분으로 찍힙니다.

이것때문에 9시간 차이가 난다는걸 알게되었습니다. (UTC+9) 이니까 9시간이 맞는거죠.

그런데 뭔가 저의 실수가 아닐까 하는것을 발견했습니다.

현재 사내의 환경은 Windows Server 2012 가 Host Pc 이고, VM Ware 가상머신으로 CentOS7 에 Docker 로 Discourse를 설치한 상황입니다.
Linux 에서는 시간이 현재 시간이 정확히 표시되는데, Host PC 인 Windows 2012 Server 의 시간이 9시간 차이 나게 설정되어 있더군요.
혹시 이게 잘못되어 있나 싶어 시간을 변경해도 조금 시간이 지나면 다시 9시간 차이나도록 변경 되더군요.
바이오스 시간이 혹시 잘못 설정되어 있나 싶어 서버를 내리고 싶지만, 가상 머신으로 돌아가고 있는 프로젝트 테스트 환경들이 많아서 함부로 끄지는 못하고 있는 상황입니다.

이것때문인가 싶기도 하는 의심이 드네요.

Host PC의 시간이 잘못되어 있더라도, 가상머신 Linux의 시간이 제대로 설정되어서 표시된다면 문제가 안되지 않을까요??? 궁금해지네요.

추후에 서버 시간을 변경하게 되면 다시 알려드리겠습니다. ^^

다시한번 답변 너무너무 감사합니다.


(이종은(Jong Lee)) #6

서버 시간 변경할 필요 없어보입니다. 시간은 정상적으로 기록되고 있으며 대시보드에서 표기기준을 UTC 기준으로 하고 있는 것으로 보이네요. 관리자만 보는 페이지에서는 혼란을 피하고자 UTC기반으로 표기하는 경우들을 종종봤습니다. (parse-server의 dashboard도 그렇습니다.)

timezone을 바꾼다는 것은 시간을 바꾼다는 것이 아니라 표기의 기준을 바꾸는 것입니다. UTC기준 오전 1월 1일 오전 1시와 한국 기준 1월 1일 10시는 시간이 다른 것이 아니라 표기가 다른 것이라는 얘기입니다.

위 로그나 글타래들 그래프의 시간이 저렇게 되는 것은 기록된 시간이 잘못된 것이 아니라 UTC기준으로 표기하고 UTC기준으로 날짜별로 보여준 것입니다. discourse에서 dashboard나 log에서 이것을 명시하지 않다보니 헷갈리겠네요. 최소한 뒤에 +00:00 기준시를 뜻하는 Z라도 붙여주면 좋으련만…

대시보드나 로그에 표기되는 시간이 UTC기준임을 명시하는 Pull Request를 보내면 merge 해줄 것 같네요. 루비를 잘 다루신다면 이 참에 discourse 컨트리뷰터가 되어보세요.


(이종은(Jong Lee)) #7

그리고 글 제목을 이 글의 질문내용을 나타내도록 "discourse의 대시보드 시간표기 관련 질문"라는 식으로 바꾸면 비슷한 문제로 검색하시는 분들에게 도움이 될 것 같습니다. :pray:


(JPY) #8

넵. 감사합니다. ^^
제목은 바꿔놓겠습니다.
컨트리뷰터가 되고 싶은데, 루비를 잘 다루지를 못하네요 ㅠㅠ
그런데 배워보고 싶은 맘은 굴뚝 같습니다. ^^

모르는게 너무 많아 질문을 너무 많이 드릴거 같습니다. 매번 소중한 답변해주셔서 너무너무 감사해요