.Net微服务实战之可观察性,.Net微服务实战之手艺选型篇,.Net微服务实战之手艺架构分层篇,.Net微服务实战之DevOps篇,.Net微服务实战之负载平衡(上),.Net微服务实战之CI/CD,.Net微服务实战之Kubernetes的搭建与使用,.Net微服务实战之负载平衡(下),.Net微服务实战之必须得面临的漫衍式问题

俄罗斯银行账户www.accbuy.vip)俄罗斯币安认证账号+俄罗斯带网银银行账户 = 2000 USDT,不议价。

俄罗斯币安认证账号+俄罗斯带网银银行账户 .Net微服务实战之可观察性,.Net微服务实战之手艺选型篇,.Net微服务实战之手艺架构分层篇,.Net微服务实战之DevOps篇,.Net微服务实战之负载平衡(上),.Net微服务实战之CI/CD,.Net微服务实战之Kubernetes的搭建与使用,.Net微服务实战之负载平衡(下),.Net微服务实战之必须得面临的漫衍式问题 第1张

系列文章

  • .Net微服务实战之手艺选型篇
  • .Net微服务实战之手艺架构分层篇
  • .Net微服务实战之DevOps篇
  • .Net微服务实战之负载平衡(上)
  • .Net微服务实战之CI/CD
  • .Net微服务实战之Kubernetes的搭建与使用
  • .Net微服务实战之负载平衡(下)
  • .Net微服务实战之必须得面临的漫衍式问题

前言

许多次去面试,有履历的面试官都市问一个问题,你是怎么去定位一样平常遇到的问题?平时跟偕行分享自己遇到的问题,事后他会问我,这种看起来毫无头绪的问题,你是怎么去定位解决的?

实在我们平时不知道怎么问题出在哪,主要是所领会的信息量不足,那么怎么才气提高给咱们定位问题的信息量呢?实在上面两个问题的谜底都是统一个:日志、指标、跟踪

有日志纪录才气清晰知道当前系统的运行状态和详细问题;指标是给与后续做优化和定位偶发性问题的一些参考,没指标参考就没尺度;我们平时做得多的调试、查看挪用栈也是跟踪的一种,然则在漫衍式时代,更多考量的是跨历程通讯的挪用链路。

日志、指标、跟踪三者连系起来有一种统称——可观察性

运维是架构的地基,我第一次看到这句是在张辉清写的《小团队构建大网站:中小研发团队架构实践》,说真话,我异常的认同。不少小团队的运维都是由开发 *** 的,而团队的运维能力决议了日后架构选型与一样平常维护。有优越的运维监控系统,就有足够的信息量提供应开发职员举行定位排错。

可观察性

可观察性的意思是可以由系统的外部输出推断其内部状态的水平,在软件系统中,可考察性是指能够网络有关程序执行、模块内部状态以及组件之间通讯的数据。划分由三个偏向组成:日志(logging)、跟踪( tracing)、指标(Metrics)《Metrics, tracing, and logging

日志(logging)

日志的界说特征是它纪录离散事宜,目的是通过这些纪录后剖析出程序的行为。

例如:应用程序调试或错误新闻通过转换文件形貌,通过 syslog 发送到 Elasticsearch审计跟踪事宜通过 Kafka 推送到 BigTable 等数据存储;或从服务挪用中提取并发送到错误跟踪服务(如 NewRelic)的特定于请求的元数据。

跟踪( tracing)

跟踪的界说特征是它处置请求局限内的信息,目的是排查故障。

在系统中执行的单个事务工具生命周期里,所绑定的数据或元数据。例如:RPC远程服务挪用的连续时间;请求到数据库的现实 SQL 查询语句;HTTP 请求入站的关联 ID。

指标(Metrics)

指标的界说特征是它们是可聚合的,目的是监控和预警。

