[{"data":1,"prerenderedAt":326},["ShallowReactive",2],{"site-data":3,"article-120":143,"article-show-hot-120":171,"article-show-new-120":261},{"settings":4,"categorys":35,"tree":97,"models":118,"search_model_select":128,"nav_list":130},{"changefreq":5,"changyan_app_id":6,"changyan_app_key":6,"copy":7,"description":8,"editor":9,"file":6,"guest_feedback":10,"head_html":6,"icp":11,"index_banner":12,"index_banner_bg":13,"is_excel":14,"is_watermark":10,"keywords":15,"links":16,"logo":17,"lzcms_banner":6,"lzcms_banner_link":18,"member_register_enabled":14,"qq_app_id":6,"qq_app_key":6,"qr_code":6,"search_model":19,"site_closedreason":6,"site_idea":6,"site_idea1":20,"site_idea2":21,"site_idea3":22,"site_name":23,"site_statistice":6,"site_status":14,"site_url":18,"sitemap_model":19,"stationmaster_motto":24,"stationmaster_name":25,"stationmaster_occupation":26,"stationmaster_qq":27,"stationmaster_qqnet":28,"stationmaster_qqnet_code":29,"threshold":14,"title_add":30,"watermark":6,"watermark_alpha":31,"watermark_height":32,"watermark_locate":33,"watermark_width":34},"weekly","","版权所有 © \u003Ca class=\"site_url\" href=\"https://zhl123.com\">2026 zhl123.com\u003C/a>","linux、Python、mysql、docker、k8s技术交流","layedit","0","粤ICP备15054664号-1","/uploads/images/20181109/7a86191de8b8bb60e9c6b54d8b27c5cc.jpg","#xe604","1","linux、Python、mysql、docker、k8s","{\"1\":{\"id\":\"1\",\"link_url\":\"https://linux.org\",\"logo\":\"\",\"name\":\"linux\",\"sort\":\"0\",\"status\":\"1\"}}","/uploads/images/20181109/e7305012448aed257176dd591846f50a.png","https://zhl123.com","2","学无止境\n学习，探索，研究，从不了解到了解，从无知到掌握，到灵活运用，在不断的学习中加深认识。由浅入深，由表及里。","业精于勤\n“业精于勤荒于嬉”，精深的业技靠的是勤学、刻苦努力，靠的是争分夺秒的勤学苦练才会有精深的技术。得在认真，失在随便。","工匠精神\n精益求精，注重细节，追求完美和极致，不惜花费时间精力，孜孜不倦，反复改进产品，把99%提高到99.99%。","linux","业精于勤、学无止境、工匠精神","廖地金","高级Linux运维工程师","1256636645","592958303","\u003Ca target=\"_blank\" href=\"//shang.qq.com/wpa/qunwpa?idkey=09be7d1a682073783fd636102e666393169b8a8aac8f3393da1de57bcaa821a0\">\u003Cimg border=\"0\" src=\"//pub.idqqimg.com/wpa/images/group.png\" alt=\"Linux技术\" title=\"Linux技术\">\u003C/a>"," | Python | mysql | docker | k8s 技术交流","100","300","9","500",{"0":36,"17":51,"18":60,"19":63,"20":67,"21":71,"22":76,"25":80,"26":83,"27":89,"29":94},{"children":37},{"0":38,"25":43,"26":48},[39,40,41,42],25,21,22,26,[44,45,46,47],17,18,19,20,[49,50],27,29,{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},"index",1,"list","article",2,"文章模型","show","/article/lists?category_id=17",{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},"python","/article/lists?category_id=18",{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},"容器技术",3,"/article/lists?category_id=19",{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},"负载均衡",4,"/article/lists?category_id=20",{"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},"分享无价",0,5,"/article/lists?category_id=21",{"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},"随笔",6,"/article/lists?category_id=22",{"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},"学无止境","/article/lists?category_id=25",{"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},"picture","图集模型","关于",8,"/picture/lists?category_id=26",{"create_time":6,"description":6,"id":49,"image_url":6,"index_template":52,"is_cover":53,"is_menu":73,"keywords":6,"list_template":54,"model_code":90,"model_id":53,"model_name":91,"name":92,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":93},"page","单页模型","关于博主","/page/27",{"create_time":6,"description":6,"id":50,"image_url":6,"index_template":52,"is_cover":73,"is_menu":73,"keywords":6,"list_template":54,"model_id":73,"name":95,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":96},"留言","/feedback",[98,108,110,112],{"children":99,"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},[100,102,104,106],{"children":101,"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},[],{"children":103,"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},[],{"children":105,"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},[],{"children":107,"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},[],{"children":109,"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},[],{"children":111,"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},[],{"children":113,"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},[114,116],{"children":115,"create_time":6,"description":6,"id":49,"image_url":6,"index_template":52,"is_cover":53,"is_menu":73,"keywords":6,"list_template":54,"model_code":90,"model_id":53,"model_name":91,"name":92,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":93},[],{"children":117,"create_time":6,"description":6,"id":50,"image_url":6,"index_template":52,"is_cover":73,"is_menu":73,"keywords":6,"list_template":54,"model_id":73,"name":95,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":96},[],{"1":119,"2":120,"3":121,"4":122,"5":125},{"id":53,"index_template":52,"list_template":54,"name":91,"show_template":58,"status":73,"tablename":90},{"id":56,"index_template":52,"list_template":54,"name":57,"show_template":58,"status":73,"tablename":55},{"id":65,"index_template":52,"list_template":54,"name":85,"show_template":58,"status":73,"tablename":84},{"id":69,"index_template":52,"list_template":54,"name":123,"show_template":58,"status":73,"tablename":124},"链接模型","link",{"id":74,"index_template":52,"list_template":54,"name":126,"show_template":58,"status":73,"tablename":127},"下载模型","download",[129],{"id":56,"name":57,"tablename":55},[131,137,139,141],{"children":132,"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},[133,134,135,136],{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},{"children":138,"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},[],{"children":140,"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},[],{"children":142,"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},[],{"article":144,"breadcrumb":154,"category":158,"next":159,"prev":162,"second_categorys":165,"seo":170},{"id":145,"category_id":44,"title":146,"keywords":6,"description":147,"image_url":6,"content":148,"content_md":149,"url":150,"hits":151,"is_recommend":73,"is_top":73,"create_time":152,"update_time":153},120,"用 Prometheus Recording Rules 把告警噪声砍掉 70%(二)","五、故障排查和监控5.1 故障排查◆ 5.1.1 日志查看# 查看 Prometheus 日志中的规则评估错误journalctl -u prometheus | grep -i&nbsp;\"rule\"&nbsp;|&nbsp;tail&nbsp;-50# 查看规则评估耗时curl -s http://localhost:9090/api/v1/rules | jq&nbsp;'.data.groups[].rules[] | select(.health != \"ok\")'# Kubernet","\u003Ch2 class=\"js_darkmode__bg__65\" style=\"text-align: center;\">\u003Cspan leaf=\"\">五、故障排查和监控\u003C/span>\u003C/h2>\u003Ch3 class=\"js_darkmode__bg__66\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">5.1 故障排查\u003C/span>\u003C/h3>\u003Ch4 class=\"js_darkmode__bg__67\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">◆ 5.1.1 日志查看\u003C/span>\u003C/h4>\u003Cpre class=\"js_darkmode__bg__68 js_darkmode__77\" style=\"text-align: justify;\">\u003Ccode>\u003Cspan leaf=\"\"># 查看 Prometheus 日志中的规则评估错误\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">journalctl -u prometheus | grep -i&nbsp;\u003C/span>\u003Cspan leaf=\"\">\"rule\"\u003C/span>\u003Cspan leaf=\"\">&nbsp;|&nbsp;\u003C/span>\u003Cspan leaf=\"\">tail\u003C/span>\u003Cspan leaf=\"\">&nbsp;-50\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 查看规则评估耗时\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -s http://localhost:9090/api/v1/rules | jq&nbsp;\u003C/span>\u003Cspan leaf=\"\">'.data.groups[].rules[] | select(.health != \"ok\")'\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># Kubernetes 环境\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">kubectl logs -n monitoring prometheus-server-0 | grep -i&nbsp;\u003C/span>\u003Cspan leaf=\"\">\"recording\"\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Ch4 class=\"js_darkmode__bg__69\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">◆ 5.1.2 常见问题排查\u003C/span>\u003C/h4>\u003Cp class=\"js_darkmode__78\" style=\"text-align: justify;\">\u003Cspan>问题一：Recording Rule 显示 “no data”\u003C/span>\u003C/p>\u003Cpre class=\"js_darkmode__bg__70 js_darkmode__79\" style=\"text-align: justify;\">\u003Ccode>\u003Cspan leaf=\"\"># 诊断命令\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 1. 确认源指标存在\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -s&nbsp;\u003C/span>\u003Cspan leaf=\"\">'http://localhost:9090/api/v1/query?query=node_cpu_seconds_total'\u003C/span>\u003Cspan leaf=\"\">&nbsp;| jq&nbsp;\u003C/span>\u003Cspan leaf=\"\">'.data.result | length'\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 2. 测试表达式\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -s&nbsp;\u003C/span>\u003Cspan leaf=\"\">'http://localhost:9090/api/v1/query?query=rate(node_cpu_seconds_total[5m])'\u003C/span>\u003Cspan leaf=\"\">&nbsp;| jq&nbsp;\u003C/span>\u003Cspan leaf=\"\">'.data.result | length'\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Cp class=\"js_darkmode__80\" style=\"text-align: justify;\">\u003Cspan>解决方案\u003C/span>\u003Cspan leaf=\"\">：\u003C/span>\u003C/p>\u003Col class=\"list-paddingleft-1 js_darkmode__81\" style=\"text-align: justify;\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">1. 确认源指标正在被采集\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">2. 检查标签选择器是否匹配\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">3. 验证时间窗口是否合理（数据量是否足够）\u003C/span>\u003C/section>\u003C/li>\u003C/ol>\u003Cp class=\"js_darkmode__82\" style=\"text-align: justify;\">\u003Cspan>问题二：Recording Rules 计算结果与预期不符\u003C/span>\u003C/p>\u003Cpre class=\"js_darkmode__bg__71 js_darkmode__83\" style=\"text-align: justify;\">\u003Ccode>\u003Cspan leaf=\"\"># 诊断命令\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 对比 Recording Rule 结果与手动查询结果\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -s&nbsp;\u003C/span>\u003Cspan leaf=\"\">'http://localhost:9090/api/v1/query?query=instance:node_cpu_utilization:avg5m{instance=\"node1:9100\"}'\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -s&nbsp;\u003C/span>\u003Cspan leaf=\"\">'http://localhost:9090/api/v1/query?query=1-avg(rate(node_cpu_seconds_total{instance=\"node1:9100\",mode=\"idle\"}[5m]))'\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Cp class=\"js_darkmode__84\" style=\"text-align: justify;\">\u003Cspan>解决方案\u003C/span>\u003Cspan leaf=\"\">：检查 by 子句是否包含了所有需要保留的标签\u003C/span>\u003C/p>\u003Cp class=\"js_darkmode__85\" style=\"text-align: justify;\">\u003Cspan>问题三：规则评估超时\u003C/span>\u003C/p>\u003Cul class=\"list-paddingleft-1 js_darkmode__86\" style=\"text-align: justify;\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;\u003C/span>\u003Cspan>症状\u003C/span>\u003Cspan leaf=\"\">：Prometheus 日志出现 “rule group took longer than interval”\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;\u003C/span>\u003Cspan>排查\u003C/span>\u003Cspan leaf=\"\">：检查规则复杂度和数据量\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;\u003C/span>\u003Cspan>解决\u003C/span>\u003Cspan leaf=\"\">：拆分规则组、增大 interval、优化表达式\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Ch4 class=\"js_darkmode__bg__72\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">◆ 5.1.3 调试模式\u003C/span>\u003C/h4>\u003Cpre class=\"js_darkmode__bg__73 js_darkmode__87\" style=\"text-align: justify;\">\u003Ccode>\u003Cspan leaf=\"\"># 开启 Prometheus 查询日志\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 在启动参数中添加\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">--query.log-queries\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 查看慢查询\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">grep&nbsp;\u003C/span>\u003Cspan leaf=\"\">\"slow\"\u003C/span>\u003Cspan leaf=\"\">&nbsp;/var/log/prometheus/query.log\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 使用 Prometheus 内置指标分析规则评估\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">prometheus_rule_evaluation_duration_seconds\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">prometheus_rule_group_last_duration_seconds\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Ch3 class=\"js_darkmode__bg__74\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">5.2 性能监控\u003C/span>\u003C/h3>\u003Ch4 class=\"js_darkmode__bg__75\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">◆ 5.2.1 关键指标监控\u003C/span>\u003C/h4>\u003Cpre class=\"js_darkmode__bg__76 js_darkmode__88\" style=\"text-align: justify;\">\u003Ccode>\u003Cspan leaf=\"\"># Recording Rules 评估耗时\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">histogram_quantile(0.99, rate(prometheus_rule_evaluation_duration_seconds_bucket[5m]))\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 规则评估失败次数\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">rate(prometheus_rule_evaluation_failures_total[5m])\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 规则产生的时序数量\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">prometheus_tsdb_head_series\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 内存使用\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">process_resident_memory_bytes{job=\u003C/span>\u003Cspan leaf=\"\">\"prometheus\"\u003C/span>\u003Cspan leaf=\"\">}\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Ch4 class=\"js_darkmode__bg__77\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">◆ 5.2.2 监控指标说明\u003C/span>\u003C/h4>\u003Ctable class=\"js_darkmode__89 layui-table\" style=\"text-align: justify;\">\u003Cthead>\u003Ctr>\u003Cth class=\"js_darkmode__bg__78\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">指标名称\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__bg__79\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">正常范围\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__bg__80\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">告警阈值\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__bg__81\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">说明\u003C/span>\u003C/section>\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"js_darkmode__90\">\u003Csection>\u003Cspan leaf=\"\">rule_evaluation_duration_seconds\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__91\">\u003Csection>\u003Cspan leaf=\"\">&lt; 1s\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__92\">\u003Csection>\u003Cspan leaf=\"\">&gt; 5s\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__93\">\u003Csection>\u003Cspan leaf=\"\">规则评估耗时，过长说明规则复杂或数据量大\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__94\">\u003Csection>\u003Cspan leaf=\"\">rule_evaluation_failures_total\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__95\">\u003Csection>\u003Cspan leaf=\"\">0\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__96\">\u003Csection>\u003Cspan leaf=\"\">&gt; 0\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__97\">\u003Csection>\u003Cspan leaf=\"\">规则评估失败，需要检查表达式\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__98\">\u003Csection>\u003Cspan leaf=\"\">tsdb_head_series\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__99\">\u003Csection>\u003Cspan leaf=\"\">视环境而定\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__100\">\u003Csection>\u003Cspan leaf=\"\">增长率 &gt; 10%/h\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__101\">\u003Csection>\u003Cspan leaf=\"\">时序数量，Recording Rules 会增加时序\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__102\">\u003Csection>\u003Cspan leaf=\"\">process_resident_memory_bytes\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__103\">\u003Csection>\u003Cspan leaf=\"\">&lt; 80% 配置内存\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__104\">\u003Csection>\u003Cspan leaf=\"\">&gt; 90%\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__105\">\u003Csection>\u003Cspan leaf=\"\">内存使用，时序增加会占用更多内存\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003Ch4 class=\"js_darkmode__bg__82\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">◆ 5.2.3 Recording Rules 自身监控\u003C/span>\u003C/h4>\u003Cpre class=\"js_darkmode__bg__83 js_darkmode__106\" style=\"text-align: justify;\">\u003Ccode>\u003Cspan leaf=\"\"># 监控 Recording Rules 健康状态\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">groups:\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">-\u003C/span>\u003Cspan leaf=\"\">name:\u003C/span>\u003Cspan leaf=\"\">recording_rules_health\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">rules:\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">-\u003C/span>\u003Cspan leaf=\"\">alert:\u003C/span>\u003Cspan leaf=\"\">RecordingRuleEvaluationSlow\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">expr:\u003C/span>\u003Cspan leaf=\"\">|\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; prometheus_rule_group_last_duration_seconds &gt;\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; prometheus_rule_group_interval_seconds\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">for:\u003C/span>\u003Cspan leaf=\"\">5m\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">labels:\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">severity:\u003C/span>\u003Cspan leaf=\"\">warning\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">annotations:\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">summary:\u003C/span>\u003Cspan leaf=\"\">\"Recording Rule 组&nbsp;\u003C/span>\u003Cspan leaf=\"\">{{ $labels.rule_group }}\u003C/span>\u003Cspan leaf=\"\">&nbsp;评估超时\"\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">-\u003C/span>\u003Cspan leaf=\"\">alert:\u003C/span>\u003Cspan leaf=\"\">RecordingRuleEvaluationFailure\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">expr:\u003C/span>\u003Cspan leaf=\"\">rate(prometheus_rule_evaluation_failures_total[5m])\u003C/span>\u003Cspan leaf=\"\">&gt;\u003C/span>\u003Cspan leaf=\"\">0\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">for:\u003C/span>\u003Cspan leaf=\"\">5m\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">labels:\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">severity:\u003C/span>\u003Cspan leaf=\"\">critical\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">annotations:\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">summary:\u003C/span>\u003Cspan leaf=\"\">\"Recording Rule 评估失败\"\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Ch3 class=\"js_darkmode__bg__84\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">5.3 备份与恢复\u003C/span>\u003C/h3>\u003Ch4 class=\"js_darkmode__bg__85\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">◆ 5.3.1 配置备份\u003C/span>\u003C/h4>\u003Cpre class=\"js_darkmode__bg__86 js_darkmode__107\" style=\"text-align: justify;\">\u003Ccode>\u003Cspan leaf=\"\">#!/bin/bash\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># Recording Rules 配置备份脚本\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 文件名：backup_recording_rules.sh\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">BACKUP_DIR=\u003C/span>\u003Cspan leaf=\"\">\"/backup/prometheus/rules\"\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">PROMETHEUS_RULES_DIR=\u003C/span>\u003Cspan leaf=\"\">\"/etc/prometheus/rules\"\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">DATE=$(\u003C/span>\u003Cspan leaf=\"\">date\u003C/span>\u003Cspan leaf=\"\">&nbsp;+%Y%m%d_%H%M%S)\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">mkdir\u003C/span>\u003Cspan leaf=\"\">&nbsp;-p&nbsp;\u003C/span>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 备份所有规则文件\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">tar -czvf&nbsp;\u003C/span>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003Cspan leaf=\"\">/rules_\u003C/span>\u003Cspan leaf=\"\">${DATE}\u003C/span>\u003Cspan leaf=\"\">.tar.gz -C&nbsp;\u003C/span>\u003Cspan leaf=\"\">${PROMETHEUS_RULES_DIR}\u003C/span>\u003Cspan leaf=\"\">&nbsp;.\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 保留最近30天的备份\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">find&nbsp;\u003C/span>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003Cspan leaf=\"\">&nbsp;-name&nbsp;\u003C/span>\u003Cspan leaf=\"\">\"rules_*.tar.gz\"\u003C/span>\u003Cspan leaf=\"\">&nbsp;-mtime +30 -delete\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 验证备份\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">tar -tzf&nbsp;\u003C/span>\u003Cspan leaf=\"\">${BACKUP_DIR}\u003C/span>\u003Cspan leaf=\"\">/rules_\u003C/span>\u003Cspan leaf=\"\">${DATE}\u003C/span>\u003Cspan leaf=\"\">.tar.gz\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Ch4 class=\"js_darkmode__bg__87\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">◆ 5.3.2 恢复流程\u003C/span>\u003C/h4>\u003Col class=\"list-paddingleft-1 js_darkmode__108\" style=\"text-align: justify;\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">1.&nbsp;\u003C/span>\u003Cspan>停止 Prometheus\u003C/span>\u003Cspan leaf=\"\">：\u003C/span>\u003Ccode>\u003Cspan leaf=\"\">systemctl stop prometheus\u003C/span>\u003C/code>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">2.&nbsp;\u003C/span>\u003Cspan>恢复配置\u003C/span>\u003Cspan leaf=\"\">：\u003C/span>\u003Ccode>\u003Cspan leaf=\"\">tar -xzvf /backup/prometheus/rules/rules_xxx.tar.gz -C /etc/prometheus/rules/\u003C/span>\u003C/code>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">3.&nbsp;\u003C/span>\u003Cspan>验证配置\u003C/span>\u003Cspan leaf=\"\">：\u003C/span>\u003Ccode>\u003Cspan leaf=\"\">promtool check rules /etc/prometheus/rules/*.yml\u003C/span>\u003C/code>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">4.&nbsp;\u003C/span>\u003Cspan>启动服务\u003C/span>\u003Cspan leaf=\"\">：\u003C/span>\u003Ccode>\u003Cspan leaf=\"\">systemctl start prometheus\u003C/span>\u003C/code>\u003C/section>\u003C/li>\u003C/ol>\u003Chr class=\"js_darkmode__bg__88 js_darkmode__109\" style=\"text-align: justify;\">\u003Ch2 class=\"js_darkmode__bg__89\" style=\"text-align: center;\">\u003Cspan leaf=\"\">六、总结\u003C/span>\u003C/h2>\u003Ch3 class=\"js_darkmode__bg__90\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">6.1 技术要点回顾\u003C/span>\u003C/h3>\u003Cul class=\"list-paddingleft-1 js_darkmode__110\" style=\"text-align: justify;\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;\u003C/span>\u003Cspan>要点一\u003C/span>\u003Cspan leaf=\"\">：Recording Rules 的核心价值在于预计算和聚合，通过时间窗口平滑消除瞬时抖动，通过层级聚合实现告警收敛\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;\u003C/span>\u003Cspan>要点二\u003C/span>\u003Cspan leaf=\"\">：命名规范至关重要，采用&nbsp;\u003C/span>\u003Ccode>\u003Cspan leaf=\"\">level:metric_name:aggregation\u003C/span>\u003C/code>\u003Cspan leaf=\"\">&nbsp;格式，便于理解和维护\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;\u003C/span>\u003Cspan>要点三\u003C/span>\u003Cspan leaf=\"\">：分层设计是大规模环境的最佳实践，从原始指标到基础设施指标到业务指标，逐层抽象\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;\u003C/span>\u003Cspan>要点四\u003C/span>\u003Cspan leaf=\"\">：Recording Rules 需要持续监控和优化，关注评估耗时、失败次数、时序增长等指标\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Ch3 class=\"js_darkmode__bg__91\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">6.2 进阶学习方向\u003C/span>\u003C/h3>\u003Col class=\"list-paddingleft-1 js_darkmode__111\" style=\"text-align: justify;\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">1.&nbsp;\u003C/span>\u003Cspan>告警分级与智能降噪\u003C/span>\u003Cspan leaf=\"\">：结合机器学习算法实现异常检测，替代固定阈值\u003C/span>\u003C/section>\u003C/li>\u003Cul class=\"list-paddingleft-1 js_darkmode__112\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">• 学习资源：Prometheus 社区的 anomaly detection proposals\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">• 实践建议：从简单的动态基线开始，逐步引入更复杂的算法\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">2.&nbsp;\u003C/span>\u003Cspan>大规模 Prometheus 架构\u003C/span>\u003Cspan leaf=\"\">：联邦集群、远程存储、Thanos/Cortex\u003C/span>\u003C/section>\u003C/li>\u003Cul class=\"list-paddingleft-1 js_darkmode__113\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">• 学习资源：Thanos 官方文档、CNCF 相关演讲\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">• 实践建议：在测试环境搭建联邦架构，理解 Recording Rules 在不同层级的分工\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">3.&nbsp;\u003C/span>\u003Cspan>PromQL 高级技巧\u003C/span>\u003Cspan leaf=\"\">：子查询、偏移量、复杂聚合\u003C/span>\u003C/section>\u003C/li>\u003Cul class=\"list-paddingleft-1 js_darkmode__114\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">• 学习资源：PromLabs 博客、Prometheus 官方文档\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">• 实践建议：多在 Prometheus UI 练习，理解不同函数的计算逻辑\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003C/ol>\u003Ch3 class=\"js_darkmode__bg__92\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">6.3 参考资料\u003C/span>\u003C/h3>\u003Cul class=\"list-paddingleft-1 js_darkmode__115\" style=\"text-align: justify;\">\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;Prometheus Recording Rules 官方文档&nbsp;- 权威参考\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;Robust Perception 博客&nbsp;- Brian Brazil（Prometheus 核心开发者）的博客\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;PromLabs 博客&nbsp;- 深入的 PromQL 教程\u003C/span>\u003C/section>\u003C/li>\u003Cli>\u003Csection>\u003Cspan leaf=\"\">•&nbsp;Awesome Prometheus Alerts&nbsp;- 社区维护的告警规则集合\u003C/span>\u003C/section>\u003C/li>\u003C/ul>\u003Chr class=\"js_darkmode__bg__93 js_darkmode__116\" style=\"text-align: justify;\">\u003Ch2 class=\"js_darkmode__bg__94\" style=\"text-align: center;\">\u003Cspan leaf=\"\">附录\u003C/span>\u003C/h2>\u003Ch3 class=\"js_darkmode__bg__95\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">A. Recording Rules 命令速查表\u003C/span>\u003C/h3>\u003Cpre class=\"js_darkmode__bg__96 js_darkmode__117\" style=\"text-align: justify;\">\u003Ccode>\u003Cspan leaf=\"\"># 检查规则语法\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">promtool check rules /etc/prometheus/rules/*.yml\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 热加载配置\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -X POST http://localhost:9090/-/reload\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 查看规则状态\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -s http://localhost:9090/api/v1/rules | jq&nbsp;\u003C/span>\u003Cspan leaf=\"\">'.data.groups[].rules[] | {record, health}'\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 测试表达式\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -s&nbsp;\u003C/span>\u003Cspan leaf=\"\">'http://localhost:9090/api/v1/query?query=YOUR_EXPRESSION'\u003C/span>\u003Cspan leaf=\"\">&nbsp;| jq\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\"># 查看规则评估指标\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003Cspan leaf=\"\">curl -s&nbsp;\u003C/span>\u003Cspan leaf=\"\">'http://localhost:9090/api/v1/query?query=prometheus_rule_evaluation_duration_seconds'\u003C/span>\u003Cspan leaf=\"\">\u003Cbr>\u003C/span>\u003C/code>\u003C/pre>\u003Ch3 class=\"js_darkmode__bg__97\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">B. 常用聚合函数说明\u003C/span>\u003C/h3>\u003Ctable class=\"js_darkmode__118 layui-table\" style=\"text-align: justify;\">\u003Cthead>\u003Ctr>\u003Cth class=\"js_darkmode__bg__98\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">函数\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__bg__99\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">用途\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__bg__100\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">示例\u003C/span>\u003C/section>\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"js_darkmode__119\">\u003Csection>\u003Cspan leaf=\"\">avg_over_time\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__120\">\u003Csection>\u003Cspan leaf=\"\">时间窗口内平均值，平滑抖动\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__121\">\u003Csection>\u003Cspan leaf=\"\">avg_over_time(cpu[5m])\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__122\">\u003Csection>\u003Cspan leaf=\"\">max_over_time\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__123\">\u003Csection>\u003Cspan leaf=\"\">时间窗口内最大值，捕获峰值\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__124\">\u003Csection>\u003Cspan leaf=\"\">max_over_time(cpu[15m])\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__125\">\u003Csection>\u003Cspan leaf=\"\">min_over_time\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__126\">\u003Csection>\u003Cspan leaf=\"\">时间窗口内最小值\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__127\">\u003Csection>\u003Cspan leaf=\"\">min_over_time(available[5m])\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__128\">\u003Csection>\u003Cspan leaf=\"\">rate\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__129\">\u003Csection>\u003Cspan leaf=\"\">计数器每秒增长率\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__130\">\u003Csection>\u003Cspan leaf=\"\">rate(requests_total[5m])\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__131\">\u003Csection>\u003Cspan leaf=\"\">increase\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__132\">\u003Csection>\u003Cspan leaf=\"\">时间窗口内增量\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__133\">\u003Csection>\u003Cspan leaf=\"\">increase(restarts[1h])\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__134\">\u003Csection>\u003Cspan leaf=\"\">histogram_quantile\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__135\">\u003Csection>\u003Cspan leaf=\"\">直方图分位数\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__136\">\u003Csection>\u003Cspan leaf=\"\">histogram_quantile(0.99, rate(bucket[5m]))\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__137\">\u003Csection>\u003Cspan leaf=\"\">clamp_max/clamp_min\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__138\">\u003Csection>\u003Cspan leaf=\"\">限制值范围\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__139\">\u003Csection>\u003Cspan leaf=\"\">clamp_max(ratio, 1)\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003Ch3 class=\"js_darkmode__bg__101\" style=\"text-align: justify;\">\u003Cspan leaf=\"\">C. 术语表\u003C/span>\u003C/h3>\u003Ctable class=\"js_darkmode__140 layui-table\" style=\"text-align: justify;\">\u003Cthead>\u003Ctr>\u003Cth class=\"js_darkmode__bg__102\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">术语\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__bg__103\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">英文\u003C/span>\u003C/section>\u003C/th>\u003Cth class=\"js_darkmode__bg__104\" style=\"text-align: left;\">\u003Csection>\u003Cspan leaf=\"\">解释\u003C/span>\u003C/section>\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd class=\"js_darkmode__141\">\u003Csection>\u003Cspan leaf=\"\">Recording Rules\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__142\">\u003Csection>\u003Cspan leaf=\"\">Recording Rules\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__143\">\u003Csection>\u003Cspan leaf=\"\">Prometheus 的预计算规则，将复杂查询结果存储为新时间序列\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__144\">\u003Csection>\u003Cspan leaf=\"\">告警噪声\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__145\">\u003Csection>\u003Cspan leaf=\"\">Alert Noise\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__146\">\u003Csection>\u003Cspan leaf=\"\">非关键性、重复性或误报的告警，会导致告警疲劳\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__147\">\u003Csection>\u003Cspan leaf=\"\">时间窗口\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__148\">\u003Csection>\u003Cspan leaf=\"\">Time Window\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__149\">\u003Csection>\u003Cspan leaf=\"\">PromQL 中用方括号指定的时间范围，如 [5m]\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__150\">\u003Csection>\u003Cspan leaf=\"\">基数\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__151\">\u003Csection>\u003Cspan leaf=\"\">Cardinality\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__152\">\u003Csection>\u003Cspan leaf=\"\">时间序列的数量，由指标名和标签组合决定\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd class=\"js_darkmode__153\">\u003Csection>\u003Cspan leaf=\"\">告警收敛\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__154\">\u003Csection>\u003Cspan leaf=\"\">Alert Aggregation\u003C/span>\u003C/section>\u003C/td>\u003Ctd class=\"js_darkmode__155\">\u003Csection>\u003Cspan leaf=\"\">将多个相关告警合并为一个，减少告警数量\u003C/span>\u003C/section>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>","## 五、故障排查和监控\n\n### 5.1 故障排查\n\n#### ◆ 5.1.1 日志查看\n\n```\n# 查看 Prometheus 日志中的规则评估错误journalctl -u prometheus | grep -i \"rule\" | tail -50# 查看规则评估耗时curl -s http://localhost:9090/api/v1/rules | jq '.data.groups[].rules[] | select(.health != \"ok\")'# Kubernetes 环境kubectl logs -n monitoring prometheus-server-0 | grep -i \"recording\"\n```\n\n#### ◆ 5.1.2 常见问题排查\n\n问题一：Recording Rule 显示 “no data”\n\n```\n# 诊断命令# 1. 确认源指标存在curl -s 'http://localhost:9090/api/v1/query?query=node_cpu_seconds_total' | jq '.data.result | length'# 2. 测试表达式curl -s 'http://localhost:9090/api/v1/query?query=rate(node_cpu_seconds_total[5m])' | jq '.data.result | length'\n```\n\n解决方案\n\n：\n\n1. 1. 确认源指标正在被采集\n2. 2. 检查标签选择器是否匹配\n3. 3. 验证时间窗口是否合理（数据量是否足够）\n\n问题二：Recording Rules 计算结果与预期不符\n\n```\n# 诊断命令# 对比 Recording Rule 结果与手动查询结果curl -s 'http://localhost:9090/api/v1/query?query=instance:node_cpu_utilization:avg5m{instance=\"node1:9100\"}'curl -s 'http://localhost:9090/api/v1/query?query=1-avg(rate(node_cpu_seconds_total{instance=\"node1:9100\",mode=\"idle\"}[5m]))'\n```\n\n解决方案\n\n：检查 by 子句是否包含了所有需要保留的标签\n\n问题三：规则评估超时\n\n- • 症状：Prometheus 日志出现 “rule group took longer than interval”\n- • 排查：检查规则复杂度和数据量\n- • 解决：拆分规则组、增大 interval、优化表达式\n\n#### ◆ 5.1.3 调试模式\n\n```\n# 开启 Prometheus 查询日志# 在启动参数中添加--query.log-queries# 查看慢查询grep \"slow\" /var/log/prometheus/query.log# 使用 Prometheus 内置指标分析规则评估prometheus_rule_evaluation_duration_secondsprometheus_rule_group_last_duration_seconds\n```\n\n### 5.2 性能监控\n\n#### ◆ 5.2.1 关键指标监控\n\n```\n# Recording Rules 评估耗时histogram_quantile(0.99, rate(prometheus_rule_evaluation_duration_seconds_bucket[5m]))# 规则评估失败次数rate(prometheus_rule_evaluation_failures_total[5m])# 规则产生的时序数量prometheus_tsdb_head_series# 内存使用process_resident_memory_bytes{job=\"prometheus\"}\n```\n\n#### ◆ 5.2.2 监控指标说明\n\n指标名称\n\n正常范围\n\n告警阈值\n\n说明\n\nrule_evaluation_duration_seconds\n\n\u003C 1s\n\n> 5s\n\n规则评估耗时，过长说明规则复杂或数据量大\n\nrule_evaluation_failures_total\n\n0\n\n> 0\n\n规则评估失败，需要检查表达式\n\ntsdb_head_series\n\n视环境而定\n\n增长率 > 10%/h\n\n时序数量，Recording Rules 会增加时序\n\nprocess_resident_memory_bytes\n\n\u003C 80% 配置内存\n\n> 90%\n\n内存使用，时序增加会占用更多内存\n\n#### ◆ 5.2.3 Recording Rules 自身监控\n\n```\n# 监控 Recording Rules 健康状态groups:-name:recording_rules_healthrules:-alert:RecordingRuleEvaluationSlowexpr:|          prometheus_rule_group_last_duration_seconds >          prometheus_rule_group_interval_secondsfor:5mlabels:severity:warningannotations:summary:\"Recording Rule 组 {{ $labels.rule_group }} 评估超时\"-alert:RecordingRuleEvaluationFailureexpr:rate(prometheus_rule_evaluation_failures_total[5m])>0for:5mlabels:severity:criticalannotations:summary:\"Recording Rule 评估失败\"\n```\n\n### 5.3 备份与恢复\n\n#### ◆ 5.3.1 配置备份\n\n```\n#!/bin/bash# Recording Rules 配置备份脚本# 文件名：backup_recording_rules.shBACKUP_DIR=\"/backup/prometheus/rules\"PROMETHEUS_RULES_DIR=\"/etc/prometheus/rules\"DATE=$(date +%Y%m%d_%H%M%S)mkdir -p ${BACKUP_DIR}# 备份所有规则文件tar -czvf ${BACKUP_DIR}/rules_${DATE}.tar.gz -C ${PROMETHEUS_RULES_DIR} .# 保留最近30天的备份find ${BACKUP_DIR} -name \"rules_*.tar.gz\" -mtime +30 -delete# 验证备份tar -tzf ${BACKUP_DIR}/rules_${DATE}.tar.gz\n```\n\n#### ◆ 5.3.2 恢复流程\n\n1. 1. 停止 Prometheus：systemctl stop prometheus\n2. 2. 恢复配置：tar -xzvf /backup/prometheus/rules/rules_xxx.tar.gz -C /etc/prometheus/rules/\n3. 3. 验证配置：promtool check rules /etc/prometheus/rules/*.yml\n4. 4. 启动服务：systemctl start prometheus\n\n---\n\n## 六、总结\n\n### 6.1 技术要点回顾\n\n- • 要点一：Recording Rules 的核心价值在于预计算和聚合，通过时间窗口平滑消除瞬时抖动，通过层级聚合实现告警收敛\n- • 要点二：命名规范至关重要，采用 level:metric_name:aggregation 格式，便于理解和维护\n- • 要点三：分层设计是大规模环境的最佳实践，从原始指标到基础设施指标到业务指标，逐层抽象\n- • 要点四：Recording Rules 需要持续监控和优化，关注评估耗时、失败次数、时序增长等指标\n\n### 6.2 进阶学习方向\n\n1. 1. 告警分级与智能降噪：结合机器学习算法实现异常检测，替代固定阈值\n2. 2. 大规模 Prometheus 架构：联邦集群、远程存储、Thanos/Cortex\n3. 3. PromQL 高级技巧：子查询、偏移量、复杂聚合\n\n### 6.3 参考资料\n\n- • Prometheus Recording Rules 官方文档 - 权威参考\n- • Robust Perception 博客 - Brian Brazil（Prometheus 核心开发者）的博客\n- • PromLabs 博客 - 深入的 PromQL 教程\n- • Awesome Prometheus Alerts - 社区维护的告警规则集合\n\n---\n\n## 附录\n\n### A. Recording Rules 命令速查表\n\n```\n# 检查规则语法promtool check rules /etc/prometheus/rules/*.yml# 热加载配置curl -X POST http://localhost:9090/-/reload# 查看规则状态curl -s http://localhost:9090/api/v1/rules | jq '.data.groups[].rules[] | {record, health}'# 测试表达式curl -s 'http://localhost:9090/api/v1/query?query=YOUR_EXPRESSION' | jq# 查看规则评估指标curl -s 'http://localhost:9090/api/v1/query?query=prometheus_rule_evaluation_duration_seconds'\n```\n\n### B. 常用聚合函数说明\n\n函数\n\n用途\n\n示例\n\navg_over_time\n\n时间窗口内平均值，平滑抖动\n\navg_over_time(cpu[5m])\n\nmax_over_time\n\n时间窗口内最大值，捕获峰值\n\nmax_over_time(cpu[15m])\n\nmin_over_time\n\n时间窗口内最小值\n\nmin_over_time(available[5m])\n\nrate\n\n计数器每秒增长率\n\nrate(requests_total[5m])\n\nincrease\n\n时间窗口内增量\n\nincrease(restarts[1h])\n\nhistogram_quantile\n\n直方图分位数\n\nhistogram_quantile(0.99, rate(bucket[5m]))\n\nclamp_max/clamp_min\n\n限制值范围\n\nclamp_max(ratio, 1)\n\n### C. 术语表\n\n术语\n\n英文\n\n解释\n\nRecording Rules\n\nRecording Rules\n\nPrometheus 的预计算规则，将复杂查询结果存储为新时间序列\n\n告警噪声\n\nAlert Noise\n\n非关键性、重复性或误报的告警，会导致告警疲劳\n\n时间窗口\n\nTime Window\n\nPromQL 中用方括号指定的时间范围，如 [5m]\n\n基数\n\nCardinality\n\n时间序列的数量，由指标名和标签组合决定\n\n告警收敛\n\nAlert Aggregation\n\n将多个相关告警合并为一个，减少告警数量","/article/120",282,"2026-01-06 11:53:50","2026-01-06 11:54:33",[155,156,157],{"id":39,"name":81,"url":82},{"id":44,"name":23,"url":59},{"id":145,"name":146,"url":150},{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"title":160,"url":161},"Nginx性能调优18条黄金法则：支撑10万并发的配置模板","/article/122",{"title":163,"url":164},"用 Prometheus Recording Rules 把告警噪声砍掉 70%(一)","/article/119",[166,167,168,169],{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},{"description":147,"keywords":6,"title":146},[172,181,190,199,208,217,226,235,244,252],{"id":173,"category_id":44,"title":174,"keywords":175,"description":176,"image_url":6,"url":177,"hits":178,"is_recommend":73,"is_top":73,"create_time":179,"update_time":180},101,"开启 HTTPS 并获得 ssllabs 满分的过程","开启,获得,满分,过程","准备工作确保你要申请证书的域名都解析到了这台服务器上，且能直接通过域名访问。使用官网推荐的CertBot获取证书。在CertBot官网选择一下环境(比如我选Nginx on Ubuntu 17.04)就可以看到入门教程了。安装CertBot12345apt-get updateapt-get install software-properties-commonadd-apt-repository ppa:certbot/certbotapt-get updateapt-get","/article/101",18546,"2019-11-26 16:12:11","2019-11-26 16:23:16",{"id":182,"category_id":44,"title":183,"keywords":184,"description":185,"image_url":6,"url":186,"hits":187,"is_recommend":73,"is_top":73,"create_time":188,"update_time":189},113,"在CentOS 7中添加命令自动补全功能","命令自动补全,centos","在CentOS 7中，默认情况下并不会安装命令补全包，需要手动安装才能使用命令补全功能。以下是在CentOS 7中安装命令补全包的方法：1. bash-completion：这是一个针对Bash shell的命令补全软件包，可以提供对系统命令、用户自定义命令和文件路径的自动补全功能。可以通过以下命令安装：```sudo yum install bash-completion```安装完成后，需要在/etc/profile配置文件中添加以下内容：```if [ -f /etc/bash_compl","/article/113",14948,"2023-05-16 10:54:01","2023-05-16 10:57:28",{"id":191,"category_id":44,"title":192,"keywords":193,"description":194,"image_url":6,"url":195,"hits":196,"is_recommend":53,"is_top":73,"create_time":197,"update_time":198},94,"Centos7 安装 openvas ","openvas,开放式漏洞评估系统，installing openvas centos-7","一、描述OpenVAS，即开放式漏洞评估系统，是一个用于评估目标漏洞的杰出框架。功能十分强大，最重要的是，它是“开源”的——就是免费的意思啦～它与著名的Nessus“本是同根生”，在Nessus商业化之后仍然坚持开源，号称“当前最好用的开源漏洞扫描工具”。最新版的Kali Linux(kali 3.0)不再自带OpenVAS了，所以我们要自己部署OpenVAS漏洞检测系统。其核心部件是一个服务器，包括一套网络漏洞测试程序，可以检测远程系统和应用程序中的安全问题。但是它的最常用用途是检测目标网络或","/article/94",14690,"2019-01-14 17:43:42","2019-01-14 18:16:36",{"id":200,"category_id":44,"title":201,"keywords":202,"description":203,"image_url":6,"url":204,"hits":205,"is_recommend":73,"is_top":73,"create_time":206,"update_time":207},99,"Centos7 利用iptables防止nmap工具防端口扫描","iptables","一、Nmap介绍       Nmap（NetworkMapper）是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口，还能使用TCP/IP协议栈特征探测远程主机的操作系统类型。nmap支持很多扫描技术，例如：UDP、TCPconnect()、TCPSYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(XmasTree)、SYN扫描和null扫描。Nmap最初是用于Unix系统","/article/99",14415,"2019-07-09 21:27:00","2019-07-09 21:57:53",{"id":209,"category_id":46,"title":210,"keywords":211,"description":212,"image_url":6,"url":213,"hits":214,"is_recommend":73,"is_top":73,"create_time":215,"update_time":216},61,"Docker 推荐的启动方式","推荐,启动,方式","# cat DockerfileFROM openjdk:8-alpineWORKDIR /ADD ./target/*.jar app.jarEXPOSE 9999COPY docker-entrypoint.sh /RUN chmod +x /docker-entrypoint.shENTRYPOINT [“/docker-entrypoint.sh”]CMD [“java”,”-server”,”-Duser.timezone=GMT+08″,”-jar”,”/app.jar”]# cat","/article/61",14347,"2018-10-22 13:55:47","2018-10-22 13:56:10",{"id":218,"category_id":44,"title":219,"keywords":220,"description":221,"image_url":6,"url":222,"hits":223,"is_recommend":73,"is_top":73,"create_time":224,"update_time":225},107,"Acme.sh 给 SSL 证书自动续期失败的解决方法","HTTP/1.1 200 OK,Server: Bayou Tech Web Srv 1.0,Content-Encoding: none,Content-Length: 5,Content-Type","一、Acme.sh 自动续期失败的症状问题描述如下，续期的时候，提示如下错误：root@dc:~# \"/data/acme.sh\"/acme.sh --cron --home \"/data/acme.sh\" &gt; /dev/null[Sun Nov 10 23:52:17 CST 2020] Error, can not get domain token entry example.com[Sun Nov 10 23:52:17 CST 2020] Please check log file","/article/107",12618,"2021-09-03 10:44:18","2021-09-03 10:46:23",{"id":227,"category_id":44,"title":228,"keywords":229,"description":230,"image_url":6,"url":231,"hits":232,"is_recommend":53,"is_top":73,"create_time":233,"update_time":234},93,"ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台","Filebeat,Kafka","一、说明1.Filebeat是一个日志文件托运工具，在你的服务器上安装客户端后，filebeat会监控日志目录或者指定的日志文件，追踪读取这些文件（追踪文件的变化，不停的读）2.Kafka是一种高吞吐量的分布式发布订阅消息系统，它可以处理消费者规模的网站中的所有动作流数据3.Logstash是一根具备实时数据传输能力的管道，负责将数据信息从管道的输入端传输到管道的输出端；与此同时这根管道还可以让你根据自己的需求在中间加上滤网，Logstash提供里很多功能强大的滤网以满足你的各种应用场景4.El","/article/93",12190,"2018-12-24 16:40:08","2018-12-26 11:53:38",{"id":236,"category_id":46,"title":237,"keywords":238,"description":239,"image_url":6,"url":240,"hits":241,"is_recommend":53,"is_top":73,"create_time":242,"update_time":243},81,"kubernetes 1.12.1 高可用安装之部署Dashboard","安装Dashboard","创建Dashboard需要CoreDNS部署成功之后再安装Dashboard。[root@master01 ~]# wget https://zhl123.com/download/k8s/Dashboard.tgz[root@master01 ~]# tar xf Dashboard.tgz[root@master01 ~]# kubectl create -f Dashboard/[root@master01 Dashboard]# kubectl get svc -n kube-syste","/article/81",12037,"2018-10-26 09:54:41","2018-10-26 16:59:19",{"id":245,"category_id":44,"title":246,"keywords":6,"description":247,"image_url":6,"url":248,"hits":249,"is_recommend":73,"is_top":73,"create_time":250,"update_time":251},100,"用 Nginx 给 Cookie 增加 Secure 和 HttpOnly","在 nginx 的 location 中配置12# 只支持 proxy 模式下设置，SameSite 不需要可删除，如果想更安全可以把 SameSite 设置为 Strictproxy_cookie_path / \"/; httponly; secure; SameSite=Lax\";示例1234567891011121314151617181920212223242526server {    listen 443 ssl http2;    server_name www.zhl123.cn","/article/100",11848,"2019-11-26 16:10:57","2019-11-26 16:23:45",{"id":253,"category_id":44,"title":254,"keywords":255,"description":256,"image_url":6,"url":257,"hits":258,"is_recommend":73,"is_top":73,"create_time":259,"update_time":260},41,"Tomcat 安全配置与性能优化","tomcat，性能优化","1. JVM&nbsp;1.1. 使用 Server JRE 替代JDK。&nbsp;服务器上不要安装JDK，请使用 Server JRE. 服务器上根本不需要编译器，代码应该在Release服务器上完成编译打包工作。&nbsp;理由：一旦服务器被控制，可以防止在其服务器上编译其他恶意代码并植入到你的程序中。&nbsp;1.2. JAVA_OPTS&nbsp;export JAVA_OPTS=\"-server -Xms512m -Xmx4096m &nbsp;-XX:PermSize=64M -","/article/41",11623,"2016-09-01 17:06:36","2018-10-18 17:06:58",[262,270,276,284,285,291,299,307,316,325],{"id":263,"category_id":40,"title":264,"keywords":6,"description":265,"image_url":6,"url":266,"hits":267,"is_recommend":73,"is_top":73,"create_time":268,"update_time":269},123,"Agent Skill 精选集：最值得收藏的 Agent Skills Top 10","如果你正在用 Claude Code 或 Codex，一定对&nbsp;Agent Skills&nbsp;不陌生。通过安装&nbsp;Agent Skills，你可以让这些 AI 助手变得更强——不用每次都解释你的需求，它们直接就知道该怎么做。最近有人在 GitHub 上做了一个采样调查，统计了哪些 Skills 的质量最佳和最受欢迎。我整理了这份&nbsp;Top 10 榜单，加上使用场景和适合人群，帮你快速找到最有用的那几个。Top 10 最受欢迎的 Agent Skills1. Skil","/article/123",270,"2026-01-19 18:49:12","2026-01-19 18:52:01",{"id":271,"category_id":44,"title":160,"keywords":6,"description":272,"image_url":6,"url":161,"hits":273,"is_recommend":73,"is_top":73,"create_time":274,"update_time":275},122,"一、概述1.1 背景介绍说实话，Nginx调优这事儿我踩过无数坑。记得2019年双11，我们电商平台流量暴涨，Nginx直接扛不住了，QPS从平时的2万飙升到8万，响应时间从50ms飙到了2秒，最后还是靠临时加机器扛过去的。那次事故之后，我花了大半年时间专门研究Nginx的性能极限，总结出了这20条黄金法则。Nginx作为目前最流行的Web服务器和反向代理，官方数据显示单机可以轻松处理10万+的并发连接。但实际生产环境中，很多同学拿到默认配置就直接上了，结果发现连1万并发都扛不住。问题不在Ngi",337,"2026-01-12 11:11:50","2026-01-12 11:12:28",{"id":277,"category_id":46,"title":278,"keywords":6,"description":279,"image_url":6,"url":280,"hits":281,"is_recommend":73,"is_top":73,"create_time":282,"update_time":283},121,"Docker 镜像优化与安全扫描：将镜像体积压缩 70%","1. 适用场景 & 前置条件项目要求适用场景容器化应用镜像体积过大（> 500MB），构建时间长（> 10分钟），存在安全漏洞（CVE高危）OSRHEL/CentOS 7.9+ 或 Ubuntu 20.04+内核Linux Kernel 3.10+软件版本Docker 20.10+ 或 Podman 3.0+，Trivy 0.40+（安全扫描工具）资源规格2C4G（最小）/ 4C8G（推荐），磁盘 50GB+（存储镜像与缓存）网络可访问 Docker Hub/阿里云镜像仓库（","/article/121",309,"2026-01-06 11:54:35","2026-01-06 12:01:59",{"id":145,"category_id":44,"title":146,"keywords":6,"description":147,"image_url":6,"url":150,"hits":151,"is_recommend":73,"is_top":73,"create_time":152,"update_time":153},{"id":286,"category_id":44,"title":163,"keywords":6,"description":287,"image_url":6,"url":164,"hits":288,"is_recommend":73,"is_top":73,"create_time":289,"update_time":290},119,"一、概述1.1 背景介绍在大规模微服务架构下，Prometheus 告警系统往往会陷入一个尴尬的境地：告警太多，运维团队开始选择性忽略；告警太少，真正的故障又可能漏掉。我在某电商平台负责监控体系建设时，团队每天要处理超过 2000 条告警，其中 70% 以上是重复的、关联的或者短暂抖动产生的噪声。Recording Rules 是 Prometheus 提供的预计算机制，可以将复杂的查询表达式预先计算并存储为新的时间序列。通过合理设计 Recording Rules，我们不仅能显著降低 Prom",301,"2026-01-06 11:51:58","2026-01-06 11:53:45",{"id":292,"category_id":44,"title":293,"keywords":6,"description":294,"image_url":6,"url":295,"hits":296,"is_recommend":73,"is_top":73,"create_time":297,"update_time":298},118,"GitOps 落地实践：ArgoCD + Kustomize 实现声明式基础设施管理(二)","四、最佳实践和注意事项4.1 最佳实践4.1.1 性能优化优化点一：减少 Git 轮询频率# argocd-cm ConfigMapapiVersion:&nbsp;v1kind:&nbsp;ConfigMapmetadata:&nbsp;&nbsp;name:&nbsp;argocd-cm&nbsp;&nbsp;namespace:&nbsp;argocddata:&nbsp;&nbsp;timeout.reconciliation:&nbsp;300s&nbsp;&nbsp;# 默认 180","/article/118",305,"2026-01-06 11:49:00","2026-01-06 11:49:34",{"id":300,"category_id":44,"title":301,"keywords":6,"description":302,"image_url":6,"url":303,"hits":304,"is_recommend":73,"is_top":73,"create_time":305,"update_time":306},117,"GitOps 落地实践：ArgoCD + Kustomize 实现声明式基础设施管理(一)","一、概述1.1 背景介绍GitOps 作为云原生时代的运维范式，将 Git 作为基础设施和应用配置的单一事实来源，通过声明式配置和自动化同步机制，实现了配置管理的版本控制、审计追溯和快速回滚。ArgoCD 作为 CNCF 毕业项目，提供了完整的 GitOps 工作流，支持多集群管理、RBAC 权限控制、SSO 集成等企业级特性。结合 Kustomize 的配置管理能力，能够优雅地解决多环境配置差异、敏感信息管理、配置复用等问题。在传统的 CI/CD 流程中，往往由 CI 工具直接执行 kubec","/article/117",310,"2026-01-06 11:45:03","2026-01-06 11:48:56",{"id":308,"category_id":40,"title":309,"keywords":310,"description":311,"image_url":6,"url":312,"hits":313,"is_recommend":73,"is_top":73,"create_time":314,"update_time":315},116,"运维部门年度2025工作总结与2026工作规划应该如何写？","运维部门年度2025工作总结,2026工作规划","2025年，运维部在公司“数字化转型深化”战略引领下，以“稳定为基、效率为纲、安全为盾、创新为翼”为核心导向，全面支撑核心业务系统运行、推动技术架构迭代、强化团队能力建设。 全年实现核心业务系统可用性99.985%，较2024年提升0.02个百分点；故障平均恢复时间（MTTR）从42分钟压缩至29分钟，下降31%；云资源成本同比降低16.8%，自动化运维覆盖率从65%提升至83%，未发生重大生产安全事故，圆满完成年度目标。现将全年工作及2026年规划汇报如下：2025年核心工作成果（数","/article/116",297,"2026-01-06 11:20:58","2026-01-06 11:44:04",{"id":317,"category_id":40,"title":318,"keywords":319,"description":320,"image_url":6,"url":321,"hits":322,"is_recommend":73,"is_top":73,"create_time":323,"update_time":324},115,"Kubernetes 100个常用命令","100 个 Kubectl 命令","这篇文章是关于使用 Kubectl 进行 Kubernetes 诊断的指南。列出了 100 个 Kubectl 命令，这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于：•&nbsp;集群信息•&nbsp;Pod 诊断•&nbsp;服务诊断•&nbsp;部署诊断•&nbsp;网络诊断•&nbsp;持久卷和持久卷声明诊断•&nbsp;资源使用情况•&nbsp;安全和授权•&nbsp;节点故障排除•&nbsp;其他诊断命令：文章还提到了许多其他命令，如资源扩展和自动扩","/article/115",3642,"2023-11-02 14:09:30","2023-11-02 14:10:05",{"id":182,"category_id":44,"title":183,"keywords":184,"description":185,"image_url":6,"url":186,"hits":187,"is_recommend":73,"is_top":73,"create_time":188,"update_time":189},1784716028274]