一、应用简介
Prometheus(普罗米修斯)是一整套的开源免费的分布式监控应用,目前已经成为云原生领域最主流的监控方案。其可以对系统和应用的指标进行采集、存储、查询、告警和展示。
zabbix主要面向静态服务器和网络设备等,而Prometheus则更适配云原生环境,对比zabbix:
1、Prometheus可以自动识别新上线服务实例并加入监控,zabbix则更适合长期稳定的固定项想监控,对动态实例的识别监控需要大量手动配置
2、由于数据模型的差别,Prometheus支持多维度的筛选和聚合,zabbix则难以实现复杂的多维度分析
3、Prometheus相较于zabbix的查询能力更强大
4、虽然都时开源项目,但Prometheus的社区活跃度远高于zabbix,更有发展潜力
5、相较于zabbix,Prometheus架构更轻量化,扩展性更强
Prometheus常用组件:
1)Prometheus Server:Prometheus服务端
2)exporter:监控客户端组件,这是一组组件,包括比如Node_exporter、mysql_exporter等
3)AlterManager:报警模块
4)PushGateway:网关
5)Web UI:可视化UI界面模块
Grafana是一款开源的数据可视化监控分析平台,可以将分散在不同数据源中的数据聚合起来,通过仪表盘进行可视化展示、分析和告警。其可以兼容多达数十种主流数据源,为用户提供高度可定制化的可视化图标,强大的多渠道告警功能和高度的扩展生态。广泛应用于IT运维监控、云原生监控等方面
二、实验环境
Server1:192.168.3.50
Server2:192.168.3.51
系统:CentOS 7.9
端口规划(默认端口):
Prometheus:9090
node_exporter:9100
mysqld_exporter:9104
grafana:3000
本次实验的exporter组件包括node_exporter和mysqld_exporter
本次实验均使用root用户操作,生产环境中建议针对每个服务创建服务专属的账户,并响应的对该服务的安装目录进行授权
三、部署prometheus和exporter组件
1、上传下载好的Prometheus软件包并解压
mkdir -p /opt/monitortar zxvf prometheus-3.5.0.linux-amd64.tar.gzmv prometheus-3.5.0.linux-amd64 prometheus
2、配置systemd服务,注意大小写,并设置开机自启动
vim /etc/systemd/system/prometheus.service [Unit]Description=PrometheusWants=network-noline.targetAfter=network-online.target [Service]User=rootGroup=rootType=simpleExecStart=/opt/monitor/prometheus/prometheus --config.file=/opt/monitor/prometheus/prometheus.yml --storage.tsdb.path=/opt/monitor/prometheus/data --web.console.templates=/opt/monitor/prometheus/consoles --web.console.libraries=/opt/monitor/prometheus/console_libraries [Install]WantedBy=multi-user.target systemctl daemon-reloadsystemctl start prometheussystemctl enable prometheus
验证Prometheus,在浏览器中访问http://prometheus-serverIP:9090(可以使用隐私模式,以防插件干扰),或者在服务器中执行命令curl Prometheus-serverIP:9090来检查Prometheus的状态
3、配置Prometheus配置文件,根据实际环境修改
vim /opt/monitor/prometheus/prometheus.yml # 全局配置global: scrape_interval: 15s # 指标采集间隔(默认15秒,可根据需求调整) evaluation_interval: 15s # 规则评估间隔(如告警规则) # 告警管理器配置(暂不部署,留空)alerting: alertmanagers: - static_configs: - targets: [] # 规则文件(告警规则、记录规则,暂不配置)rule_files: [] # 监控目标配置(核心:定义要采集的 exporter)scrape_configs: # 1. 监控 Prometheus 自身(必填,用于查看 Prometheus 运行状态) - job_name: "prometheus" static_configs: - targets: ["192.168.3.50:9090"] # Prometheus 自身地址 # 2. 监控 node_exporter(服务器指标) - job_name: "node_exporter" static_configs: - targets: - "192.168.3.50:9100" # 目标服务器1的 node_exporter 地址 - "192.168.3.51:9100" # 目标服务器2的 node_exporter 地址(多节点可新增) # 3. 监控 mysqld_exporter(MySQL 指标) - job_name: "mysqld_exporter" static_configs: - targets: - "192.168.3.50:9104" # MySQL 服务器的 mysqld_exporter 地址 - "192.168.3.51:9104"
4、在服务器中部署exporter组件,
node_exporter
tar zxvf node_exporter-1.9.1.linux-amd64.tar.gz mv node_exporter-1.9.1.linux-amd64 node_exporter
配置systemd服务
[Unit]Description=Node Exporter for PrometheusAfter=network.target [Service]User=node_exporterGroup=node_exporterExecStart=/opt/monitor/node_exporter/node_exporter --web.listen-address=:9100 # 默认监听 9100 端口Restart=on-failure [Install]WantedBy=multi-user.target systemctl daemon-reloadsystemctl start node_exportersystemctl enable node_exporter
浏览器访问http://IP:9100/metrics,看到大量以node开通的指标,则表示部署成功
mysqld_exporter
1)创建配置文件,配置mysql的账号密码
vim /opt/monitor/mysqld_exporter/.my.cnf [client]user=prometheus #mysql的账户密码,拥有监控权限,需要提前创建password=123456host=127.0.0.1 # 若 MySQL 在远程,替换为远程 IPport=3306
2)配置systemd服务
vim /etc/systemd/system/mysqld_exporter.service [Unit]Description=MySQL Exporter for PrometheusAfter=network.target mysql.service # 确保 MySQL 启动后再启动 exporter [Service]User=rootGroup=rootExecStart=/opt/monitor/mysqld_exporter/mysqld_exporter --config.my-cnf=/opt/monitor/mysqld_exporter/.my.cnf # 指定 MySQL 配置文件 --web.listen-address=:9104 # 默认监听 9104 端口Restart=on-failure [Install]WantedBy=multi-user.target
浏览器访问http://IP:9104/metrics,看到大量以mysql开通的指标,则表示部署成功
四、部署Grafana
1、安装依赖
需要安装libfontconfig,否则会导致图标渲染异常
yum install -y fontconfig
2、解压压缩包并移动到安装位置
tar zxvf grafana-enterprise-10.0.0.linux-amd64.tar.gz mv grafana-10.0.0/ /usr/local/grafana
3、创建grafana的systemd服务,需要手动创建数据目录和日志目录和pid文件目录
mkdir -p /usr/local/grafana/datamkdir -p /usr/local/grafana/logsmkdir -p /var/run/grafanavim /etc/systemd/system/grafana-server.service [Unit]Description=Grafana Visualization Platform (tar package)Documentation=https://grafana.com/docs/After=network.target prometheus.service # 确保网络和Prometheus启动后再启动Wants=network.target [Service]# 运行用户(可创建使用grafana专用用户,授予最低权限,这里使用root)User=rootGroup=root# 禁止root权限切换# NoNewPrivileges=true #当使用专用用户时,禁止root权限切换# Grafana启动命令(指定配置文件、数据目录、日志目录)ExecStart=/usr/local/grafana/bin/grafana-server --config=/usr/local/grafana/conf/defaults.ini # 默认配置文件路径 --homepath=/usr/local/grafana # Grafana主目录 --pidfile=/var/run/grafana/grafana-server.pid # PID文件路径(需手动创建目录)# 启动超时时间TimeoutStartSec=60s# 重启策略(异常退出时自动重启)Restart=on-failureRestartSec=10s# 限制资源(可选,根据服务器配置调整)# LimitNOFILE=65535# LimitNPROC=4096 [Install]WantedBy=multi-user.target systemctl daemon-reloadsystemctl start grafanasystemctl enable grafana
6、自定义修改配置
官方不建议手动修改配置文件defaults.ini,如有自定义端口等需求,可以创建自定义配置文件,举例如下
vim /usr/local/grafana/conf/custom.ini # 1. 修改默认端口(避免端口冲突)[server]http_port = 3001 # 默认端口为3000,可自定义修改为未被占用的端口 # 2. 配置访问域名(若有域名解析)domain = grafana.your-domain.com # 3. 开启GZip压缩(优化页面加载速度)[rendering]enable_gzip = true # 4. 调整日志级别(调试时用debug,正常运行用info)[log]level = info # 5. 自定义grafana的数据存储路径和日志存储路径[paths]data = /usr/local/grafana/datalogs = /usr/local/grafana/logs systemctl restart grafana #自定义配置完成后,重启服务以使配置生效
7、登录grafana,浏览器访问http://serverIP:3000,初始密码为admin/admin,第一次访问会强制修改密码(如grafana@123)。
可在界面中设置中文显示,或在主配置文件defaults.ini中[users]配置段中进行配置
[users]default_language = zh-Hans
8、对接prometheus数据源
1)点击页面左侧home,选择connections

2)选择Data sources-->Add new data source

3)选择prometheus

4)配置prometheus数据源,然后点击保存,显示Successfully queried the Prometheus API.表示连接成功

5)根据需要使用默认模版或者自己做的模版,在Grafana上进行配置即可
6)Grafana仪表盘市场:https://grafana.com/grafana/dashboards,可以在这里下载适合自己需求的仪表盘json文件
上一条:Grafana运维利器
下一条:Grafana仪表盘
品质保证
多年的生产力软件专家
专业实力
资深技术支持项目实施团队
安全无忧
多位认证安全工程师
多元服务
软件提供方案整合,项目咨询实施
购软平台-找企业级软件,上购软平台。平台提供更齐全的软件产品、更专业的技术服务,同时提供行业资讯、软件使用教程和技巧。购软平台打造企业级数字产品综合应用服务平台。用户体验和数字类产品的专业化服务是我们不断追求的目标。购软平台您身边的企业级数字产品优秀服务商。
沪公网安备31011302006932号