Prometheus 应用监控

本文讲述如何实现Prometheus的应用监控

监控Nginx

nginx:1.16.1、nginx-vts-exporter:0.10.3、nginx-module-vts:1.6.3

监控Nginx主要用到以下三个模块:

  • nginx-module-vts:Nginx的监控模块,能够提供JSON格式的数据产出。
  • nginx-vts-exporter:主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。
  • Prometheus:监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合

nginx-module-vts模块编译
nginx_vts_exporter依赖nginx-module-vts模块,安装此模块无需任何其他依赖。模块与Nginx的版本兼容性如下:

1.11.x (last tested: 1.11.10)
1.10.x (last tested: 1.10.3)
1.8.x (last tested: 1.8.0)
1.6.x (last tested: 1.6.3)
1.4.x (last tested: 1.4.7)

1.安装依赖包

$ yum -y install gcc gcc-c++ autoconf automake make
$ yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

2.添加www用户

$ groupadd -f www
$ useradd -g www www

3.下载nginx(版本1.16.1)

$ wget http://nginx.org/download/nginx-1.16.1.tar.gz
$ tar xf nginx-1.16.1.tar.gz 

3.克隆vts模块仓库

https://github.com/vozlt/nginx-module-vts/releases

$ git clone git://github.com/vozlt/nginx-module-vts.git

4.编译nginx配置,添加vts模块
在nginx编译时添加vts模块:--add-module=/path/to/nginx-module-vts

$ cd nginx-1.16.1/

# 配置nginx
# --prefix 指定安装的目录
# /usr/local/nginx 是安装目录,不能和自己下载的文件目录重了
#./configure --prefix=/usr/local/nginx

$ ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_gzip_static_module --with-http_sub_module --add-module=/root/nginx-module-vts

$ make && make install 

5.Nginx config配置
更改Nginx Conf的配置,添加监控接口/status

$ vim /usr/local/nginx/conf/nginx.conf
user www;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    access_log  logs/access.log  main;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  65;

    # enabled nginx status
    vhost_traffic_status_zone;
    gzip  on;

    server {
        listen       80;
        server_name  localhost;
        location /status {
             vhost_traffic_status_display;
             vhost_traffic_status_display_format html;
             # Only allow local access the url
             allow 127.0.0.1;
        }
      }
}

检查nginx语法并启动

$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

$ /usr/local/nginx/sbin/nginx

6.curl查看捕获nginx数据

$ curl http://127.0.0.1/status/format/json

7.安装nginx-vts-exporter
下载地址:https://github.com/hnlq715/nginx-vts-exporter/releases

$ tar xf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
$ cp nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter  /usr/local/bin/

//启动命令
nginx-vts-exporter -nginx.scrape_uri=http://127.0.0.1/status/format/json

6.将nginx-vts-exporter添加system系统服务

$ vim /usr/lib/systemd/system/nginx-vts-exporter.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/nginx-vts-exporter -nginx.scrape_uri=http://127.0.0.1/status/format/json

[Install]
WantedBy=multi-user.target

7.启动添加的system服务

$ systemctl daemon-reload
$ systemctl start nginx-vts-exporter.service
$ systemctl enable nginx-vts-exporter.service

// nginx-vts-exporter 默认端口 - 9913
$ netstat -lntup | grep "9913"
tcp6       0      0 :::9913                 :::*                    LISTEN      9195/nginx-vts-expo

8.使用prometheus监控修改监控端配置文件

$ vim /usr/local/prometheus/prometheus.yml
  - job_name: ‘nginx‘
    static_configs:
      - targets: [‘10.0.0.171:9913‘]

9.启动prometheus服务

$ systemctl restart prometheus.service

10.查看监控端是否介入

11.Granfana导入Nginx监控图表

https://grafana.com/grafana/dashboards/2949

监控MySQL
文中主要监控MySQL/MySQL主从信息
版本:mysql-5.7,mysql_exporter-0.12.1

