原标题:AspNet Core 下利用普罗米修斯+Grafana构建Metrics和服务器性能的监控

概述

Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。该项目有非常活跃的社区和开发人员,目前是独立的开源项目,现在最常见的Kubernetes容器管理系统中,通常也会搭配Prometheus进行监控。

prometheus大多数组件都是用Go编写的,他们可以非常轻松的基于二进制文件部署和构建

Prometheus的主要特点

自定义多维数据模型(时序列数据由metric名和一组key/value标签组成)

内置PromQL是一种灵活的多维度查询语言

不依赖分布式存储; 支持单个服务器节点自治工作

基于HTTP的pull方式采集时序数据

可以通过push gateway进行时序列数据推送(pushing)

可以通过服务发现或者静态配置去获取要采集的目标服务器

内置简单实用的可视化图表及仪表盘组件

(Prometheus server)最主要的就是Prometheus Server,它用来收集和存储时序数据

(client libraries) 客户端用来检测被监控的应用程序代码

(push gateway) 支持瞬时的网关推送处理

(*. exporters)包括对 HAProxy, StatsD, Graphite等的额外支持

(alertmanager)监控预警管理、以及各种工具

大量的支持工具结构图

适用场景

Prometheus能够更好的记录数字类型的时序数据,它既可用于对服务器自身性能参数的监视,也适用于高度动态的面向各个服务的监视。在微服务的场景中,它对多维数据收集和查询的支持有很特殊的优势。

为可靠性而设计的Prometheus可以让您在宕机的时候快速诊断分析问题。每个Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务,当基础结构的其他部分损坏时,您可以依赖它,并且不需要设置更多额外的基础结构来使用它。

不适用场景

Prometheus非常重视可靠性,即使在发生故障的情况下,你也可以查看有关系统中的可用统计信息,但是如果你需要百分之百精准统计(如:每次账单请求信息)对Prometheus而言是不适用的,因为收集的数据可能不够详细和完整。在这种情况下,最好使用其他系统来收集和分析数据,并使用Prometheus进行其余额外的监视。

安装node_exporter,系统性能指数收集(收集系统性能情况)

node_exporter 主要用于系统监控, 用 Golang 编写,其默认是9100端口,可以通过/metrics访问

下载文件

cd /tmp

wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz解压并复制node_exporter应用程序到/usr/local/bin

tar xvf node_exporter-0.17.0.linux-amd64.tar.gz

sudo cp node_exporter-0.17.0.linux-amd64/node_exporter /usr/local/bin

sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter清理下载的文件和解压的文件夹

rm -rf node_exporter-0.17.0.linux-amd64.tar.gz node_exporter-0.17.0.linux-amd64添加自启动服务 添加服务配置文件

sudo vim /etc/systemd/system/node_exporter.service写入配置内容

[Unit]

Deion=Node Exporter

Wants=network-online.target

After=network-online.target

[Service]

User=node_exporter

Group=node_exporter

Type=simple

ExecStart=/usr/local/bin/node_exporter

[Install]

WantedBy=multi-user.targetnode_exporter收集性能点的配置

默认node_exporter会启动一些收集器,你也可以通过服务配置文件进行配置

比如:

ExecStart=/usr/local/bin/node_exporter --collectors.enabled meminfo,hwmon,entropy启动服务并配置自启动

sudo systemctl daemon-reload

sudo systemctl enable node_exporter

sudo systemctl start node_exporter

sudo systemctl status node_exporterprometheus的安装 添加prometheus专用的用户名

sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus

sudo useradd --no-create-home --shell /bin/false node_exporter

添加prometheus的目录

sudo mkdir /etc/prometheus

sudo mkdir /var/lib/prometheus

文件夹授权

sudo chown prometheus:prometheus /etc/prometheus

sudo chown prometheus:prometheus /var/lib/prometheus

下载并解压prometheus

wget https://github.com/prometheus/prometheus/releases/download/v2.8.0/prometheus-2.8.0.linux-amd64.tar.gz

tar xfz prometheus-2.8.0.linux-amd64.tar.gz

cd cd prometheus-2.8.0.linux-amd64拷贝可执行文件到/usr/local/bin

sudo cp ./prometheus /usr/local/bin/

sudo cp ./promtool /usr/local/bin/授予文件权限

sudo chown prometheus:prometheus /usr/local/bin/prometheus

sudo chown prometheus:prometheus /usr/local/bin/promtool拷贝目录

sudo cp -r ./console_libraries /etc/prometheus

sudo cp -r ./consoles /etc/prometheus授权文件夹

sudo chown -R prometheus:prometheus /etc/prometheus/consoles

sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries清理无用的下载文件和解压的文件夹

cd .. && rm -rf prometheus-*创建Prometheus配置文件

sudo vim /etc/prometheus/prometheus.yml

