首页 文章 精选 留言 我的

精选列表

搜索[CI/CD集成],共10000篇文章
优秀的个人博客,低调大师

⑤ 编译管线:一份YAML契约,编译出Prompt/Schema/CI规则

在前序章节中,我用四步建立了从发现问题到定义规则的闭环前半段:先是语义令牌与字典,把 status.critical 这类语义概念编码为组织级唯一信源,让它不再是某个设计师的个人偏好,而是注册在组织字典中、跨团队共享的语义原子,这就奠定了统一基线;接着是语义域,确立了组件的空容器属性与场景外赋机制,同一个 Alert 在交易场景是阻断器、在观察场景是信息条,这就建立了场景隔离的基础;然后是约束显化,把"红色代表告警"这类自然语言直觉转化为 color_token: status.critical 这样的机器可读表达,这就保证了规则的可执行性;最后是语义契约,通过YAML的7个冻结字段、入库前三道闸和 SemVer 版本管理,建立了规则从编写到生效的完整流程,这就实现了版本治理。

优秀的个人博客,低调大师

AutoMQ 生态集成 CubeFS

CubeFS [1] 是新一代云原生存储产品,目前是云原生计算基金会 CNCF托管的孵化阶段开源项目, 兼容 S3、POSIX、HDFS 等多种访问协议,支持多副本与纠删码两种存储引擎,为用户提供多租户、 多 AZ 部署以及跨区域复制等多种特性,广泛应用于大数据、AI、容器平台、数据库、中间件存算分离、数据共享以及数据保护等场景。 CubeFS的多级缓存[2] AutoMQ 创新的共享存储架构需要低成本的对象存储,而 CubeFS 支持 S3 兼容接口,其中 ObjectNode 提供兼容 S3 的对象存储接口来操作 CubeFS 中的文件,因此可以使用 S3Browser、S3Cmd 等开源工具或者原生的 Amazon S3 SDK 操作 CubeFS 中的文件。因此对于 AutoMQ 具有很好的适配性。因此你可以部署 AutoMQ 集群来获得一个与 Kafka 完全兼容,但是具备更好成本效益、极致弹性、个位数毫秒延迟的流系统。 本文将介绍如何将 AutoMQ 集群部署到您私有数据中心的 CubeFS 上。 01 前置条件 1.1 准备 CubeFS 集群 一个可用的 CubeFS 环境。如果您还没有 CubeFS 环境,可以参考官方文档进行依赖配置 [3] 以及搭建 CubeFS 基础集群 [4] 。 CubeFS 默认的安装包下的 build/bin 目录提供了一系列管理集群的命令行工具。本文中也将使用这些命令行工具做一些额外配置。通过 CubeFS 命令行工具查看集群状态,验证是否搭建成功: # 执行命令 ./build/bin/cfs-cli cluster info # 结果输出 [Cluster] Cluster name : cfs_dev Master leader : 172.16.1.101:17010 Master-1 : 172.16.1.101:17010 Master-2 : 172.16.1.102:17010 Master-3 : 172.16.1.103:17010 Auto allocate : Enabled MetaNode count (active/total) : 4/4 MetaNode used : 0 GB MetaNode available : 21 GB MetaNode total : 21 GB DataNode count (active/total) : 4/4 DataNode used : 44 GB DataNode available : 191 GB DataNode total : 235 GB Volume count : 2 ... 注意:这里的 CubeFS 集群的 master 节点的 ip 和端口将在接下来的对象网关配置中使用。 1.2 启用对象网关 为了让 CubeFS 支持对象存储协议,您需要开启对象网关 [5]。对象网关的作用在于,它提供了与 S3 兼容的对象存储接口,这使得 CubeFS 不仅能够支持传统的 POSIX 文件系统接口,还能够支持 S3 兼容的对象存储接口。通过这种方式,CubeFS 能够融合这两种通用类型接口的优势,进而为用户提供更为灵活的数据存储及访问方案。具体而言,开启对象网关后,用户便可以利用原生的 Amazon S3 SDK 来操作存储在 CubeFS 中的文件,从而享受到对象存储的便利性。 为了启动对象网关,首先需要在 CubeFS 根目录下创建 objectnode.json 配置文件,objectnode.json 配置文件示例内容如下: { "role": "objectnode", "listen": "17410", "domains": [ "object.cfs.local" ], "logDir": "/cfs/Logs/objectnode", "logLevel": "info", "masterAddr": [ "172.16.1.101:17010", "172.16.1.102:17010", "172.16.1.103:17010" ], "exporterPort": 9503, "prof": "7013" } 注意:此处的 masterAddr 的 ip 和端口信息可以从上一步的 CubeFS 集群信息中获取。 然后使用以下命令启动对象网关: nohup ./build/bin/cfs-server -c objectnode.json & 1.3 创建 CubeFS 用户 创建 CubeFS 用户,并查询得到 AccessKey 以及 Secret AccessKey 等信息。 可以参考用户管理文档 [6] 进行创建并查询对应用户的信息。 CubeFS 支持多种创建方式,比如可以通过 AWS SDK [7] 的方式进行创建或者 HTTP 请求的方式创建,这里我们将演示通过 HTTP 请求的方式进行创建: 指定用户id,密码以及 type,并请求创建接口: curl -H "Content-Type:application/json" -X POST --data '{"id":"automq","pwd":"12345","type":3}' "http://172.16.1.101:17010/user/create" 通过用户 ID 查询用户信息: curl -v "http://10.196.59.198:17010/user/info?user=automq" | python -m json.tool 响应示例 { "user_id": "automq", "access_key": "UZONf5FF6WKwFCj4", "secret_key": "TRZzfPitQkxOLXqPhKMBRrDYUyXXMpWG", "policy": { "own_vols": ["vol1"], "authorized_vols": { "ltptest": [ "perm:builtin:ReadOnly", "perm:custom:PutObjectAction" ] } }, "user_type": 3, "create_time": "2024-06-06 09:25:04" } 1.4 使用 S3 接口创建 Bucket 使用 aws cli 工具在 CubeFS 上创建需要的 bucket 以用于 AutoMQ 的集群部署。拿到用户的 key 等信息,通过 aws configure 进行配置,并使用 aws cli 工具进行 bucket 的创建。 aws s3api create-bucket --bucket automq-data --endpoint=http://127.16.1.101:17140 aws s3api create-bucket --bucket automq-ops --endpoint=http://127.16.1.101:17140 使用命令查看已经有的 bucket aws s3 ls --endpoint=http://172.16.1.101:17140 1.5 准备部署 AutoMQ 所需的机器 准备 5 台主机用于部署 AutoMQ 集群。建议选择 2 核 16GB 内存的 Linux amd64 主机,并准备两个虚拟存储卷。示例如下: Tips:请确保这些机器处于相同的网段,可以互相通信非生产环境也可以只部署 1 台 Controller,默认情况下该 Controller 也同时作为 Broker 角色 从 AutoMQ Github Releases 下载最新的正式二进制安装包,用于安装 AutoMQ。 02 安装并启动 AutoMQ 集群 配置S3 URL 第一步:生成 S3 URL AutoMQ 提供了 automq-kafka-admin.sh 工具,用于快速启动 AutoMQ。只需提供包含所需 S3 接入点和身份认证信息的 S3 URL,即可一键启动 AutoMQ,无需手动生成集群 ID 或进行存储格式化等操作。 ### 命令行使用示例 bin/automq-kafka-admin.sh generate-s3-url \ --s3-access-key=xxx \ --s3-secret-key=yyy \ --s3-region=cn-northwest-1 \ --s3-endpoint=s3.cn-northwest-1.amazonaws.com.cn \ --s3-data-bucket=automq-data \ --s3-ops-bucket=automq-ops 如果遇到报错,请注意验证参数正确性以及格式。 当使用 CubeFS 时,可以采用如下的配置来生成具体的 S3URL。 输出结果 执行该命令后,将自动按以下阶段进行: 根据提供的 accessKey 和 secret Key 对 S3 基本功能进行探测,以验证 AutoMQ 和 S3 的兼容性。 根据身份信息,接入点信息生成 s3url。 根据 s3url 获取启动 AutoMQ 的命令示例。在命令中,将 --controller-list 和 --broker-list 替换为实际需要部署的 CONTROLLER 和 BROKER。 执行结果示例如下: ############ Ping s3 ######################## [ OK ] Write s3 object [ OK ] Read s3 object [ OK ] Delete s3 object [ OK ] Write s3 object [ OK ] Upload s3 multipart object [ OK ] Read s3 multipart object [ OK ] Delete s3 object ############ String of s3url ################ Your s3url is: s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=xxx&s3-secret-key=yyy&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA ############ Usage of s3url ################ To start AutoMQ, generate the start commandline using s3url. bin/automq-kafka-admin.sh generate-start-command \ --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" \ --controller-list="192.168.0.1:9093;192.168.0.2:9093;192.168.0.3:9093" \ --broker-list="192.168.0.4:9092;192.168.0.5:9092" TIPS: Please replace the controller-list and broker-list with your actual IP addresses. 第 2 步:生成启动命令列表 将上一步生成的命令中的 --controller-list 和 --broker-list 替换为你的主机信息,具体来说,将它们替换为环境准备中提到的 3 台 CONTROLLER 和 2 台 BROKER 的 IP 地址,并且使用默认的 9092 和 9093 端口。 bin/automq-kafka-admin.sh generate-start-command \ --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" \ --controller-list="192.168.0.1:9093;192.168.0.2:9093;192.168.0.3:9093" \ --broker-list="192.168.0.4:9092;192.168.0.5:9092" 参数说明 输出结果 执行命令后,会生成用于启动 AutoMQ 的命令。 ############ Start Commandline ############## To start an AutoMQ Kafka server, please navigate to the directory where your AutoMQ tgz file is located and run the following command. Before running the command, make sure that Java 17 is installed on your host. You can verify the Java version by executing 'java -version'. bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker,controller --override node.id=0 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.1:9092,CONTROLLER://192.168.0.1:9093 --override advertised.listeners=PLAINTEXT://192.168.0.1:9092 bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker,controller --override node.id=1 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.2:9092,CONTROLLER://192.168.0.2:9093 --override advertised.listeners=PLAINTEXT://192.168.0.2:9092 bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker,controller --override node.id=2 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.3:9092,CONTROLLER://192.168.0.3:9093 --override advertised.listeners=PLAINTEXT://192.168.0.3:9092 bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker --override node.id=3 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.4:9092 --override advertised.listeners=PLAINTEXT://192.168.0.4:9092 bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker --override node.id=4 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.5:9092 --override advertised.listeners=PLAINTEXT://192.168.0.5:9092 TIPS: Start controllers first and then the brokers. 注意:node.id 默认从 0 开始自动生成。 第 3 步:启动 AutoMQ 要启动集群,请在预先指定的 CONTROLLER 或 BROKER 主机上依次执行上一步命令中的命令列表。例如,在 192.168.0.1 上启动第一个 CONTROLLER 进程,执行生成的启动命令列表中的第一条命令模板。 bin/kafka-server-start.sh --s3-url="s3://s3.cn-northwest-1.amazonaws.com.cn?s3-access-key=XXX&s3-secret-key=YYY&s3-region=cn-northwest-1&s3-endpoint-protocol=https&s3-data-bucket=automq-data&s3-path-style=false&s3-ops-bucket=automq-ops&cluster-id=40ErA_nGQ_qNPDz0uodTEA" --override process.roles=broker,controller --override node.id=0 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override listeners=PLAINTEXT://192.168.0.1:9092,CONTROLLER://192.168.0.1:9093 --override advertised.listeners=PLAINTEXT://192.168.0.1:9092 参数说明 使用启动命令时,未指定的参数将采用 Apache Kafka 的默认配置。对于 AutoMQ 新增的参数,将使用 AutoMQ 提供的默认值。要覆盖默认配置,可以在命令末尾添加额外的 --override key=value 参数来覆盖默认值。 Tips: 若需启用持续流量重平衡或运行 Example: Self-Balancing When Cluster Nodes Change,建议在启动时为 Controller 明确指定参数 --override autobalancer.controller.enable=true。 在私有数据中心部署 AutoMQ 用于生产环境,需确保本地 SSD 的可靠性。由于 CubeFS 不支持高可用的块设备协议,它无法直接管理磁盘的冗余或者备份。但是您可以通过 RAID [8] 方案进行解决。 后台运行如果需要以后台模式运行,请在命令末尾添加以下代码: command > /dev/null 2>&1 & 至此,你已经完成了基于 CubeFS 的 AutoMQ 集群部署,拥有了一个低成本、低延迟、秒级弹性的 Kafka 集群了。如果你需要进一步体验 AutoMQ 的秒级分区迁移、持续自平衡等特性,可以参考官方示例。 参考资料 [1] CubeFS: https://www.cubefs.io/zh/ [2] CubeFS 的多级缓存: https://www.cubefs.io/zh/docs/master/overview/introduction.html [3] 依赖配置: CubeFS | A Cloud Native Distributed Storage System [4] CubeFS 单机部署: www.cubefs.io [5] 对象网关: https://www.cubefs.io/zh/docs/master/design/objectnode.html [6] CubeFS 用户管理文档: CubeFS | A Cloud Native Distributed Storage System [7] CubeFS AWS SDK: https://www.cubefs.io/zh/docs/master/user-guide/objectnode.html#%E6%94%AF%E6%8C%81%E7%9A%84sdk [8] RAID: https://www.cnblogs.com/chuncn/p/6008173.html END 关于我们 我们是来自 Apache RocketMQ 和 Linux LVS 项目的核心团队,曾经见证并应对过消息队列基础设施在大型互联网公司和云计算公司的挑战。现在我们基于对象存储优先、存算分离、多云原生等技术理念,重新设计并实现了 Apache Kafka 和 Apache RocketMQ,带来高达 10 倍的成本优势和百倍的弹性效率提升。 🌟 GitHub 地址:https://github.com/AutoMQ/automq 💻 官网:https://www.automq.com