这些指标在一段时间内,能组成单个逻辑仪表、计数器或直方图。例如:行列的当前长度可以被建模为一个量规;HTTP 请求的数目可以建模为一个计数器,更新后通过简朴的加法聚合盘算;而且可以将考察到的请求连续时间建模为直方图,更新汇总到某个时间段中并确立统计摘要。

代表性产物

日志(logging)基本上是ELK (ElasticSearch, Logstash, Kibana) 手艺栈一家独大了,然则Logstash对照重量级的,而轻量级的Filebeat可能加倍受人人的青睐。下文里的实战部门,我是以EFK(ElasticSearch, Filebeat, Kibana)演示。

跟踪( tracing)相比于日志就是百花齐放了,Skywalking、zipkin、鹰眼、jeager、Datadog等等……然则在.Net的手艺栈里,能提供出SDK的相对会少,以是选择也会少一些,我在之前的实战和下文的演示都是用Skywalking,主要优势无侵入。

指标(Metrics)在云生时代Prometheus比Zabbix加倍受人人迎接,同时Prometheus社区活跃度也占异常大的优势。下文实战部门我以Prometheus 作为演示。

ElasticSearch部署与安装

后面的Skywaking和日志都需要用到ElasticSearch,以是我把部署流程优先提了出来。

导入 GPG key

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

添加源

vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

重新加载

yum makecache

安装

sudo yum install -y --enablerepo=elasticsearch elasticsearch

修改设置

vim /etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0

discovery.type: single-node

启动

/ *** in/chkconfig --add elasticsearch

sudo -i service elasticsearch start
systemctl enable elasticsearch.service

用浏览器接见,能泛起下图就是可以了

Prometheus与Grafana实现指标

架构简析

焦点组件

Prometheus server

Prometheus的主程序,自己也是一个时序数据库,它来认真整个监控集群的数据拉取、处置、盘算和存储,是使用pull方式由服务端自动拉取监控数据。

Alertmanager

Prometheus的告警组件,认真整个集群的告警发送、分组、调剂、忠告抑制等功效。 需要知道的是alertmanager自己是不做告警规则盘算的,简朴来说就是,alertmanager不去盘算当前的监控取值是否到达我设定的阈值,上面已经提过该部门规则盘算是prometheus server来盘算的,alertmanager监听prometheus server发来的新闻,然后在连系自己的设置,好比守候周期,重复发送告警时间,路由匹配等设置项,然后把吸收到的新闻发送到指定的吸收者。同时他还支持多种告警吸收方式,常见的如邮件、企业微信、钉钉等。1.3

Pushgateway

Pushgateway 它是prometheus的一其中央网管组件,类似于zabbix的zabbix-proxy。它主要解决的问题是一些不支持pull方式获取数据的场景,好比:自界说shell脚原本监控服务的康健状态,这个就没设施直接让prometheus来拉数据,这时就可以借助pushgateway,它是支持推送数据的,我们可以把对应的数据根据prometheus的花样推送到pushgateway,然后设置prometheus server拉取pushgateway即可。

UI 

Grafana、prometheus-ui是用来图形化展示数据的组件,其中prometheus-ui是prometheus项目原生的ui界面,然则在数据展示方面不太好用,因此推荐grafana来展示你的数据,grafana支持prometheus的PromQL语法,能够和prometheus数据库交互,加上grafana壮大的ui功效,我们可以很轻松的获取到许多悦目的界面,同时也有许多做好的模版可以使用。

Prometheus Target

采集指标的API,有差其余Exporter,若是redis、mysql、server nodel提供应Prometheus server准时pull数据到数据库。

安装Prometheus

mkdir /var/prometheus
docker run -d --name=prometheus -p 9090:9090 prom/prometheus
docker cp prometheus:/etc/prometheus/prometheus.yml /var/prometheus/
删除之前的容器
docker run -d --name=prometheus -p 9090:9090 -v /var/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

到浏览器输入地址接见,泛起以下页面则乐成

 

安装Grafana

