二.部署KMS服务
# 1. 安装依赖 sudo apt update sudo apt install -y git build-essential curl wget # 2. 克隆源码并编译 sudo mkdir -p /opt cd /opt sudo git clone --depth=1 https://github.com/Wind4/vlmcsd.git cd vlmcsd sudo make -j"$(nproc)" # 3. 安装到系统目录 sudo install -m 755 bin/vlmcsd /usr/local/bin/ sudo install -m 755 bin/vlmcs /usr/local/bin/ # 4. 创建日志文件(关键:用于 Promtail 采集) sudo touch /var/log/vlmcsd.log sudo chown nobody:nogroup /var/log/vlmcsd.log # 5. 创建 systemd 服务 sudo tee /etc/systemd/system/vlmcsd.service <<'EOF' [Unit] Description=KMS Emulator (vlmcsd) After=network.target [Service] Type=simple User=nobody Group=nogroup ExecStart=/usr/local/bin/vlmcsd -D -l /var/log/vlmcsd.log Restart=always [Install] WantedBy=multi-user.target EOF # 6. 启动服务 sudo systemctl daemon-reload sudo systemctl enable --now vlmcsd # 7. 开放防火墙端口 sudo ufw allow 1688/tcp sudo ufw reload # 8. 验证服务 sudo systemctl status vlmcsd sudo ss -lntp | grep 1688 tail -f /var/log/vlmcsd.log
这时候,我们在Ubuntu终端中,执行vlmcs,可以看到:Connecting to 127.0.0.1:1688 ... successful 即表明这步成功了
三.部署Loki+Promtail+Grafana
首先安装 Loki(日志存储)
# 下载 Loki(以 v2.9.0 为例,可访问 https://github.com/grafana/loki/releases 获取最新版后通过SFTP等方式存入)
cd /tmp
wget https://github.com/grafana/loki/releases/download/v2.9.0/loki-linux-amd64.zip
unzip loki-linux-amd64.zip
sudo mv loki-linux-amd64 /usr/local/bin/loki
# 创建配置目录
sudo mkdir -p /etc/loki /data/loki/{chunks,index}
# 创建 Loki 配置文件
sudo tee /etc/loki/config.yaml <<'EOF'
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /data/loki
storage:
filesystem:
chunks_directory: /data/loki/chunks
rules_directory: /data/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2024-01-01
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
EOF
# 创建 systemd 服务
sudo tee /etc/systemd/system/loki.service <<'EOF'
[Unit]
Description=Loki Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/loki -config.file=/etc/loki/config.yaml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 启动 Loki
sudo systemctl daemon-reload
sudo systemctl enable --now loki
sudo systemctl status loki安装 Promtail(日志采集)
# 下载 Promtail
cd /tmp
wget https://github.com/grafana/loki/releases/download/v2.9.0/promtail-linux-amd64.zip (这里相同,可以直接通过访问下载后拷贝入)
unzip promtail-linux-amd64.zip
sudo mv promtail-linux-amd64 /usr/local/bin/promtail
# 创建 Promtail 配置目录
sudo mkdir -p /etc/promtail
# 创建 Promtail 配置文件
sudo tee /etc/promtail/config.yaml <<'EOF'
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://localhost:3100/loki/api/v1/push
scrape_configs:
- job_name: vlmcsd
static_configs:
- targets:
- localhost
labels:
job: vlmcsd
host: ${HOSTNAME} # 关键:以主机名作为标签,用于按主机名统计
__path__: /var/log/vlmcsd.log
EOF
# 创建 systemd 服务
sudo tee /etc/systemd/system/promtail.service <<'EOF'
[Unit]
Description=Promtail Service
After=network.target
[Service]
Type=simple
User=root
Environment="HOSTNAME=%H" # 注入主机名变量
ExecStart=/usr/local/bin/promtail -config.file=/etc/promtail/config.yaml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 启动 Promtail
sudo systemctl daemon-reload
sudo systemctl enable --now promtail
sudo systemctl status promtail安装 Grafana(可视化)
# 添加 Grafana 官方源 sudo apt-get install -y software-properties-common wget sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list # 安装 Grafana sudo apt-get update sudo apt-get install -y grafana # 启动 Grafana sudo systemctl enable --now grafana-server sudo systemctl status grafana-server # 开放防火墙端口(Grafana Web 界面) sudo ufw allow 3000/tcp
这里如果官方的Grafana下载 过于慢,可以先执行 以下脚本,将源更换为国内链接即可
//备份原配置 sudo cp /etc/apt/sources.list.d/grafana.list /etc/apt/sources.list.d/grafana.list.bak //修改源地址 sudo tee /etc/apt/sources.list.d/grafana.list << 'EOF' deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://mirrors.tuna.tsinghua.edu.cn/grafana/apt stable main EOF //更新软件源并安装 # 1. 创建存储密钥的目录 sudo mkdir -p /etc/apt/keyrings # 2. 下载并转换Grafana官方GPG密钥 wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null # 3. 重新配置清华源,并显式指定使用新导入的密钥 echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://mirrors.tuna.tsinghua.edu.cn/grafana/apt stable main" | sudo tee /etc/apt/sources.list.d/grafana.list # 4. 更新软件包列表 sudo apt update sudo apt install grafana
四.配置
到这里基本安装已经完成 ,剩下我们就是配置
浏览器访问
http://你的服务器IP:3000(默认用户名/密码:admin/admin)左侧菜单 Configuration → Data Sources → Add data source
选择 Loki
URL 填写:
http://localhost:3100点击 Save & Test,确认连接成功
2.3.2 创建统计面板(核心:按主机名统计激活数)
进入 Explore 测试查询:
在 Explore 页面输入以下 LogQL 查询,测试能否正确获取日志:
logql
{job="vlmcsd"}如果看到日志行,说明采集成功。
创建 Dashboard 面板:
左侧菜单 Create → Dashboard → Add visualization
数据源选择 Loki
使用以下查询按主机名统计唯一激活客户端数:
logql
# 统计每个主机的总激活请求次数(按主机名聚合)
sum by (host) (count_over_time({job="vlmcsd"}[$__range]))使用以下查询按主机名统计每日激活趋势:
logql
# 按主机名和每日时间聚合
sum by (host) (count_over_time({job="vlmcsd"}[1d]))使用以下查询统计全局唯一激活客户端数(按主机名去重):
logql
# 提取所有 host 标签,统计唯一值数量
count(count by (host) ({job="vlmcsd"}))在面板设置中,可以:
选择图表类型(如时间序列图、表格、统计数字等)
设置时间范围(最近 24 小时/7 天/30 天)
添加面板标题和描述
✅ 2.4 验证整个流程
模拟激活请求:从其他机器执行
vlmcs 你的服务器IP,或等待真实客户端连接检查日志:
bash
tail -f /var/log/vlmcsd.log
查看 Promtail 状态:
bash
sudo journalctl -u promtail -f
在 Grafana 中查看统计面板:应该能看到按主机名聚合的激活统计图表
