log4net+Kafka+ELK日志系统
2021-03-25 07:28
标签:one key out start offset data listeners 索引 全文检索 日志是每个系统最为头疼的地方,杂乱,还多,没有还不行,想管理好的话,得经得起考验,要解决的问题总结如下: (1)高并发 (2)高吞吐量 (3)支持分布式集群 (4)检索要快 1.Zoomkeeper Kafka的通道 2. Kafka Kafka主要是解决大量日志的处理的分布式发布订阅消息系统,拥有高吞吐量,相比Redis而言,可能存在数据丢失的情况,速度更快,仅支持topic模式,更适合做日志系统 3.Logstash Logstash是一个写入工具,可以说是一个桥梁,实现将kafka的consumer端和Elasticsearch数据连通有很大作用,另外也可以将文件写入到Elasticsearch中,还可以将历史的日志也转存到Elasticsearch中,还是个多功能的工具,官方最新版本中已经默认支持了对Kafka和Elasticsearch的配置 4.Elasticsearch Elasticsearch是可以分布式集群部署的全文搜索引擎服务器(NoSQL数据存储),既拥有Lucene的全文检索功能,同时还能进行分布式储存,检索速度快,与Hadoop联合作数据分析,稳健性高,可以在一个集群宕机后,使用备用集群,一样可以工作,缺点:需要足够的内存和CPU资源 5.Kibana Kibana主要用于对Elasticsearch数据的展示和分析 我们可以增加一个log4net kafkaappender 日志生产者通过这个appender将日志写入kafka,由于kafka批量提交、压缩的特性,因此对我们的应用服务器性能的开支很小。日志消费者端使用logstash订阅kafka中的消息,传送到elasticsearch中,通过kibana展示给我们。同时我们也可以通过kibana对我们的日志进行统计分析等。刚好可以解决我们上面的一些问题,流程图如下 1.安装Java SDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 环境变量如下: classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar JAVA_HOME=D:\Java\jdk1.8.0_202 Path += %JAVA_HOME%\bin Java命令: Java -version Javac -version 注意:由于Elasticsearch要求Java SDK版本较高,所有要装JDK8级以上版本 2.安装kafka 下载地址:http://kafka.apache.org/downloads 安装Zookeeper windows服务 安装Kafka windows服务 注意:由于最新的kafka中已经内置了Zookeeper,所以不用再去单独下载 安装Logstash 下载地址:https://www.elastic.co/cn/downloads/past-releases/logstash-6-7-1 安装为windows服务 打开解压目录下logstash.conf文件,配置如下: 注意:bootstrap_servers 为kafka地址,需要在Kafka配置文件server.properties中将advertised.listeners=PLAINTEXT://192.168.1.240:9092,另外,编码方式考虑到会有中文,要使用UTF-16BE编码,以防乱码 安装Elasticsearch 下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-7-1 安装为windows服务 打开配置文件elasticsearch.yml,增加如下配置: 安装Kibana 下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-6-7-1 安装为windows服务 打开配置文件Kibana.yml,修改配置如下 log4net 解决方案右键->管理解决方案的NuGet程序包,搜索log4net.Kafka.Appender,然后安装到解决方案中 添加log4net配置文件log4net.config,添加配置如下 打开Global.asax,在Application_Start中添加如下代码 测试: 打开地址 http://192.168.1.240:5601 最后可以看到日志已成功展示 部署过程中,还有很多坑,自己躺过就知道了。 log4net+Kafka+ELK日志系统 标签:one key out start offset data listeners 索引 全文检索 原文地址:https://www.cnblogs.com/Zyj12/p/12658192.html简介:
方案:
实施与部署:
1、先解压好nssm这软件,然后进入 D:\nssm-2.24\win64>
2、.\nssm install 会弹出一个nssm service installer
3、application path :D:\kafka_2.11-1.1.1\bin\windows\zookeeper-server-start.bat
4、startup directory : D:\kafka_2.11-1.1.1\bin\windows 上面选择后会自动选择出来
5、服务名称Zookeeper1、先解压好nssm这软件,然后进入 D:\nssm-2.24\win64>
2、.\nssm install 会弹出一个nssm service installer
3、application path :D:\kafka_2.11-1.1.1\bin\windows\kafka-server-start.bat
4、startup directory : D:\kafka_2.11-1.1.1\bin\windows 上面选择后会自动选择出来
5、Arguments: D:\kafka_2.11-1.0.1\config\server.properties
6、Dependencies:Zookeeper
7、服务名称kafka1、先解压好nssm这软件,然后进入 D:\nssm-2.24\win64>
2、.\nssm install 会弹出一个nssm service installer
3、application path :D:\Logstash\logstash-6.7.1\bin\logstash.bat
4、startup directory :D:\Logstash\logstash-6.7.1\bin
5、服务名称Logstashinput {
kafka {
bootstrap_servers => ["192.168.1.240:9092"]
group_id => "logstash"
auto_offset_reset => "latest"
topics => ["test"]
#codec => plain{ charset => "GBK" }
consumer_threads => 5
decorate_events => true
}
}
filter {
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "chienkun_log"
codec => plain {
charset => "UTF-16BE"
}
}
}
1、先解压好nssm这软件,然后进入 D:\nssm-2.24\win64>
2、.\nssm install 会弹出一个nssm service installer
3、application path :D:\Elasticsearch\elasticsearch-6.7.1\bin\elasticsearch-service.bat
4、startup directory :D:\Elasticsearch\elasticsearch-6.7.1\bin
5、服务名称Elasticsearch
# 禁用机器学习
xpack.ml.enabled: false
1、先解压好nssm这软件,然后进入 D:\nssm-2.24\win64>
2、.\nssm install 会弹出一个nssm service installer
3、application path :D:\kibana\kibana-6.7.1-windows-x86_64\bin\kibana.bat
4、startup directory :D:\kibana\kibana-6.7.1-windows-x86_64\bin
5、服务名称Kibana
i18n.locale: "zh-CN"
log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config"));
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
GlobalContext.Properties["component"] = "send";
for (int i = 0; i 100; i++)
{
Thread thread = new Thread(new ThreadStart(() =>
{
try
{
while (true)
{
string name = "我的消息," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
Console.WriteLine("这是" + Thread.CurrentThread.Name + "发送的消息:" + name);
logger.Debug(name);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return;
}
}))
{
Name = "线程:" + i,
IsBackground = true
};
thread.Start();
}
Console.ReadKey();
}
}
}
总结:
上一篇:关于 用 js 实现 快照功能
文章标题:log4net+Kafka+ELK日志系统
文章链接:http://soscw.com/index.php/essay/67899.html