devzone.org.ua/post/htcount-knopka-lichylnyk-vidviduvachiv-saytu-na-bazi-access-log.md
2025-11-01 14:28:20 +02:00

3.2 KiB
Raw Blame History

htcount: кнопка-лічильник відвідувачів сайту на базі access.log

htcount - системна утиліта, написана мовою Rust, що рахує кількість хостів / хітів на основі даних локального журналу access.log (CLF) і виводить результати у вигляді дампу JSON/API або у форматі кнопки SVG для вставки на сайт.

По суті, вона влаштована так само, як відомий goaccess - інструмент CLI, який дозволяє аналізувати Веб-трафік без підключення сторонніх сервісів типу Google Analytics.

Встановлення

htcount написано мовою Rust, можливо, вам знадобиться спочатку розгорнути відповідну інфраструктуру для її збірки з початкового коду:

git clone https://github.com/YGGverse/htcount.git && cd htcount
cargo build --release
sudo install target/release/htcount /usr/local/bin/htcount
  • встановлення до /usr/local/bin/htcount потрібне в контексті системних дозволів systemd

systemd

#/etc/systemd/system/htcount.service
[Unit]
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/htcount\
        # вкажіть актуальний шлях цільового журналу (див. також --ignore-host)
        --source /var/log/nginx/access.log\
        # вкажіть актуальний шлях для розміщення кнопки
        --export-svg /var/www/path/to/public/counter.svg\
        # я збирав пакунок від root, де в мене лежать оригінали у якості шаблону
        --template-svg /root/htcount/default/counter.svg\
        # оновлення кнопки раз на годину (3600 секунд)
        --update 3600\
        # оновлення відвідувачів раз на добу
        --match-time %%d/%%b/%%Y\
        # дебаг у файл вимкнено для заощадження терміну служби SSD
         --debug n
# дебаг вимкнено опцією --debug n, можна вказати шлях або драйвер
StandardOutput=null
# збираємо усі помилки до стандартного розташування системних журналів
StandardError=file:///var/log/htcount-error.log

[Install]
WantedBy=multi-user.target
  • перелік доступних опцій залежить від актуальної версії: htcount --help
  • для інтеграції кнопки на сайт, додайте відповідний код: <img src="/counter.svg"/>