🕳️
[Pi-hole]Dashboardの24時間表示のグラフが表示されない
症状
Pi-holeのDashboard上のTotal queries over last 24 hours
とClient activity over last 24 hours
のグラフが表示されない。OSの再起動後に発生。
環境
- ハードウェア: Raspberry Pi 4 Model B
- OS: Fedora 34 (Server Edition)
- Pi-holeバージョン
- Pi-hole v5.3.1
- Web Interface v5.5
- FTL v5.8.1
- ソフトウェアバージョン
- lighttpd/1.4.59 (ssl)
- PHP 7.4.19
GitHubに報告されている同様のIssue
このIssueの報告者はRTCを使用しているためNTPサービスを停止して対処
原因
Raspberry PiにRTCがなく、OS起動時に一時的な時間のジャンプが発生するため。時刻が同期する前にpihole-FTLサービスが起動してしまい、時刻の連続性が失われてエラー発生→グラフが表示されない。
OS再起動後、NTPで正確な時刻に変更されるまでのタイムラグ
journalctl -e -u chronyd.service
(省略)
-- Boot 9e8ee208aa9444fe8a33b410eafd2b23 --
5月 15 09:00:40 rpi4 chronyd[704]: System clock wrong by 593007.919061 seconds
5月 22 05:44:08 rpi4 chronyd[704]: System clock was stepped by 593007.919061 seconds
5月 22 05:44:08 rpi4 chronyd[704]: System clock TAI offset set to 37 seconds
5月 22 05:44:09 rpi4 chronyd[704]: Selected source 133.243.238.243 (ntp.nict.jp)
pihole-FTLサービスの起動時ログ。時刻同期後からエラーが発生。
less /var/log/pihole-FTL.log
[2021-05-15 09:00:32.953 1093M] ########## FTL started! ##########
(省略)
[2021-05-15 09:00:35.779 1544/T1548] Compiled 0 whitelist and 0 blacklist regex filters for 0 clients in 2.4 msec
[2021-05-22 05:44:10.836 1544M] WARN: getOverTimeID(1621629900): 1132 is too large: 1620950700
この場合、時刻同期(09:00:40)前にpihole-FLTサービスが起動(09:00:35)していることがわかる。
OS上のRTCTimeとfake-hwclock
Fedora aarch64版向けのfake-hwclock
パッケージがないため、RTCを搭載しないかぎりOS起動時の時間のジャンプが必ず発生してしまう。
timedatectlの出力
# timedatectl show
Timezone=Asia/Tokyo
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Sat 2021-05-22 05:12:08 JST
RTCTimeUSec=Fri 2021-04-16 21:01:51 JST
# timedatectl status
Local time: 土 2021-05-22 05:13:02 JST
Universal time: 金 2021-05-21 20:13:02 UTC
RTC time: 金 2021-04-16 12:02:45
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
fake-hwclockのリポジトリの有効化ができない
# dnf copr enable jorti/fake-hwclock
Enabling a Copr repository. Please note that this repository is not part
of the main distribution, and quality may vary.
The Fedora Project does not exercise any power over the contents of
this repository beyond the rules outlined in the Copr FAQ at
<https://docs.pagure.org/copr.copr/user_documentation.html#what-i-can-build-in-copr>,
and packages are not held to any quality or security level.
Please do not file bug reports about these packages in Fedora
Bugzilla. In case of problems, contact the owner of this repository.
Do you really want to enable copr.fedorainfracloud.org/jorti/fake-hwclock? [y/N]: y
エラー: このリポジトリーにはまだビルドがありませんので、今すぐ有効化できません。
一時的な対処:pihole-FTLのサービス起動を遅らせる
systemd
サービスやデーモンが起動完了した後に発生しているため、依存関係や順番の入れ替えでは対処不可。そのため、pihole-FTLサービス自体の起動時間を遅延させて対処する。
pihole-FTLデーモンのスクリプトを書き換え
# vi /etc/rc.d/init.d/pihole-FTL
# Start the service
start() {
if is_running; then
echo "pihole-FTL is already running"
else
sleep 20 #← 行追加
遅延時間はNTP同期完了までにかかる時間などを考慮して、十分に余裕のある値にする。
sleep
追加後、OSを再起動して動作確認
OS再起動後、NTPで正確な時刻に変更されるまでのタイムラグ
-- Boot feabcb5708764d22bd38f908d248352b --
5月 15 09:00:36 rpi4 chronyd[714]: System clock wrong by 593669.638569 seconds
5月 22 05:55:05 rpi4 chronyd[714]: System clock was stepped by 593669.638569 seconds
5月 22 05:55:05 rpi4 chronyd[714]: System clock TAI offset set to 37 seconds
5月 22 05:55:07 rpi4 chronyd[714]: Selected source 61.205.120.130 (ntp.nict.jp)
pihole-FTLサービスの起動時ログ。時刻同期後にサービスが起動しているためエラーなし。
less /var/log/pihole-FTL.log
[2021-05-22 05:55:17.417 2897M] ########## FTL started! ##########
(省略)
[2021-05-22 05:55:19.351 2899/T2903] Compiled 0 whitelist and 0 blacklist regex filters for 18 clients in 2.1 msec
[2021-05-22 05:59:41.526 2899M] Resizing "FTL-dns-cache" from 4096 to (512 * 16) == 8192 (/dev/shm: 5.0MB used, 4.1GB total, FTL uses 5.0MB)
Dashboardで正常に表示されるか確認
恒久的な対処
#3648と同じく、Raspberry Pi本体にRTCを乗せ、OS起動直後の時刻のジャンプが起こらないようにすることが望ましい。
Discussion