热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

prometheus持久化到mysql_Prometheus数据持久化存储(二)

Prometheus(普罗米修斯)Prometheus数据持久化存储(二)PrometheusInfluxGrafanaMysql数据持久化存储Prometheus的存储数据库默认

Prometheus(普罗米修斯)

Prometheus数据持久化存储(二)

Prometheus+Influx+Grafana+Mysql数据持久化存储

Prometheus的存储数据库默认只保留15天的数据,Grafana存储的配置以及图表都还在容器之中它自己生成的sqlit数据库中长期存储并不友好。

为了更适应老板的需求,长期存储数据,我们可以添加时序数据库InfluxDB作为prometheus后端存储,可以修改grafana的存储为mysql以便自己做一些自定义操作的时候方便一点。

Prometheus+Influx存储数据

cat docker-compose-prometheus-influxdb.yml

version: "2.3"

services:

prometheus:

image: prom/prometheus:latest

container_name: prometheus

hostname: prometheus

restart: always

volumes:

- /prometheus/prometheus/config:/etc/prometheus

- /prometheus/prometheus/data:/prometheus

- /etc/localtime:/etc/localtime

command:

- '--config.file=/etc/prometheus/prometheus.yml'

- '--log.level=info'

- '--web.listen-address=0.0.0.0:9090'

- '--storage.tsdb.path=/prometheus'

- '--storage.tsdb.retention=15d'

- '--query.max-concurrency=50'

- '--web.enable-lifecycle'

ports:

- "9090:9090"

depends_on:

- influxdb

logging:

driver: "json-file"

options:

max-size: "1g"

networks:

- prom_monitor

influxdb:

image: influxdb:latest

container_name: influxdb

hostname: influxdb

restart: always

volumes:

- /prometheus/prometheus/influxdb/config:/etc/influxdb

- /prometheus/prometheus/influxdb/data:/var/lib/influxdb/data

- /etc/localtime:/etc/localtime

ports:

- "8086:8086"

- "8083:8083"

environment:

- INFLUXDB_DB=prometheus

- INFLUXDB_ADMIN_ENABLED=true

- INFLUXDB_ADMIN_USER=admin

- INFLUXDB_ADMIN_PASSWORD=adminpwd

- INFLUXDB_USER=prometheus

- INFLUXDB_USER_PASSWORD=prometheuspwd

- INFLUXDB_CONFIG_PATH=/etc/influxdb/influxdb.conf

logging:

driver: "json-file"

options:

max-size: "1g"

networks:

- prom_monitor

networks:

prom_monitor:

driver: bridge

mkdir -p influxdb/data influxdb/config

cat influxdb/config/influxdb.conf

[meta]

dir = "/var/lib/influxdb/meta"

[data]

dir = "/var/lib/influxdb/data"

engine = "tsm1"

wal-dir = "/var/lib/influxdb/wal"

通过以上文件看出,重新指定了Prometheus的存储数据库为InfluxDB,当然,还需要配置Prometheus.yml文件。

cat config/prometheus.yml

在Prometheus的配置文件中,添加远程读写。

# 指定了Prometheus的存储数据库为InfluxDB

remote_write:

- url: "http://influxdb:8086/api/v1/prom/write?db=prometheus&u=prometheus&p=prometheuspwd"

remote_read:

- url: "http://influxdb:8086/api/v1/prom/read?db=prometheus&u=prometheus&p=prometheuspwd"

其它配置:

cat config/prometheus.yml

添加如下配置

scrape_configs:

- job_name: 'linux-server'# 定义任务名

scrape_interval: 5s

static_configs:

file_sd_configs:

- files:

- '/etc/prometheus/fileconfig/*-nodes.json'

file_sd_configs启动prometheus的文件发现功能,可以将配置主机等信息写入文件中,如果用户修改了配置,比如增加或删除了某些主机,那么Prometheus会自动发现这些更改。

cat config/fileconfig/office-nodes.json

[

{

"targets": ["192.168.1.20:9100"],

"labels": {

"instance": "192.168.1.20",

"alias": "office0",

"job": "node"

}

},

{

"targets": ["192.168.1.17:9111"],

"labels": {

"instance": "192.168.1.17",

"alias": "office3",

"job": "node"

}

}

]

登录influxdb数据库查看相应的数据信息

docker exec -it influxdb bash

influx

use prometheus

show MEASUREMENTS

select * from up

可以查看到相关数据。

完整的prometheus.yml文件

global:

scrape_interval: 15s # 默认抓取间隔, 15秒向目标抓取一次数据。

external_labels:

monitor: 'codelab-monitor'

# 这里表示抓取对象的配置

scrape_configs:

- job_name: 'linux-server'# 定义任务名

scrape_interval: 5s

static_configs:

file_sd_configs:

- files:

- '/etc/prometheus/fileconfig/*-nodes.json'

# 指定了Prometheus的存储数据库为InfluxDB

remote_write:

- url: "http://influxdb:8086/api/v1/prom/write?db=prometheus&u=prometheus&p=prometheuspwd"

remote_read:

- url: "http://influxdb:8086/api/v1/prom/read?db=prometheus&u=prometheus&p=prometheuspwd"

# 配置告警规则位置

rule_files:

- "rules/*rules.yml"

# 配置alertmanager告警发送消息配置

alerting:

alertmanagers:

- static_configs:

- targets: ['192.168.1.20:9093']

附加:

influxdb时序数据库的基本命令

# influxdb相关操作

#登录数据库

influx

influx -host 127.0.0.1 -port 8086 -username prometheus -password prometheuspwd

#查看数据库

show databases

#切换数据库

use prometheus

#查看数据表

show MEASUREMENTS

#查看数据

select * from up

#查看用户

show users

#创建用户

create user "username" with password 'password' with all privileges

#删除用户

drop user username

Grafana+Mysql存储数据

cat docker-compose-grafana-mysql.yml

version: "2.3"

services:

grafana:

image: grafana/grafana:latest

container_name: grafana

hostname: grafana

restart: always

volumes:

- /prometheus/grafana/config:/etc/grafana

- /prometheus/grafana/logs:/var/log/grafana

- /prometheus/grafana/data:/var/lib/grafana

- /prometheus/grafana/dashboards:/etc/grafana/provisioning/dashboards

- /etc/localtime:/etc/localtime

ports:

- "3000:3000"

user: "104"

depends_on:

- db

networks:

- prom_monitor

db:

image: mysql:5.7

command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

container_name: mysql

hostname: mysql

restart: always

environment:

- MYSQL_ROOT_PASSWORD=Admin_pwd

- MYSQL_DATABASE=grafana

- MYSQL_USER=grafana

- MYSQL_PASSWORD=grafana

volumes:

- /prometheus/grafana/mysql:/var/lib/mysql

- /etc/localtime:/etc/localtime

expose:

- "3306"

networks:

- prom_monitor

networks:

prom_monitor:

driver: bridge

grafana配置文件增加数据库信息

cat config/grafana.ini

[database]

type = mysql

host = mysql:3306

name = grafana

user = grafana

password = grafana

url = mysql://grafana:grafana@mysql:3306/grafana

[session]

provider = mysql

provider_config = `grafana:grafana@tcp(mysql:3306)/grafana`

COOKIE_name = grafana_session

COOKIE_secure = false

session_life_time = 86400

启动服务

docker-compose -f docker-compose-grafana-mysql.yml up -d

登录数据库查看信息

docker exec -it mysql bash

mysql -ugrafana -pgrafana

mysql> use grafana;

mysql> show tables;

可查看到相关的数据表



推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
author-avatar
____洋果子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有