技术标签: 监控系统 java 可视化 # Linux 学习汇总 Prometheus Grafana
本文章内容较长,可通过右上角点击目录快速定位想看的内容 => =>
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:
展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
简单来讲,它是一个多用途的监控工具,同时通过邮件等方式进行有效的预警通知,丰富的直观的可视化界面,多种数据源配置是其优点所在;
和Zabbix类似,Prometheus也是一个近年比较火的开源监控框架,和Zabbix不同之处在于Prometheus相对更灵活点,模块间比较解耦,比如告警模块、代理模块等等都可以选择性配置。服务端和客户端都是开箱即用,不需要进行安装。zabbix则是一套安装把所有东西都弄好,很庞大也很繁杂。
zabbix的客户端agent可以比较方便的通过脚本来读取机器内数据库、日志等文件来做上报。而Prometheus的上报客户端则分为不同语言的SDK和不同用途的exporter两种,比如如果你要监控机器状态、mysql性能等,有大量已经成熟的exporter来直接开箱使用,通过http通信来对服务端提供信息上报(server去pull信息);而如果你想要监控自己的业务状态,那么针对各种语言都有官方或其他人写好的sdk供你使用,都比较方便,不需要先把数据存入数据库或日志再供zabbix-agent采集。
zabbix的客户端更多是只做上报的事情,push模式。而Prometheus则是客户端本地也会存储监控数据,服务端定时来拉取想要的数据。
界面来说zabbix比较陈旧,而prometheus比较新且非常简洁,简洁到只能算一个测试和配置平台。要想获得良好的监控体验,搭配Grafana还是二者的必走之路。
wget https://github.com/prometheus/prometheus/releases/download/v2.7.2/prometheus-2.7.2.linux-amd64.tar.gz
tar xvfz prometheus-2.7.2.linux-amd64.tar.gz
cd prometheus-2.7.2.linux-amd64
./prometheus --config.file=prometheus.yml
$ cat prometheus.yml
# my global config
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: ['localhost:9090']
其大致可分为四部分:
- global:全局配置,其中scrape_interval表示抓取一次数据的间隔时间,evaluation_interval表示进行告警规则检测的间隔时间;
- alerting:告警管理器(Alertmanager)的配置,目前还没有安装Alertmanager;
- rule_files:告警规则有哪些;
- scrape_configs:抓取监控信息的目标。一个job_name就是一个目标,其targets就是采集信息的IP和端口。这里默认监控了Prometheus自己,可以通过修改这里来修改Prometheus的监控端口。Prometheus的每个exporter都会是一个目标,它们可以上报不同的监控信息,比如机器状态,或者mysql性能等等,不同语言sdk也会是一个目标,它们会上报你自定义的业务监控信息。
示例: 186.163.15.42:9090 直接在自己电脑中访问
如果访问不了,请检查防火墙是否开启9090端口
下载且解压并运行
// 下载最新版本,可以在github的release中对最新版本右键获取下载链接
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
解压
tar xvfz node_exporter-0.17.0.linux-amd64.tar.gz
进入解压出的目录
cd node_exporter-0.17.0.linux-amd64
运行监控采集服务
./node_exporter
监听9100端口
curl http://localhost:9100/metrics
ip地址:9100
如果访问有内容显示则成功
启动服务的时候可使用nohup后台启动,如果是直接图中所示内容启动则重开连接
cd ~
进入prometheus
cd prometheus-2.7.2.linux-amd64/
编辑配置文件prometheus.yml
vim prometheus.yml
没有vim可以下载或者使用vi也可以
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'server'
static_configs:
- targets: ['localhost:9100']
wget https://dl.grafana.com/oss/release/grafana-6.0.0.linux-amd64.tar.gz
tar -zxvf grafana-6.0.0.linux-amd64.tar.gz
这个页面给出的是最新版本的安装命令,右上角可以选择切换其他版本的安装命令。解压后会出现 grafana-6.0.0 目录,进入该目录,然后就可以运行Grafana了;
安装插件
./grafana-cli plugins install grafana-piechart-panel
进入Grafana目录
cd grafana-6.0.0
./bin/grafana-server web
在Grafana展示监控信息
安装并启动Grafana后,浏览器输入 IP:3000 来访问Grafana,管理员账号密码默认是admin/admin。首次登陆会让你修改管理员密码,然后就可以登录查看了。
添加数据源
选择Prometheus
先输入名称,然后填入http://ip+9090然后直接点Save&Test,成功后则直接点击Dashboards选择展示面板
点击导入,可一个也可以全部导入
选择左侧边栏的 + 号,点击Imput, 在Grafana.com Dashboard中输入: 8919
也可以自己选择官方展示面板,链接: https://grafana.com/dashboards
查看效果
左边侧栏选择方块,点击Manage,然后点击刚刚创建的,即可成功展示!
展示效果如图所示:
这次的教程是配置其他服务器的监控系统,所以假设上面的已经做好了
监控系统的Prometheus类似于一个注册中心,我们可以只需要配置一个Prometheus,而在其他服务器,只需要安装node_exporter,它们的数据流转就是通过exporter采集数据信息,然后告诉prometheus它的位置;而Prometheus则存储exporter的信息供Grafana询问;Grafana则负责信息的展示;所以可以只配置一个Prometheus,而其他服务器或者本机的服务器的exporter只需要在这一个Promethes中给出它的job_name,targets地址等信息即可;
这里介绍了又重新下载了一个Prometheus的方式,不下载的话可直接跳过从教程: 3.5 添加机器状态监控 开始
wget https://github.com/prometheus/prometheus/releases/download/v2.7.2/prometheus-2.7.2.linux-amd64.tar.gz
tar xvfz prometheus-2.7.2.linux-amd64.tar.gz
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar xvfz node_exporter-0.17.0.linux-amd64.tar.gz
cd node_exporter-0.17.0.linux-amd64
./node_exporter
$ cat prometheus.yml
# my global config
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: ['localhost:9090']
如无其他特殊需求可不做改变;
~~~java
// 下载最新版本,可以在github的release中对最新版本右键获取下载链接
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
~~~
tar xvfz node_exporter-0.17.0.linux-amd64.tar.gz
cd node_exporter-0.17.0.linux-amd64
./node_exporter
可使用后台运行进程命令启动也可以;访问:http://ip:9100/metrics即可验证,如果有对应界面则配置成功
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'server'
static_configs:
- targets: ['localhost:9100']
如果prometheus不在本服务器,则将server下的targets中的localhost改为对应的ip地址;
重新启动一下
./grafana-cli plugins install grafana-piechart-panel
更新插件后重新启动服务
也可以自己选择官方展示面板,链接: https://grafana.com/dashboards
左边侧栏选择方块,点击Manage,然后点击刚刚创建的,即可成功展示!
展示效果如图所示:
注意:如果需要监控其他服务器,则只需要在其他服务器安装 node_exporter 即可,将其对应的ip地址,端口号等信息配置到已有的Prometheus的Prometheus.yml内即可;格式参照其他,job_name不能命名成一样的,可改成其他名称;Grafana添加数据源和注册仪表盘都是一致的;
ctrl+c
如果是后台启动的服务,则用相关的命令关闭grafana web
如果grafana监控系统没有开启,则无需关闭;
cd grafana-6.0.0
vim defaults.ini
没有vim直接 yum install vim 即可,使用vi 也可以进行编辑
smtp.qq.com:465是针对qq邮箱的,其他的邮箱的服务器不同,请做对应的改变,直接百度即可;
ESC
+:wq
+Enter
cd ..
./bin/grafana-server web
如果成功就能接收到邮件,否则查看服务器内配置是否正确;
如果是对已有的mysql进行操作,请忽略此步骤;
下载mysql的repo源:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装mysql-community-release-el7-5.noarch.rpm包:
rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装mysql:
yum install mysql-server -y
修改权限,否则会报错:
chown -R root:root /var/lib/mysql
重启mysql服务:
service mysqld restart
登录并重置密码:
## 直接回车进入mysql控制台
mysql -u root
mysql > use mysql;
mysql > update user set password=password('123456') where user='root';
mysql > exit;
https://codeload.github.com/john1337/my2Collector/zip/master
mysql -u用户名 -p密码
示例: mysql -uroot -proot source /root/my2.sql
后面的是具体地址,如果位置不对则相应变化
https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz
tar -xvf mysqld_exporter-0.10.0.linux-amd64.tar.gz
vim vi.my.cnf
[client]
user=root
password=root
账号密码只要连接得上mysql即可,也可单独为其分配账号;
./mysqld_exporter -config.my-cnf=".my.cnf" &
- job_name: mysql
static_configs:
- targets: ['mysql的ip地址:9104']
这里9104不要改动,配好后保存重启Prometheus,然后点击Status->Targets,如果发现mysql的State为Up 状态,则说明已经配置好了
如果没有配置好,则可以注意一下是否mysql开启了远程访问,一般新安装的msyql都是仅本机可访问;开启远程访问可百度;
输入7991点Load可自动加载
官方文档地址:https://grafana.com/docs/http_api/admin/
这部分不多加介绍,下面介绍使用HTTP API的方式;
里面的权限为Viewer,Eidtor,和Admin,权限为只能看,可以部分写,以及全部权限;
权限类别可分为Viewer,Editor和Admin,Viewer只能查看,Editor可以一些界面进行操作,而Admin是拥有所有权限的角色;
secondsToLive - 以秒为单位设置密钥到期时间。这是可选的。如果是正数,则设置密钥的到期日期。如果它为null,为零或完全省略(除非api_key_max_seconds_to_live设置了配置选项),密钥将永不过期。
只要支持HTTP API的均可使用此方式,具体的请求路径和对应资源可进入官方文档查看;
https://grafana.com/docs/http_api/dashboard/
wget https://github.com/kbudde/rabbitmq_exporter/releases/download/v1.0.0-RC5/rabbitmq_exporter-1.0.0-RC5.linux-amd64.tar.gz
没有wget等命令请自行搜索下载
解压:
tar -xvf rabbitmq_exporter-1.0.0-RC5.linux-amd64.tar.gz
进入目录:
cd rabbitmq_exporter-1.0.0-RC5.linux-amd64
执行命令:
RABBIT_USER=guest RABBIT_PASSWORD=guest OUTPUT_FORMAT=JSON PUBLISH_PORT=9099 RABBIT_URL=http://localhost:15672 nohup ./rabbitmq_exporter 2>&1 &
注意里面的PABBIT_USER的账号,以及后面的密码,请按实际账号密码输入,以及端口等;
进入有Prometheus的服务器,进入Prometheus,编辑prometheus.yml
vim prometheus.yml
配置如下内容:
- job_name: 'RabbitMQ'
static_configs:
- targets: ['Rabbit的ip地址:9099']
这里的ip地址写Rabbit的地址,端口号默认都写9099;
这里的URL不是写RabbitMQ的服务器地址,而是Prometheus的地址,注意不要弄错;
wget https://github.com/oliver006/redis_exporter/releases/download/v1.0.3/redis_exporter-v1.0.3.linux-amd64.tar.gz
tar -xvf redis_exporter-v1.0.3.linux-amd64.tar.gz
./redis_exporter redis//192.168.1.120:6379 &
redis_exporter -redis.addr 192.168.1.120:6379 -redis.password 123456****
里面的ip地址和端口号请根据自身实际来
vim prometheus.yml
- job_name: redis
static_configs:
- targets: ['ip地址:9121']
Premetheus的ip地址:9090/targets
如果显示State的结果为 UP 则说明成功。
Grafana的ip地址:3000
注意,也可以自己找其他的展示面板,在官方的面板页面找到数据源为Prometheus的Redis展示面板,在上方所说的对应位置输入它的编号即可
官方控制面板地址:https://grafana.com/dashboards
wget https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.linux-amd64.tar.
tar -xzf node_exporter-0.15.2.linux-amd64.tar.gz
cd node_exporter-0.15.2.linux-amd64
./node_exporter --web.listen-address=":9100" \ --log.level="info" &
cd prometheus-2.2.1.linux-amd64
vim prometheus.yml
- job_name: 'tidb'
honor_labels: true # 不要覆盖 job 和实例的 label
static_configs:
- targets: ['tidb所在服务器ip地址:10080']
这里配置好了以后,需要重新启动一下Prometheus.yml,然后登陆 ip地址:9090/targets 如果Status显示为 UP 则说明成功;
./prometheus \
--config.file="./prometheus.yml" \
--web.listen-address=":9090" \
--web.external-url="http://192.168.199.113:9090/" \
--web.enable-admin-api \
--log.level="info" \
--storage.tsdb.path="./data.metrics" \
--storage.tsdb.retention="15d" &
在侧边栏菜单中,依次点击 + 号 > Import 打开 Import Dashboard 窗口。
点击 Upload .json File 上传对应的 JSON 文件(https://github.com/pingcap/tidb-ansible/tree/master/scripts)。
注意:TiDB 面板对应的 JSON 文件为tidb.json 。 (我们可以通过上面的链接进入找到此tidb.json然后将内容复制出来命名为tidb.json然后导入)
点击 Load。
选择一个 Prometheus 数据源。(以前对这个Prometheus创建过数据源,我们可以重复利用,直接指向即可)
点击 Import,Prometheus 面板即导入成功。
码子不易,喜欢的话点个关注或收藏吧~ ^^
文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大
文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码
文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版
文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗
文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程
文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0
文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader
文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型
文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写
文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录
文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点
文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文