什么是 Grafana?

Grafana 是一个用于可视化指标的开源工具以及来自不同数据源的日志。它可以查询这些指标、发送警报,并且可以积极用于监控和可观察性,使其成为获取见解的流行工具。这些指标可以存储在各种数据库中,Grafana 支持其中的大多数,例如 Prometheus、Zabbix、Graphite、MySQL、PostgreSQL、Elasticsearch等。如果没有数据源,可以开发定制插件来集成这些数据源。 Grafana 如今被广泛用于监控和可视化数百或数千台服务器、Kubernetes 平台、虚拟机、大数据平台等的指标。Grafana 的关键功能是它能够通过创建仪表板以可视化形式共享这些指标,因此团队可以协作进行数据分析并提供实时支持。

Grafana 目前支持的各种平台:

  1. 关系数据库
  2. 云服务,例如 Google Cloud Monitoring、Amazon Cloud Watch、Azure Cloud
  3. 时间序列数据库,例如用于内存和 CPU 使用情况图表的 InfluxDB
  4. 其他数据源,例如 Elasticsearch 和 Graphite

什么是普罗米修斯?

它是一个开源数据源,用于基础设施监控和可观察性。它存储从各种来源收集的时间序列数据,例如用各种编程语言开发的应用程序、虚拟机、数据库、服务器、Kubernetes 集群等。为了查询这些指标,它使用一种名为 PromQL 的查询语言,可以使用探索不同时间和间隔的这些指标,并确保深入了解上述系统的健康状况。为了创建仪表板、发送警报并确保可观察性,需要使用 Grafana 等工具。

什么是 Zabbix?

采用Zabbix进行全面监控,保证系统的可靠性和可靠性IT 基础设施(如网络、服务器和应用程序)的效率。它由三个组件组成:Zabbix Server、Zabbix Agent 和前端。

  1. Zabbix Server 用于收集数据。
  2. Zabbix 代理收集数据并将其发送到 Zabbix 服务器。
  3. 前端是一个用于配置的 Web 界面。

Zabbix 与 Prometheus 的比较

<表格样式=“最大宽度:100%;宽度:自动;表格布局:固定;显示:表格;”宽度=“自动”>
<正文>

功能/方面

普罗米修斯

Zabbix

主要用例

服务器和服务的指标集合。

全面监控网络、服务器和应用程序。

数据收集

数字指标集合,可以通过 HTTP 端点查看。

用于收集性能数据、SNMP、IPMI 和 JMX 支持的代理(Zabbix 代理)。支持某些场景的无代理监控。

记录

无法收集或分析日志。

Zabbix 无法进行集中日志分析。您可以监视日志文件,但无法进行分析。

数据可视化

通过数字和图表可以实现数据可视化。

通过图表、图形、地图和仪表板以图形方式表示监控数据。

应用程序指标

如果 Prometheus 与 Web 应用程序集成,则可以收集应用程序指标。

目前没有可用的应用程序相关指标/仪表板/警报。

服务指标

Prometheus 可以从 Web 应用程序收集指标。

Zabbix 可以监控 haproxy、数据库 MySQL、PostgreSQL、HTTP 服务等服务,并且需要配置/集成。

自定义指标

可以通过导出器收集自定义指标。

异常检测功能从 6.0 版本开始提供。

警报系统

无法通过 Prometheus 发出警报。

强大的警报系统,具有可自定义的触发器、操作、升级和通知渠道。

警报可以触发电子邮件通知、Slack 、Pagerduty、Jira 等

服务可用性

不可能。

Zabbix 有一个内置功能来生成服务可用性报告。计划内和计划外的停机时段需要手动输入脚本,从而生成服务可用性报告。

保留政策

Prometheus 可以保留指标 1 天到多天。

Zabbix 将所有数据保存在自己的数据库中。

安全功能

Prometheus 和大多数导出器都支持 TLS。包括通过 TLS 客户端证书对客户端进行身份验证。有关配置 Prometheus 的详细信息请参见此处。 Go 项目共享基于 Go crypto/tls 库的相同 TLS 库。

强大的用户角色和权限、对用户访问的精细控制以及组件之间的安全通信。

