Grafana 是一款强大的开源监控和可视化工具,它可以与多种数据源集成,包括 Nginx。要使用 Grafana 监控 Nginx,你需要通过 Nginx 的日志或者 Nginx 的状态页面(例如,通过 ngx_http_stub_status_module 模块提供的数据)来收集数据,然后通过 Grafana 来展示这些数据。以下是具体的步骤:

方法一:使用 Nginx 日志

1. 配置 Nginx 日志格式:

在 Nginx 配置文件中设置日志格式,以便能够解析出有用的监控指标。例如:

```nginx

log_format json_log escape=json '{'

'"time_local":"$time_local",'

'"remote_addr":"$remote_addr",'

'"request":"$request",'

'"status": "$status",'

'"body_bytes_sent":"$body_bytes_sent"'

'}';

access_log /var/log/nginx/access.log json_log;

```

2. 安装和配置 Loki:

Grafana Loki 是一个水平可扩展的、高可用性的日志聚合系统,可以用来存储和查询日志。

- 安装 Loki。

- 配置 Loki 以读取 Nginx 日志文件。

- 确保 Loki 可以访问这些日志文件。

3. 在 Grafana 中添加 Loki 数据源:

- 打开 Grafana,转到配置(Settings)-> Data sources。

- 添加一个新的数据源,选择 Loki。

- 配置 Loki 的 URL 和其他相关设置。

4. 创建 Dashboard 和 Panel:

- 创建一个新的 Dashboard。

- 添加一个新的 Panel,选择 Loki 作为数据源。

- 使用 Loki 的查询语言(LogQL)来查询日志数据,例如:

```logql

{job="nginx"} |= "GET"

```

- 配置 Panel 以展示所需的数据,例如请求次数、状态码分布等。

方法二:使用 Nginx Status Page

1. 启用 Nginx Status Module:

在 Nginx 配置中启用 ngx_http_stub_status_module 模块,并设置一个 location 来暴露状态信息:

```nginx

server {

location /nginx_status {

stub_status on;

access_log off;

allow 127.0.0.1; 只允许本地访问

deny all;

}

}

```

2. 安装和配置 Prometheus:

Prometheus 可以抓取 Nginx 的状态页面来获取指标数据。

- 安装 Prometheus。

- 在 Prometheus 的配置文件中添加一个 job 来抓取 Nginx 的状态页面:

```yaml

scrape_configs:

- job_name: 'nginx'

static_configs:

- targets: ['localhost:80'] 根据实际情况修改地址和端口

metrics_path: '/nginx_status'

```

3. 在 Grafana 中添加 Prometheus 数据源:

- 打开 Grafana,转到配置(Settings)-> Data sources。

- 添加一个新的数据源,选择 Prometheus。

- 配置 Prometheus 的 URL 和其他相关设置。

4. 创建 Dashboard 和 Panel:

- 创建一个新的 Dashboard。

- 添加一个新的 Panel,选择 Prometheus 作为数据源。

- 使用 PromQL(Prometheus Query Language)来查询指标,例如:

```promql

nginx_http_requests_total

```

- 配置 Panel 以展示所需的数据,例如请求总量、活跃连接数等。

通过以上任一方法,你都可以使用 Grafana 来监控 Nginx 的性能和健康状况。选择哪种方法取决于你的具体需求和偏好。通常,使用 Prometheus 和 Loki 可以提供更全面和详细的监控数据。