中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

電腦網(wǎng)站設計頁面抖音關鍵詞優(yōu)化排名靠前

電腦網(wǎng)站設計頁面,抖音關鍵詞優(yōu)化排名靠前,公司網(wǎng)公司網(wǎng)頁設計制作,如何對網(wǎng)站的圖片做cdn如何實現(xiàn)Web應用、網(wǎng)站狀態(tài)的監(jiān)控? 關鍵詞:網(wǎng)站監(jiān)控,服務器監(jiān)控,頁面性能監(jiān)控,用戶體驗監(jiān)控本文通過代碼分析、網(wǎng)站應用介紹網(wǎng)站狀態(tài)監(jiān)控的方式下文主要分為網(wǎng)站應用、技術實現(xiàn)兩部分 一、網(wǎng)站應用 現(xiàn)在網(wǎng)絡上已經(jīng)存在一些Web網(wǎng)站監(jiān)控的服務&#xff…

如何實現(xiàn)Web應用、網(wǎng)站狀態(tài)的監(jiān)控?

  • 關鍵詞:網(wǎng)站監(jiān)控,服務器監(jiān)控,頁面性能監(jiān)控,用戶體驗監(jiān)控
  • 本文通過代碼分析、網(wǎng)站應用介紹網(wǎng)站狀態(tài)監(jiān)控的方式
  • 下文主要分為網(wǎng)站應用、技術實現(xiàn)兩部分

一、網(wǎng)站應用

  • 現(xiàn)在網(wǎng)絡上已經(jīng)存在一些Web網(wǎng)站監(jiān)控的服務,雖然功能五花八門,但限制較大,需付費使用
  • 本文介紹的技術運行網(wǎng)站見下方地址,不會關閉,可以直接使用
  • 一個樸實無華且免費的WEB網(wǎng)站監(jiān)控工具
  • 先看下效果
    在這里插入圖片描述

1. 打開網(wǎng)站

  • 【傳送門】
https://www.xujian.tech/monitor

2. 微信掃碼登錄

  • 這里通過微信掃碼取得小程序openid,利用openid標記用戶,不涉及隱私
    在這里插入圖片描述
  • 掃碼完成后會自動跳轉(zhuǎn)到系統(tǒng)

3. 進入監(jiān)控表

  • 進入系統(tǒng)后,選中左側(cè)菜單進入監(jiān)控表頁面
    在這里插入圖片描述

4. 添加監(jiān)控器

  • 監(jiān)控器支持POST、GET兩種請求方式
  • GET請求時,如有參數(shù),請直接放置在地址中
  • POST請求時,如有參數(shù),請在表單中填寫JSON鍵值對對象
  • Header如果有需要,也可按JSON對象方式填寫
  • 僅需如下三步,即可完成設置
  • 提交后,點擊刷新即可在頁面上看到監(jiān)控器記錄(此時還未執(zhí)行)
    在這里插入圖片描述

5. 說明和操作

5.1 關于成功率
  • 初次時顯示“未執(zhí)行”,執(zhí)行正確計算
5.2 關于監(jiān)控頻率
  • 每次執(zhí)行完成計算下一次執(zhí)行時間,默認30分鐘一次(免費用戶暫不支持自定義頻率)
  • 計時器每5分鐘執(zhí)行一次,發(fā)現(xiàn)監(jiān)控器執(zhí)行時間小于當前時間的,就執(zhí)行請求
  • 所以監(jiān)控頻率并非嚴格按照30分鐘一次
5.2 相關操作
  • 新增/編輯監(jiān)控器后,可以點擊“立即執(zhí)行”進行一次請求,觀察設置是否正確
  • 需要修改時,可點擊“編輯”按鈕對監(jiān)控器內(nèi)容進行修改
  • 點擊運行記錄,可查看近期運行的情況
  • 運行記錄中,點擊結果復制,可以復制運行的結果(當返回內(nèi)容大于512b的時候,只存儲前512個內(nèi)容)
  • 需要郵件通知的用戶,可點擊右上角頭像設置郵箱,在系統(tǒng)異常的時候,會通過郵件進行提示,郵件內(nèi)容如下:
    在這里插入圖片描述

