Prometheus+exporter+Grafana

news2024/9/22 23:17:09

参考文档:https://www.cnblogs.com/morang/p/devops-prometheus-grafana-install-use-db-site-monitor.html

  1. Prometheus:监控中心,监控exporter的实时数据

  2. exporter:采集数据工具,如下:

  3. Grafana:可视化监控

搭建Prometheus

# 创建目录并赋权
mkdir -p /data/prometheus/data && chown 65534 /data/prometheus/data
# 创建配置目录
mkdir /data/prometheus/conf
# 配置prometheus.yml文件
vi /data/grafana/conf/prometheus.yml

配置prometheus.yml

# prometheus.yml
global:
  scrape_interval: 15s
  external_labels:
    monitor: 'monitor'

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: 
        - localhost:9090
  - job_name: 'linux服务器'
    # 每隔5秒从该作业中抓取目标
    scrape_interval: 5s
    static_configs:
        # 需要监控的服务器列表
      - targets:
        - 127.0.0.1:9100

docker安装Prometheus

# docker安装Prometheus
docker run -d \
--restart always \
--name prometheus \
-p 9090:9090 \
-v /data/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /data/prometheus/data:/prometheus \
prom/prometheus:v2.47.2 \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.retention.time=45d

Prometheus监控页面:http://127.0.0.1:9090

搭建Exporter

exporter下载地址:https://github.com/orgs/prometheus/repositories?type=all&q=exporter

node_exporter端口:9100
mysqld_exporter端口:9104
postgres_exporter端口:9187
mongodb_exporter端口:9216
redis_exporter端口:9121

# centos开放9100端口
firewall-cmd --zone=public --add-port=9100/tcp --permanent && firewall-cmd --reload

# ubuntu开放9100端口
ufw allow 9100

# 检查是否成功
http://ip:9100/metrics

Linux数据采集:node_exporter

下载地址:https://github.com/prometheus/node_exporter

安装数据采集工具

pkill -9 node_expo

# systemd配置自启动
cat > /usr/lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=node_exporter
After=network.target
 
[Service]
Type=simple
# 如果开启了SELinux,则需要临时关闭它
ExecStartPre=/usr/sbin/setenforce 0
ExecStart=/data/node_exporter/node_exporter
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload && systemctl start node_exporter && systemctl enable node_exporter

# 重新加载配置
systemctl daemon-reload

# 启动开机自启
systemctl enable node_exporter
# 关闭开机自启
systemctl disable node_exporter

# 启动
systemctl start node_exporter
# 关闭
systemctl stop node_exporter
# 查看状态
systemctl status node_exporter
# 重启
systemctl restart node_exporter

# 查看日志
journalctl -u node_exporter -f -n 100

# 如果上述失败,需要临时关闭SElinux
setenforce 0
 # 开启
setenforce 1

# 解压、重命名、后台启动
tar -zxvf /data/node_exporter-1.7.0.linux-amd64.tar.gz -C /data  && mv /data/node_exporter-1.7.0.linux-amd64 /data/node_exporter && 
nohup /data/node_exporter/node_exporter >/data/node_exporter/node_exporter.log 2>&1 &

Mysql数据采集:mysqld_exporter

下载地址:https://github.com/prometheus/mysqld_exporter

添加Mysql监控账号,并设置权限

# 进入mysql命令行
mysql -uxxx -pxxx
# 创建监控账号
create user 'prometheus'@'%' identified by 'prometheus';
# 设置权限
grant all privileges on *.* to 'prometheus'@'%' with grant option;
# 刷新
flush privileges;

安装数据采集工具

# 解压、重命名
tar -zxvf /data/mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /data  && mv /data/mysqld_exporter-0.15.1.linux-amd64 /data/mysqld_exporter

# 创建配置文件
# vi /data/mysqld_exporter/.my.cnf
[client]
host=xxx
port=xxx
user=prometheus
# 密码中不能带有 # 符号
password=prometheus

# systemd配置自启动
cat > /usr/lib/systemd/system/mysqld_exporter.service <<EOF
[Unit]
Description=mysqld_exporter
After=network.target
 