Kubernetes 兼容性

Prometheus 可以与 Kubernetes 集群完全集成。它充分利用导出器来收集指标并将其显示在 UI 上。

兼容性

Zabbix 与 K8s 兼容,可用于监控 K8s 环境的各个方面。

< br/>

没有使用 K8s 日志转发器进行日志记录

应用程序日志无法转发到 Zabbix 服务器。

使用 Zabbix 进行容器监控

Zabbix Server 可以配置为从部署在 K8s 节点和应用程序上的 Zabbix Agent 收集数据。

可扩展性

Zabbix 还可以水平扩展,使其适合节点和应用程序数量不断增加的大型 K8s 部署。


在 Grafana 中添加数据源

数据源是指标的来源位置。这些指标被集成到 Grafana 中以用于可视化和其他目的。

先决条件

您需要在 Grafana 中拥有“管理员”角色才能进行这些更改。

您需要了解数据源的连接详细信息,例如数据库名称、登录详细信息、数据库的 URL 和端口号以及其他相关信息。

以下步骤可用于添加自定义源:

  1. 首先,导航至侧边栏并打开上下文菜单。然后单击“配置”,然后单击“数据源”。
  2. 要创建数据源,请先添加它。单击菜单中的“连接”并创建数据源。
  3. 现在,选择指标来源的数据源类型。如果是自定义数据源,则单击自定义数据源。
  4. 提供在先决条件中收集的所需连接详细信息。
  5. 保存并测试连接并确保没有错误。保存数据源后,您可以探索指标并创建仪表板。

如何集成 Grafana 和 Prometheus 来监控服务器指标的演示

假设

  1. 操作系统:Centos 7 Linux 虚拟机
  2. 可以通过互联网访问这些软件包
  3. 对虚拟机的 root 访问权限
  4. 单机设置:Grafana、Prometheus 和 Node Exporter 安装在单个虚拟机上
  5. 节点导出器

安装 Grafana

禁用 Selinux 和防火墙

纯文本

 

systemctl 停止防火墙
systemctl 禁用防火墙

为 Grafana 添加 yum.repo

纯文本

 

 [grafana]
名称=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
启用=1
gpg检查=1
gpgkey=https://packages.grafana.com/gpg.key
ssl验证=1
 sslcacert=/etc/pki/tls/certs/ca-bundle.crt
纯文本

 

[root@vm-grafana ~]# yum install grafana
[root@vm-grafana ~]# vim /etc/sysconfig/grafana-server

编辑 Grafana 配置文件以添加安装 Grafana 的端口和 IP。

 

[root@vm-grafana ~]# vim /etc/grafana/grafana.ini

取消注释
# 要使用的 http 端口
http_端口 = 3000
# 用于从浏览器访问grafana的面向公众的域名
域名=127.0.0.1

重启Grafana Server服务并检查日志

日志文件位置。

 

[root@vm-grafana ~]# tail -f /var/log/grafana/grafana.log
[root@vm-grafana ~]# systemctl restart grafana-server
[root@vm-grafana ~]# systemctl status grafana-server

连接到 Web UI

Grafana 将连接到端口 3000。

Grafana Web UI

图片 1:Grafana Web UI

安装 Prometheus 和 Node-Exporter

下载 Prometheus 包

位置

纯文本

 

yum 安装 wget
wget https://github.com/prometheus/prometheus/releases/download/v2.49.1/prometheus-2.49.1.linux-amd64.tar.gz
保存到:‘prometheus-2.49.1.linux-amd64.tar.gz’

安装

useradd --no-create-home --shell /bin/false 普罗米修斯
mkdir /etc/普罗米修斯
mkdir /var/lib/普罗米修斯
chown 普罗米修斯:普罗米修斯 /etc/prometheus
chown prometheus:prometheus /var/lib/prometheus 

解压包。

纯文本

 

