目录
      
     
      
       grafana和Prometheus ,Zabbix 的关系?
      
     
      
       
        Prometheus与Zabbix关系:
       
      
     
      
       Zabbix发行版本时间上比Prometheus早了四年;
      
     
      
       Zabbix是开源的分布式监控系统,是一个企业级的分布式开源监控方案。能够监控各种网络参数以及服务器健康性和完整性的软件。允许用户为几乎任何事件配置基于邮件的告警;
      
     
| 发行时间 | 开发语言 | 社区支持 | 容器支持 | 部署难度 | |
|---|---|---|---|---|---|
| Zabbix | 2012 | c+php | 应用广泛,支持较为成熟 | 出现较早对容器支持较差,传统监控 | 多种系统,多种监控信息采集方式 | 
| Prometheus | 2016 | go | 人数不如zabbix | 不仅支持swarm原声集群,还支持容器集群,是目前容器监控最好的解决方案 | 只有一个核心server组件,一条命令可以启动 | 
      
       
        总结
       
      
     
      
       综合来看,Zabbix 的成熟度更高,上手更快,但更好的集成导致灵活性较差,问题更大时,监控数据的复杂度增加后,Zabbix 做进一步定制难度很高,即使做好了定制,也没法利用之前收集到的数据了(关系型数据库造成的问题)。Prometheus 基本上是正相反,上手难度大一些,但由于定制灵活度高,数据也有更多的聚合可能,起步后的使用难度远小于 Zabbix。但如果已经对传统监控系统有技术积累的话,还是要谨慎考虑更换监控。
      
     
      
       
        Prometheus
       
      
     
      
       
        简介:
       
      
     
      
       
        是由SoundCloud开源的监控报警解决方案:
       
      
     
- 
 也是一款
 
 
 
 监控软件
 
 
 
 ,也是一个
 
 
 
 时序数据库
 
 
 
 。
 
- 
 数据带时间标签
 
- 
 主要
 
 
 
 用在容器监控方面
 
 
 
 ,也可以用于
 
 
 
 常规的主机监控
 
 
 
 。
 
- 
 使用google公司开发的
 
 
 
 go语言
 
 
 
 编写。
 
- 
 Prometheus是一个框架,可以与其他组件完美结合。
 
      
       
        部署Prometheus服务器
       
      
     
       
     
- 
 prometheus:192.168.4.10
 
- 
 被控端node1:192.168.4.11
 
[root@prometheus ~]# tar xf prometheus_soft.tar.gz 
[root@prometheus ~]# cd prometheus_soft/
# prometheus是经过编译后的go语言程序,相当于绿色软件,解压即用
[root@prometheus prometheus_soft]# tar xf prometheus-2.17.2.linux-386.tar.gz 
[root@prometheus prometheus_soft]# mv prometheus-2.17.2.linux-386 /usr/local/prometheus
# 修改配置文件
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
 29     - targets: ['192.168.4.10:9090']
# 注意:prometheus主机的时间需要与真机时间一致,如果不一致,修改时间
[root@prometheus ~]# date -s "20220105 14:18:00"
# 检查语法
[root@prometheus ~]# /usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml 
Checking /usr/local/prometheus/prometheus.yml
  SUCCESS: 0 rule files found
# 创建服务文件
[root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
After=network.target
[Service]
ExecStart=/usr/local/prometheus/prometheus \
  --config.file=/usr/local/prometheus/prometheus.yml \
  --storage.tsdb.path=/usr/local/prometheus/data/
[Install]
WantedBy=multi-user.target
# 启服务
[root@prometheus ~]# systemctl daemon-reload 
[root@prometheus ~]# systemctl enable prometheus.service --now
[root@prometheus ~]# ss -tlnp | grep :9090
LISTEN     0      128         :::9090
      
       
        查看监控页面
       
      
     
       
     
       
     
      
       
        添加被监控端
       
      
     
- 
 
 监控方式:
 
 - 
 
 拉取:pull。监控端联系被监控端,采集数据
 
 
- 
 
 推送:push。被监控端主动把数据发给监控端。在prometheus中,push的方式需要额外的组件pushgateway
 
 
 
- 
- 
 被监控端根据自身运行的服务,可以运行不同的exporter(被监控端安装的、可以与Prometheus通信,实现数据传递的软件)
 
- 
 exporter列表:
 
 
 Exporters and integrations | Prometheus
 
      
       
        部署通用的监控exporter
       
      
     
      
       
        简介:
       
      
     
      
       
        广义上讲所有想prometheus提供监控样本数据的程序都可以被称为一个exporter,而exporter的一个实例成为target,如下所示,prometheus通过轮询的方式定期从这些target中获取样本数据。
       
      
     
       
     
- 
 node-exporter用于监控硬件和系统的常用指标
 
- 
 exporter运行于被监控端,以服务的形式存在。每个exporter所使用的端口号都不一样。
 
- 
 在node1[192.168.4.11]上部署node exporter
 
# 部署
[root@node1 ~]# tar xf node_exporter-1.0.0-rc.0.linux-amd64.tar.gz 
[root@node1 ~]# mv node_exporter-1.0.0-rc.0.linux-amd64 /usr/local/node_exporter
[root@node1 ~]# vim/usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
[root@node1 ~]# systemctl daemon-reload 
[root@node1 ~]# systemctl enable node_exporter.service --now
[root@node1 ~]# ss -tlnp | grep :9100
LISTEN     0      128         :::9100
      
       
        在Prometheus服务器上添加监控节点
       
      
     
# 在配置文件中追加以下内容。特别注意缩进
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml 
  - job_name: 'node1'
    static_configs:
    - targets: ['192.168.4.11:9100']
[root@prometheus ~]# systemctl restart prometheus.service 
       
     
      
       
        grafana和Prometheus ,Zabbix 的关系?
       
      
     
      
       
        大家更常用的是 Grafana 作为 Prometheus 的前端,
       
      
      
       Grafana和Prometheus一样,
      
      
       
        都是用Go编写的。
       
      
      
       Granafa支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源;
      
     
      
       
        Zabbix 本身也可以把 Grafana 作为前端,但就原生的 UI 进行对比,Prometheus 稍微简单了点。
       
      
     
      
       
        grafana可视化
       
      
     
- 
 grafana是一款开源的、跨平台的、基于web的可视化工具
 
- 
 展示方式:客户端图表、面板插件
 
- 
 数据源可以来自于各种源,如prometheus
 
      
       
        部署grafana
       
      
     
      
       
        装包、启服务
       
      
     
[root@prometheus ~]# cd prometheus_soft/
[root@prometheus prometheus_soft]# ls *rpm
grafana-6.7.3-1.x86_64.rpm
[root@prometheus prometheus_soft]# yum install -y grafana-6.7.3-1.x86_64.rpm
[root@prometheus ~]# systemctl enable grafana-server.service --now
      
       
        修改配置,对接prometheus
       
      
     
      
       
        访问
       
      
      
       http://192.168.4.10:3000
      
      
       
        。初始用户名和密码都是admin。第一次登陆时,要求改密码
       
      
     
       
     
      
       
        对接数据的步骤:
       
      
     
- 
 添加数据源
 
- 
 为数据展示选择展示方式(dashboard仪表盘)
 
- 
 查看结果
 
       
     
 
