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_64.rpm node_exporter-1.5.0.linux-amd64.tar.gz prometheus-2.45.0.linux-amd64.tar.gz —————————————————————————————————————————————————————————————— #node_exporter在node节点和master节点上都导入 #grafana-enterprise和prometheus这两个只再master上导入 [root@master01 opt]# tar -xf prometheus-2.45.0.linux-amd64.tar.gz [root@master01 opt]# mv prometheus-2.45.0.linux-amd64 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-amd64.tar.gz [root@master01 opt]# mv node_exporter-1.5.0.linux-amd64 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_64.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是可以使用的