iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 9
0

這是想要統計每個帳號登入confluence的使用時間應用,也希望可以by 天/月來呈現,這個問題我分別有在原廠開ticket及討論區與plugin的store來尋找及發問,但目前問到的資訊是不可行,而比較正規的說法,應該是任何一個系統無法完全抓出USER實際使用系統的時間,而或許可以由LOG來看出USER做過哪些行為,及從這些行為軌跡推測他用系統的可能時間,而至於是不是他實際用的時間,可能就沒那麼一定了,因為如果USER開著系統然後跑去做其他的事情,系統並沒有辦法判斷出來。
或許您我都可能在某個系統看到類似的功能,例如moodle/facebook...etc,可以看出系統有列出使用者使用系統的統計時間元件,例如moodle可以使用timestat來算出學生上課的時間
https://ithelp.ithome.com.tw/upload/images/20171213/20003705qBUFfWqwJ3.jpg
而有些人可能會有同樣問題,confluence為什麼沒有類似的plugin或程式可以使用呢?是不是confluence在此部分的支援度沒有其他系統優,其實個人是認為不能由這樣來論定這個系統好與不好,如同之前提到的,如果這個需求很多人有提到,可以在confluence上開個issue,當很多人給予comment的時候,confluence將會把她列入之後版本更新功能的一項。
Confluence原廠在此部分給予的feedback是有提到可以透過log設定方式,來看出USER可能的使用時間,透過此方式的調整,在LOG端所看到的資訊會如下所示,當然這樣的設定方式可能會使用較多的系統資源,而可能會讓USER覺得登入的速度好像有變慢 (雖然只有可能不到2秒的感覺)
https://ithelp.ithome.com.tw/upload/images/20171213/20003705a7d3TqAmD2.jpg

USER的使用時間不容易計算出來,但是USER的登入次數倒是可以透過LOG的應用來抓出,參考Audit Confluence Using the Tomcat Valve Component的文章說明,透過LOG格式的調整,修改server.xml的設定,增加下列內容

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="conf_access_log" suffix=".log" pattern="%t %{X-AUSERNAME}o %{User-Agent}i %h %m %r %b %s %I" />

可以看出每個帳號的登入次數 (因為它有個欄位是記錄登入帳號的名稱),同時原廠也有提供下列的語法來抓出在2017119之後有登入成功過的帳號

SELECT u.user_name, d.directory_name, l.successdate
FROM logininfo l
JOIN user_mapping m ON m.user_key = l.username
JOIN cwd_user u ON m.username = u.user_name
JOIN cwd_directory d ON u.directory_id = d.id
WHERE successdate > '2017-01-19'
ORDER BY successdate;

或者在20170119之後登入帳號次數統計語法可參考如下

SELECT COUNT(u.user_name)
FROM logininfo l
JOIN user_mapping m ON m.user_key = l.username
JOIN cwd_user u ON m.username = u.user_name
JOIN cwd_directory d ON u.directory_id = d.id
WHERE successdate > '2017-01-19'

上一篇
Day8-如何更換dashboard
下一篇
Day10-常用到的幾個功能
系列文
Confluence 線上協同作業之平台30

尚未有邦友留言

立即登入留言