Hugo博客公告弹窗

nginxpulse日志分析工具安装教程

项目:https://github.com/likaia/nginxpulse

系统:debian12

下载并解压

  1. 进入临时目录并下载:

    cd /tmp
    wget https://github.com/likaia/nginxpulse/releases/download/v1.6.0/nginxpulse-v1.6.0-linux-amd64.tar.gz
    
  2. 解压文件:

    tar -zxvf nginxpulse-v1.6.0-linux-amd64.tar.gz
    

    解压后会得到一个名为 nginxpulse-linux-amd64 的文件。

安装并设置权限

  1. 创建安装目录并移动文件:

    sudo mkdir -p /opt/nginxpulse
    sudo mv nginxpulse-linux-amd64 /opt/nginxpulse/
    
  2. 赋予执行权限:

    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
  1. 创建服务文件:

    sudo nano /etc/systemd/system/nginxpulse.service
    
  2. 粘贴以下内容(注意 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 命令。

  1. 进入 PostgreSQL 命令行
sudo -u postgres psql
  1. 执行以下 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

启动服务

  1. 重载 systemd 并启动:

    sudo systemctl daemon-reload
    sudo systemctl start nginxpulse
    sudo systemctl enable nginxpulse
    
  2. 检查状态:

    sudo systemctl status nginxpulse
    
  3. 查看实时日志

    sudo journalctl -u nginxpulse -f
    
  4. 确保日志目录可读(如果服务启动但没数据,执行此步):

    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 面板了。

CC BY-NC-SA 4.0 转载请注明
最后更新于 2026-02-09 17:25