ืืืืืจ ืื ืืกืคืจ ืืื ืืืฆื ืืืฉืชืืฉ ื-pinba ืขื ืงืืืงืืืืก ืืืจืืคื ื ืืืงืื pinba_engine ื-pinboard.
ืืคืจืืืงื PHP, pinba ืืื ืืืื ืืืจื ืืืืื ื ืืืืืื ืืืืื ืื ืงืืจื ืขื ืืืืฆืืขืื. ื ืืื, ืคืื ืื ืืืืฉื ืืืจื ืืื ืจืง ืืืฉืจ ืืืจ ื ืฆืคื ืืขืืืช ืืื ืืจืืจ "ืืืื ืืืคืืจ".
ืืขืชืื ืงืจืืืืช ืืืฃ ืืื ืืื ืืืฉื ืืื ืคืขืืื ืืฉื ืืื/ืืงื ืงืืจืืื ืืกืงืจืืคื ืื ืื ืืืจ ืืื ืืชืืืืื ืืืฆืข ืืืคืืืืืืฆืื "ืืืืข", ืืื ืืืืชื ืืงืืืืช ืฉื ืจืืื ืืืืื ืืื ืืืชืจ.
ืืืงื ืื ืชืืื ืืืื ื nginx, ืืขืื ืฉืืืจืื ืื ืชืืื ืฉืืืืชืืช ืืืืืืช ืฉื ืืกื ื ืชืื ืื.
ืืืืื, ืคืื ืื ืื ืืืื ืืืืชืจ, ืืื ืืฉ ืืื ืกืืืืช ืืื ืฉืื ืืื ืคืจืืืงื ืืฉ ืืช ืื.
ืืืกืืื ืืจืืฉืื ื ืืื ืืชืงื ื.
ืืื ืืงืื ืคืืืช ืื ืืืชืจ ืืืืฉืื "ืืืฆืื" ืืืืืขืช ืคืื ืื, ืจืฆืื ืืืื ืืจืืืช ืืืืื ืื ืจืง ืืืงืืช ืืืืจืื ืืช, ืืื ืื ืขื ืคื ื ืชืงืืคื ืืจืืื (ืืืืื ืขื ืืืืฉืื).
ืืฉืืื ืื ืืชื ืฆืจืื:
- ืืชืงื ืกืืืืช ืขืืืจ php (ืืืืื ืชืจืฆื ืืืืื ืขืืืจ nginx)
- ืืจืืืช ืงืืืคืื ืขืืืจ mysql
- ืืชืงื ืืื ืกืืื ืืืืืจ ืืช ื-cron
ืืฉื ืืืืช ืืืืืข ืืืืขืื ืขื Pinba, ืืื ืฉืื ืจืืื ืืฉ ืืจืืฉื ืฉืืื ืขืื ืจืง ืขื PHP5 ืืืืจ ืืืื ืืื ื ืืืช ืืขืืจ, ืื ืืคื ืฉื ืจืื ืืืืฉื, ืื ืื ืืืงืจื.
ืืฆืขื ืืจืืฉืื ืืื ืืคืฉืื ืืืืชืจ, ืื ืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืืื ืืืคืขืื ืืช ืืคืงืืื:
apt install php-pinba
ืืจืืื ืื ืืืื ื ืืืืืจืื ืขื ืืืืื php 7.3 ืืืื ืฆืืจื ืืืืจ ืืืื.
ืืืืจ ืืืฆืืข ืคืงืืืช ืืืชืงื ื, ืื ื ืืงืืืื ืืื ืกืืืืช ืขืืืื ืฉืืืกืฃ ืืฉืืื ืืืืื ืืื ืกืงืจืืคื (ืืื ืจืืฆื, ืืืืจืื ืืื') ืืคืืจืื
ืขื ืื ืืฃ ืืื ืื ืชืคืก ืื ืขืืื ืืช ืื ืืช ื-UDP ืืืื, ืืื ืื ืื ืืฉืคืืข ืืฉืื ืืืคื ืืจืขื ืขื ืืืืืจืืช ืื ืืืฆืืืืช ืฉื ืกืงืจืืคืื ื-PHP ืฉืื.
ืขื ืืืืจืื ื, ืืืคืืืงืฆืื ืืืืืื ืฉืืืืื ืืชืคืืก ืืืขืื ืื ืืช UDP ืืื ืืืืชื
ืชืืืื ืืืชืงื ื
ืืืื ืืชืืฉืื ืืืื ืืคืฉืจ ืืืชืงืื pinba10 ืขื ืคืงืืื ืืืช ืื ืฉืชืืื ืืื ืฆืจืื ืืงืจืื ืืืื ืืืืจ ืืื ืืืืื ืืื ืืขืฉืืช ืืช ืื, ืืื ืืื ืชืืื ืื ืื ืืืงืจื.
ืื ืืชื ืืชืงืื pinba_engine, ืื ืื ืจืง ืืฆื ืืืงืจื. ืืืจื ืืื, ืืื
ื ืจืื, ืืื ืกืื ืืื ืื ืื ืืืืืื ื-php ืืืจ ื ืฉืืืื ืืืฆืืืช udp ืืคืืจืื protobuf ืืื ืื ืฉืฆืจืื ืื ืืืชืื ืืคืืืงืฆืื ืฉืชืชืคืืก ืืืชื ืืชืื ืืก ืืืชื ืืืืกืื ืืืฉืื? ืืื ืื ืจืื, ืืืชื ืืคืชืืื ืฉืืขืื ืืช ืืจืขืืื ืืื ืืฉืื ืืื ืืืชืื ืจืขืืื ืืช ืืฉืืื, ืฉืืืงื ืืืืขื ื-GitHub.
ืืืื ืกืงืืจื ืฉื ืืจืืขื ืคืจืืืงืืื ืืงืื ืคืชืื ืฉืืืกืืื ืืืืื ืืืืกืื, ืืื ื ืืชื ืืืืืจ ืืงืืืช ืืช ืื ืชืื ืื ืืืื ืืืืืืืฉ ืืืชื, ืืืฉื, ืืืืฆืขืืช ืืจืืคื ื.
olegfedoseev/pinba-server (ื ืืืืืจ 2017)
ืฉืจืช udp ืืชื ืืขื ืฉืฉืืืจ ืืืืื ื-OpenTSDB. ืืืื ืื ืืชื ืืืจ ืืฉืชืืฉ ื-OpenTSDB ืืคืจืืืงื ืฉืื, ืื ืืคืชืจืื ืืื ืืชืืื ืื, ืืืจืช ืื ื ืืืืืฅ ืืขืืืจ ืืืชื.
olegfedoseev/pinba-influxdb (ืืื ื 2018)
ืฉืจืช udp ืืชื ืืขื, ืืืืชื ืืืืจ
ืืชืจืื ืืช:
- InfluxDB
ืืื ืืืคืฉืจืช ืืฆืืืจ ืืช ืืืืืื ืฉืืชืงืืื, ืืืืืืง ืืช ืืืงืืจ ืืืืจ ืืื ืืืืืจ.
ืืกืจืื ืืช:
- ืคืชืจืื ืื ืืื ื ืฉืืืจ ืืืืข ืขื ืืืืืจืื.
- InfluxDB ืืืืกื ืืชืืืืช ืฉื ืืคื ืืืชืจ ืืชืืืืช ืืื ืืฉ ืื ืืชืืืืช ืขืืื ืืืืืืืืช ืจืืืช, ืื ืืืืื ืืื
ืฆืจืืื ืืืืืจืช ืืืืจืื ืืืฉื ืืงืจืืืช. ืืจืืข ืืกืืื ืืื"ืืชืืื ืืืืื ืืช ืืืืืจืื ืืื ืืืืจืฃ ". (ืืงืืจ )
ClickHouse-Ninja/Proton (ืื ืืืจ 2019)
ืฉืจืช udp on go, ืฉืฉืืืจ ืืืืื ื-ClickHouse. ืื ืืคืชืจืื ืฉื ืืืจ ืฉืื. ืืืืจ ืืืืจืืช ืขื ืื ืืืืืชื ืฉืืืืข ืืืื ืืืชืืืื ืขื ืคืื ืื ืืงืืืงืืืืก.
ืืชืจืื ืืช:
- Clickhouse ืืืืืืื ืขืืืจ ืืฉืืืืช ืืืื; ืืื ืืืคืฉืจ ืื ืืืืืก ื ืชืื ืื ืื ืื ืืจืื ืฉืืชื ืืืื ืืืืกื ืืช ืื ืื ืชืื ืื ืืืืืืืื ืื ืืื ืฆืืืจื
- ืืืืืช ืืฆืืจื, ืชืืื ืืฆืืืจ ืืงืืืช ืืช ืืืืืื ืืืชืงืืืื
- ืชืื ืืช ืืืื ื ืืืจืืคื ื
- ืฉืืืจ ืืืืข ืขื ืืืืืจืื
ืืกืจืื ืืช:
ืคืื ืงืืื ื - ืืื ืชืฆืืจื ืฉืื ืืชื ืืืื ืืืืืืจ ืืช ืฉื ืืกื ืื ืชืื ืื ืืืืืืืืช, ืืืชืืืช ืืืืฆืืื ืฉื ืืฉืจืช.
- ืืขืช ืืืกืื ื ืชืื ืื ืืืืืืื, ืืืืช ืืืืื ืขืืจ ืืฉืืฉืช ืืืืกืื ืืชืืืืช ืืคืื ืืชืืื, ืื ืฉืืงืฉื ืขื ืฉืืืืชืืช ืขืืงืืืช
- ืืืจืื ืงืื ืื ืืืจืื ืืืืื ืืืืื ืืก ืืจืืฉืื
pinba-server/pinba-server (ืืคืจืื 2019)
ืฉืจืช udp ื-php, ืฉืฉืืืจ ืืืืื ื-ClickHouse. ืื ืืคืชืจืื ืฉืื, ืฉืืื ืชืืฆืื ืฉื ืืืืจืืช ืขื pinba, ClickHouse ื-protobuf. ืืืื ืฉืกืืืจืชื ืืช ืื ืืืืืจื ืืื, ืืชืืชื "ืืืืืช ืงืื ืกืคื", ืฉืืืืคื ืืืชื ืฆืคืื ืขืืืจื, ืื ืฆืจืื ืืฉืืืื ืืฉืืขืืชืืื (30 MB ืฉื ืืืืจืื RAM ืืคืืืช ื-1% ืืืืช ื-XNUMX ืืืืืช ืืืขืื), ืื ืื ื ืืืืืื ืืฉืชืฃ ืืืชื ืขื ืืฆืืืืจ.
ืืืชืจืื ืืช ืืืื ืืคืชืจืื ืืงืืื, ืืฉืชืืฉืชื ืื ืืฉืืืช ืืจืืืืื ืื-pinba_engine ืืืงืืจื. ืืืกืคืชื ืื ืชืฆืืจื ืฉืืืคืฉืจืช ืืืคืขืื ืืื ืืืคืขื ืฉืจืช Pinbase ืืืช ืืืช ืขื ืื ืช ืืฉืืืจ ืืืืื ืืืืืืืช ืฉืื ืืช - ืื ืฉืืืืฉื ืื ืืชื ืจืืฆื ืืืกืืฃ ื ืชืื ืื ืื ืจืง ื-php, ืืื ืื ื-nginx.
ืืกืจืื ืืช - "ืคืื ืงืืื ื" ืืืืืจืื ืืงืื ืื ืืืื ืฉืื ืืชืืืื ืื ืืืฉืืช, ืืื ืืคืชืจืื ืฉืื ืืื "ืคืฉืื ืืื ื ืขืื ืืืช" ืืืืจืื ืื-100 ืฉืืจืืช ืงืื ืืืื, ืื ืฉืื ืืคืชื PHP ืืืื ืืฉื ืืช ืืช ืื ืฉืืื ืื ืืืื ืชืื ืืื ืืงืืช.
ืขืืงืจืื ืืคืขืืื
ืืืืื ืื ืืืฆืืืช UDP 30002. ืื ืืืืืืืช ืื ืื ืกืืช ืืคืืขื ืืืช ืืคื ืกืืืืช ื-protobuf ืืืฆืืืจืืช. ืคืขื ืืืงื, ืืืืื ืืืื ืกืช ื-clickhouse ืืืืืช pinba.requests. (ืื ืืคืจืืืจืื ืืืืืจืื ื
ืงืฆืช ืขื ืงืืืงืืืืก
Clickhouse ืชืืื ืืื ืืขื ืืืกืื ื ืชืื ืื ืฉืื ืื. ืื ืคืืฅ ืืืืชืจ ืืื MergeTree.
ืื ืืฉืื ืืกืืื ืชืืืื ืืืืกื ื ืชืื ืื ืืฆืืืจืื ืืื ืืืื, ืื ืชืื ืื ืืืืืืื ืจืง ืขืืืจ ืืืืจืื, ืื ืืชื ืืืื ืืืฆืืจ ืชืฆืืื ืืืืืฉืช ืขื ืงืืืืฅ, ืืื ืงืืช ืืขืช ืืขืช ืืช ืืืืื ืืจืืฉืืช pinba.requests, ืืขืื ืฉืื ืื ืชืื ืื ืืืฉืืจื ื- ืืฉืงืคื ืืชืืืฉื. ืืชืจื ืืื, ืืขืช ืืฆืืจืช ืืืืช pinba.requests, ื ืืชื ืืฆืืื "engine = Null", ืื ืื ืชืื ืื ืืืืืืืื ืื ืืืฉืืจื ืืืืกืง ืืื, ืืืืงืืื ืื ืขืืืื ืืืืขื ืืชืฆืืื ืืืืืฉืช ืืืืฉืืจื ืืฆืืืจืื . ืื ื ืืฉืชืืฉ ืืกืืืื ืืื ืขืืืจ ืืืื nginx, ืื ื-nginx ืืฉ ืื ืคื 50 ืืืชืจ ืืงืฉืืช ืืืฉืจ ื-php.
ืื ืขืืจืช ืืจื ืืจืืื ืืื ื ืื ืจืืฆื ืืขืืื ืืืชื ืืืืฆืข ืืืจื, ืื ืื ืืืื ืชืืืืจ ืืคืืจื ืฉื ืืืชืงื ื ืืืชืฆืืจื ืฉื ืืคืชืจืื ืฉืื ืืื ืื ืฉืืชื ืฆืจืื, ืืื ืื ืืืืืืืืช ืฉืืจืื ืืืืชืจ ืืกืคืื ื ืืืช ืืืชืจืกืง. ืชืืืื ืืืชืงื ื ืืืื ืืชืืืจ ืขืืืจ ืืืืื ืื 18.04 LTS ื- Centos 7; ืืชืืืื ืขืฉืื ืืืืืช ืฉืื ื ืืขื ืืืคืฆืืช ืืืืจืกืืืช ืืืจืืช.
ืืชืงื ื
ืืื ืกืชื ืืช ืื ืืคืงืืืืช ืืืจืืฉืืช
php-pinba
ืืืืจ ืืืชืงื ื, ืืื ืฉืืงืืืฅ /etc/php/7.2/fpm/conf.d/20-pinba.ini ืืืืืช ืืช ืื ืืืคืฉืจืืืืช. ืืืคืฆืืช ืืกืืืืืช (ืืืฉื ืกื ืืืก) ืื ืขืฉืืืื ืืืืืช ืืืขืจืื.
extension=pinba.so
pinba.enabled=1
pinba.server=127.0.0.1:30002
ืืืช ืงืืืง
ืืืืื ืืืชืงื ื, clickhouse ืืืงืฉ ืืื ืืืืืืจ ืกืืกืื ืขืืืจ ืืฉืชืืฉ ืืจืืจืช ืืืืื. ืืืจืืจืช ืืืื, ืืฉืชืืฉ ืื ื ืืืฉ ืืื ืืชืืืืช ื-IP, ืื ืฉืื ืืื ืื ืืืืช ืืฉ ืืฉืจืช ืฉืื, ืืงืคื ืืืืืืจ ืขืืืจื ืกืืกืื. ื ืืชื ืืขืฉืืช ืืืช ืื ืืืืจ ืืืชืงื ื ืืงืืืฅ /etc/clickhouse-server/users.xml.
ืจืืื ืื ืืฆืืื ืฉ-clickhouse ืืฉืชืืฉ ืืืกืคืจ ืืฆืืืืช, ืืืื 9000. ืืฆืืื ืื ืืฉืืฉืช ืื ืขืืืจ php-fpm ืืืคืฆืืช ืืกืืืืืช (ืืืืืื, centos). ืื ืืชื ืืืจ ืืฉืชืืฉ ืืืฆืืื ืื, ืชืืื ืืฉื ืืช ืืืชื ืืืืจืช ืืงืืืฅ /etc/clickhouse-server/config.xml.
ืืจืคื ื ืขื ืชืืกืฃ ืงืืืงืืืืก
ืืืืจ ืืชืงื ืช Grafana, ืืฉืชืืฉ ืืืืืื ืืืชืืืจืืช ืืืื ืื ืืกืืกืื. ืืฉืชืชืืืจ ืืคืขื ืืจืืฉืื ื, Grafana ืืืงืฉ ืืื ืืืืืืจ ืกืืกืื ืืืฉื.
ืืืืจ ืืื, ืขืืืจ ืื "+" -> ืชืคืจืื ืืืืื โโืืฆืืื ืืช ืืกืคืจ ืืื ืืืืืื ืื ืืืืืื
Grafana ืชืืืืช ืืขืืืื ืขื ืงืืืงืืืืก ืืจื ืชืืกืฃ ืฉื ืฆื ืฉืืืฉื, ืืื ืืืจืืคืื ื ืืื ืืชืจืืืช ืขื ืชืืกืคืื ืฉื ืฆื ืฉืืืฉื (ืืฉ ืืื ืืจืืืก ืืืจ ืืื ืฉื ืื).
ืฉืจืช pinba
ืืชืงื ืช protobuf ื-libevent ืืื ืืืคืฆืืื ืืืช, ืื ืืฉืคืจืช ืืช ืืืฆืืขื ืฉืจืช pinba. ืื ืืชื ืืชืงืื pinba-server ืืชืืงืืื ืฉืืื ื /opt, ืชืฆืืจื ืื ืืชืงื
ืืืืื pinba ืขืืืจ nginx
ืืื ืืืจืืื ืืืืื, ืืชื ืฆืจืื ืงืืื ืืงืืจ ืฉื ืืืชื ืืจืกื ืฉื nginx ืฉืืืจ ืืืชืงื ืช ืืฉืจืช ืฉืื, ืืื ืื ืืช ืืืชื ืืคืฉืจืืืืช ืงืืืคืืืฆืื, ืืืจืช ืืื ืืื ืชืฆืืื, ืืื ืืขืช ืืืืืจ ืืืืืื, ืชืืคืืข ืฉืืืื ืฉ "ืืืืืื ืืื ื ืชืืื ืืื ืืจื." ื ืืชื ืืืฆืื ืืคืฉืจืืืืช ืงืืืคืืืฆืื ืืืืฆืขืืช ืืคืงืืื nginx -V
ืคืจืืฆืืช ืืืื
ืื ืืืชืจืื ืฉืื ืขืืืืื ืจืง ืขื https. ืฉืื ืืกืืืื ืืืคื ืืกืจ ืืฉืืขืืช, ืื ืื ื ืืฉืชืืฉ ืื ืืื ืืืคืจืื ืืื ืืื ืืจื ื ืืืกืืฃ.
ืืกืงืจืืคืืื ืื ืืืฉืื ืืืืื ืืจื ื ืื ื ืืฉืชืืฉ ื:
if (ini_get('pinba.enabled')) {
pinba_schema_set('web');
}
ืืืกืงืจืืคืืื ืฉื ืืกืืฃ (ืืืืืื, ืกืงืจืืคืืื ืฉื ืงืจืื):
if (ini_get('pinba.enabled')) {
pinba_schema_set('console');
}
ืืืื ืืืืืื ืื ืฉืื ืืืจืคืื ื ืืฉ ืืชื ืืื ืืจื ื/ืงืื ืกืืืืช ืืฆืคืืื ืืกืืืืกืืืงื ืื ืคืจื.
ืืชื ืืืื ืื ืืฉืืื ืืช ืืชืืื ืฉืื ื- Pinba, ืืืืืื:
pinba_tag_set('country', $countryCode);
ืื ืืื.
ืื ื ืขื ื ืขื ืืกืงืจืื ืืชืืช ืืืชืื.
ืืจืืื, ืื ื ืืืืืจ ืืืชื ืฉืื ื ืื ืืืืขืฅ ืื ืขืืืจ ืืืืฆืขืืช ืืืืขืืช ืืืฉืืืช ืืืืจ ืืืจืฉืชืืช ืืืืจืชืืืช.
ืฆืืจ ืืจืืืก ื- Github.
ืืื ืื ื ื ืืชืืื ืืืืืงืื
ืจืง ืืฉืชืืฉืื ืจืฉืืืื ืืืืืื ืืืฉืชืชืฃ ืืกืงืจ.
ืืืืื ืืขืจืืช ืืคืขืื ืืชื ืืฉืชืืฉ ืืฉืจืช?
-
ืืืืื ืื
-
CentOS
-
ืืืืื
-
ื'ื ืื
-
ืจื ืืื
-
ืคืืืจื
-
OpenSUSE
-
ืฉืืืืฅ
-
ืืื ืืงืก
-
Windows
-
ืืืจ
114 ืืฉืชืืฉืื ืืฆืืืขื. 11 ืืฉืชืืฉืื ื ืื ืขื.
ืืืืื ืืจืกื ืฉื php ืืชื ืืฉืชืืฉ ืืฉืจืช?
-
7.3
-
7.2
-
7.1
-
7.0
-
5
-
ืืืจ
105 ืืฉืชืืฉืื ืืฆืืืขื. 17 ืืฉืชืืฉืื ื ืื ืขื.
ืืื ืื ืคืขื ืืฉืชืืฉืช ืืคืื ืื?
-
ืื
-
ืื, ืืื ืืืืชื ืจืืฆื
-
ืื ืืื ื ืื ืืืืชื ืจืืฆื
-
ืื ืืื ืฉืืขืชื ืขืืื
100 ืืฉืชืืฉืื ืืฆืืืขื. 14 ืืฉืชืืฉืื ื ืื ืขื.
ืืืื ืืจืกื ืฉื ืฉืจืช Pinba ืชืจืฆื ืื ืกืืช?
-
pinba_engine (ืื ืืข mysql)
-
pinba2 (ืื ืืข mysql)
-
ืืื ืกืืื (php + mysql)
-
olegfedoseev/pinba-server (ืื + OpenTSDB)
-
olegfedoseev/pinba-influxdb (ืื + influxdb)
-
pinba-server/pinba-server (go + clickhouse)
-
pinba-server/pinba-server (php + clickhouse)
-
ืื ื ืืืชืื ืืช ืฉืื ืืขืฆืื
-
ืืืจ
39 ืืฉืชืืฉืื ืืฆืืืขื. 47 ืืฉืชืืฉืื ื ืื ืขื.
ืืงืืจ: www.habr.com