Webサイトにうまく繋がらなかったら Slack に投稿するメモです。
簡易監視用として利用しようと思います。
Slack の設定
Configure Integrations → Incoming WebHooks → 投稿したいチャンネルを選んでAdd する。
すると Webhook URL というのが手に入るのでこれをメモしておく。
Webサイトにうまく繋がらなかったら投稿する
servercheck_slack.php
mb_language("ja");
mb_internal_encoding("UTF-8");
$URL = "http://example.com/";
$result = "";
//webアクセスチェック
if ($res = file_get_contents($URL)) {
$result .= "";
} else {
$result .= "<{$URL}|{$URL}> にアクセスできません\n";
}
//Slack投稿
if ($result != "") {
$incomingUrl = 'https://hooks.slack.com/xxxxx'; // 発行されたWebhook URL
$payload = array(
"text" => $result, // メッセージ(必須)
"username" => "web_bot", // 投稿者(サービス)名
"icon_emoji" => ":ghost:", // 投稿者名のアイコン http://www.emoji-cheat-sheet.com/
"channel" => "#xxxxx", // Channel(#または@から始まるchannel名)
);
$slacksubmit = slackIncomingWebhook($incomingUrl, $payload);
var_dump($slacksubmit);
}
//Slack投稿用関数
function slackIncomingWebhook($url, $payload) {
$headers = array();
$params = array('payload' => json_encode($payload));
$result = postRequest($url, $params, $headers);
return $result;
}
//Slack投稿用関数
function postRequest($url, $params, $headers = array()) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 環境によってSSLで問題が起きる場合はコメントを解除してください。
$result = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error) {
throw new \Exception($error);
}
return $result;
}
CRON を設定
10分おきくらいで設定する。
参考にしたページ
ありがとうございました。
http://www.bunnyhop.jp/lab-20141020/
http://blog.asial.co.jp/486