mysql_exporter下载地址:https://github.com/prometheus/mysqld_exporter/releases

1、下载mysql_exporter并解压

$ tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz

// 将mysql_exporter二进制文件拷贝至/usr/local/bin
$ cp mysqld_exporter-0.12.1.linux-amd64/mysqld_exporter /usr/local/bin/

2.需要授权用户给exporter使用

> CREATE USER ‘exporter‘@‘localhost‘ IDENTIFIED BY ‘abc12345‘ WITH MAX_USER_CONNECTIONS 3;

// 可查看主从运行情况查看线程,及所有数据库。
> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO ‘exporter‘@‘localhost‘;

为该用户设置最大连接数为了避免监控数据过大导致服务器超载

3.修改mysql配置文件,添加刚才创建的exporter用户和密码

$ vim /etc/my.cnf
[client]
user=exporter
password=abc12345

4.启动exporter客户端,需指定mysql配置文件,读取exporter用户和密码

$ mysqld_exporter --config.my-cnf=/etc/my.cnf

常用参数:
// 选择采集innodb
--collect.info_schema.innodb_cmp
// innodb存储引擎状态
--collect.engine_innodb_status
// 指定配置文件
--config.my-cnf="/etc/my.cnf"

5.添加system系统服务

$ vim /usr/lib/systemd/system/mysql_exporter.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/mysqld_exporter --config.my-cnf=/etc/my.cnf

[Install]
WantedBy=multi-user.target

6.启动添加的system服务

$ systemctl daemon-reload
$ systemctl start mysql_exporter.service
$ systemctl enable mysql_exporter.service

// mysql_export默认端口 - 9104
$ netstat -lntup | grep "9104"
tcp6       0      0 :::9104                 :::*                    LISTEN      34137/mysqld_export

7.curl查看捕获mysql数据

curl http://localhost:9104/metrics

8.使用prometheus监控修改监控端配置文件

$ vim /usr/local/prometheus/prometheus.yml
  - job_name: ‘mysql‘
    scrape_interval: 5s
    # 静态添加node
    static_configs:
      - targets: [‘10.0.0.171:9104‘]

9.启动prometheus服务

$ systemctl restart prometheus.service

10.查看监控端是否介入

11.Granfana导入MySQL监控图表

https://grafana.com/grafana/dashboards/8564/revisions

监控Redis
本文主要监控redis信息
版本:redis-3.2.2,redis_exporter-1.3.4

安装部署redis:https://blog.51cto.com/12643266/2349586
redis_exporter下载地址:https://github.com/oliver006/redis_exporter/releases/

1.下载redis_exporter插件

代理插件不一定非要安装在redis端

$ wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.4/redis_exporter-v1.3.4.linux-amd64.tar.gz
$ tar xf redis_exporter-v1.3.4.linux-amd64.tar.gz
$ cp redis_exporter-v1.3.4.linux-amd64/redis_exporter  /usr/local/bin/

2.启动redis_exporter登陆redis

// 无密码
redis_exporter -redis.addr 127.0.0.1:6379
// 有密码
redis_exporter -redis.addr 172.0.0.1:6379  -redis.password 123456 

3.添加system系统服务

$ vim /usr/lib/systemd/system/redis_exporter.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/redis_exporter -redis.addr 127.0.0.1:6379 

[Install]
WantedBy=multi-user.target

4.启动添加的system服务

$ systemctl daemon-reload
$ systemctl start redis_exporter.service
$ systemctl enable redis_exporter.service

// redis_exporter默认端口 - 9121
$ netstat -lntup | grep 9121""
tcp6       0      0 :::9121                 :::*                    LISTEN      4465/redis_exporter

5.本地curl访问

curl http://127.0.0.1:9121/metrics

6.prometheus.yml加入redis节点,然后重启prometheus

  - job_name: ‘redis‘
    static_configs:
      - targets: [‘10.0.0.171:9121‘]

7.重启prometheus服务端