[root@vm-grafana ~]# tar zxvf prometheus-2.49.1.linux-amd64.tar.gz
mv prometheus-2.49.1.linux-amd64 prometheuspackage
cp prometheuspackage/prometheus /usr/local/bin/
cp prometheuspackage/promtool /usr/local/bin/
chown prometheus:prometheus /usr/local/bin/prometheus
chown prometheus:prometheus /usr/local/bin/promtool
cp -r prometheuspackage/consoles /etc/prometheus
cp -r prometheuspackage/console_libraries /etc/Prometheus
chown -R prometheus:prometheus /etc/prometheus/consoles
chown -R prometheus:prometheus /etc/prometheus/console_libraries
chown prometheus:prometheus /etc/prometheus/prometheus.yml

编辑配置文件。

纯文本

 

全局:
  刮擦间隔:10s
scrap_configs:
  - 作业名称:'prometheus_master'
刮擦间隔:5s
静态配置:
- 目标:['localhost:9090']

为 Prometheus 创建 Linux 服务文件。

纯文本

 

vim /etc/systemd/system/prometheus.service

[单元]
描述=普罗米修斯
想要=网络在线.target
After=网络在线.target
 
[服务]
用户=普罗米修斯
组=普罗米修斯
类型=简单
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
 
[安装]
WantedBy=多用户.target

启动服务。

纯文本

 

systemctl 守护进程重新加载
systemctl启动普罗米修斯
systemctl status prometheus

访问 Prometheus Web UI。

Prometheus Web UI

图 2:Prometheus Web UI

Prometheus Web UI

图 3:Prometheus Web UI

使用 Prometheus 监控 Linux 服务器并与 node_exporter 集成

下载安装程序

纯文本

 

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
[root@vm-grafana ~]# tar zxvf node_exporter-1.7.0.linux-amd64.tar.gz
[root@vm-grafana ~]# ls -ld node_exporter-1.7.0.linux-amd64
drwxr-xr-x。 2 普罗米修斯 普罗米修斯 56 十一月 13 00:03 node_exporter-1.7.0.linux-amd64

设置说明

纯文本

 

useradd -rs /bin/false nodeusr
mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/

为节点导出器创建服务文件

纯文本

 

vim /etc/systemd/system/node_exporter.service
 
[单元]
描述=节点导出器
之后=网络.目标
[服务]
用户=nodeusr
组=nodeusr
类型=简单
ExecStart=/usr/local/bin/node_exporter
[安装]
WantedBy=多用户.target

重新加载系统守护进程并启动节点导出器服务

纯文本

 

systemctl 守护进程重新加载
systemctl 重新启动node_exporter
systemctl启用node_exporter

查看指标浏览节点导出器 URL。< /p>

node_exporter Web UI

图片 4:node_exporter Web UI

node_exporter 与 Prometheus 集成

登录Prometheus服务器,修改prometheus.yml配置文件。在scrape配置下添加以下配置。

纯文本

 

vim /etc/prometheus/prometheus.yml
 - 作业名称:'node_exporter_centos'
刮擦间隔:5s
静态配置:
- 目标:['TARGET_SERVER_IP:9100']

重新启动 Prometheus 服务。

纯文本

 

systemctl 重启 prometheus

登录 Prometheus Server Web 界面,并检查目标

点击此链接

“普罗米修斯中的node_exporter”class

图 5:Prometheus 中的 node_exporter

Prometheus 中的node_exporter

图 6:Prometheus 中的 node_exporter

您可以单击图表并查询任何服务器指标,然后单击执行以显示输出。它将显示控制台输出。

图片 7:指标来自虚拟机

图 7:来自虚拟机的指标

从查询指标

图 8:根据查询指标构建图表

在 Grafana 中添加 Prometheus 作为数据源

单击“添加新数据源”,然后输入 Prometheus URL 将 Prometheus 添加为数据源。

添加新数据源“class =“lazyload”data-creationdate =“1707183631477”data-creationdateformatted =“02/06/2024 01:40 AM”data-id =“17496100”data-image =“true”data-mimetype =“image/ jpeg

图 9:添加新数据源

使用此 链接和ID。

仪表板 ID:10180

单击仪表板并转到导入的仪表板。您现在应该能够看到服务器的所有指标。

“Grafana

图 10:Grafana 仪表板

后续步骤

用户可以探索有关设置警报的更多信息,添加基于角色的访问控制、从远程服务器导入指标以及 Grafana 管理作为后续步骤。

Comments are closed.