分布式、微服务必须配个日志管理系统才优秀,Exceptionless走起~~~
前言
在真实的项目中,不管是功能日志、错误日志还是异常日志,已经是项目的重要组成部分。在原始的单体架构,通常看日志的方式简单粗暴,直接登录到服务器,把日志文件拷贝下来进行分析;而如今分布式、微服务架构盛行,如果每个节点服务器都去拷贝一次,估计还没等你拷贝完,Boss就要炸锅了;特别是遇到线上问题,肯定需要快速响应,所以好的日志管理工具真的不能少,这里就来说说Excetpionless日志框架。
正文
1. Exceptionless简介
Exceptionless是开源的,可以为 ASP.NET、Web API、WebForms、WPF、控制台项目收集对应的异常、事件和日志信息,并将收集到的信息进行分组归类,有利于问题排查及相关数据统计。使用简单也便捷,主要功能如下:
- 针对关注信息可进行通知提醒;
- 收集信息根据种类进行分组管理;
- 记录详细的错误或异常信息,排查错误更轻松;
- 可以管理用户查看信息;
- 图表形式显示数据更加直观;
- 相关配置轻松设置;
- 收集日志、错误信息等很方便;
通俗一点来说就是把异常、日志等信息收集在一起,统一的入口查看;针对相关信息进行分组,并以图表的形式进行查看,还可以对用户关心的信息进行通知提醒等扩展功能;
Exceptionless有两种方式可以进行日志管理:
托管方式
这种方式只需要在Exceptionless官网(https://exceptionless.com/)注册一个账号即可,存储那些都不用管,比较省心,简单三步走就能完成日志收集,如下:
这种方式是把采集到的信息存储到官方的服务器上了,感觉不太好,一是日志信息其实对于一些项目来说很重要,二是要收费啊,免费版其实就是试用版,高级功能用不了,还要限制人数和项目数。
自己搭建环境
自己搭建环境,服务器都是自己,私有化,爽歪歪;但这种方式,不好的点就是需要花钱买服务器;
下面以WebAPI项目的方式进行演示,版本用.NET5。
2. 托管方式实现
2.1 注册账号并创建组织和项目
直接进入官网(https://exceptionless.com/)注册一个账号即可,注册账号绝对免费滴;
创建组织和项目,如下:
先创建组织
再创建项目
2.2 引入NuGet包并在Startup.cs注入和使用
这里创建了一个WebAPI项目,引入Exceptionless.AspNetCore 即可;
在Startup.cs文件中进行注入相关服务并注册到管道中,如下:
2.3 记录日志看效果
这里在API中进行日志记录和异常信息上报,如下:
看效果,登录进官网(https://exceptionless.com/),就会看到对应的异常信息了,如下:
3. 自己搭建环境
2.1 安装环境
Exceptionless提供Docker安装版,这里先以Dockerfile形式演示,Docker Compose就一样的道理,只是分开容器部署更方便了。现在先直接下载(https://github.com/exceptionless/Exceptionless/releases),推荐7.1.0版本,7.1.1的折腾了我好久,要么脚本执行不成功,要么缺少文件;然后拷贝到对应的Docker主机上解压,如下:
# 如果unzip命令找不到,就需要安装
yum install -y unzip zip
# 然后解压
unzip Exceptionless-7.1.0.zip
解压后的信息如下
Dockerfile 把对应的Exceptionless UI、Elasticsearch等都安装在内部了,由于我的云服务内存比较小(内存大的可以不改),Dockerfile文件中默认指定了Elasticsearch最小使用内存为1G,如果内存不够,就会报错空间不足,所以稍微改动一下Dockerfile,如下:
改好之后就直接构建为镜像,执行如下命令:
docker build -t test333 .
构建成功之后,直接通过镜像启动容器即可,如下命令
docker run -it --name tt3 -p 5000:80 -p 9200:9200 test333
可能由于服务器配置比较低的原因,启动稍微需要点时间。
注:如果对docker还不太熟的,参考docker系列文章;
Excpetionless API和Exceptionless UI 站点部署为一个站点了,如果能如下访问页面并能注册成功,环境就搭建完成。
2.2 实操演练
登录Exceptionless UI系统(http://IP:5000/)进去之后就创建组织和项目,和托管的步骤差不多:
下一步就是针对选择自己的项目类型,集成就行了(这步托管的也有,只是没截图),如下:
稍微改改Startup.cs文件,其他不用动,如下:
好了,这样就改完了,其他代码不动,运行访问一下API ,看日志效果:
2.3 Exceptionless 还提供接口调用
不管是托管还是自己搭建环境,都有提供对应的API进行调用,所以可以通过API的形式自己搞一个个性化的UI出来,也可以在其他系统中集成显示日志,反正接口在手,爱咋玩就咋玩;实在不行就改源代码,嘿嘿嘿~~~。
Exceptionless的使用还是很简单的,只是搭建的时候的花点心思。
代码地址:https://gitee.com/CodeZoe/microservies-demo/tree/main/ExceptionlessDemo
Exceptionless官网:https://exceptionless.com
Exceptionless源代码:https://github.com/exceptionless/Exceptionless/releases
总结
关于上面只是演示Exceptionless的使用,包含托管和自己搭建环境,基本上小伙伴都会选择自己搭建;搭建过程需要花点心思,比如ES要不要集群,要不要支持APM,邮件通知配置等等,不过现在可以通过Docker-compose一键安装,最多就是需要等待一会。还有如果想搞点个性化的,也可以在Exceptionless的源代码上做操作;后续细节再单独汇总吧;
关注“Code综艺圈”,和我一起学习吧;
分布式、微服务必须配个日志管理系统才优秀,Exceptionless走起~~~的更多相关文章
- 分布式/微服务必配APM系统,SkyWalking让你不迷路
前言 如今分布式.微服务盛行,面对拆分服务比较多的系统,如果线上出现异常,需要快速定位到异常服务节点,假如还用传统的方式排查肯定效率是极低的,因为服务之间的各种通信会让定位更加繁琐:所以就急需一个分布 ...
- fluentd分布式日志管理系统
如何有效地收集和管理大量服务器的日志一直是企业很头疼的一个问题,部分企业应用shell脚本来管理,部分企业基于hadoop来开发自己的日志管理系统,第一种管理成本巨大,需要大量的人力来维护脚本的正常运 ...
- 离线部署ELK+kafka日志管理系统【转】
转自 离线部署ELK+kafka日志管理系统 - xiaoxiaozhou - 51CTO技术博客http://xiaoxiaozhou.blog.51cto.com/4681537/1854684 ...
- Centos7 之安装Logstash ELK stack 日志管理系统
一.介绍 The Elastic Stack - 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来源 ...
- 170228、Linux操作系统安装ELK stack日志管理系统--(1)Logstash和Filebeat的安装与使用
安装测试环境:Ubuntu 16.04.2 LTS 前言 (1)ELK是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来 ...
- CentOS 7下安装Logstash ELK Stack 日志管理系统(上)
介绍 The Elastic Stack - 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来源,任 ...
- rsyslog 一重启就会开始同步之前所有通配的日志文件
<pre name="code" class="html">[root@dr-mysql01 zjzc_log]# grep '24/Sep/201 ...
- 日志分析工具、日志管理系统、syslog分析
日志分析工具.日志管理系统.syslog分析 系统日志(Syslog)管理是几乎所有企业的重要需求.系统管理员将syslog看作是解决网络上系统日志支持的系统和设备性能问题的关键资源.人们往往低估了对 ...
- Eventlog Analyzer日志管理系统、日志分析工具、日志服务器的功能及作用
Eventlog Analyzer日志管理系统.日志分析工具.日志服务器的功能及作用 Eventlog Analyzer是用来分析和审计系统及事件日志的管理软件,能够对全网范围内的主机.服务器.网络设 ...
随机推荐
- SpringCloud之Hystrix集群监控turbine仪表盘
1.引入 在前一节中我们演示了单机模式下Hystrix服务监控Dashboard仪表盘,但是在实际生产中微服务都是集群模式, 为了更接近世界生产,我们在这里也给大家讲一下如何监控集群模式 2.准备工作 ...
- 【多线程】不懂什么是 Java 中的锁?看看这篇你就明白了!
本文来源:Java建设者 原文地址:https://mp.weixin.qq.com/s/GU42BjM5jY2CEMVD_PAZBQ Java 锁分类 Java 中的锁有很多,可以按照不同的功能.种 ...
- 如果服务器数据更新了,CDN的数据是怎么及时更新的
A:cdn一般用来存静态资源.拿网站来说,当用户访问网站时静态资源从cdn加载.cdn向后段源服务器请求资源并缓存,这个请求过程是周期性的,自动的,称为回源. 当你更新了一个文件,现在正巧还没到cdn ...
- 【JavasScript】折腾一个基础到不能再基础的顺滑抽奖页面
前言 事情是这样的,作为一个意志力极低的人,最近一直在找寻提高意志力的方法. 然后决定试一试所谓的"建立奖励机制",也就是说,完成一项意志力挑战后给自己一些奖励(具体操作方法不在这 ...
- python·那些不值钱的经验
时间:2018-11-22 整理:byzqy python读写文本文件 1 # -*- coding: utf-8 -*- 2 3 def read_file(file): 4 with open(f ...
- 每天迁移MySQL历史数据到历史库Python脚本
#!/usr/bin/env python # coding:utf-8 #__author__ = 'Logan' import MySQLdb import sys import dat ...
- vue ele 表单规则校验俩次输入密码是否相同,校验手机号 ( 前端小课堂:小细节,大进步 )
这个是密码的拦截 : [{ required: true, validator: validatePass4, trigger: "blur" }], 同级关系下写下方法,类 ...
- Jenkins 构建JOB失败
问题描述 同事在使用Jenkins打包项目的时候报错 error:index-pack died of signal 15 fatal: index-pack failed 出现这个问题,初步怀疑是拉 ...
- fetch ios低版本兼容cannot clone a disturbed response
报错信息 ios 11以下 cannot clone a disturbed response github.com/github/fetc- 问题发生场景 使用了一个或者多个三方库 三方库或者自己的 ...
- java 集合特性面试必备
collection 集合体系 数据结构栈和队列栈结构 :先进后出队列结构 :先进先出 数据结构之数组和链表数组结构:查询快.增删慢队列结构 :查询慢.增删快 List集合概述有序集合(也称为序列), ...