优秀的个人博客,低调大师

NetCore集成Quart说明

.NET Core可以创建“定时”后台服务在 ASP.NET Core 中使用托管服务实现后台任务(例如,每10分钟运行一次任务),但是自带的后台服务应用场景太局限。在实际场景中,我们通常需要指定更复杂的时间参数。例如 凌晨2点30,每天的上午10点,每两小时一次,当处理这些复杂的时间时,自带的解决方案就显得格格不入了。 为些Quartz.NET提供了强大的解决方案, 通过使用Cron表达式,您可以确保任务在特定时间运行,或仅在特定的几天运行,或这些时间的任意组合。 Quart.Net介绍 概述 Quartz主要有三部分组成任务(Job)、触发器(Trigger)和调度器(Schedule)。 任务 Job就是执行的作业,Job需要继承IJob接口,实现Execute方法。Job中执行的参数从Execute方法的参数中获取。 触发器 触发器常用的有两种:SimpleTrigger触发器和CronTrigger触发器。 调度器 调度器就是将任务和触发器绑定,让触发器触发的时候去执行任务。上一个简单的案例 案例 1、首先Nuget包引用 nuget install Quartz.AspNetCore 2、定义一个Job任务 /// <summary> /// 创建IJob的实现类,并实现Excute方法 /// </summary> public class TestJob : IJob { public Task Execute(IJobExecutionContext context) { return Task.Run(() => { Console.WriteLine("output testjob log"); }); } } 3、Api控制器调用方法创建任务 [Route("quart")] [ApiController] public class QuartController : Controller { private readonly ISchedulerFactory _schedulerFactory; public QuartController(ISchedulerFactory schedulerFactory) { _schedulerFactory = schedulerFactory; } [HttpGet("CreateTask")] public async Task<IActionResult> CreateTask() { //通过调度工厂获得调度器 var _scheduler = await _schedulerFactory.GetScheduler(); //开启调度器 await _scheduler.Start(); //创建一个触发器 var trigger = TriggerBuilder.Create() .WithSimpleSchedule(x => x.WithIntervalInSeconds(2).RepeatForever())//每两秒执行一次 .Build(); //创建任务 var jobDetail = JobBuilder.Create<TestJob>() .WithIdentity("job", "group") .Build(); //将触发器和任务器绑定到调度器中 await _scheduler.ScheduleJob(jobDetail, trigger); return new JsonResult(new { success = true }); } } 调用 localhost://quart/createtask 即可以看控制台看到每隔俩秒钟输出一段控制台信息。 实例使用场景 上述的案例是一种通过自己创建三元素的方式来创建任务,在一些通用场景下其实我们只关心定时任务的逻辑和执行的频率,其他我可以不考虑。 即领导给了我一个任务,任务的功能是:开发一个定时任务,每天02:30执行,清理数据库历史记录。那么开发者最方便的方式是什么? 伪代码 1、定义执行Job class CleanJob{ [cron表达式] public void cleanDatabase(){ 业务逻辑 } } 2、注入任务 services.Register(typeof(CleanJob)) 如何能够通过这样的方式实现是最好的,但是现实是NetCore的quart.net现在还不支持这样的定义方式,java好像是可以的。 那有没有其他类似的方式可以实现上面的效果呢? 我给大家推荐一种方式 案例说明 1、定义一个初始化配置的服务注册 public static class QuartzIocExtend { public static void AddJobAndTrigger<T>(this IServiceCollectionQuartzConfigurator quartz, IConfiguration config, string category = "Default") w { string quartKey = "Quartz"; // 泛型Job的name string jobName = typeof(T).Name; // 从appsetting.json中获取任务job的corn执行表达式 var configKey = $"{quartKey}:{category}:{jobName}"; var cronSchedule = config[configKey]; // 校验cron表达式存在 if (string.IsNullOrEmpty(cronSchedule)) { throw new Exception($"No Quartz.NET Cron schedule found for job in configuration at {configKey}"); } // 注册job var jobKey = new JobKey(jobName); quartz.AddJob<T>(opts => opts.WithIdentity(jobKey)); //为job添加调度器 quartz.AddTrigger(opts => opts .ForJob(jobKey) .WithIdentity(jobName + "-cron-trigger") .WithCronSchedule(cronSchedule)); } 2、ConfigureServices中注册 //quartz 定时服务 services.AddQuartz(q => { q.UseMicrosoftDependencyInjectionScopedJobFactory(); q.AddJobAndTrigger<TestJob>(configuration); }); 3、配置文件定义cron表达式 "Quartz": { "Default": { //5秒钟执行一次 "TestJob":"0/5 * * * * ? *" } } 4、执行测试 测试结果正确,每五秒钟输出文本 参考 Quart.net官方文档 在.NET Core 中使用Quartz.NET .Net Core中使用Quartz.NET Quartz.Net使用教程 在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度 最后 本文到此结束,希望对你有帮助 😃 如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。 更多精彩技术文章汇总在我的 公众号【程序员工具集】,持续更新,欢迎关注订阅收藏。

