让我们在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端口,您可以查看管理界面。
引入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。
听起来它好像运转良好。
如果要进行活动监视,我认为检查nginx_up应该就可以了。
结束
这次就到这里吧。
我以后打算做以下的事情。
-
- Prometheus本体とnginx-prometheus-exporterのサービス化
-
- Prometheus本体には認証機構がないのでプロキシサーバーで認証する
exporter_proxyを使ってexporterのポートを一元化する
Grafanaでダッシュボードを作る
アラートを飛ばす