项目:https://github.com/likaia/nginxpulse
系统:debian12
下载并解压
进入临时目录并下载:
cd /tmp wget https://github.com/likaia/nginxpulse/releases/download/v1.6.0/nginxpulse-v1.6.0-linux-amd64.tar.gz解压文件:
tar -zxvf nginxpulse-v1.6.0-linux-amd64.tar.gz解压后会得到一个名为
nginxpulse-linux-amd64的文件。
安装并设置权限
创建安装目录并移动文件:
sudo mkdir -p /opt/nginxpulse sudo mv nginxpulse-linux-amd64 /opt/nginxpulse/赋予执行权限:
cd ~ sudo chmod +x /opt/nginxpulse/nginxpulse-linux-amd64
创建配置文件
创建 configs 目录
cd /opt/nginxpulse
sudo mkdir -p var/nginxpulse_data
sudo mkdir -p /opt/nginxpulse/configs
sudo chown -R root:root /opt/nginxpulse
sudo chmod -R 755 /opt/nginxpulse
创建配置文件
配置文件是重点,如果你使用我之前日志中心的方式,那么可以使用以下脚本生成数组
脚本
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/gen_config.sh && chmod +x gen_config.sh
指定路径输出
sudo ./gen_config.sh -p /data/nginx_logs/active -o /opt/nginxpulse/configs/nginxpulse_config.json
或者手动编辑
sudo nano /opt/nginxpulse/configs/nginxpulse_config.json
粘贴以下内容,你需要手动修改站点日志路径,和访问密码
{
"websites": [
{
"name": "GZ Log Test",
"logPath": "var/log/gz-log-read-test/*.gz",
"domains": ["localhost"]
}
],
"system": {
"logDestination": "file",
"taskInterval": "1m",
"logRetentionDays": 30,
"parseBatchSize": 100,
"ipGeoCacheLimit": 1000000,
"ipGeoApiUrl": "http://ip-api.com/batch",
"demoMode": false,
"accessKeys": [],
"language": "zh-CN"
},
"database": {
"driver": "postgres",
"dsn": "postgres://nginxpulse:nginxpulse@127.0.0.1:5432/nginxpulse?sslmode=disable",
"maxOpenConns": 10,
"maxIdleConns": 5,
"connMaxLifetime": "30m"
},
"server": {
"Port": ":8089"
},
"pvFilter": {
"statusCodeInclude": [
200
],
"excludePatterns": [
"favicon.ico$",
"robots.txt$",
"sitemap.xml$",
"^/health$",
"^/_(?:nuxt|next)/",
"rss.xml$",
"feed.xml$",
"atom.xml$"
],
"excludeIPs": ["127.0.0.1", "::1", "10.10.0.1", "192.168.30.21"]
}
}
配置 Systemd 服务
放行防火墙,例如
ufw allow 8089/tcp
创建服务文件:
sudo nano /etc/systemd/system/nginxpulse.service粘贴以下内容(注意
ExecStart指向的是你解压出来的文件名):[Unit] Description=NginxPulse Analytics Service (Binary Release) After=network.target [Service] Type=simple User=root WorkingDirectory=/opt/nginxpulse ExecStart=/opt/nginxpulse/nginxpulse-linux-amd64 Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target
安装 PostgreSQL
Debian 官方仓库自带 PostgreSQL。执行以下命令安装:
sudo apt update
sudo apt install postgresql postgresql-contrib -y
安装完成后,服务会自动启动。你可以检查状态:
sudo systemctl status postgresql
创建 NginxPulse 所需的数据库和用户
PostgreSQL 默认使用名为 postgres 的系统用户进行管理。我们需要切换到该用户并执行 SQL 命令。
- 进入 PostgreSQL 命令行:
sudo -u postgres psql
- 执行以下 SQL 语句(注意每行末尾的分号):
-- 创建用户,密码设置为 nginxpulse
CREATE USER nginxpulse WITH PASSWORD 'nginxpulse';
-- 创建数据库,所有者设为 nginxpulse
CREATE DATABASE nginxpulse OWNER nginxpulse;
-- 授予权限
GRANT ALL PRIVILEGES ON DATABASE nginxpulse TO nginxpulse;
-- 退出
\q
如果做了修改,记得重启数据库:
sudo systemctl restart postgresql
启动服务
重载 systemd 并启动:
sudo systemctl daemon-reload sudo systemctl start nginxpulse sudo systemctl enable nginxpulse检查状态:
sudo systemctl status nginxpulse查看实时日志
sudo journalctl -u nginxpulse -f确保日志目录可读(如果服务启动但没数据,执行此步):
sudo chmod -R +r /data/nginx_logs/
查看数据大小
du -sh /opt/nginxpulse/var
PV排除规则
favicon.ico$
robots.txt$
sitemap.xml$
^/(?:api|ajax)/
^/index\.php/ajax/
^/index\.php/user/ajax_ulog$
^/health$
^/_(?:nuxt|next)/
rss.xml$
feed.xml$
atom.xml$
现在,你可以通过浏览器访问 http://服务器IP:8089 来查看 NginxPulse 面板了。