prometheus
1、二进制
2、部署在k8s集群当中,pod形式部署
开源的系统监控和告警。
在k8s分布式的容器化管理系统当中,一般都是搭配prometheus来进行监控
服务器监控系统(监控主机),自带数据库,时序数据库:提供了数据模型和采集的指标项,存储,查询接口。
promql语句,如何采集和统计。
nodeexporter:在k8s集群当中部署在node节点上,用来收集节点上的数据(主机指标,pod的使用情况)。
需要部署在每个节点上。
pushgateway:把数据上传到prometheus,然后再根据promql语句来进行分类的展示
prometheus的特点:
1、的数据模型,按照顺序记录,记录设备状态的变化,为每个数据指定一个样本:服务器的指标,应用性能的监控。网络数据。
2、内置时间序列 数据库——TSDB
3、promql
4、http协议拉取1数据
5、自带服务自动发现功能。
6、grafana插件可以更人性化的展示指标数据
TSDB:
1、存储的量级非常大
2、大部分都是写入操作
3、写入操作是按照时序进行添加的
4、高并发性能很强大
Alertmanager:
告警管理,是一个的模块,需要的配置,电子邮件,钉钉,企业微信。
prometheus和zabbix的区别:
1、指标采集的方式
zabbix分为服务端和客户端,agent都是部署在客户端,然后把数据发送给服务端。tcp协议通信 (ip+端口)
prometheus根据客户端进行收集,服务端和客户端进行交互,pull的方式获取监控指标。基于http协议
2、数据存储
zabbix使用外部数据库存储数据,mysql prostgreSQL oracle。关系型数据库
prometheus自带内置的时序数据库(TSDB)————只支持存储时间序列的值
3、查询性能
zabbix查询功能较弱
prometheus的查询功能更强大,速度更快
4、告警功能
都是内置告警功能,都可以邮件,电话(prometheus没有打电话功能)等等。
5、监控的内容
zabbix主要是为了监控设备(服务器的状态)cpu——内存——硬盘——网络流量——自定义的监控项(非虚拟化部署的程序。)
zabbix的时间更长,更成熟,使用监控方面要求不高,只需要对服务设备监控的场景。
prometheus:专门为k8s定制的监控软件,对容器产品兼容度更好。定制化程度更高。更适用于微服务场景。
promql
grafana-enterprise-7.5.11-1.x86_.rpm
node_exporter-1.5.0.linux-amd.tar.gz
prometheus-2.45.0.linux-amd.tar.gz
——————————————————————————————————————————————————————————————
#node_exporter在node节点和master节点上都导入
#grafana-enterprise和prometheus这两个只再master上导入
[root@master01 opt]# tar -xf prometheus-2.45.0.linux-amd.tar.gz
[root@master01 opt]# mv prometheus-2.45.0.linux-amd prometheus
cat > /usr/lib/systemd/system/prometheus.service <<'EOF'
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target
[Service]
Type=simple
ExecStart=/opt/prometheus/prometheus \
--config.file=/opt/prometheus/prometheus.yml \
--storage.tsdb.path=/opt/prometheus/data/ \
--storage.tsdb.retention=15d \
--web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
[root@master01 opt]# systemctl daemon-reload
[root@master01 opt]# systemctl restart prometheus.service
[root@master01 opt]# netstat -antp | grep 9090
tcp 0 0 127.0.0.1:50402 127.0.0.1:9090 ESTABLISHED 105741/prometheus
tcp6 0 0 :::9090 :::* LISTEN 105741/prometheus
tcp6 0 0 127.0.0.1:9090 127.0.0.1:50402 ESTABLISHED 105741/prometheus
[root@master01 prometheus]# vim prometheus.yml
# my global config
global:
#全局的配置,对所有生效
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
#采集主机监控数据的间隔时间,15s采集一次
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
#触发告警的时间间隔,间隔时间是15s
# scrape_timeout is set to the global default (10s).
scrape_timeout: 10s
#数据采集的超时时间,10s
# Alertmanager configuration
alerting:
#告警的实例配置
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
#加载告警的规则
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
#配置采集的数据源
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: nodes
metrics_path: "/metrics"
#采集数据的默认路径
static_configs:
- targets:
- 192.168.60.110:9100
- 192.168.60.120:9100
- 192.168.60.130:9100
labels:
service: kubernetes
——————————————————————————三台一起操作——————————————————————————
[root@master01 opt]# tar -xf node_exporter-1.5.0.linux-amd.tar.gz
[root@master01 opt]# mv node_exporter-1.5.0.linux-amd node_exporter-1.5.0
[root@master01 opt]# cd node_exporter-1.5.0/
[root@master01 node_exporter-1.5.0]# ls
LICENSE node_exporter NOTICE
[root@master01 node_exporter-1.5.0]# mv node_exporter /usr/local/bin/
cat > /usr/lib/systemd/system/node_exporter.service <<'EOF'
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
[root@master01 node_exporter-1.5.0]# systemctl restart node_exporter.service
[root@master01 node_exporter-1.5.0]# netstat -antp | grep 9100
#在浏览器访问192.168.60.110:9090
[root@master01 opt]# rpm -ivh grafana-enterprise-7.5.11-1.x86_.rpm
[root@master01 opt]# systemctl restart grafana-server.service
[root@master01 opt]# netstat -antp | grep 3000
tcp6 0 0 :::3000 :::* LISTEN 128768/grafana-serv
#在浏览器访问192.168.60.110:3000
https://grafana.com/grafana/dashboards
#在这个网站找模板
12633和8171是可以使用的