2020-10-12 架构师第18周作业

架构班的小伙伴作业看这里哦:(学习杰哥视频的作业第35天)

1、安装配置promethues和alertmanager,实现对k8s的监控,并将监控数据展示到grafana


前言

本篇文章介绍k8s集群中部署prometheus、grafana、alertmanager,并且配置prometheus的动态、静态服务发现,实现对容器、物理节点、service、pod等资源指标监控,并在Grafana的web界面展示prometheus的监控指标,然后通过配置自定义告警规则,通过alertmanager实现qq、钉钉、微信报警,文章内容较多,大概1.5万以上字数,可以先关注和转发,在慢慢学习。

prometheus简介

Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

prometheus特点

1.多维度数据模型

1.1 时间序列数据由metrics名称和键值对来组成

1.2 可以对数据进行聚合,切割等操作

1.3 所有的metrics都可以设置任意的多维标签。

2.灵活的查询语言(PromQL)

可以对采集的metrics指标进行加法,乘法,连接等操作;

3.可以直接在本地部署,不依赖其他分布式存储;

4.通过基于HTTP的pull方式采集时序数据;

5.可以通过中间网关pushgateway的方式把时间序列数据推送到prometheus server端;

6.可通过服务发现或者静态配置来发现目标服务对象(targets)。

7.有多种可视化图像界面,如Grafana等。

8.高效的存储,每个采样数据占3.5 bytes左右,300万的时间序列,30s间隔,保留60天,消耗磁盘大概200G。

prometheus组件介绍

1.Prometheus Server: 用于收集和存储时间序列数据。

2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。

3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端

4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。

5.Grafana:监控仪表盘

6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。


prometheus架构图


        Prometheus整个生态圈组成主要包括prometheus server,Exporter,pushgateway,alertmanager,grafana,Web ui界面,Prometheus server由三个部分组成,Retrieval,Storage,PromQL

1 Retrieval:负责在活跃的target主机上抓取监控指标数据

2 Storage:存储主要是把采集到的数据存储到磁盘中

3 PromQL:是Prometheus提供的查询语言模块。

prometheus 二进制安装:

1 下载:https://prometheus.io/download/

# tar xvf prometheus-2.11.1.linux-amd64.tar.gz

# ln -sv /usr/local/src/prometheus-2.11.1.linux-amd64 /usr/local/prometheus

# cd /usr/local/prometheus

2 创建prometheus启动脚本

# vim /etc/systemd/system/prometheus.service

[Unit]

Description=Prometheus Server

Documentation=https://prometheus.io/docs/introduction/overview/

After=network.target

[Service]

Restart=on-failure

WorkingDirectory=/usr/local/prometheus/

ExecStart=/usr/local/prometheus/prometheus --

config.file=/usr/local/prometheus/prometheus.yml

[Install]

WantedBy=multi-user.target

3 启动prometheus服务

# systemctl daemon-reload

# systemctl restart prometheus

# systemctl enable prometheus

4 安装node exporter

4.1 收集各k8s node节点上的监控指标数据,监听端口为9100

# tar xvf node_exporter-0.18.1.linux-amd64.tar.gz

# ln -sv /usr/local/src/node_exporter-0.18.1.linux-amd64 /usr/local/node_exporter

# cd /usr/local/node_exporter

4.2 创建node exporter启动脚本

# vim /etc/systemd/system/node-exporter.service

[Unit]

Description=Prometheus Node Exporter

After=network.target

[Service]

ExecStart=/usr/local/node_exporter/node_exporter

[Install]

WantedBy=multi-user.target

4.3 启动node exporter服务

# systemctl daemon-reload

# systemctl restart node-exporter

# systemctl enable node-exporter

5 prometheus采集node 指标数据

5.1 配置prometheus通过node exporter采集 监控指标数据

prometheus配置文件:prometheus.yml

global:

alerting:

alertmanagers:

- static_configs:

- targets:

rule_files:

scrape_configs:

- job_name: 'prometheus'

static_configs:

- targets: ['localhost:9090']

- job_name: 'promethues-node'

static_configs:

- targets: ['192.168.7.110:9100','192.168.7.111:9100']

systemctl restart prometheus

安装grafana

1 调用prometheus的数据,进行更专业的可视化

# rpm -hiv grafana-7.0.5-1.x86_64.rpm

2 配置文件

# vim /etc/grafana/grafana.ini

[server]

# Protocol (http, https, socket)

protocol = http

# The ip address to bind to, empty will bind to all interfaces

http_addr = 0.0.0.0

# The http port to use

http_port = 3000

3 启动grafana

# systemctl start grafana-server.servicesystemctl enable grafana-server.service


在web界面添加prometheus数据源及模板

你可能感兴趣的:(2020-10-12 架构师第18周作业)