tl;dr
æ°ããè·å ´ã§æãã¦é ããããããã®ã¯ã©ã¦ããã®ãã·ã³ãã«ç£è¦ãã, ãã®åã®éã, è¨å®ãã³ã³ã»ãããé常ã«ã·ã³ãã«ã§æ±ãæãã, æéãå®ãã¦, ã¨ã¦ãè¯ãã¨æã£ãã®ã§è§¦ã£ã¦ã¿ã¾ãã. ã¾ã, ãã£ãããªã®ã§è¨å®èªä½ã¯ Terraform ã使ã£ã¦ã³ã¼ãã§ç®¡çããããã«ãã¦ã¿ã¾ãã.
ã·ã³ãã«ç£è¦
ã·ã³ãã«ç£è¦ã«ã¤ãã¦
ãã¡ã ããå¼ç¨ããã¦é ãã¾ãã.
ã客æ§ã®ãµã¼ãã¼ããµã¼ãã¹ãå®æçã«ç£è¦ããç°å¸¸ãçºçããéã«ã¡ã¼ã«ãªã©ã§éç¥ãããµã¼ãã¹ã§ããPINGç£è¦ãHTTP/HTTPSã®ã¹ãã¼ã¿ã¹ç£è¦ãTCPãã¼ãã®æ»æ´»ç£è¦çã®ãµã¼ãã¼æ»æ´»ç£è¦ã®ä»ã«æéã¢ã©ã¼ãè¨å®ãå¯è½ã§ãã
ä¸å³ã®éã (ããã¥ã¡ã³ã ããå¼ç¨ããã¦é ãã¾ãã.), Ping ã HTTP, HTTPS çã®ãããã³ã«ã§å¯¾è±¡ã®ãã¹ãã®æ»æ´»ãç£è¦ãããã¨ãåºæ¥ã¾ã. ã¾ã, èå³æ·±ãã®ã¯, ãµã¼ãã¼è¨¼ææ¸ã®æéã FTP ãã¼ãã®æ»æ´»ã, SMTP ãã¼ãã®æ»æ´», DNS ã®åå解決, ã¯ã©ã¦ããµã¼ãã¹ã®è«æ±éé¡ã«ã¤ãã¦ãç£è¦ãããã¨ãåºæ¥ãç¹ã§ã.
ã¾ã, ç°å¸¸ãæ¤ç¥ããéã«ã¯, æ¨æºã§ã¡ã¼ã«ã¾ã㯠Slack ã«éç¥ãããã¨ãåºæ¥ãã®ã§, ãµã¼ãã¹ãå ¬éããããµã¯ãã¨ç°¡åãªæ»æ´»ç£è¦ãå§ããããã¨ããã®ã¯ç´ æ´ãããã¨æãã¾ã.
ã³ã¹ã
ãããã®ã¯ã©ã¦ãã®ãªãã·ã§ã³ãµã¼ãã¹ã¨ãã¦æä¾ããã¦ãã¦, 以ä¸ã®ãããªæéä½ç³»ã¨ãªã£ã¦ãã¾ã.
- ç£è¦å¯¾è±¡ã IPv4 ã¢ãã¬ã¹ã§, ä¸ã¤, ãããã® VPS, ãããã®å°ç¨ãµã¼ãçã§æä¾ãã¦ããã°ãã¼ãã« IP ã¢ãã¬ã¹ã§ããå ´åã«ã¯
ç¡æ
- ä¸è¨ä»¥å¤ã¯ 1 æ¥
1 å/ 1 ç£è¦å¯¾è±¡ããã
, æé¡21 å/ 1 ç£è¦å¯¾è±¡ããã
- SSL ãµã¼ãã¼è¨¼ææ¸ã®æéç£è¦ã«ã¤ãã¦ã¯, ä¸è¨ã®æéãé©ç¨ããã
ãããã¤ã³ã¿ã¼ãããã®å種ãµã¼ãã¹ã使ã£ã¦ãµã¼ãã¹ãæä¾ãã¦ããå ´åã«ã¯, 使ããªãã¨å¿ä½ç¡ããããªæ°ããã¾ã.
è¨å®ç»é¢
è¨å®ç»é¢ã¯ä¸å³ã®ããã«ãªã£ã¦ãã, ã¨ã¦ã使ããããè¨å®ç»é¢ã ã¨æãã¾ã.
oreno.tools ã¨ãããµã¤ãã https ã§ç£è¦è¨å®ãã¦ããå³ã§ã.
Terraform ã§è¨å®ãã
ããããããã®ã
è¦ã«ãªããªããããã·ã³ãã«ãªè¨å®ç»é¢ã§ãã, ããããã®ã¯ã©ã¦ããåã Terraform ãããã¤ããæä¾ããã¦ãã¾ãã®ã§, Terraform ã§ã·ã³ãã«ç£è¦ã®è¨å®ãã³ã¼ãåãã¦ã¿ããã¨æãã¾ã.
ãµã³ãã«
以ä¸ã®ãµã³ãã«ãå ã«é²ãã¾ã.
Circle CI ã§ãã©ã¼ãããã®ãã§ãã¯ãæ§æãã§ãã¯ãè¡ããããã« .circleci/config.yml ãå¿ã°ãã¦ãã¾ã.
ã³ã¼ã
ç¹ã«é£ããå 容ã§ã¯ããã¾ãã. ãªã½ã¼ã¹ãå®ç¾©ãã simple-monitoring.tf ã¨, ç£è¦å¯¾è±¡ã® FQDN ãå®ç¾©ããã¦ãã variables.tf ã«åããã¦ãã¾ã.
以ä¸, simple-monitoring.tf ã§ã.
resource sakuracloud_simple_monitor "http-monitor" { count = "${ length( var.http_endpoints ) }" target = "${ element(var.http_endpoints, count.index) }" health_check = { protocol = "https" delay_loop = 3600 path = "/" status = "200" } notify_email_enabled = true description = "${ element(var.http_endpoints, count.index) } URL Monitoring." } resource "sakuracloud_simple_monitor" "ssl-monitor" { count = "${ length( var.ssl_endpoints ) }" target = "${ element(var.ssl_endpoints, count.index) }" health_check = { protocol = "sslcertificate" } notify_email_enabled = true description = "${ element(var.ssl_endpoints, count.index) } SSL Certificate Monitoring." }
以ä¸, variables.tf ã§ã.
variable "http_endpoints" { default = [ "kome.inokara.com", "oreno.tools", ] } variable "ssl_endpoints" { default = [ "oreno.tools", "github.com", ] }
ç£è¦å¯¾è±¡ã追å ãã
make ã³ãã³ãåãã¦ããã®ã§, 以ä¸ã®ããã« make plan
ããã® make apply
ã§ç£è¦å¯¾è±¡ã追å ãã¾ã.
ä¸å³ã®ããã«ç£è¦å¯¾è±¡ã追å ããã¦ãã¾ã.
ç£è¦å¯¾è±¡ã®ä¸é¨ãåé¤ãã
ããããã¯, Terraform ã®ä¸çã«ãªãã®ã§, ã·ã³ãã«ç£è¦ã«éãã, Terraform ã触ãä¸ã§èªåã«å½¹ç«ã¡ãããªäºãæ¸ãã¦ã¿ã¾ã.
以ä¸ã®ããã« destroy
ãµãã³ãã³ãã« -target
ãªãã·ã§ã³ãå©ç¨ãã¦, æå®ãããªã½ã¼ã¹ã®ã¿ãåé¤ãã¾ã.
make show ~/bin/terraform destroy -target=sakuracloud_simple_monitor.ssl-monitor[1]
terraform show
ã使ããã¨ã§, 対象ã¨ãªããªã½ã¼ã¹ã確èªãããã¨ãåºæ¥ã¾ã.
Web ã³ã³ã½ã¼ã«ã§è¨å®ããå 容ãã¤ã³ãã¼ããã
ããæ¥, é害ãçºçãããã¨ãå¥æ©ã«æ¥ãã§ç£è¦å¯¾è±¡ã Web ã³ã³ã½ã¼ã«ã§è¿½å ãã¾ãã. ãã®è¨å®ã Terraform ã«åãè¾¼ã¿ããã¨æãã¾ã.
github.com ããµã³ãã«ã¨ãã¦å©ç¨ããã¦é ãã¾ãã.
以ä¸ã®ããã«, import
ãµãã³ãã³ããå©ç¨ã㦠Web ã³ã³ã½ã¼ã«ã§è¿½å ãããªã½ã¼ã¹ã®æ
å ±ãã¤ã³ãã¼ããã¾ã.
make show ~/bin/terraform import sakuracloud_simple_monitor.http-monitor[2] ${ãªã½ã¼ã¹ã® ID (ã·ã³ãã«ç£è¦ã«ããã¦ã¯, ãªã½ã¼ã¹ ID ã該å½ãã¾ã)}
ã¤ã³ãã¼ãããå¾, variables.tf ã«é¢ã対象ã追å ãã¦ããã¾ããã.
variable "http_endpoints" { default = [ "kome.inokara.com", "oreno.tools", "github.com", ] } variable "ssl_endpoints" { default = [ "oreno.tools", "github.com", ] }
variables.tf ã«è¿½å ãããã¨ã§, ç£è¦å¯¾è±¡èªä½ã®æ´åæ§ã¯å®éã®ãªã½ã¼ã¹ã¨ Terraform ã®ç¶æ
(tfstate) ã¨ã®æ´åæ§ãåãããã¨ã«ãªãã¾ã. (ç´°ãããã©ã¡ã¼ã¿ã«ã¤ãã¦ã¯æ´åæ§ãåãã¦ããªãå ´åãããçº, ãã®å¾ã« terraform plan
ãå®è¡ããã¨å·®åãåºã¦ãã¾ããã¨ãããã¾ã.)
以ä¸
ããããã®ã¯ã©ã¦ããã®ãã·ã³ãã«ç£è¦ããæ¬å½ã«ã·ã³ãã«ã§ã¤ã±ã¦ãããµã¼ãã¹ã§ãããã¨ã確èªåºæ¥ã¾ãã. ã¾ã, Terraform ã使ããã¨ã§ç£è¦å¯¾è±¡ãã³ã¼ãã§ç®¡çåºæ¥ããã¨ã確èªãã¾ãã.
ããã§ã¯, è¯ãç£è¦ã¨ã¤ã³ãã©ã¹ãã©ã¯ãã£ã¼ã»ã¢ãºã»ã³ã¼ãçæ´»ããéããä¸ãã.