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

51 lines
No EOL
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# htcount: кнопка-лічильник відвідувачів сайту на базі access.log
[htcount](https://crates.io/crates/htcount) - системна утиліта, написана мовою Rust, що рахує кількість хостів / хітів на основі даних локального журналу `access.log` ([CLF](https://en.wikipedia.org/wiki/Common_Log_Format)) і виводить результати у вигляді дампу JSON/API або у форматі кнопки SVG для вставки на сайт.
По суті, вона влаштована так само, як відомий [goaccess](https://goaccess.io/) - інструмент CLI, який дозволяє аналізувати Веб-трафік без підключення сторонніх сервісів типу Google Analytics.
## Встановлення
`htcount` написано мовою Rust, можливо, вам знадобиться спочатку розгорнути відповідну інфраструктуру для її збірки з початкового коду:
* [Встановлення останньої версії Rust в Linux](https://devzone.org.ua/post/vstanovlennia-ostannyoyi-versiyi-rust-v-linux)
``` bash
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
#/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"/>`