让我们在Ubuntu 18.04上安装Prometheus并尝试监控Web服务器(nginx)的运行状态

Prometheus是什么?

被誉为下一代监视工具的最佳选择。

听说这个工具可以像Datadog一样使用,而且我在工作中已经在使用Datadog,所以我决定引入它。

参考文献可以提供相关资料和引用其他作者的思想或研究成果。

在10分钟内理解Prometheus
这是我的同事Chanmoro写的一篇很易懂的文章。
安装nginx-prometheus-exporter。

Prometheus的安装与启动

首先,我们将引入 Prometheus 作为监控的核心组件。

在Ubuntu的情况下,有apt和snap的软件包可用,但它们有点过时,因此我们将按照官方的Getting Started指南安装二进制文件。
https://prometheus.io/docs/prometheus/latest/getting_started/

首先,从以下网址https://prometheus.io/download/下载并安装最新的二进制文件。

对于Linux来说,通常认为操作系统是Linux,架构是amd64。

wget https://github.com/prometheus/prometheus/releases/download/v2.20.1/prometheus-2.20.1.linux-amd64.tar.gz
tar xf prometheus-2.20.1.linux-amd64.tar.gz
mv prometheus-2.20.1.linux-amd64 prometheus
rm prometheus-2.20.1.linux-amd64.tar.gz 

我要试试启动一下。

cd prometheus
./prometheus

打开浏览器并输入服务器的9090端口,您可以查看管理界面。

Screenshot from 2020-08-09 09-48-41.png

引入nginx-prometheus-exporter

下一步是在要进行监视的服务器上引入exporter。这次我们想要监视nginx的运行状态,所以我们要安装官方提供的nginx-prometheus-exporter。

启用ngx_http_stub_status_module

首先,要启用nginx默认提供的ngx_http_stub_status_module。这是一个返回nginx基本状态信息的模块。

我会先确认一下模块是否安装了。

$ 2>&1 nginx -V | tr -- - '\n' | grep stub
http_stub_status_module 

如果在服务器上安装了Nginx,则会成功的话,我认为已经安装好了。

将以下内容添加到/etc/nginx/sites-enabled/default并启用。

server {
  location /stub_status {
    stub_status on;
  }
}

如果重新加载Nginx,并使用curl访问URL,如果返回以下类似的状态,则表示成功。

$ curl localhost/stub_status
Active connections: 2 
server accepts handled requests
 39 39 110 
Reading: 0 Writing: 2 Waiting: 0

安装并启动nginx-prometheus-exporter。

接下来,我们将安装nginx-prometheus-exporter。根据官方文档,似乎也有Docker镜像可用,但这次我们会尝试使用二进制文件进行安装。

wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.8.0/nginx-prometheus-exporter-0.8.0-linux-amd64.tar.gz
tar xf nginx-prometheus-exporter-0.8.0-linux-amd64.tar.gz 
rm nginx-prometheus-exporter-0.8.0-linux-amd64.tar.gz 

只有一个二进制文件被解压出来,名为nginx-prometheus-exporter。

接下来,连接到先前的 stub URL 并启动。可以使用 -nginx.scrape-uri 选项指定 stub URL。

$ ./nginx-prometheus-exporter -nginx.scrape-uri http://localhost/stub_status

2020/08/09 10:59:10 Starting NGINX Prometheus Exporter Version=0.8.0 GitCommit=de15093
2020/08/09 10:59:10 Listening on :9113
2020/08/09 10:59:10 NGINX Prometheus Exporter has successfully started

似乎是在使用9113端口启动。

将nginx添加到Prometheus的监视对象中。

我們在安裝 Prometheus 的目錄中的 prometheus.yml 檔案末尾附上以下內容。

  - job_name: nginx
    metrics_path: '/metrics'
    scheme: http

    static_configs:
      - targets: [
        'ホスト:9113'
      ]

重新启动Prometheus会将nginx添加为监控目标。

暂时先查看一下nginx_http_requests_total。

Screenshot from 2020-08-09 11-21-47.png

听起来它好像运转良好。

如果要进行活动监视,我认为检查nginx_up应该就可以了。

结束

这次就到这里吧。

我以后打算做以下的事情。

    • Prometheus本体とnginx-prometheus-exporterのサービス化

 

    • Prometheus本体には認証機構がないのでプロキシサーバーで認証する

exporter_proxyを使ってexporterのポートを一元化する

Grafanaでダッシュボードを作る
アラートを飛ばす

广告
将在 10 秒后关闭
bannerAds