6. 功能拓展

  • 如果有更多建議、合作,請在本文下方留言
  • 或按網(wǎng)站提示添加作者

二、技術實現(xiàn)

1. 技術棧

  • 實現(xiàn)一個監(jiān)控器需前端、后端、數(shù)據(jù)庫、緩存等技術
  • 本站主要應用了以下技術:
序號技術所屬端
1VUE前端
2Vue Element Admin前端
3Java后端
4MySQL 數(shù)據(jù)庫后端
5Redis緩存后端
6Nginx運維
7MyBaits-plus后端

2. 核心代碼

  • 實現(xiàn)web應用監(jiān)控的核心是定期按規(guī)則進行請求,并將結果記錄,遇到錯誤時發(fā)送郵件提醒
  • 本文以在Spring Boot中實現(xiàn)為例,除Spring Boot基礎依賴外,還需添加如下依賴
	<!--發(fā)送郵件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><!--糊涂工具,實現(xiàn)網(wǎng)絡請求、工具類等--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.20</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.0</version></dependency>
2.1 監(jiān)控器實體
  • 記錄監(jiān)控器基本屬性、執(zhí)行時間、統(tǒng)計結果等
  • 下方代碼含實體和下次執(zhí)行時間計算方法
@Data
@Builder
@TableName("m_monitor")
public class MMonitor {@JsonFormat(shape = JsonFormat.Shape.STRING)private Long id;//監(jiān)控器名稱private String name;//創(chuàng)建時間private Date createdAt;//下次運行時間,定時器篩選時的重要指標private Date nextRunAt;//上次運行時間private Date lastRunAt;//計時器類型,1=分鐘,2=小時,3=天private Integer timerType;//是否已傷處,1=已刪除,0=正常private Integer isDeleted;//計時器步長,整數(shù)值private Integer timerLength;//監(jiān)控器狀態(tài),1可用,0停用private Integer status;//用戶微信小程序openidprivate String openid;//請求URLprivate String toUrl;//請求方法,GET、POSTprivate String toMethod;//請求參數(shù),JSON Objectprivate String toParams;//請求header,JSON Objectprivate String toHeaders;//返回結果包含為成功,當toResultCode不等于200的時候生效private String toResult;//返回結果code為成功,200表示用code,其他表示包含字符串private Integer toResultCode;//POST請求體格式,0=json,1=formprivate Integer toBodyType;// 最新一次運行情況:1正常,0異常private Integer runStatus;// 最新一次運行情況中文,成功、失敗、失敗原因private String runResult;// 運行成功次數(shù)private Integer countSucceed;// 總運行次數(shù)private Integer countAll;//分鐘數(shù)最短步長,即最短30分鐘一次private static final int MIN_MINUTE_LENGTH = 30;// 下次執(zhí)行時間計算方法public void calNextRunAt(){if(this.lastRunAt == null){this.lastRunAt = new Date();}timerType = timerType == null ? 1 : timerType;if(this.timerLength == null || this.timerLength < 1){this.timerLength = 30;}int addMinute = 0;switch (timerType){case 1:addMinute = timerLength;break;case 2:addMinute = 60 * timerLength;break;case 3:addMinute = 60 * 24 * timerLength;break;}addMinute = Math.max(addMinute,MIN_MINUTE_LENGTH);this.nextRunAt = new Date(System.currentTimeMillis() + 1000L * 60 * addMinute);}
}
2.2 計時器
  • 利用Spring Boot的Scheduled定時器實現(xiàn)
@Component
@Slf4j
public class MonitorTimerTask {@ResourceMMonitorMapper monitorMapper;@AutowiredMonitorService monitorService;@Scheduled(cron="0 0/5 * * * *")public void exec(){List<MMonitor> monitorList = monitorMapper.selectList(new LambdaQueryWrapper<MMonitor>().isNotNull(MMonitor::getNextRunAt).lt(MMonitor::getNextRunAt,DateUtil.formatDateTime(new Date())).eq(MMonitor::getStatus,1).eq(MMonitor::getIsDeleted,0));log.info(String.format("符合執(zhí)行條件的監(jiān)控器有%d個", monitorList.size()));for (MMonitor mMonitor : monitorList) {monitorService.run(mMonitor);}}
}
  • 定時器不生效?記得在SpringBootApplication上添加注解:@EnableScheduling