注意YML配置文件的缩进global:

scrape_interval: 15s

evaluation_interval: 15s

scrape_configs:

- job_name: 'prometheus'

static_configs:

- targets: ['localhost:9090']

- job_name: 'node_exporter'

scrape_interval: 5s

static_configs:

- targets: ['localhost:9100']

配置所有者

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml启动prometheus

sudo -u prometheus /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries检测

http://服务器ip:9090

配置自启动

sudo vim /etc/systemd/system/prometheus.service[Unit]

Deion=Prometheus Monitoring

Wants=network-online.target

After=network-online.target

[Service]

User=prometheus

Group=prometheus

Type=simple

ExecStart=/usr/local/bin/prometheus

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

--storage.tsdb.path /var/lib/prometheus/

--web.console.templates=/etc/prometheus/consoles

--web.console.libraries=/etc/prometheus/console_libraries

ExecReload=/bin/kill -HUP $MAINPID

[Install]

WantedBy=multi-user.target

sudo systemctl daemon-reload

sudo systemctl enable prometheus

sudo systemctl start prometheus

sudo systemctl status prometheus配置安装Grafna

cd /tmp

wget https://dl.grafana.com/oss/release/grafana-6.0.1-1.x86_64.rpm

sudo yum localinstall grafana-6.0.1-1.x86_64.rpm配置自启动

sudo systemctl daemon-reload && sudo systemctl enable grafana-server && sudo systemctl start grafana-server登录

启动grafana后可以通过 http://ip:3000登录

初始用户名和密码都是 admin

初次登录后会要求修改密码

配置数据源到之前的Prometheus

选择Prometheus数据源

配置仪表盘

安装饼图插件

grafana-cli plugins install grafana-piechart-panel导入仪表样本

样本来源,打开浏览器打开如下地址并记录id

https://grafana.com/dashboards/8919

选择Import

然后输入之前记录的id

选择prometheus的数据源,之后打开dashboard就可以看到漂亮的仪表盘了

AspNet Core App Metrics的监控配置 nuget安装包

App.Metrics.Formatters.Prometheus

App.Metrics.AspNetCore修改program.cs

usingSystem;

usingSystem.Collections.Generic;

usingSystem.IO;

usingSystem.Linq;

usingSystem.Net;

usingSystem.Threading.Tasks;

usingApp.Metrics;

usingApp.Metrics.AspNetCore;

usingApp.Metrics.Formatters;

usingApp.Metrics.Formatters.Prometheus;

usingMicrosoft.AspNetCore;

usingMicrosoft.AspNetCore.Hosting;

usingMicrosoft.Extensions.Configuration;

usingMicrosoft.Extensions.Logging;

namespacePrometheusAppMetricsDemo

{

publicstaticclassProgram

{

publicstaticIMetricsRoot Metrics { get; set; }

publicstaticIWebHost BuildWebHost(string[] args)

{

Metrics = AppMetrics.CreateDefaultBuilder()

.OutputMetrics.AsPrometheusPlainText()

.OutputMetrics.AsPrometheusProtobuf()

.Build();

returnWebHost.CreateDefaultBuilder(args)

.ConfigureMetrics(Metrics)

.UseMetrics(

options =>

{

options.EndpointOptions = endpointsOptions =>

{

endpointsOptions.MetricsTextEndpointOutputFormatter = Metrics.OutputMetricsFormatters

.GetType();

endpointsOptions.MetricsEndpointOutputFormatter = Metrics.OutputMetricsFormatters

.GetType();

};

})

.UseKestrel(options => options.Listen(IPAddress.Any, 5000))

.UseStartup()

.Build();

}

publicstaticvoidMain(string[] args)

{

BuildWebHost(args).Run();

}

}

}

配置prometheus的job global:

scrape_interval:15s

evaluation_interval:15s

scrape_configs:

- job_name:'prometheus'

static_configs:

- targets:['localhost:9090']

- job_name:'node_exporter'

scrape_interval:5s

static_configs:

- targets:['localhost:9100']

- job_name:'netcoreprometheus'

scrape_interval:5s

scheme:https

tls_config:

insecure_skip_verify:true

metrics_path:/metrics-text

static_configs:

- targets:['{demo_ip}:{demoport}']

为什么是metrics-text 参见appmetrics官方解释

/metrics-text will return metrics in Prometheus plain text format and /> metrics in Prometheus protobuf format.重启prometheus

sudo systemctl restart prometheus

sudo systemctl status prometheus

配置Grafana仪表盘

直接可以用的仪表盘地址:

按之前配置的方式配置完成后,就可以看到grafana正常的从prometheus收集数据并展示了