systemctl restart prometheus.service

8.查看监控端是否介入

9.Granfana导入Redis监控图表
redis节点监控:https://grafana.com/grafana/dashboards/2751
redis哨兵监控:https://grafana.com/grafana/dashboards/9570

原文地址:https://blog.51cto.com/12643266/2459530

时间: 2024-10-18 22:01:57

Prometheus 应用监控的相关文章

prometheus statsd 监控

Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作.google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus.现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控. 介绍 http://www.cnblogs.com/vovlie/p/Prometh

Grafana+Prometheus系统监控之webhook

概述 Webhook是一个API概念,并且变得越来越流行.我们能用事件描述的事物越多,webhook的作用范围也就越大.Webhook作为一个轻量的事件处理应用,正变得越来越有用. 准确的说webhoo是一种web回调或者http的push API,是向APP或者其他应用提供实时信息的一种方式.Webhook在数据产生时立即发送数据,也就是你能实时收到数据.这一种不同于典型的API,需要用了实时性需要足够快的轮询.这无论是对生产还是对消费者都是高效的,唯一的缺点是初始建立困难. Webhook有

使用prometheus+blackbox_exporter监控http、icmp网络性能

使用prometheus+blackbox_exporter监控http.icmp网络性能 话不多说,网络还是需要监控起来的.转载的上一篇博客最后面我贴了下prometheus的监控图表,这里详细介绍下用法. 安装prometheus.grafana的步骤略过,不是这里的重点,需要的话,可以翻翻我之前的博客笔记. cd  /usr/local/prometheus vim prometheus.yml 添加如下内容(51cto编辑器会自动把yml的缩进弄丢了,因此这里贴的是图片) 需要指出的是

prometheus+node_exporter监控系统搭建

prometheus+node_exporter监控系统搭建: 注:可结合icinga2.telegraf一起用,Disk IOs.Disk Throughout是前2个没有的,traffic监控也可用这个 参考网址:http://blog.51cto.com/youerning/2050543 下载网址:https://prometheus.io/download 服务器端: tar zxfv prometheus-2.4.0.linux-amd64.tar.gz mv prometheus-

使用Prometheus+Grafana监控MySQL实践

Grafana+Prometheus打造全方位立体监控系统 一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作.Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus.现在最常见的Kubernetes容器管理系统中,通常会搭配Promet

cAdvisor+Prometheus+Grafana监控docker

cAdvisor+Prometheus+Grafana监控docker 一.cAdvisor(需要监控的主机都要安装) 官方地址:https://github.com/google/cadvisor CAdvisor是谷歌开发的用于分析运行中容器的资源占用和性能指标的开源工具.CAdvisor是一个运行时的守护进程,负责收集.聚合.处理和输出运行中容器的信息.注意在查找相关资料后发现这是最新版cAdvisor的bug,换成版本为google/cadvisor:v0.24.1 就ok了,映射主机端

prometheus+grafana监控redis

prometheus+grafana监控redis redis安装配置 https://www.cnblogs.com/autohome7390/p/6433956.html redis_exporter 安装 cd /usr/src wget https://github.com/oliver006/redis_exporter/releases/download/v0.21.2/redis_exporter-v0.21.2.linux-amd64.tar.gz tar xf redis_ex

Prometheus+Grafana监控

什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本.2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目.Prometheus目前在开源社区相当活跃.Prometheus和Heapster(Heapster是K8

Prometheus + Grafana 监控系统搭

本文主要介绍基于Prometheus + Grafana 监控Linux服务器. 一.Prometheus 概述(略) 与其他监控系统对比 1 Prometheus vs. Zabbix Zabbix 使用的是 C 和 PHP, Prometheus 使用 Golang, 整体而言 Prometheus 运行速度更快一点. Zabbix 属于传统主机监控,主要用于物理主机.交换机.网络等监控,Prometheus 不仅适用主机监控,还适用于 Cloud.SaaS.Openstack.Contai