惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Check Point Blog
GbyAI
GbyAI
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
T
Troy Hunt's Blog
博客园 - Franky
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
The Cloudflare Blog
S
SegmentFault 最新的问题
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
I
InfoQ
博客园 - 【当耐特】
NISL@THU
NISL@THU
A
About on SuperTechFans
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Security Latest
Security Latest
V
Vulnerabilities – Threatpost
Security Archives - TechRepublic
Security Archives - TechRepublic
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
IT之家
IT之家
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
大猫的无限游戏
大猫的无限游戏
S
Security Affairs
The Register - Security
The Register - Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
T
Tor Project blog

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
个人网站监控
2026-01-21 · via mephisto.cc

我的个人网站已经运行好几年了,由于没什么收益、访问量也不多,一直没接入监控,长期处于放养状态。

由于同主域名下,有微信小程序的后端 api,每次我想看看有哪些人使用了我的小程序,该死的“We 分析”小程序想看明白是真的很费劲,其中“实时数据”为专业版专属,按量收费的。

这很腾讯,表示理解尊重,本来用户数据就惨淡,¥30/y 的认证费都收不回来,更不可能付费开通开实时数据。

不想被小马哥 Pony Ma 吸血的话,只能自给自足丰衣足食。话说陕北南泥湾那个地方我去游玩过,条件真的很艰苦!

优势在人不在我,需求如下:

  • 每天多少个人在用
  • 访问延时如何
  • 状态码分布,有没有 4xx、5xx 错误
  • 哪些地区的人在访问

弄清楚这些基本状况就差不多了,能及时发现问题,并做针对性优化。

个人网站跑在 Caddy 上面,所以监控 Caddy 本身和日志就 ok 了。其它 webserver 如 Nginx 等原理差不多,类似工具也有的。

1. Caddy 监控

Caddy 是可以配置直接给 Prometheus 吐 metircs 数据的,modules/metrics/metrics.gomodules/caddyhttp/metrics.go 源码文件中有相关实现逻辑。

开启监控

在 Caddyfile 中开启监控:

1{
2	metrics {
3		per_host
4	}
5}

per_host 表示开启按 Host 区分,即相关指标有个 host 标签,用来区分不同域名的流量,有个多个域名的话建议开启。

另外还建议分独立域名来查看监控信息,少暴露 2019 端口,监控数据直接通过域名查看。

1monitor.xxx.com {
2	metrics
3	#@blocked not remote_ip input_your_public_ip
4	#respond @blocked "Forbidden: Access denied👻" 403
5
6	basic_auth {
7		your_username your_hash_password  # 加密后的密码(通过 caddy hash-password 生成)
8	}
9}

basic_auth 能一定程度上保证安全,用户和密码部分 Prometheus 会用到,有固定 ip 也可以加上 ip 白名单(看注释部分),你觉得怎么安全放心就怎么做。

Caddy 监控指标分 4 个大类:

  • Runtime metrics (运行时指标,指标名以go_*process_*开头,监控 caddy 进程本身)
  • Admin API metrics (监控 admin api, 指标名以caddy_admin_*开头)
  • HTTP Middleware metrics (关键部分,HTTP 相关,比如请求延时、TTFB、errors、请求和返回的 body 大小等,指标名以 caddy_http_*开头)
  • Reverse proxy metrics (后端代理的监控,比如我有个 Rust 写的 api 给微信小程序用的,Caddy 能简单监控该后端服务是否存活,目前就一个指标 caddy_reverse_proxy_upstreams_healthy)

其实搜索 Prometheus 中的收集的指标,还有 caddy_config_last_reload_successfulcaddy_config_last_reload_success_timestamp_seconds 两个,看源码是属于 globalMetrics,官方文档里面没有写,看字面意思就很好理解,不解释。

2. Prometheus 配置

Prometheus 跑在家里的树莓派上面,物尽其用,功耗很低。读者看自己情况部署,方便访问同时保证安全就好。

直接看配置

 1global:
 2  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
 3  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
 4  external_labels:
 5    monitor: "example"
 6
 7# Alertmanager configuration
 8alerting:
 9  alertmanagers:
10    - static_configs:
11        - targets: ["localhost:9093"]
12
13rule_files:
14  # - "first_rules.yml"
15  # - "second_rules.yml"
16
17scrape_configs:
18  - job_name: caddy
19    scrape_interval: 10s
20    scrape_timeout: 8s
21    scheme: https
22    basic_auth:
23      username: "your_usernmae"
24      password: "your_password"
25    static_configs:
26      - targets: ["monitor.xxx.com"]

3. Grafana 监控面板

监控面板分域名的话,可以选择 id:24146,没分域名选 id:22870

