首页
Search
1
解决visual studio code (vscode)安装时没有选择安装路径问题
315 阅读
2
如何在 Clash for Windows 上配置服务
210 阅读
3
Linux 下 Bash 脚本 bad interpreter 报错的解决方法
150 阅读
4
Arch Linux 下解决 KDE Plasma Discover 的 Unable to load applications 错误
148 阅读
5
uniapp打包app提示通讯录权限问题,如何取消通讯录权限
112 阅读
clash
服务器
javascript
全部
游戏资讯
登录
Search
加速器之家
累计撰写
1,102
篇文章
累计收到
0
条评论
首页
栏目
clash
服务器
javascript
全部
游戏资讯
页面
搜索到
1102
篇与
的结果
2024-09-03
机战游戏推荐:必玩的机战手游有哪些?
玩家必玩!五款机战手游推荐机战游戏一直是男生最爱,市面上也推出了很多种不同的机战手游。下面为大家总结了几款必玩的机战手游。1、《战机风暴》:该游戏采用了漫画般的场景,包含了更加全面的游戏种类以及战机的类型。2、《擎天战机》:该游戏将各种科幻的风格以及紧张的气氛,完美地融合在一起,有海、陆、空三种不同的战场可以选择。3、《太空英雄战机》:该游戏让人类通过聪明的智慧以及临危不惧的精神,来轻松应对未知空间的敌人。4、《银翼战机》:该游戏融入了多种不同的场景以及很多具有刺激性的关卡,提供了实时多人对战的模式。5、《火柴人大战机器人》:该游戏中玩家可以将游戏中的火柴机器人自由的组合成战队,在3D模式的模拟游戏中,玩家要通过触屏的模式来一步步指引机器人。以上是关于必玩的机战手游的详细介绍,如果你也想玩一款刺激、震撼的机战手游,以上这几款都是较好的选择。
2024年09月03日
10 阅读
0 评论
0 点赞
2024-09-03
手机上有哪些掌控士兵战斗的军事战争游戏?分享一下。
控制士兵打仗的手机游戏推荐!这些游戏主打军事战争设定,对策略能力有较强考验。在游戏中需要操控士兵战斗,对排兵布阵以及兵种组合也有较强考验性。想锻炼自身策略能力的玩家们,千万不要错过这些军事类型的游戏,可以通过游戏感受到极其真实的战争对战体验。帝国扩张想要及时对战的玩家们,帝国扩张绝对是最好的选择。在游戏中需要操控士兵帮助自己产出资源,占领更多领地。之后可以运用各种策略,让整个游戏都变成自己阵营的颜色。罗德里罗德里呈现的是一个比较复古的中世纪时代,主打骑马砍杀的玩法。玩家可以控制将军操控士兵,不断和敌对势力对抗。在这个过程中可以选择的兵种类型有很多,需要根据对方不同的特性选择出相应的兵种组成战队,这样才能有更大的获胜几率。荣耀之争喜欢联机即时战斗的玩家们可以来荣耀之争里面操控角色去采集资源,修建建筑,并且在这个过程中还需要不断的发展科技。这样才能利用自己的能量去摧毁敌人。pvp的模式可以让成员之间能够互相合作。游戏呈现的是一个俯视视角,可以让玩家有一种把控全局的体验。王者纷争战争军事类型的游戏不只有国外的中世纪时期,同时还会有像三国这样比较经典的题材设置。进入到王者纷争的游戏世界之后,玩家会成为一名领导者,可以不断的招募名将扩张城池。有了一定的能力之后就可以考虑去和敌军作战。如果自身能力欠佳的话,也可以考虑和其他的国家联盟,这样可以借助盟友的力量给对方更强的打击。游戏里对于兵种的类型有很多兵种之间互相克制,可以通过这种设定感受到一个更加简单的军事对战玩法。权力与纷争权力与纷争是网易推出的游戏,所以整个画面的呈现都会更加有质感。进入到这个中世纪游戏世界之后,玩家会成为法维拉大陆上的一个领主,为了保护住这片领地和自身的安全,需要修建城市招募士兵。这样才能在对方来进行资源掠夺的时候及时抗争。当然想要彻底的和平就需要不断参与对战,成为这个世界的领主。游戏里可以选择的兵种很多,要根据自身的需求自由搭配。以上就是控制士兵打仗的手机游戏推荐。这些游戏呈现的时代背景以及画面都是不一样的,但是相同的是游戏里都可以让将领带领士兵摆出不同的阵营参与战斗。
2024年09月03日
11 阅读
0 评论
0 点赞
2024-09-03
深入浅出ELK日志收集系统搭建
背景试想这么一种场景:Nginx负载了2个Tomcat,那么日志查看就很麻烦了,每次查看日志都要登录2台服务器,挨个搜索,2台还好,如果5台呢?10台呢?那查看日志就可费劲了,所以需要一款日志收集系统,集中管理日志,一个完整的集中式日志系统,是离不开以下几个主要特点的。收集-能够采集多种来源的日志数据传输-能够稳定的把日志数据传输到中央系统存储-如何存储日志数据分析-可以支持 UI 分析警告-能够提供错误报告,监控机制最好还是免费开源的,所以ELK技术栈登场了,ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELKElasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;Kibana:数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;Filebeat:ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。本教程说明了下面三种架构的实战操作以及选择此种架构的原因,由简单到复杂,组件由少到多,由浅入深,建议先看简单的架构,在简单架构的基础之上逐步深入最简单架构搭建(Logstash作为日志收集器)轻量级日志收集架构搭建(Beats作为日志收集器)在Beat的基础上引入消息队列机制的架构本教程的搭建基于docker,在docker中运行CentOS容器进行搭建,目的是演示搭建过程,如果不熟悉docker你可以简单理解为下面这条命令创建了一个独立的系统用于专门安装ElasticSearch:docker run -dit --name es --privileged centos /usr/sbin/init选择docker的原因:不用创建很多虚拟机,只用一个docker容器就可以模拟一个独立完整的系统环境,方便快捷模拟出来的系统环境都是最干净的,干净的系统安装软件可以更清楚的梳理依赖关系版本对照关系表参考:https://www.elastic.co/cn/support/matrix#matrix_compatibilityElasticsearchKibanaBeats^*Logstash^*5.0.x5.0.x1.3.x-5.6.x2.4.x-5.6.x5.1.x5.1.x1.3.x-5.6.x2.4.x-5.6.x5.2.x5.2.x1.3.x-5.6.x2.4.x-5.6.x5.3.x5.3.x1.3.x-5.6.x2.4.x-5.6.x5.4.x5.4.x1.3.x-5.6.x2.4.x-5.6.x5.5.x5.5.x1.3.x-5.6.x2.4.x-5.6.x5.6.x5.6.x1.3.x-6.0.x2.4.x-6.0.x6.0.x6.0.x5.6.x-6.8.x5.6.x-6.8.x6.1.x6.1.x5.6.x-6.8.x5.6.x-6.8.x6.2.x6.2.x5.6.x-6.8.x5.6.x-6.8.x6.3.x6.3.x5.6.x-6.8.x5.6.x-6.8.x6.4.x6.4.x5.6.x-6.8.x5.6.x-6.8.x6.5.x6.5.x5.6.x-6.8.x5.6.x-6.8.x6.6.x6.6.x5.6.x-6.8.x5.6.x-6.8.x6.7.x6.7.x5.6.x-6.8.x5.6.x-6.8.x6.8.x6.8.x5.6.x-6.8.x5.6.x-6.8.x7.0.x7.0.x6.8.x-7.10.x6.8.x-7.10.x7.1.x7.1.x6.8.x-7.10.x6.8.x-7.10.x7.2.x7.2.x6.8.x-7.10.x6.8.x-7.10.x7.3.x7.3.x6.8.x-7.10.x6.8.x-7.10.x7.4.x7.4.x6.8.x-7.10.x6.8.x-7.10.x7.5.x7.5.x6.8.x-7.10.x6.8.x-7.10.x7.6.x7.6.x6.8.x-7.10.x6.8.x-7.10.x7.7.x7.7.x6.8.x-7.10.x6.8.x-7.10.x7.8.x7.8.x6.8.x-7.10.x6.8.x-7.10.x7.9.x7.9.x6.8.x-7.10.x6.8.x-7.10.x7.10.x7.10.x6.8.x-7.10.x6.8.x-7.10.x在此(2021-01-14)我们都用最新版的ELK,即ELK的版本都为7.10.1最简单架构搭建(Logstash作为日志收集器)首先创建网络,如果已经创建了则不管,注意docker不允许默认网络指定ip,所以要手动创建网络docker network create --subnet=172.18.0.0/16 mynet然后准备四个容器,两个专门安装Logstash,一个安装ES,另外一个安装Kibana# Logstash容器 docker run -dit --net mynet --ip 172.18.0.10 --name log1 --privileged centos /usr/sbin/init docker run -dit --net mynet --ip 172.18.0.11 --name log2 --privileged centos /usr/sbin/init # elasticsearch容器 docker run -dit --net mynet --ip 172.18.0.12 --name es --privileged centos /usr/sbin/init # kibana容器,映射一个外网端口用于宿主机访问 docker run -dit --net mynet --ip 172.18.0.13 -p 5601:5601 --name kb --privileged centos /usr/sbin/init各个组件IP如下172.18.0.10 > Logstash 172.18.0.12 > ElasticSearch172.18.0.13 > Kibana安装Java环境因为Logstash和ElasticSearch都是基于Java平台的,所以先安装Java环境,进入容器安装,进入容器命令docker exec -it log1 bash ,其他容器同理# 安装java yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel which # 环境变量设置 cat > /etc/profile.d/java8.sh <<EOF export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac))))) export PATH=\$PATH:\$JAVA_HOME/bin export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar EOF source /etc/profile.d/java8.sh 安装ElasticSearch参考: 安装并运行 Elasticsearch首先进入容器docker exec -it es bash常用工具安装yum install -y wget在Download Elasticsearch选择合适的平台下载好包,我下载的是elasticsearch-7.10.1-linux-x86_64.tar.gz# 下载 cd ~ && wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz # 解压 tar -zxvf elasticsearch-7.10.1-linux-x86_64.tar.gz # 拷贝 cp -r elasticsearch-7.10.1 /usr/local/ # 运行 /usr/local/elasticsearch-7.10.1/bin/elasticsearch运行后此时你会得到一个报错:java.lang.RuntimeException: can not run elasticsearch as root原因很明显,不能用root运行,那么新建用户再运行# 新建用户 adduser elasticsearch # 赋权 chown -R elasticsearch /usr/local/elasticsearch-7.10.1 # 切换用户再执行 su elasticsearch /usr/local/elasticsearch-7.10.1/bin/elasticsearch # 后台执行 /usr/local/elasticsearch-7.10.1/bin/elasticsearch -d测试,如果curl 127.0.0.1:9200有类似以下回显说明成功{ "name" : "74e37036a2ee", "cluster_name" : "elasticsearch", "cluster_uuid" : "L8xK0ZqZSUKn3dZ05NJfcg", "version" : { "number" : "7.10.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa", "build_date" : "2020-12-05T01:00:33.671820Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }修改配置文件及问题排查此时发现只能用127.0.0.1访问,不能用 curl 172.18.0.12:9200访问,因为没设置network.host,下面设置一下,顺便加上允许跨域的设置http.cors.enabled、http.cors.allow-origin,sed -i '$a内容' file 是在文件末尾追加sed -i '$ahttp.cors.enabled: true' /usr/local/elasticsearch-7.10.1/config/elasticsearch.yml sed -i '$ahttp.cors.allow-origin: "*"' /usr/local/elasticsearch-7.10.1/config/elasticsearch.yml sed -i '$anetwork.host: 172.18.0.12' /usr/local/elasticsearch-7.10.1/config/elasticsearch.yml此时启动es,发现启动失败,报错如下:[2021-01-13T13:46:30,780][INFO ][o.e.t.TransportService ] [a622d8352de5] publish_address {172.18.0.12:9300}, bound_addresses {172.18.0.12:9300} [2021-01-13T13:46:31,039][INFO ][o.e.b.BootstrapChecks ] [a622d8352de5] bound or publishing to a non-loopback address, enforcing bootstrap checks [2021-01-13T13:46:31,066][ERROR][o.e.b.Bootstrap ] [a622d8352de5] node validation exception [2] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured [2021-01-13T13:46:31,069][INFO ][o.e.n.Node ] [a622d8352de5] stopping ... [2021-01-13T13:46:31,094][INFO ][o.e.n.Node ] [a622d8352de5] stopped [2021-01-13T13:46:31,095][INFO ][o.e.n.Node ] [a622d8352de5] closing ... [2021-01-13T13:46:31,116][INFO ][o.e.n.Node ] [a622d8352de5] closed [2021-01-13T13:46:31,119][INFO ][o.e.x.m.p.NativeController] [a622d8352de5] Native controller process has stopped - no new native processes can be started 注意看这句话:bound or publishing to a non-loopback address, enforcing bootstrap checks,绑定的不是本地回环接口,强制进行启动检查,es认为绑定的不是127.0.0.1就是要用于生产环境,所以要启动一下适用于生产环境的强制性检查,检查出不适合的条件就不让启动!所需需要修改如下错误:[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured[1]# 切换到root用户执行 sed -i '$avm.max_map_count=262144' /etc/sysctl.conf sysctl -p[2]# 追加这句配置 sed -i '$adiscovery.seed_hosts: ["172.18.0.12"]' /usr/local/elasticsearch-7.10.1/config/elasticsearch.yml此时再次启动就不会报错了,如果还是报错,请根据es的报错提示进行更改试一下用本机IP能访问不:curl 172.18.0.12:9200安装Logstash先安装好Java环境,然后下载源码安装,本例用的是7.10.1,其他版本参考:https://www.elastic.co/cn/downloads/logstashcd ~ wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.1-linux-x86_64.tar.gz tar xf logstash-7.10.1-linux-x86_64.tar.gz -C /usr/local mv /usr/local/logstash-7.10.1 /usr/local/logstash # 看一下版本 /usr/local/logstash/bin/logstash -V测试一下/usr/local/logstash/bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'稍等几秒钟,因为JVM启动有延迟,然后随便输入东西,然后有类似于如下输出说明成功运行,如果不知道Logstash安装在哪里,可以全局搜索一下find / -name logstash{ "message" => "Hello world", "@version" => "1", "host" => "1964ebd516a7", "@timestamp" => 2021-01-14T04:42:35.054Z } Logstash原理为:input > filter > putput,日志输入,过滤,然后再输出,此处我们的目的是为了保存到es,方便起见,input为从网络输入(当然也可以设置为从文件输入,参考:读取文件),output设置为ES,暂时不设置过滤器# 生成配置文件,注意es的ip要设置成上面配置的ip cat > ~/log.conf <<EOF input { tcp { port => 8888 mode => "server" ssl_enable => false } } filter { } output { elasticsearch { hosts => ["172.18.0.12:9200"] index => "log1_log" } stdout {codec => rubydebug} } EOF # 启动 /usr/local/logstash/bin/logstash -f ~/log.conf测试,新开一个终端,键入如下命令# 用nc命令连接到Logstash的input上并输入test echo 'test' | nc 127.0.0.1 8888 # 后面测试的时候,可以多生成测试数据,便于观察 while true;do echo 'test' | nc 127.0.0.1 8888; sleep 1;done如果发现es控制台有如下输出,说明保存es成功[2021-01-14T12:58:23,336][INFO ][o.e.c.m.MetadataCreateIndexService] [a622d8352de5] [log1_log] creating index, cause [auto(bulk api)], templates [], shards [1]/[1] [2021-01-14T12:58:23,751][INFO ][o.e.c.m.MetadataMappingService] [a622d8352de5] [log1_log/eAhjtb_sQGONcTPdOv__oQ] create_mapping [_doc]安装Kibana下载安装,如果需要其他版本请参考https://www.elastic.co/cn/downloads/kibanacd ~ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.1-linux-x86_64.tar.gz tar xf kibana-7.10.1-linux-x86_64.tar.gz -C /usr/local mv /usr/local/kibana-7.10.1-linux-x86_64 /usr/local/kibana执行/usr/local/kibana/bin/kibana # 发现报错 # Kibana should not be run as root. Use --allow-root to continue.新建用户并执行# 新建用户 adduser kibana # 赋权 chown -R kibana /usr/local/kibana # 切换用户再执行 su kibana /usr/local/kibana/bin/kibana # 发现报错,连不上es,因为默认连的是本地的es # log [13:18:02.226] [error][data][elasticsearch] [ConnectionError]: connect ECONNREFUSED 127.0.0.1:9200 配置kibana# 配置es sed -i '$aelasticsearch.hosts: ["http://172.18.0.12:9200"]' /usr/local/kibana/config/kibana.yml # 允许所有访问 sed -i '$aserver.host: "0.0.0.0"' /usr/local/kibana/config/kibana.yml # 端口server.port 默认是5601,不用管 # elasticsearch.username 和 elasticsearch.password是es的用户名和密码,没有就不用配置重新启动,发现报错FATAL Error: EACCES: permission denied, stat '*/.i18nrc.json'赋权一下,再启动chmod 755 /usr/local/kibana/.i18nrc.json在宿主机访问http://192.168.108.100:5601,之前我们映射过端口5601到宿主机,192.168.108.100换成你自己的ip,如下为访问成功的页面Kibana操作发现最新版的Kibana有变化了,首先它要求我们根据已有的所有来创建一个视图,如下图所示然后点击Discover就会发现有日志数据了轻量级日志收集架构搭建(Beats作为日志收集器)为什么使用 FilebeatLogstash 是一个 Java 程序,当作为收集日志的 Agent 时,显得太臃肿了。启动的时候都要等几秒才能看到输出,之前听过一个公司(斗鱼)使用 Logstash 作为日志收集 Agent 时,资源占用好像比业务进程占用还多!这已经本末倒置了!其实有这么一个工具:Filebeat,官方给 Filebeat 的定义就是轻量级的日志收集工具。Filebeat 是基于原先 logstash-forwarder 的源码改造出来的。换句话说:Filebeat 就是新版的 logstash-forwarder,也会是 ELK Stack 在 shipper 端的第一选择。这种架构引入 Beats 作为日志搜集器。目前 (2021-01-15)Beats 包括:BeatDescriptionAuditbeatCollect your Linux audit framework data and monitor the integrity of your files:Linux审计日志收集FilebeatTails and ships log files:搜集文件数据FunctionbeatRead and ships events from serverless infrastructure:面向云端数据的收集HeartbeatPing remote services for availability:远程服务是否可用,心跳检测JournalbeatRead and ships event from Journald:收集Linux中journald的日志MetricbeatFetches sets of metrics from the operating system and services:进行指标采集,监控性能PacketbeatMonitors the network and applications by sniffing packets:搜集网络流量数据WinlogbeatFetches and ships Windows Event logs:收集WIndows事件日志数据Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch 存储,并由 Kibana 呈现给用户。这种架构解决了 Logstash 在各服务器节点上占用系统资源高的问题。相比 Logstash,Beats 所占系统的 CPU 和内存几乎可以忽略不计。另外,Beats 和 Logstash 之间支持 SSL/TLS 加密传输,客户端和服务器双向认证,保证了通信安全。如下图所示搭建搭建之前需要先熟悉最简单架构搭建(Logstash作为日志收集器),也是在其基础之上进行搭建的,各个组件IP如下172.18.0.10 > Logstash 172.18.0.12 > ElasticSearch172.18.0.13 > Kibana172.18.0.20 > Filebeat安装Filebeat我们就以最常见的文件日志收集为例,首先创建一个容器docker run -dit --net mynet --ip 172.18.0.20 --name fb --privileged centos /usr/sbin/init下载filebeat,此处使用的版本是7.10.1,需要其他版本请参考https://www.elastic.co/cn/downloads/beats/filebeatcd ~ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.1-linux-x86_64.tar.gz tar xf filebeat-7.10.1-linux-x86_64.tar.gz -C /usr/local mv /usr/local/filebeat-7.10.1-linux-x86_64 /usr/local/filebeatFilebeat输出到ElasticSearch# 备份 cp /usr/local/filebeat/filebeat.yml /usr/local/filebeat/filebeat.yml.bak # 编辑配置 vi /usr/local/filebeat/filebeat.yml配置输出到ES的配置# ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch: # 开启了elasticsearch的输出 enabled: true # Array of hosts to connect to. hosts: ["172.18.0.12:9200"]关闭输出到Logstash的配置,因为默认是关闭的,所以不用管输入配置# ============================== Filebeat inputs =============================== filebeat.inputs: - type: log # 此处一定要改成true,否则不生效 enabled: true # 路径可以写多个 paths: - /var/log/*.log修改索引名字,filebeat 7 默认索引名字为filebeat-7.10.1-2021.01.16-000001,ElasticStack从2019年1月29日的6.6.0版本的开始,引入了索引生命周期管理的功能,新版本的Filebeat则默认的配置开启了ILM,导致索引的命名规则被ILM策略控制。所以要先关闭在修改索引# ======================= Elasticsearch template setting ======================= # 关闭ilm setup.ilm.enabled: false # 索引模板名字 setup.template.name: "filebeat-to-es-log" # 索引模板匹配 setup.template.pattern: "filebeat-to-es-log-*" # ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch: hosts: ["172.18.0.12:9200"] # 这里定义索引名字 index: "filebeat-to-es-log-%{+yyyy.MM.dd}" 保存退出并且以配置文件启动/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml -e测试# 创建文件 touch /var/log/my.log # 循环写入到测试文件 while true;do echo 'test_filebeat_to_ES_my_log' >> /var/log/my.log;sleep 1;done 打开Kibana观察,可以看到已经收集到日志了如果你左上角没找到新建的pattern,需要新建一个Kibana的索引pattern,如下图Filebeat输出到Logstash为什么要设置filebeat输出到Logstash?因为Logstash可以对输入的日志信息进行二次处理!Logstash配置注意索引名字换成filebeat-to-logstash-log,好和最开始的索引名字作区分,否则的话会因为fields不一样导致存储不成功!# 生成配置文件,监听5044端口让filebeat输入,输出到es,并打印到控制台 cat > ~/log.conf <<EOF input { beats {port => "5044"} } filter { } output { elasticsearch { hosts => ["172.18.0.12:9200"] index => "filebeat-to-logstash-log" } stdout {codec => rubydebug} } EOF # 启动 /usr/local/logstash/bin/logstash -f ~/log.confFilebeat配置# 备份 cp /usr/local/filebeat/filebeat.yml /usr/local/filebeat/filebeat.yml.bak # 编辑配置 vi /usr/local/filebeat/filebeat.yml关闭输出到ES的配置# ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch: # 关闭了elasticsearch的输出 enabled: false # Array of hosts to connect to. hosts: ["172.18.0.12:9200"] # Protocol - either `http` (default) or `https`. #protocol: "https" # Authentication credentials - either API key or username/password. #api_key: "id:api_key" #username: "elastic" #password: "changeme"打开输出到Logstash的配置# ------------------------------ Logstash Output ------------------------------- output.logstash: # 打开logstash的输出 enabled: true # The Logstash hosts hosts: ["172.18.0.10:5044"]输入配置# ============================== Filebeat inputs =============================== filebeat.inputs: - type: log # 此处一定要改成true,否则不生效 enabled: true # 路径可以写多个 paths: - /var/log/*.log保存退出并且以配置文件启动/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml -e测试# 创建文件 touch /var/log/my.log # 循环写入到测试文件 while true;do echo 'test_filebeat_to_logstash_my_log' >> /var/log/my.log;sleep 1;done 打开Kibana观察,可以看到已经收集到日志了在Beat的基础上引入消息队列机制的架构这种架构适合于日志规模比较庞大的情况。但由于 Logstash 日志解析节点和 Elasticsearch 的负荷比较重,可将他们配置为集群模式,以分担负荷。引入消息队列,均衡了网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性,但依然存在 Logstash 占用系统资源过多的问题。架构图如下这里使用Kafka而不是用Redis的原因如下:Redis是内存型,而Kafka是硬盘型,日志毕竟是很大的数据,所以作为缓冲,放到Kafka里更合适;kafka中已经被处理的日志也是会继续保存的,直到超过自己设定的过期时间,而redis不是;kafka生态比较好,可以方便的和流处理工具集成综上:redis适合日质量比较小的系统,而kafka适用于比较大的日志。因为都需要保证高可用,推荐搭建Kafka集群。搭建搭建之前需要先熟悉最简单架构搭建(Logstash作为日志收集器)和轻量级日志收集架构搭建(Beats作为日志收集器),是在其基础之上进行搭建的,各个组件IP如下172.18.0.10 > Logstash 172.18.0.12 > ElasticSearch172.18.0.13 > Kibana172.18.0.20 > Filebeat172.18.0.21 > Kafka安装kafka首先创建一个容器docker run -dit --net mynet --ip 172.18.0.21 --name kafka --privileged centos /usr/sbin/init安装java环境,参考最简单架构搭建(Logstash作为日志收集器)中的安装Java环境下载源码,可参考官网:APACHE KAFKA QUICKSTART,安装# 安装 cd ~ wget https://mirror.bit.edu.cn/apache/kafka/2.7.0/kafka_2.12-2.7.0.tgz tar xf kafka_2.12-2.7.0.tgz -C /usr/local mv /usr/local/kafka_2.12-2.7.0 /usr/local/kafka启动,两个ssh,一个跑zookeeper,一个跑kafka# 启动 cd /usr/local/kafka # kafka依赖zookeeper,所以先启动zookeeper,官网有下面一段话,意思是说说很快就不会依赖zookeeper了 # Note: Soon, ZooKeeper will no longer be required by Apache Kafka. bin/zookeeper-server-start.sh config/zookeeper.properties # 新开一个ssh,启动kafka bin/kafka-server-start.sh config/server.properties测试,新开两个ssh,创建主题,一个跑生产者,一个跑消费者,在生产者键入任意消息在消费者能看得到说明成功!cd /usr/local/kafka # 创建主题quickstart-events bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092 # 第一个ssh启动生产者 cd /usr/local/kafka && bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092 # 第二个ssh启动消费者 cd /usr/local/kafka && bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092Kafka另外一些常用命令# 查看topic列表 bin/kafka-topics.sh --zookeeper localhost:2181 --list # 删除某个topic bin/kafka-topics.sh --zookeeper localhost:2181 --delete -topic spring-kafka-demo # 查看有哪些消费组 bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list # 老版本是指定zk的地址,类似这样: bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --list # 查看某个消费组的详情 bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9092 --group test-consumer-group --describeFilebeat配置# 备份 cp /usr/local/filebeat/filebeat.yml /usr/local/filebeat/filebeat.yml.bak # 编辑配置 vi /usr/local/filebeat/filebeat.yml增加Filebeat输出到Kafka的配置,更多参考官网说明配置Filebeat# ============================== Filebeat inputs =============================== # 输入还是和之前一样 filebeat.inputs: - type: log # 此处一定要改成true,否则不生效 enabled: true # 路径可以写多个 paths: - /var/log/*.log # ============================== Filebeat inputs =============================== # 增加输出到kafka output.kafka: enabled: true hosts: ["172.18.0.21:9092"] topic: filebeat_to_kafka启动Filebeat/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml -e测试在Filebeat容器上新开ssh产生测试数据while true;do echo 'test_filebeat_to_kafka' >> /var/log/my.log;sleep 1;done在Kafka容器里面新开ssh消费上面配置的主题filebeat_to_kafkacd /usr/local/kafka && bin/kafka-console-consumer.sh --topic filebeat_to_kafka --from-beginning --bootstrap-server localhost:9092如果能看到输出,说明Filebeat > Kafka的部分配置成功!需要注意是测试成功后一定要Ctrl+c停止消费,否则这里消费了下面的配置的Logstash就消费不了。Logstash配置需要注意消费的Topic的设置要和上面的Filebeat一致,ES索引也需要新建一个,下面为filebeat-to-kafka-to-logstash-to-es-my-log如果kafka是集群,有多个ip可以这样写 bootstrap_servers => ["172.**.**.92:9092,172.16.**.**:9092"],此处测试只是单机,所以写了一个# 生成配置文件,从kafka输入 cat > ~/log.conf <<EOF input { kafka { bootstrap_servers => ["172.18.0.21:9092"] # logstash集群消费kafka集群的身份标识,必须集群相同且唯一 group_id => "LogstashGroup" # 消费的主题,对应上面Filebeat设置的主题filebeat_to_kafka topics => ["filebeat_to_kafka"] codec => json } } filter { } output { elasticsearch { hosts => ["172.18.0.12:9200"] index => "filebeat-to-kafka-to-logstash-to-es-my-log" } stdout {codec => rubydebug} } EOF # 启动 /usr/local/logstash/bin/logstash -f ~/log.conf观察Logstash控制台,看有没有消息输出,有输出说明成功!如果没有,检查下上一步中测试消费的命令是否关闭,一定要关闭了才能让Logstash去消费最后打开Kibana,日志记录详情如下资源占用最后看一下各个组件工作时资源占用,发现Logstash确实占用较多资源,其次是ElasticSearch,FIlebeat占用资源最少CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS d5dfb4523572 kafka 0.85% 172.2MiB / 1.777GiB 9.47% 2.56MB / 1.35MB 8.77GB / 35MB 110 a6a394fdf848 fb 0.23% 41.04MiB / 1.777GiB 2.26% 422kB / 1.99MB 10.6GB / 3.35MB 17 b4e435665993 kb 1.03% 173.1MiB / 1.777GiB 9.51% 10.9MB / 14.6MB 7.56GB / 16.4kB 18 a622d8352de5 es 0.86% 417.9MiB / 1.777GiB 22.97% 12.5MB / 11.1MB 11.1GB / 169MB 77 1964ebd516a7 log1 6.28% 433.1MiB / 1.777GiB 23.80% 1.47MB / 1.48MB 6.88GB / 174kB 41参考ELK 架构和 Filebeat 工作原理详解集中式日志系统 ELK 协议栈详解安装| Logstash 最佳实践说说 ELK 火热的原因?Elasticsearch Top5典型应用场景ELK教程ELK想说爱你不容易ELK 架构之 Logstash 和 Filebeat 安装配置elastic 現代化的 ELK/EFK Log 架構大補帖ELK-配置使用 Filebeat整理了Kafka的一些常用工具,建议收藏备用!
2024年09月03日
32 阅读
0 评论
0 点赞
2024-09-03
工欲善其事必先利其器,IDEA必装插件
工欲善其事必先利其器,IDEA必装插件!代码缩略图 CodeGlance推荐指数:★★★★★用过sublime Text的都知道它第一印象就是编辑器最右边有一个缩略图,可以很好的对代码进行导航setter生成器 GenerateAllSetter推荐指数:★★★★★遇到这种情况你会怎么办Person p = new Person(); //假设Person的属性很多...小白一个一个敲,老白可能会用正则表达式批量生成setter,老司机一般都是安装GenerateAllSetter,然后在alt+enter直接调出来所有setter,还带有默认值,如下图所示彩虹括号 Rainbow Brackets推荐指数:★★★★彩虹括号,一图胜千言,在层级很深的时候很管用Mybatis SQL查看 Mybatis-log-plugin推荐指数:★★★★★看名字就能猜个七七八八,它最核心的作用就是将下面这种==> Preparing: INSERT INTO user ( id, name, age, email, u_sex, createtime ) VALUES ( ?, ?, ?, ?, ?, ? ) ==> Parameters: 0(Long), demoData(String), 0(Integer), demoData(String), demoData(String), 2020-12-22 20:34:26(String)转换成下面这种INSERT INTO user ( id, name, age, email, u_sex, createtime ) VALUES ( 0, 'demoData', 0, 'demoData', 'demoData', '2020-12-22 20:34:26' ) 聪明人一眼就能看懂可惜IDEA2020需要收费了,但是有 开心版可用,在IDEA插件界面,右上角小齿轮,install from disk,懂我的意思吧热部署 JRebel推荐指数:★★★★★这个插件的神奇之处在于不用重启项目就能热部署,虽然spring boot自带热部署插件,但是仍然需要重启项目,JRebel直接重新加载修改过的类,无论是你新增加了方法还是新增加了类。当然插件是收费的,下面来看一下如何使(po)用(jie)安装,到插件安装处搜索JRebel,全名为Jrebel And Xrebel for IntelliJ生成GUID https://www.guidgen.com/用https://jrebel.qekang.com/ 拼接上刚才生成的GUID,如 https://jrebel.qekang.com/5d01a8cc-9f04-497c-91de,如下图所示安装完成后一定要点一下WORK OFFLINE使用的时候注意勾上下图中的两个框,然后点击上面的用Rebel启动项目如果不想给钱又想用正版呢?送一个白嫖的方法,:Google一下myJrebel,按照流程走,申请一个Facebook account 然后关注他们,就会送你一个免费的社区license,亲测好用,前提是有梯子。简单接口调用工具 RestfulTool推荐指数:★★★★★需要临时测试一下接口怎么办?用postman然后挨个复制请求参数?No,你可以有更简便的办法,RestfulTool会自动扫描项目中所有的接口,然后自动生成接口的请求参数,点击右边发送按钮即可测试接口这个插件暂时不能保存参数,想要保存参数之类的建议用postman依赖分析 Maven Helper推荐指数:★★★★★Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的项目中,使用了两个Jar包,分别是A和B。现在A需要依赖另一个Jar包C,B也需要依赖C。但是A依赖的C的版本是1.0,B依赖的C的版本是2.0。这时候,Maven会将这1.0的C和2.0的C都下载到你的项目中,这样你的项目中就存在了不同版本的C,这时Maven会依据依赖路径最短优先原则,来决定使用哪个版本的Jar包,而另一个无用的Jar包则未被使用,这就是所谓的依赖冲突。幸运的是什么呢?在大多数时候,依赖冲突可能并不会对系统造成什么异常,因为Maven始终选择了一个Jar包来使用。但是不幸的却是,不排除在某些特定条件下,会出现类似找不到类的异常,所以,只要存在依赖冲突,在我看来,最好还是解决掉,不要给系统留下隐患。而要介绍的这个Maven Helper 插件就可以解决这个问题。怎么用呢?安装之后打开pom.xml文件,底部有个Dependency Analyzer选项,点击按键提示 Key Promoter X推荐指数:★★★★这是一个快捷键提示的插件,当你点击界面上任意图标时,就会在右下角提示你可用快捷键代替,如图它有一个统计功能,可以清楚的知道你最常用的功能是啥JSON转换对象 GsonFormatPlus推荐指数:★★★个插件在IDEA2020上叫GsonFormatPlus,以前叫GsonFormat,顾名思义,将json字符串生成Java对象,这种需求其实有很多在线工具站也可以生成,看需求安装Java字节码查看 jclasslib bytecode viewer推荐指数:★★★★当你学习到JVM的时候,可能需要用到字节码查看器,虽然java自带了字节码查看工具javap,但是总感觉不是很方便github地址详细介绍:IDEA字节码学习查看神器jclasslib bytecode viewer介绍主题美化 Material Theme UI推荐指数:★★★★这是一个美化插件,大致效果如下,个人比较喜欢,按需安装吧部分主题效果可选主题如下更多信息参考插件官网:https://plugins.jetbrains.com/plugin/8006-material-theme-ui番外篇IDEA 装好的常用设置,更符合自己的习惯,提高效率键盘映射我习惯用Eclipse的键盘映射,所以设置成Eclipse,FIle > Settings > Keymap选择Eclipse即可DEBUG我习惯按键和Chrome控制台一致,F10是Step Over,F11是Step Into,如下图设置字体更改我喜欢Consolas,FIle > Settings > Editor > Font,将字体选择为Consolas开启滚轮缩放字体FIle > Settings > Editor > General,勾选上Change font size with Ctrl+Mouse Wheelpojie这里推荐一种pojie思路:无限试用插件:IDE Eval Reset,避免失效地址
2024年09月03日
25 阅读
0 评论
0 点赞
2024-09-02
Java_Oracle数据库连接池频繁出现ORA-02399错误
ORA-02399具体错误信息为ORA-02399: exceede maximum connect time, you are being logged off大概含义为:超过了最大连接时间,你被强行登出出现原因首先看一下Oracle CONNECT_TIME参数是多少SELECT * FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME IN ('IDLE_TIME','CONNECT_TIME');本案列中的设置值PROFILE|RESOURCE_NAME |RESOURCE_TYPE|LIMIT | -------|-------------------------|-------------|-------------------| DEFAULT|IDLE_TIME |KERNEL |14 | DEFAULT|CONNECT_TIME |KERNEL |10 |CONNECT_TIME: Parameter will disconnect a session whose connect time exceed the value for connect_time.The connect_time is expressed in minutes.CONNECT_TIME: 会断开超过CONNECT_TIME时间的会话,单位是分钟,默认应该是UNLIMITEDIDLE_TIME: Permitted periods of continuous inactive time during a session(minutes).IDLE_TIME: 在会话期间允许的连续不活动时间,单位也是分钟,默认是10分钟所以原因很简单,CONNECT_TIME默认为无限制被设置成为10分钟,所以每隔十分钟数据库连接就会被强行登出(不管你有没有在执行SQL),所以导致连接不可用就会报错ORA-02399解决改数据库参数将两个值改成无限或者长一点ALTER PROFILE DEFAULT LIMIT IDLE_TIME UNLIMITED; ALTER PROFILE DEFAULT LIMIT CONNECT_TIME UNLIMITED;改连接池参数Hikari连接池max-lifetime用来设置一个connection在连接池中的存活时间,默认是1800000,即30分钟。如果设置为0,表示存活时间无限大。如果不等于0且小于30秒则会被重置回30分钟。# 单位毫秒 max-lifetime: 300000普通数据库连接池设置maxAge参数(比如org.apache.tomcat.jdbc.pool.DataSource)<property name="maxAge" value="300000"/>看下参数的含义/** * Time in milliseconds to keep this connection alive even when used. * When a connection is returned to the pool, the pool will check to see if the * ((now - time-when-connected) > maxAge) has been reached, and if so, * it closes the connection rather than returning it to the pool. * The default value is 0, which implies that connections will be left open and no * age check will be done upon returning the connection to the pool. * This is a useful setting for database sessions that leak memory as it ensures that the session * will have a finite life span. * @param maxAge the time in milliseconds a connection will be open for when used */ public void setMaxAge(long maxAge);参考https://smarttechways.com/2018/12/05/connect_time-and-idle_time-in-oracle-profile/
2024年09月02日
11 阅读
0 评论
0 点赞
1
...
140
141
142
...
221