优秀的个人博客,低调大师

ELK+kafka集成

1、因为本项目采用的log4j2,所以在log4j2中直接配置 <Kafkaname="Kafka"topic="XX_log"> <PatternLayoutpattern="%d{yyyy-MM-ddHH:mm:ss}||%p||%c{1}||XX_web||%m%n"/> <Propertyname="bootstrap.servers">127.0.0.1:9092</Property> <Propertyname="timeout.ms">500</Property> </Kafka> PatternLayout 中格式采用了||将内容连接起来目的为了logstash进行切分,其中增加timeout.ms属性为了保证日志系统挂掉的情况不会对业务系统产生较大影响,当然kafka可以采用集群的方式,bootstrap.servers多个地址用“,”分隔。XX_web代表当前业务平台。 2、搭建kafka集群这里就不多介绍了官网很全, zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 3、创建logstash动态模板 { "template":"*", "settings":{ "index.refresh_interval":"5s", "number_of_replicas":"0", "number_of_shards":"3" }, "mappings":{ "_default_":{ "_all":{ "enabled":false }, "dynamic_templates":[ { "message_field":{ "match":"message", "match_mapping_type":"string", "mapping":{ "type":"string", "index":"analyzed" } } }, { "string_fields":{ "match":"*", "match_mapping_type":"string", "mapping":{ "type":"string", "index":"not_analyzed" } } } ], "properties":{ "dateTime":{ "type":"date", "format":"yyy-MM-ddHH:mm:ss" }, "@version":{ "type":"integer", "index":"not_analyzed" }, "context":{ "type":"string", "index":"analyzed" }, "level":{ "type":"string", "index":"not_analyzed" }, "class":{ "type":"string", "index":"not_analyzed" }, "server":{ "type":"string", "index":"not_analyzed" } } } } } 4、配置logstash input{ kafka{ zk_connect=>"127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183" group_id=>"logstash" topic_id=>"XX_log" reset_beginning=>false consumer_threads=>5 decorate_events=>true } } filter{ mutate{ split=>["message","||"] add_field=>{ "dateTime"=>"%{[message][0]}" } add_field=>{ "level"=>"%{[message][1]}" } add_field=>{ "class"=>"%{[message][2]}" } add_field=>{ "server"=>"%{[message][3]}" } add_field=>{ "context"=>"%{[message][4]}" } remove_field=>["message"] } date{ match=>["logdate","yyyy-MM-ddHH:mm:ss"] } } output{ elasticsearch{ hosts=>["127.0.0.1:9200"] index=>"XX_log-%{+YYYY-MM}" codec=>"json" manage_template=>true template_overwrite=>true flush_size=>50000 idle_flush_time=>10 workers=>2 template=>"E:\logstash\template\template_log.json" } } 按照年月将日志保存进ES索引中index => "XX_log-%{+YYYY-MM}",logstash从kafka集群中读取日志信息。 5、搭建ZK集群,这里就不多介绍了,网上资料比较多 6、搭建ES集群,ES集群比较简单,设置的参数不要太多就可以使用。 7、配置kibana server.port:5601#服务端口 #Thehosttobindtheserverto. server.host:"115.28.240.113" elasticsearch.url:http://127.0.0.1:9200ES地址-集群 kibana.index:"kibana" 8、版本 JKD 1.7 ES-2.4, logstash 2.4, kafka-2.10,kibana-4.6.4

