ãã®èšäºã§ã¯ãpinba_engine ãš pinboard ã®ä»£ããã« clickhouse ãš grafana 㧠pinba ã䜿çšããæ¹æ³ã説æããŸãã
PHP ãããžã§ã¯ãã§ã¯ããããã pinba ãããã©ãŒãã³ã¹ã«äœãèµ·ãã£ãŠããããç解ããå¯äžã®ä¿¡é Œã§ããæ¹æ³ã§ãã 確ãã«ãpinba ã¯éåžžãåé¡ããã§ã«èŠ³å¯ãããŠããããã©ããæãã¹ããããæ確ã§ãªãå Žåã«ã®ã¿å®è£ ãããŸãã
å€ãã®å Žåããã®ã¹ã¯ãªããããã®ã¹ã¯ãªããã XNUMX ç§/åãããäœååŒã³åºãããã®ã誰ãåããããããè«ççãšæãããå Žæããã觊ã£ãŠãæé©åãå§ããŸãã
nginx ãã°ãåæãããã®ãããã°ãé ãããŒã¿ããŒã¹ ã¯ãšãªãåæãããã®ããããŸãã
ãã¡ãããpinba ã¯äžå¿ èŠãšããããã§ã¯ãããŸãããããã¹ãŠã®ãããžã§ã¯ãã« pinba ãããããã§ã¯ãªãçç±ãããã€ããããŸãã
ãããŠæåã®çç±ã¯ã€ã³ã¹ããŒã«ã§ãã
Pinba ã®å®è£ ããå€ããå°ãªããããçš®ã®ãç²ãããåŸãã«ã¯ãæåŸã®æ°åéã ãã§ãªããé·æé (æ°æ¥ããæ°ãæ) ã«ããã£ãŠã¡ããªã¯ã¹ã確èªããããšãéåžžã«æãŸããã§ãã
ããã®ããã«å¿ èŠãªã®ã¯ïŒ
- php ã®æ¡ââ匵æ©èœãã€ã³ã¹ããŒã«ããŸã (nginx ã®ã¢ãžã¥ãŒã«ãå¿ èŠã«ãªãå ŽåããããŸã)
- mysql ã®ã³ã³ãã€ã«æ¡åŒµæ©èœ
- ãã³ããŒããã€ã³ã¹ããŒã«ã㊠cron ãèšå®ãã
Pinba ã«é¢ããæ å ±ãå°ãªããããå€ãã®äººã¯ PHP5 ã§ã®ã¿åäœããé·ãééå»ã®ãã®ã§ãããšããå°è±¡ãæã£ãŠããŸãããåŸã§èª¬æããããã«ãããã§ã¯ãããŸããã
æåã®ã¹ãããã¯æãç°¡åã§ã次ã®ã³ãã³ããå®è¡ããã ãã§ãã
apt install php-pinba
ãã®æ¡åŒµæ©èœã¯ php 7.3 ãŸã§ã®ãªããžããªã§å©çšã§ããäœãã³ã³ãã€ã«ããå¿ èŠã¯ãããŸããã
ã€ã³ã¹ããŒã« ã³ãã³ããå®è¡ãããšãåã¹ã¯ãªããã®ã¡ããªã¯ã¹ (å®è¡æéãã¡ã¢ãªãªã©) ã次ã®åœ¢åŒã§åéããŠéä¿¡ããæ©èœããæ¡åŒµæ©èœãããã«åãåããŸãã
ãããŸã§ã®ãšããããããã® UDP ãã±ãããææãŸãã¯åŠçãã人ã¯ããŸãããããã㯠PHP ã¹ã¯ãªããã®é床ãå®å®æ§ã«æªåœ±é¿ãäžããããšã¯ãããŸããã
æè¿ãŸã§ããããã® UDP ãã±ããããã£ããããŠåŠçã§ããå¯äžã®ã¢ããªã±ãŒã·ã§ã³ã¯ã
ã€ã³ã¹ããŒã«ããã»ã¹
ãããããã€ãããã®æ¹æ³ãç解ããããã«ããããã®è³æãèªãŸãªããŠãã10 ã€ãŸã㯠XNUMX ã€ã®ã³ãã³ã㧠pinbaXNUMX ãã€ã³ã¹ããŒã«ã§ããããã«ãªãã§ãããããä»ã®ãšããã¯ããã§ã¯ãããŸããã
pinba_engine ãã€ã³ã¹ããŒã«ããå Žåãããã§æŠãã¯ååã«éããŸããã çµå±ããªãã§
PHP ããã®ãã¹ãŠã®ã¡ããªãã¯ããã§ã« protobuf 圢åŒã§ udp ããŒãã«éä¿¡ãããŠãããå¿ èŠãªã®ã¯ãããããã£ããããŠäœããã®ã¹ãã¬ãŒãžã«ä¿åããã¢ããªã±ãŒã·ã§ã³ãäœæããããšã ãã§ããå Žåããªããã®ãããªèŠãã¿ãçããã®ã§ãããã? ã©ãããããã®ã¢ã€ãã¢ãæãã€ããéçºè ã¯ããã«èªåã®ã¢ã€ãã¢ãæžãå§ãããã®äžéšã¯æçµçã« GitHub ã«æçš¿ãããããã§ãã
以äžã¯ãã¡ããªã¯ã¹ãã¹ãã¬ãŒãžã«ä¿åãã XNUMX ã€ã®ãªãŒãã³ãœãŒã¹ ãããžã§ã¯ãã®æŠèŠã§ããã¹ãã¬ãŒãžãããããšãã° grafana ã䜿çšããŠããã®ããŒã¿ãç°¡åã«ååŸããŠèŠèŠåã§ããŸãã
olegfedoseev/ãã³ããµãŒã㌠ïŒ2017幎XNUMXæïŒ
OpenTSDB ã«ã¡ããªã¯ã¹ãä¿åããã皌åäžã® udp ãµãŒããŒã ããããããããžã§ã¯ãã§ãã§ã« OpenTSDB ã䜿çšããŠããå Žåã¯ããã®ãœãªã¥ãŒã·ã§ã³ãé©ããŠããŸããããã§ãªãå Žåã¯ããã®ãœãªã¥ãŒã·ã§ã³ãç¡èŠããããšããå§ãããŸãã
olegfedoseev/pinba-influxdb (2018幎XNUMXæ)
udp ãµãŒããŒãå®è¡äžãåããã
é·æïŒ
- æµå
¥DB
èš±å¯ãã åä¿¡ããã¡ããªã¯ã¹ãéèšããæå®ãããæéãçµéããåŸã«å ã®ã¡ããªã¯ã¹ãåé€ããŸãã
çæïŒ
- ãã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãã¿ã€ããŒã«é¢ããæ å ±ã¯ä¿åãããŸããã
- InfluxDB ã¯ãµã€ãã®ããŒãž ã¢ãã¬ã¹ãã¿ã°ãšããŠä¿åããŸããäžæã®ããŒãž ã¢ãã¬ã¹ãå€æ°ããå Žåãããã¯æ¬¡ã®ãããªåé¡ã«ã€ãªãããŸãã
æ¶è²»ã®å¢å ã©ã³ãã ã»ã¢ã¯ã»ã¹ã»ã¡ã¢ãªã ããç¬éãã圌ã¯ãçã£ãããã«èšæ¶ãé£ãã€ã¶ãå§ããã ãã «ã ïŒïŒãœãŒã¹ )
ClickHouse-å¿è
/ãããã³ ïŒ2019幎XNUMXæïŒ
udp ãµãŒããŒãå®è¡ããã¡ããªã¯ã¹ã ClickHouse ã«ä¿åããŸãã ãããç§ã®å人ã®è§£æ±ºçã§ãã ããã«æ £ããŠãããPinbu ãš Clickhouse ã«ææŠããææãæ¥ããšå€æããŸããã
é·æïŒ
- Clickhouse ã¯ãã®ãããªã¿ã¹ã¯ã«æé©ã§ããClickhouse ã䜿çšãããšãããŒã¿ãå€§å¹ ã«å§çž®ã§ãããããéèšãªãã§ããã¹ãŠã®çããŒã¿ãä¿åã§ããŸãã
- å¿ èŠã«å¿ããŠãçµæã®ã¡ããªã¯ã¹ãç°¡åã«éèšã§ããŸãã
- grafanaçšã®æ¢è£œã®ãã³ãã¬ãŒã
- ã¿ã€ããŒã«é¢ããæ å ±ãä¿åããŸã
çæïŒ
èŽåœçãªæ¬ é¥ - ããŒã¿ããŒã¹ãšããŒãã«ã®ååããµãŒããŒã®ã¢ãã¬ã¹ãšããŒããæ§æã§ããæ§æã¯ãããŸããã
- çããŒã¿ãä¿åããå ŽåãããŒãžãšãã¡ã€ã³ã®ã¢ãã¬ã¹ãä¿åããããã«è£å©èŸæžããŒãã«ã䜿çšããããããåŸç¶ã®ã¯ãšãªãè€éã«ãªããŸãã
- æåã®ãã€ãã¹ããç¶ããã®ä»ã®å°ããªããš
ãã³ããµãŒããŒ/ãã³ããµãŒã㌠(2019幎XNUMXæ)
php ã® udp ãµãŒããŒãClickHouse ã«ã¡ããªã¯ã¹ãä¿åããŸãã ããã¯ç§ã®è§£æ±ºçã§ãããpinbaãClickHouseãprotobuf ãç¥ã£ãçµæã§ãã ãã®æå šäœãæŽçããŠããéã«ããæŠå¿µå®èšŒããæžããŸããããããã¯ç§ã«ãšã£ãŠäºæ³å€ã«ã倧ããªãªãœãŒã¹ (30 MB ã® RAM ãš 1 ã€ã®ããã»ããµ ã³ã¢ã®ãã¡ XNUMX ã€ã® XNUMX% æªæº) ãæ¶è²»ããŸããã§ããããããäžè¬ã®äººã ãšå ±æããããšã«ããŸããã
å©ç¹ã¯åã®ãœãªã¥ãŒã·ã§ã³ãšåãã§ãããå
ã® pinba_engine ã®éåžžã®ååã䜿çšããŸããã ãŸããã¡ããªã¯ã¹ãå¥ã®ããŒãã«ã«ä¿åããããã«ãè€æ°ã® pinbase ãµãŒã㌠ã€ã³ã¹ã¿ã³ã¹ãäžåºŠã«èµ·åã§ããããã«ããæ§æãè¿œå ããŸãããããã¯ãphp ã ãã§ãªã nginx ãããããŒã¿ãåéãããå Žåã«äŸ¿å©ã§ãã
çæ - ãèŽåœçãªæ¬ é¥ãããå人çã«ã¯åããªãå°ããªç¹ã§ãããç§ã®è§£æ±ºçã¯ãã¹ãªããã®ããã«ã·ã³ãã«ãã§ããããçŽ 100 è¡ã®ã³ãŒãã§æ§æãããŠãããããPHP éçºè
ãªã誰ã§ãæ°ã«å
¥ããªãéšåãå€æŽã§ããŸããæ°å以å
ã«ã
ã©ã®ããã«åäœããŸã
UDP ããŒã 30002 ããªãã¹ã³ããããã¹ãŠã®åä¿¡ãã±ããã protobuf ã¹ããŒã ã«åŸã£ãŠãã³ãŒããããéçŽãããŸãã XNUMX åã« XNUMX åããã±ãããã¯ãªãã¯ããŠã¹ã® pinba.requests ããŒãã«ã«æ¿å
¥ãããŸãã (ãã¹ãŠã®ãã©ã¡ãŒã¿ã¯
ã¯ãªãã¯ããŠã¹ã«ã€ããŠå°ã
Clickhouse ã¯ããŸããŸãªããŒã¿ ã¹ãã¬ãŒãž ãšã³ãžã³ããµããŒãããŠããŸãã æãäžè¬çã«äœ¿çšãããã®ã¯ MergeTree ã§ãã
ããæç¹ã§ãéèšããŒã¿ã¯åžžã«ä¿åããçããŒã¿ã¯æåŸã«ã®ã¿ä¿åããããšã«æ±ºããå Žåã¯ãã°ã«ãŒãåã䜿çšããŠãããªã¢ã©ã€ãºã ãã¥ãŒãäœæããã¡ã€ã³ã® pinba.requests ããŒãã«ãå®æçã«ã¯ãªãŒã³ã¢ããããããšãã§ããŸãããã®éããã¹ãŠã®ããŒã¿ã¯ãããªã¢ã©ã€ãºããã¥ãŒã ããã«ãpinba.requests ããŒãã«ãäœæãããšãã«ããengine = Nullããæå®ãããšãçããŒã¿ã¯ãã£ã¹ã¯ã«ãŸã£ããä¿åããããåæã«ãããªã¢ã©ã€ãºã ãã¥ãŒã«ä¿åãããéèšãããŠä¿åãããŸãã ã nginx ã§ã¯ php ããã 50 åå€ãã®ãªã¯ãšã¹ãããããããç§ã¯ nginx ã¡ããªã¯ã¹ã«ãã®ã¹ããŒã ã䜿çšããŸãã
ãããŸã§é·ãéã®ããæ©ãã§ããŸããã®ã§ãéäžã§é¢ããããšã¯ããããããŸããã以äžã«ãç§ã®ãœãªã¥ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ãšæ§æãå¿ èŠãªãã®ãã¹ãŠãããã³è€æ°ã®è¹ãåŒãèµ·ããèœãšãç©Žã«ã€ããŠè©³ãã説æããŸããã¯ã©ãã·ã¥ããã ã€ã³ã¹ããŒã« ããã»ã¹å šäœã¯ Ubuntu 18.04 LTS ããã³ Centos 7 ã«ã€ããŠèª¬æãããŠããŸãããä»ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãããŒãžã§ã³ã§ã¯ããã»ã¹ãè¥å¹²ç°ãªãå ŽåããããŸãã
ã€ã³ã¹ããŒã«
å¿
èŠãªã³ãã³ãããã¹ãŠå
¥ããŸãã
php-ãã³ã
ã€ã³ã¹ããŒã«åŸã/etc/php/7.2/fpm/conf.d/20-pinba.ini ãã¡ã€ã«ã§ãã¹ãŠã®ãªãã·ã§ã³ã®ã³ã¡ã³ãã解é€ãããŠããããšã確èªããŠãã ããã äžéšã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ (centos ãªã©) ã§ã¯ãã³ã¡ã³ãã¢ãŠããããŠããå ŽåããããŸãã
extension=pinba.so
pinba.enabled=1
pinba.server=127.0.0.1:30002
ã¯ãªãã¯ããŠã¹
ã€ã³ã¹ããŒã«äžã«ãclickhouse ã¯ããã©ã«ã ãŠãŒã¶ãŒã®ãã¹ã¯ãŒããèšå®ããããã«æ±ããŸãã ããã©ã«ãã§ã¯ããã®ãŠãŒã¶ãŒã¯ãã¹ãŠã® IP ããã¢ã¯ã»ã¹ã§ããããããµãŒããŒã«ãã¡ã€ã¢ãŠã©ãŒã«ããªãå Žåã¯ãå¿ ããã¹ã¯ãŒããèšå®ããŠãã ããã ããã¯ã/etc/clickhouse-server/users.xml ãã¡ã€ã«ã«ã€ã³ã¹ããŒã«ããåŸã«è¡ãããšãã§ããŸãã
ãŸããclickhouse 㯠9000 ãªã©ã®è€æ°ã®ããŒãã䜿çšããããšã«ã泚æããŠãã ããããã®ããŒãã¯ãäžéšã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ (centos ãªã©) ã® php-fpm ã«ã䜿çšãããŸãã ãã®ããŒãããã§ã«äœ¿çšããŠããå Žåã¯ã/etc/clickhouse-server/config.xml ãã¡ã€ã«ã§å¥ã®ããŒãã«å€æŽã§ããŸãã
ã¯ãªãã¯ããŠã¹ãã©ã°ã€ã³ã䜿çšããã°ã©ãã¡ã
Grafana ãã€ã³ã¹ããŒã«ããåŸããã°ã€ã³ admin ãšãã¹ã¯ãŒã admin ã䜿çšããŸãã åããŠãã°ã€ã³ãããšããGrafana ã¯æ°ãããã¹ã¯ãŒããèšå®ããããã«æ±ããŸãã
次ã«ãã+ã -> ã€ã³ããŒãã¡ãã¥ãŒã«ç§»åããã€ã³ããŒãããããã·ã¥ããŒãçªå·ãæå®ããŸãã
Grafana ã¯ãµãŒãããŒãã£ã®ãã©ã°ã€ã³ãä»ããã¯ãªãã¯ããŠã¹ã®æäœããµããŒãããŠããŸãããGrafana ã«ã¯ãµãŒãããŒãã£ã®ãã©ã°ã€ã³ã«å¯Ÿããã¢ã©ãŒãããããŸãã (ããã«ã€ããŠã¯æ°å¹Žåãããã±ããããããŸãã)ã
ãã³ããµãŒããŒ
protobuf ãš libevent ã®ã€ã³ã¹ããŒã«ã¯ãªãã·ã§ã³ã§ãããpinba-server ã®ããã©ãŒãã³ã¹ãåäžããŸãã pinba-server ã /opt 以å€ã®ãã©ã«ããŒã«ã€ã³ã¹ããŒã«ããå Žåã¯ã次ã®ä¿®æ£ãå¿
èŠã«ãªããŸãã
nginxçšã®pinbaã¢ãžã¥ãŒã«
ã¢ãžã¥ãŒã«ãã³ã³ãã€ã«ããã«ã¯ããµãŒããŒã«æ¢ã«ã€ã³ã¹ããŒã«ãããŠããåãããŒãžã§ã³ã® nginx ã®ãœãŒã¹ ã³ãŒããšãåãã³ã³ãã€ã« ãªãã·ã§ã³ãå¿ èŠã§ããããã§ãªãå Žåããã«ãã¯æåããŸãããã¢ãžã¥ãŒã«ã®æ¥ç¶æã«ãšã©ãŒãã¹ããŒãããŸãã ãã¢ãžã¥ãŒã«ã«ã¯ãã€ããªäºææ§ããããŸãããã ã³ã³ãã€ã« ãªãã·ã§ã³ã¯ãnginx -V ã³ãã³ãã䜿çšããŠè¡šç€ºã§ããŸãã
ã©ã€ãããã¯
ç§ã®ãµã€ãã¯ãã¹ãŠ https ã§ã®ã¿åäœããŸãã ã¹ããŒããã£ãŒã«ãã¯ç¡æå³ã«ãªãã®ã§ãWeb/ã³ã³ãœãŒã«ãåé¢ããããã«äœ¿çšããŸãã
Web ããã¢ã¯ã»ã¹ã§ããã¹ã¯ãªããã§ã¯ã次ã®ãã®ã䜿çšããŸãã
if (ini_get('pinba.enabled')) {
pinba_schema_set('web');
}
ã³ã³ãœãŒã« ã¹ã¯ãªãã (cron ã¹ã¯ãªãããªã©) ã§ã¯æ¬¡ã®ããã«ãªããŸãã
if (ini_get('pinba.enabled')) {
pinba_schema_set('console');
}
Grafana ã®ããã·ã¥ããŒãã«ã¯ãçµ±èšãåå¥ã«è¡šç€ºããããã® Web/ã³ã³ãœãŒã« ã¹ã€ããããããŸãã
ããšãã°ãã¿ã°ã Pinba ã«éä¿¡ããããšãã§ããŸãã
pinba_tag_set('country', $countryCode);
ããã§å šéšã§ãã
èšäºã®äžã«ããã¢ã³ã±ãŒãã«çããŠãã ããã
ãã€ãã®ããã«ãç§ã¯ Habr ããœãŒã·ã£ã« ãããã¯ãŒã¯äžã®å人çãªã¡ãã»ãŒãžãéããŠã¢ããã€ã¹ãæ¯æŽãè¡ã£ãŠããªãããšãèŠåããŸãã
Github ã§ãã±ãããäœæããŸãã
ãŸããããããïŒãã§å¿æŽããŠãã ãã
ç»é²ãŠãŒã¶ãŒã®ã¿ãã¢ã³ã±ãŒãã«åå ã§ããŸãã
ãµãŒããŒã§äœ¿çšããŠãã OS ã¯äœã§ãã?
-
Ubuntu
-
CentOSã®
-
Debianã®
-
Gentooã®
-
ã¬ããããã
-
ãã§ããŒã©
-
openSUSEã®
-
ã¹ãŒã»
-
Unixã®
-
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 (go + OpenTSDB)
-
olegfedoseev/pinba-influxdb (go + influxdb)
-
pinba-server/pinba-server (go + clickhouse)
-
pinba-server/pinba-server (php + ã¯ãªãã¯ããŠã¹)
-
èªåã§æžããŸã
-
ãã®ä»
39 人ã®ãŠãŒã¶ãŒãæ祚ããŸããã 47åã®ãŠãŒã¶ãŒãæ£æš©ããã
åºæïŒ habr.com