[Service]
Type=simple
ExecStart=/data/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/mysqld_exporter/.my.cnf
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF

# 重新加载配置
systemctl daemon-reload

# 启动开机自启
systemctl enable mysqld_exporter
# 关闭开机自启
systemctl disable mysqld_exporter

# 启动
systemctl start mysqld_exporter
# 关闭
systemctl stop mysqld_exporter
# 查看状态
systemctl status mysqld_exporter
# 重启
systemctl restart mysqld_exporter

# 查看日志
journalctl -u mysqld_exporter -f -n 100




# 后台启动
nohup /data/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/mysqld_exporter/.my.cnf > /data/mysqld_exporter/mysqld_exporter.log 2>&1 &

PostgreSQL数据采集:postgres_exporter

postgres版本 < 10,需要执行以下命令

-- To use IF statements, hence to be able to check if the user exists before
-- attempting creation, we need to switch to procedural SQL (PL/pgSQL)
-- instead of standard SQL.
-- More: https://www.postgresql.org/docs/9.3/plpgsql-overview.html
-- To preserve compatibility with <9.0, DO blocks are not used; instead,
-- a function is created and dropped.
CREATE OR REPLACE FUNCTION __tmp_create_user() returns void as $$
BEGIN
  IF NOT EXISTS (
          SELECT                       -- SELECT list can stay empty for this
          FROM   pg_catalog.pg_user
          WHERE  usename = 'prometheus') THEN
    CREATE USER prometheus;
  END IF;
END;
$$ language plpgsql;

SELECT __tmp_create_user();
DROP FUNCTION __tmp_create_user();

ALTER USER prometheus WITH PASSWORD 'prometheus';
ALTER USER prometheus SET SEARCH_PATH TO prometheus,pg_catalog;

-- If deploying as non-superuser (for example in AWS RDS), uncomment the GRANT
-- line below and replace <MASTER_USER> with your root user.
-- GRANT postgres_exporter TO <MASTER_USER>;

GRANT CONNECT ON DATABASE postgres TO prometheus;

postgres版本 >= 10,需要执行以下命令

# 创建监控账号
CREATE USER prometheus WITH PASSWORD 'prometheus';
# 赋权
GRANT pg_monitor to prometheus;
# 创建函数
CREATE SCHEMA IF NOT EXISTS postgres_exporter;
GRANT USAGE ON SCHEMA postgres_exporter TO prometheus;

CREATE OR REPLACE FUNCTION get_pg_stat_activity() RETURNS SETOF pg_stat_activity AS
$$ SELECT * FROM pg_catalog.pg_stat_activity; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;

CREATE OR REPLACE VIEW postgres_exporter.pg_stat_activity
AS
  SELECT * from get_pg_stat_activity();

GRANT SELECT ON postgres_exporter.pg_stat_activity TO prometheus;

CREATE OR REPLACE FUNCTION get_pg_stat_replication() RETURNS SETOF pg_stat_replication AS
$$ SELECT * FROM pg_catalog.pg_stat_replication; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;

CREATE OR REPLACE VIEW postgres_exporter.pg_stat_replication
AS
  SELECT * FROM get_pg_stat_replication();

GRANT SELECT ON postgres_exporter.pg_stat_replication TO prometheus;

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE OR REPLACE FUNCTION get_pg_stat_statements() RETURNS SETOF pg_stat_statements AS
$$ SELECT * FROM public.pg_stat_statements; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;

CREATE OR REPLACE VIEW postgres_exporter.pg_stat_statements
AS
  SELECT * FROM get_pg_stat_statements();

GRANT SELECT ON postgres_exporter.pg_stat_statements TO prometheus;

docker run --name postgres -e POSTGRES_PASSWORD=123456 -p 5431:5432 -d postgres:12.3

安装数据采集数据

# 解压、重命名
tar -zxvf /data/postgres_exporter-0.15.0.linux-amd64.tar.gz -C /data  && mv /data/postgres_exporter-0.15.0.linux-amd64 /data/postgres_exporter