优秀的个人博客,低调大师

HBase与Eclipse集成

1 开发环境 1、系统:Windows 2、IDE工具:Eclipse-Juno 3、HBase-0.98.4-hadoop1 2 前提条件 1、已经按照“Hadoop”目录中“HBase安装”文章,搭建起了HBase集群,并且集群已经启动。 3 项目布局 4 开发流程 4.1 新建项目 可以普通项目,也可以Web项目。此处新建Java Web项目:CloudDataBase。 4.2 添加JAR包 进入HBase文件下的lib目录,拷贝该目录下的所有Jar包,复制到项目CloudDataBase\WebContent\WEB-INF\lib文件夹下: 若是普通java,那么可以再项目上点击右键,选择Propertie,在弹出的快捷菜单中选择“Java Build Path”对话框,再单击Libraries选项卡,在该选项卡下单击“Add External JARs”按钮,定位到HBase文件下的lib目录,并选取其中的所有Jar包。 (Propertie->Java Build Path->Libraries-> Add External JARs) 4.3 添加hbase-site.xml配置文件 在工程根目录下创建一个名字为“conf”的文件夹,从已经搭建好的HBase集群中,找到$HBASE_HOME/conf/目录中的hbase-site.xml文件,并将其复制到该文件夹中(比如,我搭建好的集群,该文件在Linux服务器中“/opt/hbase-0.98.4/conf/”目录下。注意,需要是已经配置好的HBase集群中的hbase-site.xml文件,刚下载的HBase部署文件中的该文件是不能使用的)。 再次右键点击项目,选择Propertie->Java Build Path->Libraries->Add Class Folder,然后选择conf文件夹。 4.4 在windows中添加集群的hosts信息 windows下开发HBase应用程序,而HBase部署在linux环境中,在运行调试时会出现无法找到主机,类似异常信息如下:java.net.UnknownHostException: unknown host: master 解决方案: 在C:\WINDOWS\system32\drivers\etc\hosts文件中添加如下信息 [server_IP] [server_name] 比如,针对我之前搭建的集群,添加的内容如下: 4.5 编写代码 4.6 运行 4.7 查看结果 5 参考资料 http://www.cnblogs.com/jingyunyb/p/3392506.html

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册