Posted by Socrates on | Featured
什么是 Grafana?
Grafana 是一个用于可视化指标的开源工具以及来自不同数据源的日志。它可以查询这些指标、发送警报,并且可以积极用于监控和可观察性,使其成为获取见解的流行工具。这些指标可以存储在各种数据库中,Grafana 支持其中的大多数,例如 Prometheus、Zabbix、Graphite、MySQL、PostgreSQL、Elasticsearch等。如果没有数据源,可以开发定制插件来集成这些数据源。 Grafana 如今被广泛用于监控和可视化数百或数千台服务器、Kubernetes 平台、虚拟机、大数据平台等的指标。Grafana 的关键功能是它能够通过创建仪表板以可视化形式共享这些指标,因此团队可以协作进行数据分析并提供实时支持。
Grafana 目前支持的各种平台:
- 关系数据库
- 云服务,例如 Google Cloud Monitoring、Amazon Cloud Watch、Azure Cloud
- 时间序列数据库,例如用于内存和 CPU 使用情况图表的 InfluxDB
- 其他数据源,例如 Elasticsearch 和 Graphite
什么是普罗米修斯?
它是一个开源数据源,用于基础设施监控和可观察性。它存储从各种来源收集的时间序列数据,例如用各种编程语言开发的应用程序、虚拟机、数据库、服务器、Kubernetes 集群等。为了查询这些指标,它使用一种名为 PromQL 的查询语言,可以使用探索不同时间和间隔的这些指标,并确保深入了解上述系统的健康状况。为了创建仪表板、发送警报并确保可观察性,需要使用 Grafana 等工具。
什么是 Zabbix?
采用Zabbix进行全面监控,保证系统的可靠性和可靠性IT 基础设施(如网络、服务器和应用程序)的效率。它由三个组件组成:Zabbix Server、Zabbix Agent 和前端。
- Zabbix Server 用于收集数据。
- Zabbix 代理收集数据并将其发送到 Zabbix 服务器。
- 前端是一个用于配置的 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 部署。
TD>
|
表>
在 Grafana 中添加数据源
数据源是指标的来源位置。这些指标被集成到 Grafana 中以用于可视化和其他目的。
先决条件
您需要在 Grafana 中拥有“管理员”角色才能进行这些更改。
您需要了解数据源的连接详细信息,例如数据库名称、登录详细信息、数据库的 URL 和端口号以及其他相关信息。
以下步骤可用于添加自定义源:
- 首先,导航至侧边栏并打开上下文菜单。然后单击“配置”,然后单击“数据源”。
- 要创建数据源,请先添加它。单击菜单中的“连接”并创建数据源。
- 现在,选择指标来源的数据源类型。如果是自定义数据源,则单击自定义数据源。
- 提供在先决条件中收集的所需连接详细信息。
- 保存并测试连接并确保没有错误。保存数据源后,您可以探索指标并创建仪表板。
如何集成 Grafana 和 Prometheus 来监控服务器指标的演示
假设
- 操作系统:Centos 7 Linux 虚拟机
- 可以通过互联网访问这些软件包
- 对虚拟机的 root 访问权限
- 单机设置:Grafana、Prometheus 和 Node Exporter 安装在单个虚拟机上
- 节点导出器
安装 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。
图片 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。
图 2: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>
图片 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 服务。
登录 Prometheus Server Web 界面,并检查目标
点击此链接。
图 5:Prometheus 中的 node_exporter
图标题>
图 6:Prometheus 中的 node_exporter
图标题>
您可以单击图表并查询任何服务器指标,然后单击执行以显示输出。它将显示控制台输出。
图 7:来自虚拟机的指标
图标题>
图 8:根据查询指标构建图表
图标题>
在 Grafana 中添加 Prometheus 作为数据源
单击“添加新数据源”,然后输入 Prometheus URL 将 Prometheus 添加为数据源。
图 9:添加新数据源
图标题>
使用此 链接和ID。
仪表板 ID:10180
单击仪表板并转到导入的仪表板。您现在应该能够看到服务器的所有指标。
图 10:Grafana 仪表板
图标题>
后续步骤
用户可以探索有关设置警报的更多信息,添加基于角色的访问控制、从远程服务器导入指标以及 Grafana 管理作为后续步骤。