赞
踩
zabbix 监控传统业务,模板可以复用
Prometheus 擅长监控容器业务
Prometheus架构图:
export采集器类似于普罗米修斯客户端,帮忙取值,每个采集器都有自己独特的功能,多个服务需要有多个采集器,node-exporter主要监控宿主机
cadvisor(谷歌公司开发的,官方没有提供)类似于export采集器,自动的把所有的容器都给监控上。属于第三方的exporter
prometheus可以使用自己内置的tsdb时间序列数据库,也可以使用外置的数据库。
采集器获取数据,在prometheus.yml配置监控目标与采集器交换,收集数据把数据集中起来处理,在根据rule.yml文件中的规则进行告警,告警出图一般用gafana出图。
10.0.0.11 docker01 Prometheus客户端
10.0.0.12 docker02 Prometheus客户端
10.0.0.13 docker03 Prometheus服务端
prometheus服务端二进制包安装
官网下载Prometheus的二进制包:https://prometheus.io/download/
开始进行安装:
# (1) 将下载好的Prometheus二进制包上传到本地,然后进行解压 [root@docker03 opt]# tar xf prometheus-2.23.0.linux-amd64.tar.gz [root@docker03 opt]# cd prometheus-2.23.0.linux-amd64/ [root@docker03 prometheus-2.23.0.linux-amd64]# ls console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool # (2) 在prometheus.yml配置中添加node-exporter [root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node-exporter' static_configs: - targets: ['10.0.0.11:9100','10.0.0.12:9100'] # (3)启动Prometheus,并且浏览器访问:http://10.0.0.13:9090 [root@docker03 prometheus-2.23.0.linux-amd64]# ./prometheus --config.file="prometheus.yml" & [root@docker03 prometheus-2.23.0.linux-amd64]# netstat -tlunp | grep 9090 tcp6 0 0 :::9090 :::* LISTEN 1928/./prometheus
pushgateway采集器的作用:
Prometheus客户端是各种各样的exporter,每种export都有单独的作用
常规安装是下载exporter二进制包,然后进行配置启动,这里直接使用docker启动容器,更方便快捷,exporter是Prometheus的客户端节点。
在10.0.0.11、10.0.0.12上安装Prometheus客户端,以监控容器和宿主机
# (1) 安装并启动node-exporter、cadvisor, 10.0.0.12做同样的操作
[root@docker01 ~]# docker load -i docker_monitor_node.tar.gz
[root@docker01 ~]# docker images
quay.io/prometheus/node-exporter latest e5a616e4b9cf 4 years ago 22.9MB
google/cadvisor latest eb1210707573 4 years ago 69.6MB
# --path.rootfs /host是参数
[root@docker01 ~]# docker run -d -p 9100:9100 -v "/:/host:ro,rslave" --name=node_exporter quay.io/prometheus/node-exporter --path.rootfs /host
# --publish就是-p --detach就是-d
[root@docker01 ~]# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
静态配置: 每新添加一台主机监控,都要进行重启
动态配置: 每新增加一台主机监控,不需要重启,自动发现
# (1) 静态配置node-exporter,动态配置cadvisor,动态配置的好处是直接在当前目录下添加主机,服务端不用重启,自动发现主机容器 [root@docker03 ~]# cd /opt/prometheus-2.23.0.linux-amd64 [root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node-exporter' static_configs: - targets: ['10.0.0.11:9100','10.0.0.12:9100'] - job_name: 'cadvisor' file_sd_configs: - files: - job/server.json refresh_interval: 10s # (2) 在当前路径下创建job/server.json,并且添加主机内容 [root@docker03 prometheus-2.23.0.linux-amd64]# mkdir job [root@docker03 prometheus-2.23.0.linux-amd64]# vim job/server.json [ { "targets": ["10.0.0.11:8080"] } ] # (3) 进行重启Prometheus [root@docker03 prometheus-2.23.0.linux-amd64]# ps -ef | grep prom root 2416 2111 0 22:25 pts/1 00:00:04 ./prometheus --config.file=prometheus.yml [root@docker03 prometheus-2.23.0.linux-amd64]# kill 2416 [root@docker03 prometheus-2.23.0.linux-amd64]# ./prometheus --config.file="prometheus.yml" & # (4) 添加10.0.0.12:8080节点,不需要重启 [root@docker03 prometheus-2.23.0.linux-amd64]# vim job/server.json [ { "targets": ["10.0.0.11:8080","10.0.0.12:8080"] } ]
小提示:
# (1) cadvisor的静态配置方法如下 [root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml prometheus.yml scrape_configs: - job_name: 'cadvisor' static_configs: - targets: ['10.0.0.11:8080','10.0.0.12:8080'] - # (2) cadvisor的动态配置就是Prometheus的自动发现 [root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml scrape_configs: - job_name: 'cadvisor' file_sd_configs: - files: - job/server.json refresh_interval: 10s [root@docker03 prometheus-2.23.0.linux-amd64]# vim job/server.json [ { "targets": ["10.0.0.11:8080","10.0.0.12:8080"] } ]
alterManager可以和Prometheus在一个服务器上,alterManager有自己的ip和端口,以至于Prometheus可以连接alterManager。
# (1) 二进制安装alertManager [root@docker03 opt]# tar xf alertmanager-0.21.0.linux-amd64.tar.gz [root@docker03 opt]# cd alertmanager-0.21.0.linux-amd64/ # (2) 修改配置文件,添加邮件信息 [root@docker03 alertmanager-0.21.0.linux-amd64]# vim alertmanager global: resolve_timeout: 5m smtp_from: 'xxx@qq.com' smtp_smarthost: 'smtp.qq.com:465' smtp_auth_username: 'xxx@qq.com' smtp_auth_password: 'xxxxxxxxxxx' smtp_require_tls: false smtp_hello: 'qq.com' route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'email' receivers: - name: 'email' email_configs: - to: 'xxx@qq.com' send_resolved: true inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance'] # (3) 启动alterManager [root@docker03 alertmanager-0.21.0.linux-amd64]# ./alertmanager --config.file="alertmanager.yml" &
# (1) 修改Prometheus的配置文件,集成alterManager [root@docker03 prometheus-2.23.0.linux-amd64]# vim prometheus.yml alerting: alertmanagers: - static_configs: - targets: - 10.0.0.13:9093 rule_files: - "node_down.yml" # (2) 在当前目录下创建node_down.yml,来创建告警发邮件的规则 [root@docker03 prometheus-2.23.0.linux-amd64]# vim node_down.yml groups: - name: node-up rules: - alert: node-up expr: up{job="node-exporter"} == 0 for: 15s labels: severity: 1 team: node annotations: summary: "{{ $labels.instance }} 已停止运行超过 15s!" # (3) 重启Prometheus,告警的配置改变必须重启才能生效 [root@docker03 prometheus-2.23.0.linux-amd64]# ps -ef | grep prom root 2416 2111 0 22:25 pts/1 00:00:04 ./prometheus --config.file=prometheus.yml [root@docker03 prometheus-2.23.0.linux-amd64]# kill 2416 [root@docker03 prometheus-2.23.0.linux-amd64]# ./prometheus --config.file="prometheus.yml" &
访问alterManager服务端:
访问Prometheus服务端:
测试:到10.0.0.11上停止node_exporter,docker stop node_exporter
为什么要使用grafana,因为Prometheus监控出图不太直观和美观,所以使用grafana专业出图软件进行出图,grafana出图比较优秀
grafana下载地址: https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Packages/
grafana dashboard模板下载: https://grafana.com/grafana/dashboards/
# (1) 安装grafana
[root@docker03 ~]# yum localinstall grafana-7.3.4-1.x86_64.rpm -y
[root@docker03 ~]# systemctl start grafana-server.service
[root@docker03 ~]# systemctl enable grafana-server.service
# (2) 浏览器访问grafana,http://IP:3000,默认账号admin:admin
使用grafana流程,需要先了解概念
插件: 如果grafana默认会有部分软件出图,比如Prometheus。如果不支持出图的软件,需要安装插件,来保证出图,比如zabbix
数据源: 我们需要用grafana连接Prometheus出图,需要创建一个Prometheus的数据源,这个数据源里面要写上Prometheus的地址,主要是grafana需要获取Prometheus的数据来出图。
dashboard: grafana的出图模板,利用模板来生成好看的监控图。dashboard模板下载:https://grafana.com/grafana/dashboards/
grafana流程: 导入插件 --> 配置数据源 --> 导入dashboard
开始使用grafana来出图node-exporter,cadvisor
(1)改变主题
(2)grafana默认有Prometheus插件,不需要安装额外的插件
(3)添加Prometheus的数据源
(4)导入dashboard模板,进行监控出图,下载dashboard模板:https://grafana.com/grafana/dashboards/
Prometheus的node-exporter出图
Prometheus的cadvisor出图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。