prometheus监控篇-----------------------(一)

prometheus监控篇-----------------------------------------(一)

Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的。自2012年成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有一个非常活跃的开发者和用户社区。它现在是一个独立的开放源码项目,并且独立于任何公司,为了强调该点并澄清项目的治理结构,Prometheus在2016年加入了云计算基金会,成为继Kubernetes之后的第二个托管项目。 Prometheus是用来收集数据的,同时本身也提供强大的查询能力,结合Grafana即可以监控并展示出想要的数据。

Prometheus的主要特征

  • 多维度数据模型
  • 灵活的查询语言 (PromQL)
  • 不依赖分布式存储,单个服务器节点是自主的
  • 以HTTP方式,通过pull模型拉去时间序列数据
  • 也通过中间网关支持push模型
  • 通过服务发现或者静态配置,来发现目标服务对象
  • 支持多种多样的图表和界面展示,grafana也支持它

Prometheus组件
Prometheus生态包括了很多组件,它们中的一些是可选的:

  • 主服务Prometheus Server负责抓取和存储时间序列数据
  • 客户库负责检测应用程序代码
  • 支持短生命周期的PUSH网关
  • 基于Rails/SQL仪表盘构建器的GUI
  • 多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式
  • 警告管理器 (AlertManaager)
  • 命令行查询工具
  • 其他各种支撑工具

Prometheus监控Kubernetes集群过程中,通常情况为:

  • 使用metric-server收集数据给k8s集群内使用,如kubectl,hpa,scheduler等
  • 使用prometheus-operator部署prometheus,存储监控数据
  • 使用kube-state-metrics收集k8s集群内资源对象数据
  • 使用node_exporter收集集群中各节点的数据
  • 使用prometheus收集apiserver,scheduler,controller-manager,kubelet组件数据
  • 使用alertmanager实现监控报警
  • 使用grafana实现数据可视化

prometheus架构及组件特点
Prometheus 直接接收或者通过中间的 Pushgateway 网关被动获取指标数据,在本地存储所有的获取的指标数据,并对这些数据进行一些规则整理,用来生成一些聚合数据或者报警信息,Grafana 或者其他工具用来可视化这些数据。

Prometheus服务可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中,PromQL和其他API可视化展示收集的数据在K8s中,关于集群的资源有metrics度量值的概念,有各种不同的exporter可以通过api接口对外提供各种度量值的及时数据,prometheus在与k8s融合工作的过程中就是通过与这些提供metric值的exporter进行交互,获取数据,整合数据,展示数据,触发告警的过程。

1)Prometheus获取metrics

  • 对短暂生命周期的任务,采取拉的形式获取metrics (不常见)
  • 对于exporter提供的metrics,采取拉的方式获取metrics(通常方式),对接的exporter常见的有:kube-apiserver 、cadvisor、node-exporter,也可根据应用类型部署相应的exporter,获取该应用的状态信息,目前支持的应用有:nginx/haproxy/mysql/redis/memcache等。

2)Prometheus适用场景
Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。

prometheus+grafana ##源码的部署

部署prometheus监控端
mkdir /opt/monitor/
[root@zabbix ~]# tar -xf prometheus-2.25.0.linux-amd64.tar.gz -C /opt/monitor/
[root@zabbix ~]# mv prometheus-2.25.0.linux-amd64.tar.gz /opt/monitor/prometheus
[root@zabbix ~]# cd /opt/monitor/prometheus-2.25.0.linux-amd64/
[root@zabbix prometheus-2.25.0.linux-amd64]# ls
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool
[root@zabbix monitor]# mv prometheus-2.25.0.linux-amd64/ prometheus/

[root@zabbix monitor]# cd /usr/lib/systemd/system/
[root@zabbix monitor]# cat prometheus.service
[Unit]
Description=prometheus
[Service]
ExecStart=/opt/monitor/prometheus/prometheus --config.file=/opt/monitor/prometheus/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

[root@zabbix system]#systemctl restart prometheus
[root@zabbix system]# ps -ef | grep prometheus
root 75418 1 0 08:45 ? 00:00:00 /opt/monitor/prometheus/prometheus --config.file=/opt/monitor/prometheus/prometheus.yml
root 78206 66919 0 08:49 pts/2 00:00:00 grep --color=auto prometheus
[root@zabbix system]# ss -anptu | grep prometheus
tcp LISTEN 0 128 :::9090 ::😗 users:((“prometheus”,pid=75418,fd=8))
tcp ESTAB 0 0 ::1:42484 ::1:9090 users:((“prometheus”,pid=75418,fd=3))
tcp ESTAB 0 0 ::1:9090 ::1:42484 users:((“prometheus”,pid=75418,fd=7))
访问 ip:9090

部署grafana可视化页面
[root@zabbix ~]# tar -xf grafana-7.4.5.linux-amd64.tar.gz -C /opt/monitor/
[root@zabbix ~]# cd /opt/monitor/
[root@zabbix monitor]# mv grafana-7.4.5/ grafana/
[root@zabbix system]# cd /usr/lib/systemd/system
[root@zabbix system]# cat grafana.service
[Unit]
Description=grafana
[Service]
ExecStart=/opt/monitor/grafana/bin/grafana-server -homepath=/opt/monitor/grafana
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

[root@zabbix ~]# systemctl restart grafana
[root@zabbix ~]# ps -ef | grep grafana
root 82018 1 6 08:55 ? 00:00:00 /opt/monitor/grafana/bin/grafana-server -homepath=/opt/monitor/grafana
root 82165 66919 0 08:55 pts/2 00:00:00 grep --color=auto grafana
[root@zabbix ~]# ss -anptu | grep grafana
tcp ESTAB 0 31 192.168.0.60:50536 185.199.109.133:443 users:((“grafana-server”,pid=82018,fd=10))
tcp ESTAB 0 0 192.168.0.60:52324 34.120.177.193:443 users:((“grafana-server”,pid=82018,fd=9))
tcp LISTEN 0 128 :::3000 ::😗 users:((“grafana-server”,pid=82018,fd=8))
访问: ip:3000

源码包的资源
https://prometheus.io/download/
https://www.programmableweb.com/api/grafana

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值