2.3 按規(guī)則進行請求
  • 即按監(jiān)控器的toXX字段配置的內(nèi)容填充請求參數(shù),進行請求!
  • 本段不多說,直接上代碼
/*** 運行監(jiān)控器的方法實現(xiàn),運行從這里開始* */@Overridepublic void run(MMonitor monitor) {long timestamp = System.currentTimeMillis();if(monitor.getIsDeleted() != null && monitor.getIsDeleted() == 1){return;}Date date = new Date();boolean isSucceed = false;String resultMsg = "成功";String requestResult = "";int code = 0;try{HttpResponse httpResponse = null;if(monitor.getToMethod() != null && monitor.getToMethod().equalsIgnoreCase("GET")){HttpRequest httpRequest =  HttpRequest.get(monitor.getToUrl());setHeaders(httpRequest,monitor);httpResponse = httpRequest.execute(false);}else{HttpRequest httpRequest =  HttpRequest.post(monitor.getToUrl());setHeaders(httpRequest,monitor);setPostParams(httpRequest,monitor);httpResponse = httpRequest.execute(false);}code = httpResponse.getStatus();requestResult = httpResponse.body();if(monitor.getToResultCode() == 200){isSucceed = code == 200;if(!isSucceed){throw new Exception("返回結果HTTP CODE不為200");}}else {isSucceed = requestResult.contains(monitor.getToResult());if(!isSucceed){throw new Exception("返回結果缺少包含內(nèi)容");}}}catch (Exception e){isSucceed = false;resultMsg = e.getMessage();}if(isSucceed){monitor.setCountSucceed(monitor.getCountSucceed() + 1);}monitor.setCountAll(monitor.getCountAll() + 1);monitor.setRunStatus(isSucceed ? 1 : 0);monitor.setRunResult(resultMsg);monitor.calNextRunAt();monitor.setLastRunAt(date);monitorMapper.updateById(monitor);timestamp = System.currentTimeMillis() - timestamp;log.info(monitor.getName() + String.format("檢查完畢,耗時%dms.", timestamp));if(requestResult != null && requestResult.length() > 512){requestResult = requestResult.substring(0,511) + "...";}MRunRecord runRecord = MRunRecord.builder().monitorId(monitor.getId()).runCode(code).runResult(requestResult).runAt(date).timeSpent(timestamp).openid(monitor.getOpenid()).runStatus(isSucceed ? 1: 0).build();mRunRecordMapper.insert(runRecord);sendEmail(runRecord,monitor);}/*** 發(fā)送郵件* */private void sendEmail(MRunRecord runRecord,MMonitor monitor){if(runRecord.getRunStatus() != null && runRecord.getRunStatus() == 1){return;}new Thread(() -> {MUser user = userMapper.selectOne(new LambdaQueryWrapper<MUser>().eq(MUser::getOpenid,runRecord.getOpenid()).orderByDesc(MUser::getId).last(" LIMIT 1"));if(user == null || StrUtil.isBlank(user.getEmail()) || user.getEmail().length() < 5 || !user.getEmail().contains("@")){return;}String subject = "【亞特技術Web監(jiān)控】【監(jiān)控異?!?#34; + monitor.getName();String text ="----------------詳情登錄網(wǎng)站查看----------------\n" +"-------------------請求內(nèi)容-------------------\n" +"URL:" + monitor.getToUrl() + "\n" +"Method:" + monitor.getToMethod() + "\n" +"-------------------返回內(nèi)容-------------------\n" +"HttpCode:" + runRecord.getRunCode() + "\n" +"Result:" + runRecord.getRunResult() + "\n";eMailUtils.sendTextMailMessage(user.getEmail(), subject, text);}).start();}/*** 分析規(guī)則設置Post參數(shù)* */private void setPostParams(HttpRequest httpRequest,MMonitor monitor){if(monitor.getToBodyType() != null && monitor.getToBodyType() == 1){//application/json 方式請求httpRequest.contentType("application/x-www-form-urlencoded;charset=GBK");try{if(!JSONUtil.isTypeJSONObject(monitor.getToParams())){return;}JSONObject joParams = new JSONObject(monitor.getToParams());Map<String, Object> paramsMap = new HashMap<>();for (String key : joParams.keySet()) {paramsMap.put(key,joParams.getStr(key));}httpRequest.form(paramsMap);}catch (Exception e){}}else if(monitor.getToBodyType() != null && monitor.getToBodyType() == 0){httpRequest.contentType("application/json");httpRequest.body(monitor.getToParams());}}/*** 分析規(guī)則設置header* */private void setHeaders(HttpRequest httpRequest,MMonitor monitor){try{if(!JSONUtil.isTypeJSONObject(monitor.getToHeaders())){return;}JSONObject joHeader = new JSONObject(monitor.getToHeaders());Map<String,String> headerMap = new HashMap<>();for (String key : joHeader.keySet()) {headerMap.put(key,joHeader.getStr(key));}httpRequest.addHeaders(headerMap);}catch (Exception e){}}

三、結尾說明

  • 第一部分說的網(wǎng)站已經(jīng)可用了,歡迎試用、歡迎長期使用、歡迎聯(lián)系合作、歡迎定制功能
  • 第二部分給出了核心內(nèi)容,但這部分實際上不是實現(xiàn)整個網(wǎng)站最耗時的:前端開發(fā)工作也是費力不討好的
  • 本人同時還提供Java開發(fā)一對一教學,有需要的添加微信:xujian_cq詳聊
  • 歡迎點贊、收藏、評論
http://www.risenshineclean.com/news/54245.html

相關文章:

  • 服務型網(wǎng)站的營銷特點域名免費注冊
  • 博客和網(wǎng)站有什么不同百度廣告點擊軟件源碼
  • 網(wǎng)站建設開發(fā)有限公司線下推廣方式有哪些
  • wordpress 4.8中文版高級seo是什么職位
  • 成都網(wǎng)站優(yōu)化報價營銷策劃師
  • 安徽省住房與城鄉(xiāng)建設網(wǎng)站網(wǎng)絡推廣怎么做
  • 上海網(wǎng)站建設的企濟南網(wǎng)站建設方案
  • 網(wǎng)站和webapp的區(qū)別網(wǎng)上推廣平臺
  • 網(wǎng)站建設詳細需求文檔東莞做網(wǎng)站哪個公司好
  • 全屏網(wǎng)站尺寸鄭州seo哪家專業(yè)
  • 如何提升網(wǎng)站速度女生讀網(wǎng)絡營銷與電商直播
  • 珠江現(xiàn)代建設 雜志社網(wǎng)站石家莊seo網(wǎng)絡優(yōu)化的公司
  • 科技打破壟斷全球的霸權鄭州seo排名優(yōu)化公司
  • 做門戶網(wǎng)站源碼上海網(wǎng)絡推廣平臺
  • php 做網(wǎng)站網(wǎng)店無貨源怎么做
  • 交友系統(tǒng)網(wǎng)站建設系統(tǒng)優(yōu)化的方法
  • 網(wǎng)站建設教程下載seo如何快速排名
  • 網(wǎng)站一屏做多大網(wǎng)址域名注冊
  • 手機網(wǎng)站制作行業(yè)排行前端seo搜索引擎優(yōu)化
  • 網(wǎng)站內(nèi)容作弊的形式南寧網(wǎng)站建設網(wǎng)絡公司
  • 建網(wǎng)站能在家里做嗎網(wǎng)站設計的流程
  • 中國紀檢監(jiān)察報電子報鄭州seo優(yōu)化顧問阿亮
  • wordpress首頁調(diào)用文章縮略圖上海百度整站優(yōu)化服務
  • 做網(wǎng)站加班市場調(diào)研報告范文
  • wordpress 鏈接 中文亂碼小璇seo優(yōu)化網(wǎng)站
  • 南寧網(wǎng)站推廣最新熱搜榜
  • 網(wǎng)絡規(guī)劃設計師需要的基礎百度網(wǎng)站怎樣優(yōu)化排名
  • 亞洲7號衛(wèi)星電視windows優(yōu)化大師下載
  • 網(wǎng)站 代備案谷歌google下載
  • wordpress 網(wǎng)頁飄窗深圳網(wǎng)站seo推廣