还不满意,可以自己在上面的基础上修改或者自己创建一个,前提是要稍微了解 Grafana 逻辑和 Prometheus 查询语言。

我在 22870 的基础上添加了域名信息,域名添加了特殊过滤,只关注特定的几个域名。过滤域名需要在 Grafana 配置正则表达式,不会的让 AI 帮你写,时代变了😅。

有需要的中文读者,也可以通过微信公众号留言索取。

截图示例如下:

caddy_monitor_1
caddy_monitor_2

效果还是非常不错的,该有的都有了,状态码、延时分布等清清楚楚。只是树莓派的配置不怎么好,我只存 15 天信息,选取 24h 小时信息会稍微卡一下,老型号性能差,个人网站监控绝对够用。

Grafana 我部署在自己的 mini 主机上面,在家有空偶尔看几下。

至于说告警通知,目前不想接入,工作告警已经够让人操心的了,网上有一大堆相关文章。

4. 日志监控

细心的读者可能早就有疑问了,上面没法知道哪些地区的人访问了什么网页啊?没错,日志监控来解决。

日志监控工具有好多,比如 轻量级的 GoAccess,中级的 openobserve,重量级 ELK 等,我选 nginxpulse,精神小伙开发的,作者很勤奋、更新很快,满足个人网站需求。

请看配置,做了脱敏处理,你应该能懂的,不懂看 https://github.com/likaia/nginxpulse 的文档部分。

 1root@tokyo:~# systemctl cat nginxpulse.service
 2# /etc/systemd/system/nginxpulse.service
 3[Unit]
 4Description=Nginxpulus Service
 5After=network.target
 6
 7[Service]
 8Type=simple
 9User=root
10WorkingDirectory=/opt/caddylog
11ExecStart=/opt/caddylog/nginxpulse
12Restart=always
13RestartSec=5
14
15[Install]
16WantedBy=multi-user.target
17
18root@tokyo:~# cat /opt/caddylog/
19configs/    nginxpulse  var/
20root@tokyo:~# cat /opt/caddylog/configs/nginxpulse_config.json
21{
22  "websites": [
23    {
24      "name": "yyy",
25      "logType": "caddy",
26      "logPath": "/var/log/caddy/yyy.log",
27      "domains": ["yyy.com"]
28    },
29    {
30      "name": "xxx",
31      "logType": "caddy",
32      "logPath": "/var/log/caddy/xxx.com.log",
33      "domains": ["xxx.com"]
34    }
35  ],
36  "system": {
37    "logDestination": "file",
38    "taskInterval": "1m",
39    "logRetentionDays": 30,
40    "demoMode": false,
41    "accessKeys": ["yourkey"],
42    "language": "zh-CN"
43  },
44  "server": {
45    "Port": "localhost:8088"
46  },
47  "pvFilter": {
48    "statusCodeInclude": [
49      200
50    ],
51    "excludePatterns": [
52      "favicon.ico$",
53      "robots.txt$",
54      "sitemap.xml$",
55      "^/health$",
56      "^/_(?:nuxt|next)/",
57      "rss.xml$",
58      "feed.xml$",
59      "atom.xml$"
60    ],
61    "excludeIPs": ["127.0.0.1", "::1", "10.10.0.1", "192.168.30.21"]
62  }
63}

采用单体部署方式,在电脑编译好 nginxpulse 二进制文件,传到服务器简单配置下就能运行了,还是很不错的。

效果可以看作者的示例网站: https://nginx-pulse.kaisir.cn/

5. 总结

通过 websever 层和日志层的监控,基本能覆盖轻量个人网站的需求,什么链路监控就不扯了,企业级别的业务才用考虑。

实用又简便,既能满足上面所列需求,也能发现问题,做出针对性优化。

比如通过日志监控,发现真的有危地马拉用户访问了我的网站,触发一个 404 错误,世界真奇妙,光速修复之。

caddy_404_fix

原因是该文章的在翻译为西班牙语的时候,图片链接地址被翻译错位了,wofi-menu 翻成了 menu-wofi,尽管站内西班牙语页面,目前有且仅有 3 个, 但真的有读者。

之前我不太相信 Google Analytics 的数据,网站用户分布图各种诡异离奇,现在我信了,那篇文章 Google 搜索排名前 10,真的有用🤷‍♂️。

这辈子恐怕没什么机会去危地马拉,能服务陌生 Linux 用户,甚是欣慰。

要知道手敲一篇文章,整个流程下来大约消耗 2 个小时,没有任何报酬,在中国 Google Adsense 搞不到钱💰,纯粹的单向服务,用爱发电。

其实,还能发现各种网络攻击日志,后续再写文章介绍。