docker run -d --name=grafana -p 3000:3000 grafana/grafana

安装完成后,使用admin/admin登录

安装Node Exporter

docker run -d -p 9100:9100 \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  --net="host" \
  --restart always \
  prom/node-exporter

到浏览器输入地址接见(http://192.168.184.129:9100/metrics),泛起以下页面则乐成

设置Prometheus

vim /var/prometheus/prometheus.yml

添加以下设置 (注重花样)

  - job_name: service-a     static_configs:       - targets: ["192.168.88.138:9100"]         labels:           instance: node   - job_name: service-b     static_configs:       - targets: ["192.168.88.146:9100"]         labels:           instance: node   - job_name: service-c     static_configs:       - targets: ["192.168.88.144:9100"]         labels:           instance: node 重新启动Prometheus,打开浏览器可以见下图

设置Grafana

添加数据源

导入模板,其他模板可以到 https://grafana.com/grafana/dashboards 查看

 确认后则天生(注重修改主机名)

 

Allbet代理

www.aLLbetgame.us)是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

到这里完整的一次监控就完成,我们可以凭证上诉的步骤添加容器和docker的监控。

使用Docker Exporter监控容器

用docker举行安装

docker run --name docker_exporter --detach --restart always --volume "/var/run/docker.sock":"/var/run/docker.sock" --publish 9417:9417 prometheusnet/docker_exporter

在Prometheus举行设置,添加下面设置项

vim /var/prometheus/prometheus.yml
- job_name: "container"
    static_configs:
      - targets: ["192.168.88.138:9417"]

在grafana凭证上面node-exporter的步骤举行导入对应的模板 https://grafana.com/grafana/dashboards/11467

使用docker metrics 监控docker

开启metrics

vim  /etc/docker/daemon.json
{
  "metrics-addr" : "192.168.88.146:9323",
  "experimental" : true
}

重启docker

systemctl daemon-reload
service docker restart

设置Prometheus

- job_name: "docker"
    static_configs:
      - targets: ["192.168.88.138:9323", "192.168.88.146:9323", "192.168.88.146:9323"]

导入模板https://grafana.com/grafana/dashboards/1229

SkyWalking实现跟踪

架构简析

焦点组件

Skywalking OAP Server

Skywalking网络器,接受写入请求与UI数据查询。

Skywalking UI

有挪用链路纪录、网络拓扑图、性能指标展示等。

Skywalking客户端署理

提供了多种语言的SDK(Java, .NET Core, NodeJS, PHP,  Python等),在应用程序举行网络请求的时刻举行埋点阻挡,整理成需要的指标发送到Skywalking OAP Server,

安装SkyWalking的网络器

docker run --name skywalking-oap-server  -p 12800:12800 -p 11800:11800 -p 1234:1234 --restart always -d -e SW_STORAGE=elasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODES=192.168.184.129:9200 apache/skywalking-oap-server:8.4.0-es7

启动乐成后去ES查看,多了许多的Index

安装SkyWalking UI

docker run --name skywalking-ui -p 8888:8080 --restart always -d -e SW_OAP_ADDRESS=192.168.184.129:12800 apache/skywalking-ui:8.4.0

使用时注重调整右下角的时区

 我们到Github下载源码 https://github.com/SkyAPM/SkyAPM-dotnet,凭证how-to-build文档举行编译

- Prepare git and .NET Core SDK.
- `git clone https://github.com/SkyAPM/SkyAPM-dotnet.git`
- `cd SkyAPM-dotnet/`
- Switch to the tag by using `git checkout [tagname]` (Optional, switch if want to build a release from source codes)
- `git submodule init`
- `git submodule update`
- Run `dotnet restore`
- Run `dotnet build src/SkyApm.Transport.Grpc.Protocol`
- Run `dotnet build skyapm-dotnet.sln`

