这篇文章旨在让你轻松在net项目中完成对日志的收集以及可视化,主要涉及elasticsearch / elasticsearch-head /kibana /apm /nssm来完成对一个项目的完整日志收集性能监控,更方便定位问题,查找原因。上面说的这些都是什么接下来将一个一个为大家介绍,并让你们能在自己的项目中使用起来。
基础环境的准备搭建
1.Java环境JDK安装 NodeJs的安装 自己百度
在基础环境都准备好之后进行下面的操作
ElasticSearch安装
ElasticSearch的下载地址ElasticSearch下载
我使用的是elasticsearch-7.16.3-windows-x86_64.zip
把zip文件解压,在解压的文件中找到bin文件夹和config文件夹下面分别来说这两个文件夹都做什么。
bin文件夹:
一些批处理程序找到里面的elasticsearch双击它来启动ElasticSearch服务,启动成功之后 本地可以通过访问 http://localhost:9200 来验证是否启动。
config文件夹:
一些配置信息yml文件,这里我们需要看到elasticsearch.yml文件
elasticsearch.yml可以对elasticsearch进行相关的基础信息安全这些进行配置,注意修改了这个文件之后要重新启动服务。
当你看到如下画面就是部署并启动成功了:
ElasticSearch为了安全性默认只能本地访问,如果要开启外网远端访问,需要在elasticsearch.yml文件中添加如下配置:
# elastic search为了安全默认为本地可访问 这里开启远端可访问 需要配合x-pack添加用户名密码认证来安全访问(即访问http://ip:port需要输入密码)
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
discovery.seed_hosts: ["0.0.0.0", "[::0]"]
#通过x-pack来实现用户名密码安全访问 开启安全访问
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
配置添加完成之后点击elasticsearch.bat文件重启服务。
服务启动完成之后需要设置密码,到bin目录下打开控制台,输入elasticsearch-setup-passwords interactive命令,依次序设置密码,注意输入的时候密码为不可见,需要自己记住,这个在后面相关的与ElasticSearch相集成的组件中要用到
再次访问就会提示输入用户名密码:
用户名默认都为elastic,密码就是你自己设置的密码
但是这里有一个问题,当关闭它的时候服务会停止。
这里我们需要采用nssm来注册服务(nssm接下来讲解)。
使用nssm来注册服务
nssm下载地址:nssm下载
下载完后解压,解压之后看到这样的文件目录
这里主要是win32和win64目录这里懂的都懂,根据自己系统的版本,进入到对应的目录下面,然后打开控制台cmd,这里我们使用到nssm install安装服务命令,其他命令自己看下载地址的官网了解
上面的Path选择服务的批处理程序,以上面的ElasticSearch为例,这里就是选择到你之前启动ElasticSearch批处理
接下来在任务管理器里面找到它启动它即可
ElasticSearch-Head可视化
ElasticSearch-Head部署的方式
使用ElasticSearch-Head插件安装到Google浏览器中
自己百度下载,下载完成直接解压,找到crx文件夹
把文件夹里面后缀为crx的文件改为rar解压,以开发者模式加载解压拓展程序完成插件安装,插件安装完成之后
插件安装完成连接浏览:
Kibana安装
Kibana下载:Kibana下载地址
注意Kibana的版本号和ElasticSearch保持一致
下载完成之后解压出来:跟ElasticSearch类似也存在bin和config两个文件夹,也是通过bin文件下的kibana.bat批处理文件启动kibana(同样这里窗口关闭kibana停止服务,需要使用nssm安装服务参考ElasticSearch),启动之后访问localhost:5601即可
kibana为了安全默认只能本地访问,如果需要远程访问
需要修改kibana.yml文件加入如下内容:
server.host: "0.0.0.0"
由于之前ElasticSearch设置了用户名密码访问,这里需要在config的kibana.yml加入如下内容:
elasticsearch.username: "elastic"
elasticsearch.password: "前面自己设置ElasticSearch的密码"
启动之后,由于之前通过ElasticSearch设置了kibana的密码,用户名为elastic,密码为自己设置的密码
登录进去看到这样一个界面:
Apm安装
Net项目通过Serilog输出写入到ElasticSearch实现日志集中收集管理可视化例子
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200"))
{
AutoRegisterTemplate = true,
//设置用户名密码认证
ModifyConnectionSettings = connectionSettings =>
{
//证书验证
//connectionSettings.ServerCertificateValidationCallback((source, certificate, chain, sslPolicyErrors) => true);
connectionSettings.BasicAuthentication("elastic", "自己设置的elasticsearch的密码");
return connectionSettings;
}
})
Kibana可视化对数据集成查看
找到Management节点下面Stack Management点击它
点击Data下面的Index Management可以看到一些集成数据的节点
我们需要找到kibana并设置匹配模式,然后就可以在Discover中搜寻得到
这里的匹配模式可以看作是一级筛选
然后就是找到侧边的Discover,点击它
这里就可以看到刚才我们添加的模式,选择它就可以看到项目输出的记录的日志数据
通过Apm实现对Net项目的性能监控链路追踪
Apm-Server下载:Apm-Server
注意apm-server与elasticsearch版本保持完全一致
下载完成之后解压
可以看到有一个apm-server的程序使用cmd运行apm-server,同样关闭窗口服务停止,也需要使用nssm来安装为服务。
还有一个apm-server.yml是配置文件。
先修改配置文件,设置输出到Elastic的用户名密码,找到这样的节点
紧接着在hosts下面添加:
username: elastic
password: 你自己设置的密码
默认安全级别也为本地,如果需要外部能够访问
需要把host修改为 “0.0.0.0:8200” 并且为了连接安全需要secret_token设置
“自己的SecretToken”
启动后通过localhost:8200访问,访问成功即表示启动完成,
也可以通过Kibana检查Apm的状态
项目中集成Apm监控
appsettings.json中添加如下代码段
{
"ElasticApm": {
"SecretToken": "",
"ServerUrls": "http://localhost:8200", //Set custom APM Server URL (default: http://localhost:8200)
"ServiceName": "MyApp", //allowed characters: a-z, A-Z, 0-9, -, _, and space. Default is the entry assembly of the application
"Environment": "production", // Set the service environment
}
}
安装Elastic.Apm.NetCoreAll Nuget
通过IApplicationBuilder调用UseAllElasticApm方法
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAllElasticApm(Configuration);
//…rest of the method
}
//…rest of the class
}
然后启动你的项目
看到这个画面你就基本成功了。然后请求一个接口看看
点击接口可以看到更详细的内容包括请求过程的执行的sql语句这些:
点击对应的sql还可以更加详细的信息
当然apm性能监控还有一些更强大和好玩的东西,这些还需要用到的时候自己去百度摸索,到此为止