prometheus监控

1、监控docker

cAdvisor是专门用于收集容器相关信息滴

1.1、下载 cAdvisor
> 下载cadvisor
docker pull  google/cadvisor
1.2、启动容器
  • 方式一、直接docker run
docker run \
-v /:/rootfs:ro \
-v /var/run:/var/run/:rw \
-v /sys:/sys:ro \
-v /var/lib/docker:/var/lib/docker:ro \
-p 8080:8080 --detach=true --name=cadvisor \
--net=host google/cadvisor
  • 方式二、使用docker-compose -f cadvisor.yaml up -d
cat cadvisor.yml

version: "2.3"
services:
  cadvisor:
    image: google/cadvisor:latest
    container_name: cadvisor
    hostname: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
      - /dev/disk/:/dev/disk:ro
    ports:
      - "8081:8080"
    devices:
      - "/dev/kmsg"
    restart: always
    networks:
      - prom_monitor

networks:
  prom_monitor:
    driver: bridge
> 启动
docker-compose -f cadvisor.yml up -d
docker-compose -f cadvisor.yml ps
  • 方式三、使用docker-compose up -d 启动
> cat docker-compose.yml
...
内容和上边一样
...

启动
docker-compose up -d
1.3、验证

浏览器输入:http://10.10.20.10:8085
在这里插入图片描述

1.4、Prometheus收集cadvisor数据
[root@vm04 file_sd]# tail prometheus.yml 
    file_sd_configs:
    - files:                                               
      - targets/nodes_*.yaml  
      refresh_interval: 2m 
      
  # docker
  - job_name: 'docker'
    file_sd_configs:
    - files:                                               
      - targets/docker.yaml  
      refresh_interval: 10s
[root@vm04 file_sd]# cat targets/docker.yaml 
- targets:
  - 10.10.20.10:8085
  labels:
    app: docker-cadvisor
    job: docker

验证:./promtool check config ./prometheus.yml
重启:systemctl restart prometheus
在这里插入图片描述

1.5、Grafana展示

导入模板
893 11600

2、监控mysql

mysqld_exporter 用于收集mysql的监控数据

2.1、下载
https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
tar -xf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.14.0.linux-amd64 mysqld_exporter
cd  mysqld_exporter
2.2、添加相关配置
  • 配置1、 在mysql中添加监控用户 mysql_exporter
create user mysqld_exporter@'%' identified by 'mysqld_exporter';
grant process,replication client,select on *.* to mysqld_exporter@'%';
  • 配置2、 在 mysql_exporter目录下添加mysql配置文件,运行时可免密码连接数据库
mysqld_exporter]# cat my.cnf 
[client]
user=mysqld_exporter
password=mysqld_exporter
  • 配置systemctl
cd /usr/lib/systemd/system
cat mysqld_exporter.service 

[Unit]
Description=mysql_exporter
After=network.target

[Service]
ExecStart=/opt/src/mysqld_exporter/mysqld_exporter --config.my-cnf=/opt/src/mysqld_exporter/my.cnf
ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=65535
Restart=on-failure

[Install]
WantedBy=multi-user.target

或者采用如下方式

cat start.sh

#!/bin/bash
nohup ./mysqld_exporter --config.my-cnf=./my.cnf --web.listen-address=":9105" \
--exporter.lock_wait_timeout=2   \
--collect.info_schema.processlist.min_time=0   \
--collect.info_schema.processlist.processes_by_user   \
--collect.info_schema.processlist.processes_by_host   \
--collect.info_schema.tables.databases="*"   \
--collect.mysql.user.privileges   \
--collect.perf_schema.eventsstatements.limit=250   \
--collect.perf_schema.eventsstatements.timelimit=86400   \
--collect.perf_schema.eventsstatements.digest_text_limit=120   \
--collect.perf_schema.file_instances.filter=".*"   \
--collect.perf_schema.memory_events.remove_prefix="memory/"   \
--web.telemetry-path="/metrics"   \
--timeout-offset=0.25 \
--tls.insecure-skip-verify   \
--collect.info_schema.processlist   \
--collect.mysql.user \
--collect.info_schema.tables   \
--collect.info_schema.innodb_tablespaces   \
--collect.info_schema.innodb_metrics   \
--collect.global_status \
--collect.global_variables   \
--collect.slave_status \
--collect.perf_schema.indexiowaits   \
--collect.perf_schema.tablelocks   \
--collect.perf_schema.eventsstatements   \
--collect.perf_schema.eventswaits   \
--collect.auto_increment.columns   \
--collect.binlog_size \
--collect.perf_schema.tableiowaits   \
--collect.perf_schema.replication_group_members   \
--collect.perf_schema.replication_group_member_stats   \
--collect.info_schema.userstats   \
--collect.info_schema.clientstats   \
--collect.perf_schema.file_events   \
--collect.perf_schema.file_instances   \
--collect.perf_schema.memory_events   \
--collect.info_schema.innodb_cmpmem   \
--collect.info_schema.query_response_time   \
--collect.engine_innodb_status   \
--collect.info_schema.tablestats   \
--collect.info_schema.schemastats   \
--collect.info_schema.innodb_cmp   \
--collect.info_schema.replica_host   \
--log.level=info \
--log.format=logfmt &
#--exporter.log_slow_filter   \
#--collect.perf_schema.eventsstatementssum   \
#--collect.engine_tokudb_status   \
#--collect.heartbeat.database="heartbeat"   \
#--collect.heartbeat.table="heartbeat"   \
#--collect.heartbeat.utc \
#--collect.perf_schema.replication_applier_status_by_worker   \
#--collect.slave_hosts \
#--collect.heartbeat \
cat stop.sh 
#!/bin/bash
ps -ef |grep 9105 |grep -v grep |awk '{print $2}' |xargs kill -9

