首页 > 其他分享 >Prometheus+Grafana+zabbix搭建的监控平台

Prometheus+Grafana+zabbix搭建的监控平台

时间:2024-12-25 13:31:14浏览次数:6  
标签:node exporter prometheus grafana zabbix Grafana Prometheus

Prometheus+Grafana+zabbix搭建的监控平台

目录

1. 介绍

1.1 Prometheus是什么?Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。

Prometheus - Monitoring system & time series database(https://prometheus.io/)
Prometheus · GitHub(https://github.com/prometheus)
作为新一代的监控框架,Prometheus 具有以下特点:

• 多维数据模型:由度量名称和键值对标识的时间序列数据
• PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
• 不依赖分布式存储,单个服务器节点可直接工作
• 基于HTTP的pull方式采集时间序列数据
• 推送时间序列数据通过PushGateway组件支持
• 通过服务发现或静态配置发现目标
• 多种图形模式及仪表盘支持

Prometheus适用于以机器为中心的监控以及高度动态面向服务架构的监控。

1.2 Grafana是什么?

Grafana是一个开源的度量分析和可视化系统。
Grafana支持查询普罗米修斯。自Grafana 2.5.0(2015-10-28)以来,包含了Prometheus的Grafana数据源。

从Grafana.com导入预先构建的仪表板。
Grafana.com维护着一组共享仪表板 ,可以下载并与Grafana的独立实例一起使用。
Download Grafana | Grafana Labs(https://grafana.com/grafana/download)
从Grafana.com导入预先构建的仪表板。

Grafana.com维护着一组共享仪表板 ,可以下载并与Grafana的独立实例一起使用。
简单来说:Grafana提供了比Prometheus更加友好美观的展示界面

模板界面下载地址(https://grafana.com/grafana/dashboards/?plcmt=footer)

2. Prometheus+Grafana安装

2.1 组件

组件	                                      说明
prometheus-2.41.0.windows-amd64	          监控server端,用于汇总展示各收集器的资源情况(界面丑)
grafana-enterprise-8.2.2.windows-amd64	  度量分析可视化系统,仪表盘多,替换prometheus默认展示界面

2.2 安装包下载

Prometheus下载地址:https://prometheus.io/download/
​ grafana下载: https://grafana.com/grafana/download?platform=windows

2.4 Prometheus 安装

linux下安装:
tar -zxvf prometheus-2.43.0.linux-amd64.tar.gz
直接启动:

nohup /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

访问地址:http://192.168.xxx.9090/

设置开机自启
1.在/etc/systemd/system/路径下编辑prometheus.service (linux centos7系统)

$ cat /etc/systemd/system/prometheus.service

[Unit]
Description=logging prometheus service
Documentation=https://prometheus.io
[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/prometheus-2.43.0/prometheus  --config.file=/opt/prometheus-2.43.0/prometheus.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
  1. 通过systemctl命令启动prometeus.service
$ systemctl daemon-reload          //重新加载服务配置文件
$ systemctl start prometheus && systemctl enable prometheus  //启动prometheus并设置开机自启动

Docker部署Prometheus

Prometheus相关介绍

官方介绍,非常的清楚:

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

Prometheus(普罗米修斯)是一个开源的系统监控和报警系统,具有活跃的生态系统。
2016年加入到CNCF基金会(Cloud Native Computing Foundation),成为继k8s之后第二个在CNCF托管的项目。

目前,行业常见的收集监测数据方式主要分为推送(Push)和抓取(Pull)两个模式。以越来越广泛应用的Prometheus监测体系举例,Prometheus监控就是以抓取(Pull)模式运行的典型系统。应用及基础设施的监测数据以OpenMetrics标准接口的形式暴露给Prometheus监控,然后由Prometheus监控进行定期抓取并长期存储。

OpenMetrics,是云原生、高度可扩展的指标协议。 OpenMetrics定义了大规模上报云原生指标的事实标准,并支持文本表示协议和Protocol Buffers协议,文本表示协议在其中更为常见,也是在Prometheus监控进行数据抓取时默认采用的协议。

指标的数据模型由指标(Metric)名,以及一组Key/Value标签(Label)定义的,具有相同的度量名称以及标签属于相同时序集合。
随着时间推移,这些收集起来的采样点数据将在图表上实时绘制动态变化的线条

目前,对于云原生体系下的绝大多数基础组件能够支持OpenMetrics的文本协议格式暴露指标,对于暂不能支持自身暴露指标的组件, Prometheus社区也存在极其丰富的Prometheus Exporter供开发及运维人员使用。这些组件(或Exporter)通过响应来自Prometheus监控的定期抓取请求来及时地将自身的运行状况记录到Prometheus监控以便后续的处理及分析。对于应用开发者,您还可以通过Prometheus监控的多语言SDK,进行代码埋点,将自身的业务指标也接入到上述的Prometheus生态当中。

Docker部署Prometheus说明

监控端安装:
Prometheus Server(普罗米修斯监控主服务器 )
Node Exporter (收集Host硬件和操作系统信息)
cAdvisor (负责收集Host上运行的容器信息)
Grafana (展示普罗米修斯监控界面)

被监控安装:
Node Exporter (收集Host硬件和操作系统信息)
cAdvisor (负责收集Host上运行的容器信息)

安装Prometheus
可以参考:
https://hub.docker.com/r/prom/prometheus

搜索镜像

docker search prom/prometheus

拉取镜像

版本号可以去官网查看:
https://hub.docker.com/r/prom/prometheus

docker pull prom/prometheus

配置

准备相关挂载目录及配置文件。本文使用/Users/xxx/路径作为案例,自行按需替换。

# 新建prometheus目录,并
mkdir -p /Users/xxx/prometheus/{data,config,rules}

# 如果需要授权相关文件夹权限,可以参考下面的命令
chmod -R 777 /Users/xxx/prometheus/data
chmod -R 777 /Users/xxx/prometheus/rules
chmod -R 777 /Users/xxx/prometheus/config

# 编辑prometheus.yml文件
cd /Users/xxx/prometheus/config
sudo vim prometheus.yml

配置文件修改:

global:
  scrape_interval: 60s
  evaluation_interval: 60s

# 告警规则
rule_files:
  # 这里匹配指定目录下所有的.rules文件
  - /prometheus/rules/*.rules

scrape_configs:
  - job_name: prometheus
    static_configs:
      # prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
      - targets: ["111.111.0.88:9090"]
        labels:
          instance: prometheus

  - job_name: node
    static_configs:
      # 注意,这里的ip需要配宿主机器的ip地址,因为prometheus是通过docker的方式部署的
      - targets: ["111.111.0.88:9100"]
        labels:
          instance: node

prometheus配置项说明

global:         全局配置 (如果有内部单独设定,会覆盖这个参数)
alerting:       告警插件定义。这里会设定alertmanager这个报警插件
rule_files:     告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现
scrape_configs: 采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现
remote_write:   用于远程存储写配置
remote_read:    用于远程读配置

启动容器

docker run -d  -p 9090:9090 --name prometheus \
    -v /etc/localtime:/etc/localtime:ro \
    -v /Users/xxx/prometheus/data:/prometheus/data \
    -v /Users/xxx/prometheus/config:/etc/prometheus \
    -v /Users/xxx/prometheus/rules:/prometheus/rules \
    prom/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-lifecycle

运行起来后,可以访问:http://localhost:9090/

配置说明:

  • config.file:指定配置文件,路径是容器中的路径,不是宿主机中的路径
  • web.enable-lifecycle:启动此项后,当配置文件发生变化后,可通过HTTP API 发送 post 请求到 /-/reload,实现热加载,如:curl -X POST http://localhost:9090/-/reload
  • -v /etc/localtime:/etc/localtime:ro 表示让容器使用宿主机的时间, :ro表示只读 (注:此方式只针对宿主机和容器的时区文件均为/etc/localtime);

进入容器

注意:prometheus用的是sh,不是bash。

docker exec -it prometheus sh

遇到的问题
Are you trying to mount a directory onto a file (or vice-versa)?
可以参考下面的文章解决:
https://blog.csdn.net/u014163312/article/details/129135384

其他可能的错误
1.在指定了保存天数–storage.tsdb.retention.time参数后,必须指定–config.file配置文件路径。否则会报以下异常。
level=error msg=“Error loading config (–config.file=prometheus.yml)” err=“open prometheus.yml: no such file or directory”

2.Docker容器中的prometheus服务默认是以nobody用户启动的,如果出现权限问题,可以在创建容器时指定root用户,或更改文件权限。
err=“open /prometheus/queries.active: permission denied”

3.出现iptables错误,需要重启docker服务:service docker restart
docker0: iptables: No chain/target/match by that name

2.5 安装 Grafana

Grafana介绍:
在获取应用或基础设施运行状态、资源使用情况,以及服务运行状态等直观信息后,通过查询和分析多类型、多维度信息能够方便的对节点进行跟踪和比较。同时,通过标准易用的可视化大盘去获知当前系统的运行状态。
比较常见的解决方案就是Grafana,作为开源社区中目前热度很高的数据可视化解决方案,Grafana提供了丰富的图表形式与模板。

拉取镜像

# 此方式,即拉取最新的镜像,等同于 docker pull grafana/grafana:lastest
docker pull grafana/grafana

# 也可以拉取指定版本的
docker pull grafana/grafana:9.3.2

准备相关挂载目录及文件

准备目录

# /Users/xxx/grafana/data 目录,准备用来挂载放置grafana的数据
# /Users/xxx/grafana/plugins 目录,准备用来放置grafana的插件
# /Users/xxx/grafana/config 目录,准备用来挂载放置grafana的配置文件
mkdir -p /Users/xxx/grafana/{data,plugins,config}

# 如果需要授权相关文件夹权限,可以参考下面的命令
chmod -R 777 /Users/xxx/grafana/data
chmod -R 777 /Users/xxx/grafana/plugins
chmod -R 777 /Users/xxx/grafana/config

准备配置文件

# 先临时启动一个容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana
# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /Users/xxx/grafana/config/grafana.ini
# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp

# 修改配置文件(需要的话)
# vim /Users/xxx/grafana/config/grafana.ini

启动容器

# 启动grafana
# 环境变量GF_SECURITY_ADMIN_PASSWORD:指定admin的密码
# 环境变量GF_INSTALL_PLUGINS:指定启动时需要安装得插件
#         grafana-clock-panel代表时间插件
#         grafana-simple-json-datasource代表json数据源插件
#         grafana-piechart-panel代表饼图插件

docker run -d \
    -p 3000:3000 \
    --name=grafana \
    -v /etc/localtime:/etc/localtime:ro \
    -v /Usersx x x/grafana/data:/var/lib/grafana \
    -v /Users/xxx/grafana/plugins/:/var/lib/grafana/plugins \
    -v /Users/xxx/grafana/config/grafana.ini:/etc/grafana/grafana.ini \
    -e "GF_SECURITY_ADMIN_PASSWORD=admin" \
    -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" \
    grafana/grafana




docker ps -a
docker start 657b42fd26cd
docker start grafana

访问测试

访问http://localhost:3000/即可,使用账密admin/admin进行登录即可

3.添加 Prometheus 数据源

grafana -> Settings -> Data sources -> Add data source -> Prometheus

  • 在HTTP URL中填写本机IP+Prometheus服务器运行的port.
  • HTTP Method选择Get方法

常见问题

添加prometheusDatasource报错: Error reading Prometheus: An error occurred within the plugin
解决:将添加数据源的ip设置为本机ip,当设置为localhost时由于容器环境运行的grafana,所以localhost在容器内部可能有自己的定义。

看板配置

grafana官网已经提供了许多模板,我们可以下载自己需要的模板,然后导入本地grafana。
官网地址:https://grafana.com/grafana/dashboards/。
首先在官网搜索,比如JVM,然后选择需要的模板,点击查看详情,即可以看到模板数据。

模板导入支持3种方式:

下载模板对应的json文件,然后上传json文件导入
使用模板ID在线导入,需要Grafana连接外网
直接编辑模板的json字符串然后导入

可以用以下两个Grafana社区中的开源大盘模板来构建自己的业务监测模板:
https://grafana.com/grafana/dashboards/10280?spm=a2c4g.11186623.0.0.6f4c1640jJ0xzj

4. Windows 安装 exporter

4.1 部署配置windows资源采集器

4.1.1 安装包下载

​官方下载地址:https://github.com/prometheus-community/windows_exporter/releases
百度云网盘:https://pan.baidu.com/s/1KXedfMPOs84CsbxXRCxKhQ?pwd=38i6

4.1.2 安装Windows-exporter

(1)用管理员身份运行 windows_exporter-0.20.0-amd64.msi ,运行成功后服务中可以看到windows_exporter服务
(2)将服务状态修改为 “自动(延迟启动)”

(3)浏览器访问http://127.0.0.1:9182/metrics,看到如下界面成功

(4) 在prometheus端配置windows_exporter采集器地址,在prometheus.yml 中添加如下内容 (注意缩进)

global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.205.xxxx:9090"]
  - job_name: "NC TEST"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.201.xxx:9100"]

(5)重启prometheus端,打开http://127.0.0.1:9090/targets,windows状态为up即成功
promes

4.1.3 导入 windows-exporter 仪表盘

(1)打开Dashboards-Manage
(2)点击 import
(3)仪表盘模板导入
仪表盘有两种导入的方式,一种是选择上传 json 文件,该文件是仪表盘json文件,一次上传一个,选择模板后,点击import。另一种是根据 dashboard ID 上传,在 "Load" 按钮前面输入官方提供的 dashboard ID ,然后点击 "Load" 按钮。
当前导入的是 windows-exporter 的dashboard ,选择用 dashboard ID进行import:
这里我输入了 10467,它是 windows-exporter的 dashboard ID,然后点击 “Load”
(4)选择数据来源,也就是选择 Prometheus 实例
进入当前页面,在底部的 prometheus 下拉框选择 Prometheus 实例,点击 import 完成。
(5)打开Dashboards,可以看到已经添加了的 [windows资源监控] 仪表盘,打开详情如下:

5. Linux 安装部署 exporter

5.1 部署安装 node_exporter

5.1.1 安装包下载

​官方下载地址:https://github.com/prometheus/node_exporter/releases
百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x

5.1.2 安装

将安装包 node_exporter-0.18.1.linux-amd64.tar.gz 上传至服务器。

tar -zvxf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64 /usr/local/
ln -s /usr/local/node_exporter-1.5.0.linux-amd64 /usr/local/node_exporter

5.1.3 注册为系统服务

vim /usr/lib/systemd/system/node_exporter.service

cat > /usr/lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=node_exporter
Documentation=https://github.com/prometheus/node_exporter
After=network.target
 
[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

EOF

重置系统服务并将node_exporter开机自启、启动 node_exporter服务

systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter

尝试登陆

4.1.4 浏览器访问http://ip:9100/metrics,看到如下界面成功

5.1.5 添加到 Prometheus 配置监控

  - job_name: "NC TEST"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.xx.xx:9100"]

(2)重启Prometheus

稍等一会,访问http://127.0.0.1:9090/targets,发现node_exporter已经添加进去。

5.1.6 配置 Grafana

去地址:Dashboards | Grafana Labs查找node_exporter模板。
这里使用:Node Exporter for Prometheus Dashboard based on 11074,ID 号为:15172。

在 Dashboards manager 使用 dashboard ID 进行 import 加载仪表盘,效果如下:

6 部署安装 oracle_exporter

注意:oracle_exporter 只有linux版本没有windows版本,因此我们可以启动多个服务(通过远程连接)来监控windows下的oracle服务

6.1 安装包下载

官方下载地址:https://github.com/iamseth/oracledb_exporter/releases
百度云网盘:https://pan.baidu.com/s/1Xn-mTCo4DqENRlEgo2dRjg?pwd=bl7x

软件包版本:
oracle-instantclient-basic-21.4.0.0.0-1.x86_64.rpm
oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64.tar.gz for 12C
oracledb_exporter.0.2.3.linux-amd64.tar.gz for 11g
Oracle database server 12C

6.2 安装

tar -zxvf oracledb_exporter.0.2.9-ora18.5.linux-amd64.tar.gz
mv oracledb_exporter.0.2.9-ora18.5.linux-amd64 /usr/local/oracle_exporter

6.3 编辑环境变量配置文件

增加一个TNS_ADMIN环境变量
vim ~/.bash_profile

# oracle环境变量
export ORACLE_SID=orcl
export ORACLE_HOME=/data/oracle/product/11.2.0/db_1
# oracledb_exporter环境变量
export PATH=$PATH:$ORACLE_HOME/bin
# export DATA_SOURCE_NAME=用户名/密码
export DATA_SOURCE_NAME=system/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

step 3.创建 DATA_SOURCE_NAME
确保在启动前正确设置环境变量 DATA_SOURCE_NAME。
DATA_SOURCE_NAME 应采用 Oracle EZCONNECT 格式:
https://docs.oracle.com/en/database/oracle/oracle-database/19/netag/configuring-naming-methods.html#GUID-B0437826-43C1-49EC-A94D-B650B6A4A6EE
19c Oracle Client 支持增强的 EZCONNECT,您可以故障转移到备用数据库或从活动备用数据库收集一些重要指标并指定一些附加参数。 在 19c 客户端中,您也可以连接 12c 主/备用数据库

标签:node,exporter,prometheus,grafana,zabbix,Grafana,Prometheus
From: https://www.cnblogs.com/xulinforDB/p/18630164

相关文章

  • Grafana 重置admin密码
    Grafana重置admin密码原创不小心忘记了grafanaweb界面的密码后,使用官网的方式重置密码http://docs.grafana.org/administration/cli/#reset-admin-password但是并没有成功。然后使用google到的另外一个方法重置成功了,现在记录下来:1.查找grafana.db文件find/-name"grafa......
  • dataezse接入zabbix监控
    常用查询目录常用查询zabbix常用库表说明主机资源监控主机资源监控(纯值)oracle状态监控CPUtop10DISKTOP10MemoryTOP10SPACEUSERDTOP10问题告警级别分布问题列表null问题主机组正常主机总数主机问题排行zabbix常用库表说明https://www.cnblogs.com/yaoyaojcy/p/1036794......
  • 注册grafana数据源和模版
    一、ansible方式1、-name:SetPrometheusDataSourceJSONbodyset_fact:prometheus_datasource_body:>{{{'name':'Prometheus','type':'prometheus','url�......
  • Docker 环境中配置 Grafana:详细教程与常见配置项解析
    言简意赅的讲解Docker环境中通过修改Grafana配置解决的痛点Grafana是一个开源的数据可视化工具,用于监控和分析实时数据。它广泛应用于时序数据库如Prometheus、InfluxDB和其他数据源的监控展示。在Docker环境中运行Grafana是一种常见的做法,通过DockerCompose......
  • Ubuntu22.04 LTS 部署zabbix7.0
    Ubuntu22.04LTS部署zabbix7.0环境准备IP主机名配置10.0.0.50zabbix-012c4G10.0.0.52db2c4G1.添加zabbix仓库[root@zabbix-01:~]#wgethttps://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_......
  • zabbix外部程序告警关键配置
    环境:OS:Centos7zabbix:4.0.5 1.主机配置  2.用户配置     3.用户组配置   4.动作配置 可以针对某个具体的触发器定义动作      5.脚本需要加上执行权限chown+x脚本   ......
  • [ruby]获取zabbix上所有主机的ip
    get_zabbix_hosts.rbrequire'net/http'require'uri'......
  • [python3] 获取zabbix上所有主机的ip
    get_zabbix_hosts.pyimportrequestsimportjson......
  • zabbix自定义监控项
    只要zabbix-get能得到的数据zabbix-server就能得到执行脚本之一#cat /etc/zabbix/zabbix_agentd.d/tcp_conn_plugin.sh#!/bin/bash#author:songxiaomintcp_conn_status(){  TCP_STAT=$1  ss-ant|awk'NR>1{++s[$1]}END{for(kins)printk,s[k]}'......
  • zabbix的包安装并运行
     我在centos7上安装的,一台虚拟机实现zabbix,一台虚机上安装要连接的数据库(MySQL)具体步骤在下面文档中,我描述了一些容易踩的坑DownloadandinstallZabbix5.0LTSforCentOS7,MySQL,Apache到这一步,centos官方源是无法访问的可以直接配置阿里云的源如果/etc/yum.re......