ç£èŠãç£èŠãââãæãæ¥ãŸããïŒ grafanaãã«ã¹ããŒã¿ãjsonãšããŠè¿ã/ statusãŸãã¯/ healthãšã³ããã€ã³ãããããšäŸ¿å©ã§ãã
ã¹ããŒã¿ã¹ãšã³ããã€ã³ãããååŸããããã®ã¯æ¬¡ã®ãšããã§ãã
äŸãã°ïŒ
/ç¶æ
{"date_sources_ok"ïŒTrueã "database_ok"ïŒTrueã "authorization_ok"ïŒTrueã "grafana_version"ïŒ "2.5.1"}
++
ïŒ+1ïŒ
ãã«ã¹URLãã»ãã·ã§ã³ãçæããªãããšã確èªããŠãã ãã
ïŒ+1ïŒ
+1ãããã¯ããŒããã©ã³ãµãŒã®èåŸã§grafanaãå®è¡ããã®ã«éåžžã«äŸ¿å©ã§ããããŒããã©ã³ãµãŒã¯/ health HTTPãåŒã³åºããŠãgrafanaãHTTP 200OKãè¿ããã©ããã確èªããŸãã
ãšãŠãã·ã³ãã«ãªãã®ããŸãšããŸããããçŸæç¹ã§ã¯ç¹ã«æºè¶³ããŠããŸããã
誰ããçŸåšã®ç¶æ ãšãã¹ã¿ãŒã確èªãããå ŽåïŒ https ïŒ//github.com/grafana/grafana/compare/master ... theangryangelïŒfeature / health_check
次ã®ãããªãã®ãè¿ããŸãã
{"current_timestamp":"2016-06-04T18:43:49+01:00","database_ok":true,"session_ok":true,"version":{"built":1464981754,"commit":"v3.0.4+158-g7cbaf06-dirty","version":"3.1.0"}}
ç§ãæåã«ããã€ãã®çµ±èšãè¿ããŠããããŒã¿ããŒã¹ãã§ãã¯ã§ãããç§ã¯ãããåãåããŸããã ã¯ãšãªããselect1ãã®ãããªãã£ãšåçŽãªãã®ã«åãæ¿ããããšãã§ããããããã§ãã¯ããŠããšã©ãŒã¯çºçããŸããã ããã䟡å€ããããã©ããããããªãã
ã»ãã·ã§ã³ãã§ãã¯ãç¹ã«æºè¶³ããŠããŸããã ãã¹ããã«ãã³ãµãŒããŒãç«ã¡äžããŠãã»ãã·ã§ã³ãããã€ããŒã®èµ·åæã«ã¹ããŒããããããã¯ããrecoverïŒïŒãããããã«ãã³/ã»ãã·ã§ã³ãå€æŽããŠåã«ãã¹ãæ©èœãè¿œå ããªãéãããã¹ãããã®ã¯ç°¡åã§ã¯ãªãããã§ãããããã€ããŒã ä»ã®ãšãããã€ã©ã€ã©ããŠSet-CookieããããŒãè¿ãããŸãããããã¯ç¹ã«å¿ èŠãããŸããã ãã«ãã³ã®çµéšãè±å¯ãªäººãããããã©ãã«æã£ãŠãããã«ã€ããŠãããã€ãã®æèŠãããã ããã°å¹žãã§ãð
grafanaãã©ã®ããã«èšè¿°ãããŠããããèãããšãããŒã¿ãœãŒã¹ããã§ãã¯ããããšã¯ããããè©Šãã®ã«ç¹ã«è³¢æã§ã¯ãªãããã§ãã ãããããéåžžã®ç£èŠã·ã¹ãã ã«è¿œå ããæ¹ãæ£æ°ã§ãã
åãåé¡ã«çŽé¢ããŠããŸããããåé¿çãšããŠãå°çšã®èªèšŒAPIããŒã䜿çšããŠããŒããã©ã³ãµãŒããã®APIåŒã³åºãã䜿çšããŸãã option httpchk
ã«ã¹ã¿ã HTTPããããŒãèšå®ãã䟿å©ãªãé ããæ©èœãåããHAProxyã䜿çšããŠããŸãã
option httpchk GET /api/org HTTP/1.0\r\nAccept:\ application/json\r\nContent-Type:\ application/json\r\nAuthorization:\ Bearer\ your_api_key\r\n
ïŒ1.1ã§ã¯ãªãHTTP / 1.0ã䜿çšããå¿ èŠããããŸããåŸè ã§ã¯HostããããŒãèšå®ããå¿ èŠããããHAProxyæ§æã§åçã«ååŸã§ããªãããã§ãïŒã
/api/org
ã¯ããªãŒããŒããããã»ãšãã©ãªãæãåçŽãªãªã¯ãšã¹ãã®ããã§ãHTTP 200ãè¿ããŸããããã¯ãããŒããã©ã³ãµãŒããŸãã«å¿
èŠãšããŠãããã®ã§ãããæ°ããã»ãã·ã§ã³ãäœæããŸããã
ãã®åé¡ã«é¢ããé²æç¶æ³ãPRã¯ãããŸããïŒ
+1
kubernetesã®ãã¹ããã©ã¯ãã£ã¹ãšããŠããããåå¥ã®/ livenessãšã³ããã€ã³ããš/ readinessãšã³ããã€ã³ãã«åå²ããŸãã / livenessã¯ãgrafanaèªäœã皌åããŠãããã©ããã®ã¿ã瀺ãã/ readynessã¯ããã©ãã£ãã¯ãåä¿¡ããæºåãã§ããŠãããã©ããã瀺ããäŸåé¢ä¿ã«å°éã§ãããã©ããã確èªããŸãã
kubernetesã§ã¯ã掻æ§ãšã³ããã€ã³ãããããŒãããã200 okã§äœåºŠãå¿çã«å€±æãããšãã³ã³ãããŒã匷å¶çµäºãããæ°ããã³ã³ãããŒãšäº€æãããŸãã æºåãšã³ããã€ã³ãã¯ãã³ã³ãããŒããµãŒãã¹ã®äžéšã«ãããã©ãã£ãã¯ããã®æ¹æ³ã§éä¿¡ããããã«äœ¿çšãããŸãã ããŒããã©ã³ãµãŒã«è¿œå ããããããŒããã©ã³ãµãŒããåé€ããããããããªãã®ã§ãã
+1
/ types Prometheusãšã³ããã€ã³ããè¿œå ããã®ã¯ã©ãã§ããïŒ
+1
Amazon ECSãªã©ã®äžéšã®ãµãŒãã¹ã§ãã«ã¹ãã§ãã¯ãå¿
èŠãªå ŽåïŒ
ãã®ããã¯ã䜿çšããŠãã ããïŒãã¹/public/img/grafana_icon.svg
ãHTTPã³ãŒãïŒ200ã
+1
ãããŸã§ã®éãåçŽãªHTTP code: 200
ã ããæ¢ããŠããå Žåã¯ã /login
ã ååãšç§ã¯GrafanaãKubernetesã¯ã©ã¹ã¿ãŒã«ãããã€ãããšããããã®ãšã³ããã€ã³ãã䜿çšãããšã掻æ§/æºåç¶æ³ã®ãããŒãã«åé¡ãªãæ©èœããŸããã Google ComputeEngineããŒããã©ã³ãµãŒã§ãæ©èœããŸãã
誰ãããããæè¡çã«æ瀺ããæ¹æ³ãç¥ã£ãŠãããšæããŸãããéèŠãªã®ã¯ãå€éšã®äŸåé¢ä¿ãå«ããµãŒãã¹ã®ç¶æ ã®ç£èŠãæ瀺çã«ãµããŒãããããšã§ãã
ç§ã®iPhoneããéä¿¡ããã
2016幎12æ5æ¥ã«ã¯ã16:09ã§ããã³ã¿ãŒSatterwhiteã®[email protected]ã¯æžããŸããïŒ
åçŽãªHTTPã³ãŒã200ãæ¢ããŠããå Žåã¯ã/ loginã䜿çšããŠãã ããã ååãšç§ã¯GrafanaãKubernetesã¯ã©ã¹ã¿ãŒã«ãããã€ãããšããããã®ãšã³ããã€ã³ãã䜿çšãããšã掻æ§/æºåç¶æ³ã®ãããŒãã«åé¡ãªãæ©èœããŸããã Google ComputeEngineããŒããã©ã³ãµãŒã§ãæ©èœããŸãã
â
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããããã¹ã¬ããããã¥ãŒãããŠãã ããã
ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ãè¿œå ããããšæããŸãããŠãŒã¶ãŒããã°ã€ã³ããŠã°ã©ãã衚瀺ã§ãããã©ããã確èªããããã®åçŽãªHTTPãšã³ããã€ã³ããå¿
èŠã§ãã /login
ãªã©ã®éçãªãœãŒã¹ãšãšã³ããã€ã³ãã䜿çšããŠããããªãããšãåé¿ã§ããããšã¯ç¥ã£ãŠããŸãããGrafanaã®å
éšãæåŸ
ã©ããã«å®è¡ãããŠããããšã確èªãããã®ãæ¬åœã«å¿
èŠã§ãã ããŒã¿ãœãŒã¹ããããŒã¿ãååŸããããã«ã¹ããŒã¿ã¹ãã§ãã¯ã¯å¿
ãããå¿
èŠã§ã¯ãããŸããããããã«ã¯åå¥ã®ãã«ã¹ãã§ãã¯ãããããã§ãã
ããã«+1ã
2016幎12æ5æ¥æææ¥ååŸ11æ51åãPhilip Wernersbach <
[email protected]>æžã蟌ã¿ïŒ
ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ãè¿œå ããããšæããŸãã次ã®ãããªåçŽãªHTTPãšã³ããã€ã³ããå¿ èŠã§ãã
ãŠãŒã¶ãŒããã°ã€ã³ããŠã°ã©ãã衚瀺ã§ãããã©ããã確èªããŸãã ç§ãã¡ã¯äœ¿çšã§ããããšãç¥ã£ãŠããŸã
äžåšãåé¿ããããã®éçãªãœãŒã¹ãš/ loginãªã©ã®ãšã³ããã€ã³ã
ããã®ããããç§éã¯æ¬åœã«Grafanaãããããã§ãã¯ããäœããå¿ èŠã§ã
å éšã¯æåŸ ã©ããã«å®è¡ãããŠããŸãã å¿ ãããã¹ããŒã¿ã¹ãã§ãã¯ã¯å¿ èŠãããŸãã
åå¥ã®ãã«ã¹ãã§ãã¯ããããããããŒã¿ãœãŒã¹ããããŒã¿ãååŸãããã
ãããã®ããã®ãâ
ããªããã³ã¡ã³ãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/grafana/grafana/issues/3302#issuecomment-265060171 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AIESgm7BZw3jqs8ElVWU9v7CjtcXBYFwks5rFOm-gaJpZM4Gm4T8
ã
-
[ç»åïŒTransLoc_logos_gear-blue_600x600.png]
ãã³ã¿ãŒãµãã¿ãŒãã¯ã€ã
TransLocã®ãªãŒããã«ãïŒãªãã¬ãŒã·ã§ã³ãšã³ãžãã¢
ã»ã«ïŒ252.762.5177 | http://transloc.com http://www.transloc.com/
[ç»åïŒãœãŒã·ã£ã«ã¡ãã£ã¢ã¢ã€ã³ã³-03.png] https://www.facebook.com/TransLoc/ [ç»åïŒ
ãœãŒã·ã£ã«ã¡ãã£ã¢ã¢ã€ã³ã³-04.png] https://www.linkedin.com/company/transloc [ç»åïŒ
ãœãŒã·ã£ã«ã¡ãã£ã¢ã¢ã€ã³ã³-02.png] http://www.twitter.com/transloc [ç»åïŒãœãŒã·ã£ã«
ã¡ãã£ã¢ã¢ã€ã³ã³-01.png] http://www.instagram.com/transloc_inc
ãã®ãããçŸåš4.0ã«ã¯ãããã€ãã®å éšã¡ããªãã¯ãæã€/ api / metricsãšã³ããã€ã³ãããããŸãã
ããããåé¡ã¯ãã®ãããªãã®ãèŠæ±ããŸã
{ "date_sources_ok": True, "database_ok": True, "authorization_ok": True, "grafana_version": "2.5.1" }
ããã§æåŸ
ãããããšã«ã€ããŠã®ãã詳现ãªèª¬æãããã°ããã§ãããã APIãã«ã¹ã³ãŒã«ã¯ããã¹ãŠã®çµç¹ã®ãã¹ãŠã®ããŒã¿ãœãŒã¹ã§ã©ã€ããã§ãã¯ãè¡ãå¿
èŠããããŸããïŒ / health apiåŒã³åºããè¡ããããšãã«ããã®å Žã§å®è¡ããå¿
èŠããããŸããïŒ
æ¿èªOKãšã¯ã©ãããæå³ã§ããïŒ
@torkeloã¯ã¢ã€ãã¢ã
{
"ok": false,
"items": [
"datasources": {
"ok": true,
},
"database": {
"ok": false,
"msg": "Cannot communicate ###.###.###.###/XXXXXXX"
},
...
]
}
ããã©ã«ãã§ã¯ããã«ã¹ãã§ãã¯ã¯ãšã³ããã€ã³ããåŒã³åºããããšãã«ãã¹ãŠã®ãã®ã®ã©ã€ããã§ãã¯ãå®è¡ããŸãã ãã«ã¹ãã§ãã¯ãç¹å®ã®ãã®ã«åé¢ãããå Žåã¯ãelasticsearchãã¯ã©ã¹ã¿ãŒãã«ã¹ã«å¯ŸããŠè¡ããããªããšãè¡ãããšãã§ããŸãã Thingãå€éšãµãŒãã¹ïŒæ¿èªãããŒã¿ããŒã¹ãªã©ïŒã®å Žåãæ¥ç¶ãã¹ãã¯æå°éã§å®è¡ããããã®ä»ã®åŠ¥åœãªå¥å šæ§ãã§ãã¯ïŒããŒã¿ããŒã¹ã®SELECT 1ãæ¿èªã®LDAPãã€ã³ããã¹ããªã©ïŒãå®è¡ãããŸãã
ãã®ãããªåºåããããšãç¹å®ã®åé¡ãèŠã€ããŠããã«å¿ããŠåºåããªãããç£èŠãã§ãã¯ã§åé¡ãå šäœçã«ãã§ãã¯ã§ããŸãã
+1
@torkeloåçãé ããŠç³ãèš³ãããŸãããã質åã衚瀺ãããŸããã
TL; DR
@andyfeller圌ã®ã³ã¡ã³ãã§è¯ãä»äºãããŸããããããŠããã¯ç§ãå¿ã«
Grafanaã®ç£èŠã«äœ¿çšããããšã³ããã€ã³ãïŒãŸãã¯ãšã³ããã€ã³ãïŒã¯ã2ã€ã®è³ªåã«è©³çŽ°ã§åçããå¿
èŠããããŸãã
AïŒãã®Grafanaã€ã³ã¹ã¿ã³ã¹ã¯æºåãã§ããŠããŸããïŒ
BïŒãã®Grafanaã€ã³ã¹ã¿ã³ã¹ã¯ãæ§æã®æå³ã«åŸã£ãŠæåŸ
ã©ããã«å®è¡ãããŠããŸããïŒ
ããã§éèŠãªã®ã¯ãæ§æã€ã³ãã³ããã§ããããšãã°ã管çè ãããŒã¿ãœãŒã¹ãšããŠè¿œå ããå Žåãä¿åãããæ§æãæ£ãããã©ããã«é¢ä¿ãªããããŒã¿ãœãŒã¹ãå©çšå¯èœã§ãããšæåŸ ããŸãã ãããã£ãŠãæ§æãããããŒã¿ãœãŒã¹ãGrafanaã§å©çšã§ããªãå Žåãç£èŠãšã³ããã€ã³ãã¯ãã®ããã«èšãå¿ èŠããããåãããã«ãéåžžã«äŸ¿å©ãªããã¹ãããã¿ã³ãæ©èœããŸãã
é£è¡æ©ãé¢éžãããšãã芳ç¹ããèãããšãæåã«é£è¡æ©ãé¢éžãçµããŠç©ºäžã«ããããšãç¥ãå¿ èŠããããŸãã次ã«ãé£è¡æ©ãç®çå°ã«åãã£ãŠæåŸ ã©ããã«é£è¡ããŠããããšãç¥ãå¿ èŠããããŸãïŒäœã«å ¥ãã®ã¯ãããŸãããããå·¡èªé«åºŠã«å°éããããšã¯ã;-)ïŒãæå³ããŸãã
ããã¯ãä»ã®äººãææããŠãã/ live / readyããElasticsearchã¢ãã«ã®/ healthïŒ1ïŒ/ stateïŒ2ïŒããŸãã¯SensuïŒ3ïŒã®/ healthãš/ infoãšããçšåºŠæ¯èŒã§ããŸãã
ç§èŠã§ã¯1ã€ã®ãšã³ããã€ã³ãã§ååã§ãããææ°ã®ããŒã«ã§2ã€ã®ãšã³ããã€ã³ããèŠããšãç§ã®èããå€ãããŸãã Bã¯Aã®ãµãã»ããã§ãããšæãã®ã§ããŸã 説åŸãããŠããªããšããŸãããã2ã€ã®ãšã³ããã€ã³ãã䜿çšãã代ããã«ãè¿ãããJSONã«ãããåæ ãããŸãã 次ã«ãGrafanaãã¯ã©ã¹ã¿ãŒåã§ããããæ¥ãã/ cluster_stateããè¿œå ã§ããŸãã
ããã§ãååçã®è©³çŽ°ã«ã€ããŠããããç§ã®-網çŸ
çã§ã¯ãªã-æåã®èãã§ãã
詳现ïŒ
Bã®è©³çŽ°ïŒ
Bã«ã¯ããã«å€ãã®ããšãã§ããã®ã§ãç£èŠã2ã€ã®ãšã³ããã€ã³ãã«åå²ããæ¹ãçã«ããªã£ãŠãããããããŸããã
ãšã³ããã€ã³ããç §äŒãããŠãããšãã«äœãèµ·ãããïŒãªã³ã¶ãã©ã€ãAPIãªã©ïŒã«ã€ããŠã¯ã誰ãå®è£ ãããã延æããŸãã
ããã€ãã®-æããã§ããïŒ-ã¢ããã€ã¹ïŒ
ç£èŠããŒã¿ã®åéã«äœ¿çšããããªãœãŒã¹ã«åå泚æããã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ã³ãŒããéåžžã«ãä¿è·ãããGrafana管çè ããGrafanaã®ç£èŠã§GrafanaãããŠã³ããããŸãã¯ãGrafanaãç£èŠãéå§ããŠããXïŒ é ããªã£ããç¶æ³ãåé¿ã§ããããã«ããŸãã ã
æäŸãããç£èŠããŒã¿ãã§ããã ã確å®ã«ãã¢ã©ãŒãç²åŽã¯ç«ç ã§ã
ïŒ1ïŒ https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html
ïŒ2ïŒ https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html
ïŒ3ïŒ https://sensuapp.org/docs/0.23/api/health-and-info-api.html#the -info-api-endpoint
ïŒ4ïŒ https://blog.codinghorror.com/get-your-database-under-version-control/
ããã§ã4.2.0ããªãªãŒã¹ãããã°ããã§ããµãŒãã¹ã調æ»ããæ¹æ³ã¯ãŸã ãããŸãããïŒ ïŒk8sã¯ã©ã¹ã¿ãŒãèããŠãã ããïŒ
@torkelo @dynekã«ã¯ãã€ã³ãããããšæã
ãããééããªãã§ãã ãããåªå
é äœãæããŠãããããã§ã¯ãããŸãããç£èŠæ¹æ³ã«ç¹åããéšåããªããã°ãã¢ããªã±ãŒã·ã§ã³ãããšã³ã¿ãŒãã©ã€ãºå¯Ÿå¿ãã«ããã®ã¯é£ããããšã§ãã
+1
grafanaã®ç¶æ ããã§ãã¯ããããã®ç°¡åãªhttpãšã³ããã€ã³ããè¿œå ããŸããã
GET /api/health
{
"commit": "349f3eb",
"database": "ok",
"version": "4.1.0"
}
ããŒã¿ããŒã¹ïŒmysql / postgres / sqlite3ïŒã«å°éã§ããªãå Žåã database
ãã£ãŒã«ãã«ã倱æããè¿ãããŸãã Grafanaã¯åŒãç¶ãã¹ããŒã¿ã¹ã³ãŒã200ã§å¿çããŸãããã®å Žåãäœãæ£ãããããããŸããã
ãã®ãšã³ããã€ã³ãã§æãéèŠãªããšã¯ãã»ãã·ã§ã³ãäœæãããªãããšã§ãïŒAPIããŒãŸãã¯åºæ¬èªèšŒã䜿çšããŠåŒã³åºããªãå Žåãä»ã®apiåŒã³åºããè¡ãå¯èœæ§ããããŸãïŒã
ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ã§ããªãå Žåã¯ãã¹ããŒã¿ã¹ã³ãŒã503ã§æ»ãã®ãæåã§ã¯ãªãã§ããããã
Kubernetesã®çšéïŒ
200以äž400æªæºã®ã³ãŒãã¯ãæåã瀺ããŸãã ãã®ä»ã®ã³ãŒãã¯å€±æã瀺ããŸãã
ã¯ããããŒã¿ããŒã¹ã¹ããŒã¿ã¹ã倱æãããšãã®503ã¹ããŒã¿ã¹ã³ãŒããæé©ã ãšæããŸããæŽæ°ãããŸã
503ã¯ã /api/health
ãšã³ããã€ã³ããKubernetesã®readiness
ãã§ãã¯ã«ã®ã¿æé©ã«äœ¿çšãããããšãæå³ããŸãã ãã®ãã§ãã¯ãliveness
ã«äœ¿çšãããšãããŒã¿ããŒã¹ã®åé¡ã«ãããã¹ãŠã®ãããã匷å¶çµäºãããŸãã ããŒã¿ããŒã¹ãã§ãã¯ãé€å€ããããã®ã¯ãšãªãã©ã¡ãŒã¿ã¯ãããŸããïŒ
@JorritSalverdaããªãã¯ãããã䜿çšããããšãã§ããŸãtcpSocket
ã§ãã§ãã¯livenessProbe
/metrics
ã¯ãã»ãã·ã§ã³ãäœæããããdbãªã¯ãšã¹ããçºè¡ãããããŸããã
éåžžãç©æ¥µçãªæºåãã§ãã¯ãšãªã©ãã¯ã¹ãã掻æ§ãã§ãã¯ãããã1ç§ã1ã¯æºåã«å€±æããŸããã60ç§10倱æã¯1æåã«ãªããŸããããã«ãããåé¡ãçºçãããšãã«å¿çæ§ã®é«ãåã«ãŒãã£ã³ã°ãå¯èœã«ãªããŸãããåæã«èªå·±å埩ãå¯èœã§ãäžèŠãªãããã®åèµ·åãé²ããŸãã ãã ããæ°žç¶çãªDBã®åé¡ã«ããåèµ·åãçºçããã³ã³ããã®ç¶æ ãæªãããšãåå ã§ããå Žåã«å®éã«åœ¹ç«ã€å¯èœæ§ããããŸãã
æãåèã«ãªãã³ã¡ã³ã
grafanaã®ç¶æ ããã§ãã¯ããããã®ç°¡åãªhttpãšã³ããã€ã³ããè¿œå ããŸããã
ããŒã¿ããŒã¹ïŒmysql / postgres / sqlite3ïŒã«å°éã§ããªãå Žåã
database
ãã£ãŒã«ãã«ã倱æããè¿ãããŸãã Grafanaã¯åŒãç¶ãã¹ããŒã¿ã¹ã³ãŒã200ã§å¿çããŸãããã®å Žåãäœãæ£ãããããããŸããããã®ãšã³ããã€ã³ãã§æãéèŠãªããšã¯ãã»ãã·ã§ã³ãäœæãããªãããšã§ãïŒAPIããŒãŸãã¯åºæ¬èªèšŒã䜿çšããŠåŒã³åºããªãå Žåãä»ã®apiåŒã³åºããè¡ãå¯èœæ§ããããŸãïŒã