Google App Engine + LINE Notify 監控系統即時告警通知(實作篇)
2019/05/09 09:52:26
0
2128
1.前言
接續前一篇「Google App Engine + LINE Notify 監控系統即時告警通知(環境設定篇)」,此篇將說明程式開發。
2.建置設定Google App Engine專案
a.點選Google App Engine Standard Java Project…。
b.專案設定如下圖。
c.點選「File」->「Sign in Google…」。
d.選擇欲登入的Google帳號。
e.在按「允許」。
f.在專案下的WEB-INF目錄下建立一個cron.xml,這是監控系統的執行頻率為五分鐘,內容如下。
i. 打開位於WEB-INF目錄下的appengine-web.xml,加入<url-stream-handler>urlfetch</url-stream-handler>這個設定。
3.撰寫監控+LINE Notify通知程式碼
a.在專案新增一個class如下圖
b.LINE Notify通知程式碼
package tw.com.thinkpower;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
@WebServlet(name = "Thinkpower", urlPatterns = { "/thinkpower" })
public class Thinkpower extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException {
boolean isOffline = true;
try {
// https://www.thinkpower.com.tw/是昕力資訊官網網址。
Document doc = Jsoup.connect("https://www.thinkpower.com.tw/").get();
isOffline = false;
} catch (IOException e) {
e.printStackTrace();
}
if (isOffline) {
try {
URL url = new URL("https://notify-api.line.me/api/notify");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 6YOUU5CRCZlSFj2htx1X1xeR0VwLmfAoMBnyOKV40是從LINE Notify官網取得的「權杖記錄」。
connection.addRequestProperty("Authorization", "Bearer " + "6YOUU5CRCZlSFj2htx1X1xeR0VwLmfAoMBnyOKV40");
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setDoOutput(true);
// 發送到筆者的LINE訊息內容。
String parameterString = new String("message=" + URLEncoder.encode("https://www.thinkpower.com.tw/ 發生異常", "UTF-8"));
PrintWriter printWriter = new PrintWriter(connection.getOutputStream());
printWriter.print(parameterString);
printWriter.close();
connection.connect();
connection.getResponseCode();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
4.部署Google App Engine
a.在專案上按右鍵選擇「Deploy to App Engine Standard」。
b.選擇要部署的Google App Engine專案。
5.告警通知
如果系統發生異常,LINE Notify就會通知如下圖。