cat status.sh 
#!/bin/bash
lsof -i:9105 &>/dev/null && echo mysql_export_9105 is running ||echo mysql_export_9105 is down
2.3、启动
systemctl daemon-reload
systemctl start mysqld_exporter
  • 验证
netstat -ntpl |grep mysqld_export
tcp6       0      0 :::9104                 :::*                    LISTEN      42895/mysqld_export
> 浏览器访问
10.10.20.10:9104/metrics
2.4、配置prometheus
> cd /opt/src/prometheus/file_sd
> ls
prometheus.yml  rules  targets
cat targets/mysql.yaml 
- targets:
  - 10.10.20.10:9104
  labels:
    app: mysql_monitor
    job: mysql
---
tail prometheus.yml 

  # mysql
  - job_name: 'mysql'
    file_sd_configs:
    - files:                                               
      - targets/mysql.yaml  
      refresh_interval: 10s
2.5、配置grafana
> 7362

在这里插入图片描述

3、监控nginx

3.1、下载相关模块
监控Nginx主要用到以下三个模块:
nginx-module-vts:Nginx virtual host traffic status module\
	Nginx的监控模块,能够提供JSON格式的数据产出。
nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。
	主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。
	
> 下载地址
https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.1.18.tar.gz
https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
3.2、配置
  • nginx配置
> 加载 nginx-mode-vts模块
./configure --add-module=/opt/src/nginx/nginx-module-vts
make && make install
vim nginx.conf
http {
	...
    charset utf8;
    include lyzm/server.conf;
    include lyzm/upstream.conf;
    # 添加如下
    vhost_traffic_status_zone;
    vhost_traffic_status_filter_by_host on;
    }

vim server.conf
    
    server {
        listen      8084;
        server_name localhost;
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
# 配置解释
1、vhost_traffic_status_zone; 是必填项
2、vhost_traffic_status_filter_by_host on; 即打开vhost过滤,开启此功能,在nginx配置有多个server_name的情况下
会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上
3、 在不想统计流量的server区域可以使用 vhost_traffic_status off; 禁止
> 重启nginx
> 访问:http://10.10.20.10:8084/status

在这里插入图片描述

  • 配置
tar -xf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
mv nginx-vts-exporter-0.10.3.linux-amd64 nginx-vts-exporter
cd nginx-vts-exporter
> 启动
> nohup ./nginx-vts-exporter \
	-nginx.scrape_timeout=10 \
	-nginx.scrape_uri=http://localhost:8084/status/format/json \
	-telemetry.address=:9913

> netstat -ntpl |grep nginx-vts
[root@kube-master nginx-vts-exporter]# netstat -ntpl |grep nginx-vts
tcp        0      0 10.10.20.10:9913        0.0.0.0:*               LISTEN      100404/./nginx-vts-
  • prometheus配置
> pwd
/opt/src/prometheus/file_sd

> tail targets/nginx.yaml 
- targets:
  - 10.10.20.10:9913
  labels:
    app: nginx_monitor
    job: nginx

> tail prometheus.yml 
  # nginx
  - job_name: 'nginx'
    file_sd_configs:
    - files:                                               
      - targets/nginx.yaml  
      refresh_interval: 10s

在这里插入图片描述

3.4、grafana
2949 9512
12708 

4、监控openvpn

参考:https://github.com/kumina/openvpn_exporter
4.1、使用openvpn_exporter收集监控信息
docker run --name=openvpn_exporter -p 9176:9176 -d  \
-v /var/log/openvpn/:/etc/openvpn_exporter/server.status \
kumina/openvpn-exporter \
-openvpn.status_paths /etc/openvpn_exporter/server.status/openvpn-status.log
  • 参数解释
# 指定openvpn-status状态日志路径
/var/log/openvpn/:/etc/openvpn_exporter/server.status
# 指定openvpn_exporter容器内的openvpn-status日志路径
-openvpn.status_paths /etc/openvpn_exporter/server.status/openvpn-status.log
4.2、prometheus添加监控信息
tail prometheus.yml
...

  - job_name: 'openvpn'
    static_configs:
    - targets: ['10.0.4.2:9176']
4.3、grafana添加图形
10562
12140
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值