# 创建配置文件/data/postgres_exporter/postgres.conf
DATA_SOURCE_URI=10.31.83.113:5431/postgres?sslmode=disable
DATA_SOURCE_USER=prometheus
DATA_SOURCE_PASS=prometheus

# systemd配置自启动
cat > /usr/lib/systemd/system/postgres_exporter.service <<EOF
[Unit]
Description=postgres_exporter
After=network.target
 
[Service]
Type=simple
EnvironmentFile=/data/postgres_exporter/postgres.conf
ExecStart=/data/postgres_exporter/postgres_exporter
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF

# 重新加载配置
systemctl daemon-reload

# 启动开机自启
systemctl enable postgres_exporter
# 关闭开机自启
systemctl disable postgres_exporter

# 启动
systemctl start postgres_exporter
# 关闭
systemctl stop postgres_exporter
# 查看状态
systemctl status postgres_exporter
# 重启
systemctl restart postgres_exporter

# 查看日志
journalctl -u postgres_exporter -f -n 100



# 设置环境变量
export DATA_SOURCE_NAME=postgresql://prometheus:prometheus@10.31.83.113:5431/postgres?sslmode=disable
# 后台启动
nohup /data/postgres_exporter/postgres_exporter  > /data/postgres_exporter/postgres_exporter.log 2>&1 &

MongoDB数据采集:mongodb_exporter

# 本地安装
nohup /data/mongodb_exporter/mongodb_exporter --mongodb.uri=mongodb://admin:123456@127.0.0.1:27017 > /data/mongodb_exporter/mongodb_exporter.log 2>&1 &

# docker启动
docker run -d -p 9216:9216 \
--name mongodb_exporter  \
--restart always \
percona/mongodb_exporter:0.40 \
--mongodb.uri=mongodb://admin:123456@127.0.0.1:27017/admin


# centos开放9216端口
firewall-cmd --zone=public --add-port=9216/tcp --permanent && firewall-cmd --reload

# 赋权
use admin
db.createUser({ 
    user: "prometheus",
    pwd: "prometheus",
    roles: [
      {
         "role":"clusterMonitor",
         "db":"admin"
      },
      {
         "role":"read",
         "db":"local"
      }
    ]
});

Redis数据采集:redis_exporter

# 解压并重命名
tar -zxvf /data/redis_exporter-v1.58.0.linux-amd64.tar.gz -C /data  && mv /data/redis_exporter-v1.58.0.linux-amd64 /data/redis_exporter


直接再页面上配置
# 后台启动
nohup /data/redis_exporter/redis_exporter --redis.password gusuredis_!@# > /data/redis_exporter/redis_exporter.log 2>&1 &

搭建Grafana

# 创建数据保存目录
mkdir -p /data/grafana/data && chown -R 472:472 /data/grafana/data
# 创建配置文件目录
mkdir -p /data/grafana/conf
# 配置defaults.ini文件
vi /data/grafana/conf/defaults.ini

配置defaults.ini文件

下载地址:https://download.csdn.net/download/qq_40660787/89685294

docker安装grafana

# docker安装grafana
docker run -d \
--restart always \
--name grafana \
--user=root \
-p 3000:80 \
-v /data/grafana/data:/var/lib/grafana \
-v /data/grafana/conf/defaults.ini:/usr/share/grafana/conf/defaults.ini \
-e GF_SECURITY_ADMIN_USER=admin \
-e GF_SECURITY_ADMIN_PASSWORD=123456789 \
-e GF_USERS_ALLOW_SIGN_UP=false \
grafana/grafana:10.2.0

#挂载目录并设置匿名登录(GF_AUTH_ANONYMOUS_ORG_ROLE值 Viewer:只读模式,Editor:可编辑模式,Admin:管理员模式)
# -e GF_AUTH_ANONYMOUS_ORG_ROLE=Admin \
# -e GF_AUTH_DISABLE_LOGIN_FROM=true=false \
#docker run -d --name grafana -p 3000:3000 -v /opt/fdop/grafana/conf:/etc/grafana -v /opt/fdop/grafana/data:/var/lib/grafana -v /opt/fdop/grafana/logs:/var/log/grafana  -e "GF_AUTH_ANONYMOUS_ENABLED=true" -e "GF_AUTH_ANONYMOUS_ORG_ROLE=Admin" -e "GF_AUTH_DISABLE_LOGIN_FROM=true" -e "GF_AUTH_PROXY_ENABLED=true" -e "GF_SECURITY_ALLOW_EMBEDDING=true" grafana/grafana:7.3.6