启动SkyApm.Sample.Frontend与SkyApm.Sample.Backend两个项目,浏览器接见http://localhost:5001/api/values/postin ,就可以见到下面的挪用链了。

我在19年的时刻使用0.9版本,http.request_body和http.response_body都是没纪录需要自己扩展,而现在最新版已经有纪录,省了不少的事。

EFK(ElasticSearch+Filebeat+Kibana)实现日志

安装Nginx

主要用来测试的

添加源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装

yum install -y nginx
修改设置
vim /etc/nginx/nginx.conf

把圈起来的设置改动一下

log_format  json  '{"@timestamp":"$time_iso8601",'
    '"host": "$server_addr",'
    '"clientip": "$remote_addr",'
    '"request_body": "$request_body",'
    '"responsetime": $request_time,'
    '"upstreamtime": "$upstream_response_time",'
    '"upstreamhost": "$upstream_addr",'
    '"http_host": "$host",'
    '"url": "$uri",'
    '"referer": "$http_referer",'
    '"agent": "$http_user_agent",'
    '"status": "$status"}';
access_log
/var/log/nginx/access.log json;
开机启动
systemctl start nginx.service
systemctl enable nginx.service

用浏览器接见,刷新几回,执行cat /var/log/nginx/access.log 就可以看到json花样的日志了

安装Filebeat

导入安装源

sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elastic.repo

保留下面文案

[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

执行安装指令

yum install -y filebeat

添加设置

vim /etc/filebeat/filebeat.yml
filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/nginx/access.log
    json.key_under_root: true
    json.overwrite_keys: true
    json.message_key: log
    tags: ["nginx-access"]
  - type: log
    enabled: true
    paths:
      - /var/log/nginx/error.log
    json.key_under_root: true
    json.overwrite_keys: true
    json.message_key: log
    tags: ["nginx-error"]
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.ilm.enabled: false
setup.template:
  name: "nginx"
  pattern: "nginx-*"
setup.template.overwrite: true
setup.template.enabled: false
output.elasticsearch:
  hosts: ["192.168.184.129:9200"]
  indices:
    - index: "nginx-access-%{+yyyy.MM.dd}"
      when.contains:
        tags: "nginx-access"
    - index: "nginx-error-%{+yyyy.MM.dd}"
      when.contains:
        tags: "nginx-error"

启动

systemctl start filebeat 
systemctl enable filebeat

 安装kibana

docker run --name kibana -d -p 5601:5601 kibana:7.7.0
mkdir /var/kibana
docker cp kibana:/usr/share/kibana/config /var/kibana/config

删除之前的容器再安装一次

docker run --name kibana -d -v /var/kibana/config:/usr/share/kibana/config -p 5601:5601 kibana:7.7.0

修改设置后,重启容器

vim /var/kibana/config/kibana.yml

 打开浏览器接见

确立索引,填写nginx-access-*

最后的展示UI

.Net的日志同样可以使用Json保留,然后通过Filebeat举行采集。

竣事

本篇文章是我之前实现微服务的时的运维的手艺栈,若是有什么问题与建议,可以给在谈论区反馈给我。

俄罗斯币安认证账号+俄罗斯带网银银行账户www.accbuy.vip)俄罗斯币安认证账号+俄罗斯带网银银行账户 = 2000 USDT,不议价。

俄罗斯币安认证账号+俄罗斯带网银银行账户 .Net微服务实战之可观察性,.Net微服务实战之手艺选型篇,.Net微服务实战之手艺架构分层篇,.Net微服务实战之DevOps篇,.Net微服务实战之负载平衡(上),.Net微服务实战之CI/CD,.Net微服务实战之Kubernetes的搭建与使用,.Net微服务实战之负载平衡(下),.Net微服务实战之必须得面临的漫衍式问题 第1张

  • 评论列表:
  •  usdt接口开发(www.caibao.it)
     发布于 2021-10-05 00:03:10  回复
  • usdt自动充提www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

    收藏!继续努力呀

添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。