metrics类型 普罗米修斯_AspNet Core 下利用普罗米修斯+Grafana构建Metrics和服务器性能的监控...相关推荐

  1. AspNet Core 下利用普罗米修斯+Grafana构建Metrics和服务器性能的监控

    概述 Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.该项目有非常活跃的社区和开发人员,目前是独立的开源项目,现在最常见的Ku ...

  2. nodemanager不能正常关闭_在什么情况下不能使用罗茨风机及如何正确关闭罗茨风机...

    锦工风机给大家介绍一下在什么情况下不能使用罗茨风机及如何正确关闭罗茨风机在什么情况下不能使用罗茨风机: 1.机器故障 这一点其实不用说,因为你知道,设备是存在故障确实不能使用,但会有人感觉有轻微的故障 ...

  3. metrics类型 普罗米修斯_接近完美的监控系统—普罗米修斯

    普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统.当年,由于SoundCloud公司生产了太多的服务,传统的监控已经无法满足监控需求,于是他们在2012年决定着手开发新的 ...

  4. 普罗米修斯?对!就是 Prometheus ,如何计算 P90 / P99 ? 准确评控服务耗时性能!

    文章目录 普罗米修斯?对!就是 Prometheus ,如何计算 P90 / P99 ? 准确评控服务耗时性能! 服务耗时是对系统性能评估的重要因素 极短的服务耗时是用户体验良好的基准 P90 / P ...

  5. IF:伴FLT3-ITD突变的急性髓系白血病在米哚妥林治疗下的克隆进化

    点击关注,桓峰基因 桓峰基因的教程不但教您怎么使用,还会定期分析一些相关的文章,学会教程只是基础,但是如果把分析结果整合到文章里面才是目的,觉得我们这些教程还不错,并且您按照我们的教程分析出来不错的结 ...

  6. Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警

    前言 这次主要分享通过Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警方案.通过执行耗时,定位哪些接口拖累了服务的性能:通过请求频次,设置适当的限流 ...

  7. [No0000CA]什么是“普瑞马法则”?以及 如何利用“普瑞马法则”,三步克服惰性...

    一般在学习和生活中,我们都可能有这样的经验,就是当说想要作某件事情的时候,但过了好久发现还是没有做:或者觉得有力气使不出来:或者总觉得生活是灰色和抑郁的等等. 这类情况反映在生活中,就是生活好像总是被 ...

  8. 央视315晚会 惠普“雪花屏”门被搬出 垃圾惠普

    央视315晚会 惠普"雪花屏"门被搬出 发布日期:2010-03-16 在播出的中央电视台315晚会上,索尼.东芝等洋品牌玩起了文字游戏,因液晶屏幕保修期问题上榜,而之前在网路上已 ...

  9. 从朴素贝叶斯分类器到贝叶斯网络(下)

    从朴素贝叶斯分类器到贝叶斯网络(下) 2016年01月04日 00:49:20 阅读数:11673 书接上文 :从朴素贝叶斯分类器到贝叶斯网络(上) 三.贝叶斯网络 贝叶斯网络(Bayesian Ne ...

最新文章

  1. log.net的应用示例(日志)
  2. Docker(二):Dockerfile 使用介绍
  3. Alpha冲刺之事后诸葛亮
  4. Caffe学习系列(2):数据层及参数
  5. 笔记-项目管理基础知识-复习要点
  6. android耳机广播,Android利用广播实现耳机的线控
  7. tlab java_浅析java中的TLAB
  8. 腾讯视频怎么打开个人直播后台播放功能
  9. python 变量
  10. Netty实战项目:Spring boot 程序的聊天程序
  11. 轻松学SQL Server数据库pdf
  12. java萍方字体_苹方字体合集 - osc_flhsyn6i的个人空间 - OSCHINA - 中文开源技术交流社区...
  13. 1 LoRa 基本知识(参考LoRa物联网通信技术)
  14. php程序员如何转go,写给 PHP 程序员的 Go 入门教程
  15. Centos7 源码安装mysql5.6
  16. AD16PCB布线规则
  17. 关于if 判断中null为什写前边和在使用equals方法进行判断是为什么要 “1“.equals(str)
  18. Android HashTable
  19. android跳转到微信小程序
  20. java课程设计之小游戏贪吃蛇

热门文章

  1. 吴军:为什么计算机不是万能的
  2. 安卓学习笔记05:Activity概述
  3. 2017.9.7 翻硬币 失败总结
  4. SDOI 2017R2游记
  5. 2017.3.29 报表统计 思考记录
  6. 【英语学习】【WOTD】shanghai 释义/词源/示例
  7. 计算机二级vb上机操作题库,2016计算机二级《VB》上机题题库(含答案)
  8. 8104网站服务器返回错误,关于 来源: volmgr Event ID: 46 故障转储初始化未成功 的问题...
  9. python面向对象三大特性_Python面向对象之多态原理与用法案例分析
  10. db2连接工具_ETL工具(kettl)使用系列(一)