Grafana监控页面:http://ip:3000

账号:admin

密码:123456789

配置监控页面

  1. 设置数据源Prometheus

  2. 导入模板

    1. Linux服务器模板ID:

      • 16098

      • 10180

    2. Mysql数据库模板ID:

      • 7362,模板json:mysql-overview.json

      • 14057

    3. PostgreSQL数据库模板ID:

      • 9628/13115

      • 455

      • 6742

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超详细!!!uniapp通过unipush全流程实现app消息推送

云风网 云风笔记 云风知识库 一、HBuilder新建APP项目 二、配置推送服务 1、登录Dcloud开发者中心开发者中心&#xff0c;查看我的应用 2、生成云端证书 3、创建平台信息 4、配置推送服务信息 这里需要关联服务空间&#xff0c;可以申请免费服务空间进行测试 三、代码配置 1…

IOS 17 基于UITabBarController实现首页TabBar

实现方式 创建首页MainController继承自UITabBarController就可以实现Tabbar效果。 实现效果 创建几个子控制器 创建子控制器 DiscoveryController&#xff0c;VideoController&#xff0c;MeController&#xff0c;FeedController&#xff0c;RoomController&#xff0c;继…

【书生大模型实战营(暑假场)】进阶任务四 InternVL 多模态模型部署微调实践

进阶任务四 InternVL 多模态模型部署微调实践 任务文档视频 1 InternVL 基本介绍 InternVL 是一种用于多模态任务的深度学习模型&#xff0c;旨在处理和理解多种类型的数据输入&#xff0c;如图像和文本。它结合了视觉和语言模型&#xff0c;能够执行复杂的跨模态任务&#x…

YOLOv5改进 | 融合改进 | C3融合Faster-GELU模块提升检测速度【完整代码 + 主要代码解析】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录&#xff1a; 《YOLOv5入门 改…

[GKCTF 2021]excel 骚操作1

使用010editor打开发现zip头&#xff0c;改后缀名xlsx为zip&#xff0c;解压&#xff0c;在D:\python\flag (1)\xl\worksheets目录下有个sheet1.xml就是ecxel的sheet1的主要样式style 看到很多c r"B2" s"1&#xff0c;只是单元格数据不同而已 &#xff0c;还有的…

Windows10打印机共享小技巧

现在工作中打印机&#xff0c;大多数都是通过TCP/IP直连的方式安装打印的&#xff1b;但还是会碰到有需要通过主机安装后共享连接的网络打印机&#xff1b;特别是在Windows10主机上共享打印机&#xff0c;因为系统安全策略的优化&#xff0c;连接共享打印机时&#xff0c;会遇到…

C++第四十二弹---C++11新特性深度解析:让你的代码更现代、更高效(中)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1 右值引用和移动语义 1.1 左值引用和右值引用 1.2 左值引用与右值引用比较 1.3 右值引用使用场景和意义 1.4 右值引用引用左值及其一些更深入…

wpf prism 《1》、区域 、模块化

安装prism.DryIoc 修改app.xaml <prism:PrismApplication x:Class"WpfApp3.App"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local"clr-namespace:W…

算法的学习笔记—最小的 K 个数(牛客JZ40)

&#x1f600;前言 在编程面试中&#xff0c;找出一个数组中最小的K个数是一个常见的问题。虽然看似简单&#xff0c;但要在高效性方面有所保证却并不容易。本文将介绍两种有效解决该问题的算法&#xff1a;基于堆的解法和快速选择算法。我们将详细讲解它们的实现方式、时间复杂…

基于3U PXIe总线架构的4路250MSPS中频信号采集处理存储系统

标准3U PXIE规格1个FMC AD子卡&#xff0c;支持4通道250MSPS 16位 AD采集板载 1 片 XC7K325T FPGA处理器支持x8 PCIE主机接口&#xff0c;系统带宽4GByte/s支持板间同步支持多系统同步 基于PXI Express总线架构的中频信号采集处理存储系统&#xff0c;该系统由1块PXIe规格FMC载…

自注意力,多头注意力,交叉注意力与因果注意力复习

“自注意力机制中有三个重要的输入矩阵&#xff1a;查询矩阵Q&#xff08;query&#xff09;、键矩阵K&#xff08;key&#xff09;和值矩阵V&#xff08;value&#xff09;。这三个矩阵都是由输入序列经过不同的线性变换得到的。然后&#xff0c;查询矩阵Q与键矩阵K的乘积经过…

ComfyUI - 在 ComfyUI 中配置 Flux + LoRA 的组合流程优化图像属性

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/141638928 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 在 Dif…

【计算机组成原理】五、中央处理器:2.数据通路、控制器(单总线结构、专用数据通路、硬布线控制器、微程序控制器)

3.数据通路 文章目录 3.数据通路3.1单总线结构3.2专用数据通路 4.控制器4.1硬布线控制器4.1.1基本结构4.1.2设计步骤微操作总结1&#xff09;分析每个阶段的微操作序列2&#xff09;安排微操作时序的原则3&#xff09;电路设计 4.1.3特点 4.2微程序控制器微指令包含关系4.2.1基…

大模型全量微调和 LoRA 微调:一看就懂_lora微调

在模型微调领域&#xff0c;全量微调和LoRA微调是我们经常听到的技术术语。 首先&#xff0c;我们需要了解什么是模型微调。模型微调本质上是因为有时我们发现模型在某个方面的性能不足。因此&#xff0c;我们希望通过一些训练方法来更新模型&#xff0c;使更新后的模型在某些…

达梦到达梦(dm-dm)创建dblink,报错:dblink连接丢失

原因 1&#xff1a;参考如下链接配置完dmmal.ini文件后&#xff0c;需要重启服务。 如果文件配置错误&#xff0c;重启服务会有很明显的报错。 https://eco.dameng.com/document/dm/zh-cn/sql-dev/practice-dblink.html [mal_inst1] mal_inst_name DMSERVER mal_host …

飞翔的马鞍 <收纳 No.2> 菱与欣桐画展8月18~31日在798举办

2024年8月18日下午三点&#xff0c;“菱与欣桐 收纳No.2”双人展开幕式在北京市朝阳区798国际艺术交流中心展厅举行。 艺术是永恒的&#xff0c;艺术家的生命力通过作品得以延续。开幕式上艺术家张菱分享了与女儿李欣桐在创作中的点滴记忆&#xff0c;以及她对艺术的执着与热爱…

Django框架自动化测试

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 本节介绍关…

2024.8.27(Dokerfile的应用、私有仓库)

一、Dockerfile应用 1、通过dockerfile创建⼀个在启动容器时&#xff0c;就可以启动httpd服务的镜像 [rootdocker ~]# mkdir httpd0 [rootdocker ~]# cd httpd0 [rootdocker httpd0]# vim abc.sh [rootdocker httpd0]# ls abc.sh [rootdocker httpd0]# echo " httpd serv…

C语言重难点总结(2)-指针操作与结构体、动态内存

本节学习内容 1.指针操作与结构体 2.函数&#xff08;递归函数&#xff09; 3.动态内存 一、指针操作与结构体 指针可以作为结构体的内部成员使用&#xff0c;也可以使用结构体指针操作结构体空间。 二、函数 1.指针函数 &#xff08;1&#xff09;什么是指针函数&#x…

企业家必看的十种让利的商业模式解析!

在当今的商业领域&#xff0c;众多创业者正面临前所未有的挑战。市场竞争激烈&#xff0c;价格战频繁&#xff0c;吸引投资者和推广产品都变得异常艰难。然而&#xff0c;问题的关键在于对“人心”的洞察。人们天生追求利益&#xff0c;因此&#xff0c;掌握如何点燃市场需求和…