Beats,Logstash负责数据收集与处理。相当于ETL(Extract Transform Load)。
Elasticsearch负责数据存储、查询、分析。
Kibana负责数据探索与可视化分析。
1、Elasticsearch 6.x版本的安装,我这里使用Elasticsearch 6.7.0版本的。
备注:之前安装过5.4.3版本的,https://www.cnblogs.com/biehongli/p/11643482.html
2、将下载好的安装包上传到服务器上面,或者你在线下载也可以的哦。
注意:记得先安装好jdk1.8版本及其以上的哦。由于之前安装出现了错误,有了一点经验,这里先创建用户和所属组。
[root@slaver4 package]# groupadd elsearch
[root@slaver4 package]# useradd elsearch -g elsearch
[root@slaver4 package]# passwd elsearch
更改用户 elsearch 的密码 。
新的 密码:
无效的密码: 密码少于 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@slaver4 package]# tar -zxvf elasticsearch-6.7..tar.gz -C /home/hadoop/soft/
[root@slaver4 soft]# chown -R elsearch:elsearch elasticsearch-6.7./
[root@slaver4 soft]# ls
elasticsearch-6.7.
[root@slaver4 soft]# ll
总用量
drwxr-xr-x. elsearch elsearch 3月 elasticsearch-6.7.
[root@slaver4 soft]#
[root@slaver4 soft]# su elsearch
[elsearch@slaver4 soft]$ cd elasticsearch-6.7./
[elsearch@slaver4 elasticsearch-6.7.]$ ls
bin config lib LICENSE.txt logs modules NOTICE.txt plugins README.textile
[elsearch@slaver4 elasticsearch-6.7.]$ cd bin/
[elsearch@slaver4 bin]$ ls
elasticsearch elasticsearch-cli.bat elasticsearch-migrate elasticsearch-service-mgr.exe elasticsearch-sql-cli-6.7..jar elasticsearch-users.bat x-pack-watcher-env.bat
elasticsearch.bat elasticsearch-croneval elasticsearch-migrate.bat elasticsearch-service-x64.exe elasticsearch-sql-cli.bat x-pack
elasticsearch-certgen elasticsearch-croneval.bat elasticsearch-plugin elasticsearch-setup-passwords elasticsearch-syskeygen x-pack-env
elasticsearch-certgen.bat elasticsearch-env elasticsearch-plugin.bat elasticsearch-setup-passwords.bat elasticsearch-syskeygen.bat x-pack-env.bat
elasticsearch-certutil elasticsearch-env.bat elasticsearch-saml-metadata elasticsearch-shard elasticsearch-translog x-pack-security-env
elasticsearch-certutil.bat elasticsearch-keystore elasticsearch-saml-metadata.bat elasticsearch-shard.bat elasticsearch-translog.bat x-pack-security-env.bat
elasticsearch-cli elasticsearch-keystore.bat elasticsearch-service.bat elasticsearch-sql-cli elasticsearch-users x-pack-watcher-env
[elsearch@slaver4 bin]$ ./elasticsearch
这次居然很顺利,但是在浏览器使用http://192.168.110.133:9200/访问是不行的,这里修改一下配置文件,使用浏览器也可以进行访问。
[elsearch@slaver4 bin]$ ./elasticsearch
OpenJDK -Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
[--25T15::,][INFO ][o.e.e.NodeEnvironment ] [99_nTdv] using [] data paths, mounts [[/ (rootfs)]], net usable_space [.5gb], net total_space [.7gb], types [rootfs]
[--25T15::,][INFO ][o.e.e.NodeEnvironment ] [99_nTdv] heap size [.6mb], compressed ordinary object pointers [true]
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] node name derived from node ID [99_nTdvNRUS0U0dJBpu7kA]; set [node.name] to override
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] version[6.7.], pid[], build[default/tar/8453f77/--21T15::.844721Z], OS[Linux/3.10.-.el7.x86_64/amd64], JVM[Oracle Corporation/OpenJDK -Bit Server VM/1.8.0_181/25.181-b13]
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=, -XX:+UseCMSInitiatingOccupancyOnly, -Des.networkaddress.cache.ttl=, -Des.networkaddress.cache.negative.ttl=, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch-, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=, -XX:GCLogFileSize=64m, -Des.path.home=/home/hadoop/soft/elasticsearch-6.7., -Des.path.conf=/home/hadoop/soft/elasticsearch-6.7./config, -Des.distribution.flavor=default, -Des.distribution.type=tar]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [aggs-matrix-stats]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [analysis-common]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [ingest-common]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [ingest-geoip]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [ingest-user-agent]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [lang-expression]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [lang-mustache]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [lang-painless]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [mapper-extras]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [parent-join]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [percolator]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [rank-eval]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [reindex]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [repository-url]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [transport-netty4]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [tribe]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-ccr]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-core]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-deprecation]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-graph]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-ilm]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-logstash]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-ml]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-monitoring]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-rollup]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-security]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-sql]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-upgrade]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-watcher]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] no plugins loaded
[--25T15::,][INFO ][o.e.x.s.a.s.FileRolesStore] [99_nTdv] parsed [] roles from file [/home/hadoop/soft/elasticsearch-6.7./config/roles.yml]
[--25T15::,][INFO ][o.e.x.m.p.l.CppLogMessageHandler] [99_nTdv] [controller/] [Main.cc@] controller ( bit): Version 6.7. (Build d74ae2ac01b10d) Copyright (c) Elasticsearch BV
[--25T15::,][DEBUG][o.e.a.ActionModule ] [99_nTdv] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security
[--25T15::,][INFO ][o.e.d.DiscoveryModule ] [99_nTdv] using discovery type [zen] and host providers [settings]
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] initialized
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] starting ...
[--25T15::,][INFO ][o.e.t.TransportService ] [99_nTdv] publish_address {127.0.0.1:}, bound_addresses {[::]:}, {127.0.0.1:}
[--25T15::,][WARN ][o.e.b.BootstrapChecks ] [99_nTdv] max file descriptors [] for elasticsearch process is too low, increase to at least []
[--25T15::,][WARN ][o.e.b.BootstrapChecks ] [99_nTdv] max number of threads [] for user [elsearch] is too low, increase to at least []
[--25T15::,][WARN ][o.e.b.BootstrapChecks ] [99_nTdv] max virtual memory areas vm.max_map_count [] is too low, increase to at least []
[--25T15::,][INFO ][o.e.c.s.MasterService ] [99_nTdv] zen-disco-elected-as-master ([] nodes joined), reason: new_master {99_nTdv}{99_nTdvNRUS0U0dJBpu7kA}{MMkMOY4eSzmE1qOyNEXang}{127.0.0.1}{127.0.0.1:}{ml.machine_memory=, xpack.installed=true, ml.max_open_jobs=, ml.enabled=true}
[--25T15::,][INFO ][o.e.c.s.ClusterApplierService] [99_nTdv] new_master {99_nTdv}{99_nTdvNRUS0U0dJBpu7kA}{MMkMOY4eSzmE1qOyNEXang}{127.0.0.1}{127.0.0.1:}{ml.machine_memory=, xpack.installed=true, ml.max_open_jobs=, ml.enabled=true}, reason: apply cluster state (from master [master {99_nTdv}{99_nTdvNRUS0U0dJBpu7kA}{MMkMOY4eSzmE1qOyNEXang}{127.0.0.1}{127.0.0.1:}{ml.machine_memory=, xpack.installed=true, ml.max_open_jobs=, ml.enabled=true} committed version [] source [zen-disco-elected-as-master ([] nodes joined)]])
[--25T15::,][INFO ][o.e.h.n.Netty4HttpServerTransport] [99_nTdv] publish_address {127.0.0.1:}, bound_addresses {[::]:}, {127.0.0.1:}
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] started
[--25T15::,][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [99_nTdv] Failed to clear cache for realms [[]]
[--25T15::,][INFO ][o.e.g.GatewayService ] [99_nTdv] recovered [] indices into cluster_state
[--25T15::,][INFO ][o.e.c.m.MetaDataIndexTemplateService] [99_nTdv] adding template [.triggered_watches] for index patterns [.triggered_watches*]
[--25T15::,][INFO ][o.e.c.m.MetaDataIndexTemplateService] [99_nTdv] adding template [.watch-history-] for index patterns [.watcher-history-*]
[--25T15::,][INFO ][o.e.c.m.MetaDataIndexTemplateService] [99_nTdv] adding template [.watches] for index patterns [.watches*]
[--25T15::,][INFO ][o.e.c.m.MetaDataIndexTemplateService] [99_nTdv] adding template [.monitoring-logstash] for index patterns [.monitoring-logstash--*]
[--25T15::,][INFO ][o.e.c.m.MetaDataIndexTemplateService] [99_nTdv] adding template [.monitoring-es] for index patterns [.monitoring-es--*]
[--25T15::,][INFO ][o.e.c.m.MetaDataIndexTemplateService] [99_nTdv] adding template [.monitoring-beats] for index patterns [.monitoring-beats--*]
[--25T15::,][INFO ][o.e.c.m.MetaDataIndexTemplateService] [99_nTdv] adding template [.monitoring-alerts] for index patterns [.monitoring-alerts-]
[--25T15::,][INFO ][o.e.c.m.MetaDataIndexTemplateService] [99_nTdv] adding template [.monitoring-kibana] for index patterns [.monitoring-kibana--*]
[--25T15::,][INFO ][o.e.l.LicenseService ] [99_nTdv] license [3bf82dcc-622e-4a1e-ab9e-a2eb1a194bde] mode [basic] - valid
使用命令curl http://127.0.0.1:9200/是正常的。
[elsearch@slaver4 soft]$ curl http://127.0.0.1:9200/
{
"name" : "99_nTdv",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "6bArPJypRwGiWMARLwW0kg",
"version" : {
"number" : "6.7.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "8453f77",
"build_date" : "2019-03-21T15:32:29.844721Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
在配置文件elasticsearch.yml中添加如下所示配置:
network.host: 192.168.110.133
[elsearch@slaver4 soft]$ cd elasticsearch-6.7./
[elsearch@slaver4 elasticsearch-6.7.]$ ls
bin config data lib LICENSE.txt logs modules NOTICE.txt plugins README.textile
[elsearch@slaver4 elasticsearch-6.7.]$ cd config/
[elsearch@slaver4 config]$ ls
elasticsearch.keystore elasticsearch.yml jvm.options log4j2.properties role_mapping.yml roles.yml users users_roles
[elsearch@slaver4 config]$ vim elasticsearch.yml
好吧,这个配置文件一修改就报错了,错误和第一次基本一致,这里也贴一下吧。
[elsearch@slaver4 bin]$ ./elasticsearch
OpenJDK -Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
[--25T15::,][INFO ][o.e.e.NodeEnvironment ] [99_nTdv] using [] data paths, mounts [[/ (rootfs)]], net usable_space [.5gb], net total_space [.7gb], types [rootfs]
[--25T15::,][INFO ][o.e.e.NodeEnvironment ] [99_nTdv] heap size [.6mb], compressed ordinary object pointers [true]
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] node name derived from node ID [99_nTdvNRUS0U0dJBpu7kA]; set [node.name] to override
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] version[6.7.], pid[], build[default/tar/8453f77/--21T15::.844721Z], OS[Linux/3.10.-.el7.x86_64/amd64], JVM[Oracle Corporation/OpenJDK -Bit Server VM/1.8.0_181/25.181-b13]
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=, -XX:+UseCMSInitiatingOccupancyOnly, -Des.networkaddress.cache.ttl=, -Des.networkaddress.cache.negative.ttl=, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch-, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=, -XX:GCLogFileSize=64m, -Des.path.home=/home/hadoop/soft/elasticsearch-6.7., -Des.path.conf=/home/hadoop/soft/elasticsearch-6.7./config, -Des.distribution.flavor=default, -Des.distribution.type=tar]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [aggs-matrix-stats]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [analysis-common]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [ingest-common]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [ingest-geoip]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [ingest-user-agent]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [lang-expression]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [lang-mustache]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [lang-painless]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [mapper-extras]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [parent-join]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [percolator]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [rank-eval]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [reindex]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [repository-url]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [transport-netty4]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [tribe]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-ccr]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-core]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-deprecation]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-graph]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-ilm]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-logstash]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-ml]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-monitoring]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-rollup]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-security]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-sql]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-upgrade]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] loaded module [x-pack-watcher]
[--25T15::,][INFO ][o.e.p.PluginsService ] [99_nTdv] no plugins loaded
[--25T15::,][INFO ][o.e.x.s.a.s.FileRolesStore] [99_nTdv] parsed [] roles from file [/home/hadoop/soft/elasticsearch-6.7./config/roles.yml]
[--25T15::,][INFO ][o.e.x.m.p.l.CppLogMessageHandler] [99_nTdv] [controller/] [Main.cc@] controller ( bit): Version 6.7. (Build d74ae2ac01b10d) Copyright (c) Elasticsearch BV
[--25T15::,][DEBUG][o.e.a.ActionModule ] [99_nTdv] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security
[--25T15::,][INFO ][o.e.d.DiscoveryModule ] [99_nTdv] using discovery type [zen] and host providers [settings]
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] initialized
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] starting ...
[--25T15::,][INFO ][o.e.t.TransportService ] [99_nTdv] publish_address {192.168.110.133:}, bound_addresses {192.168.110.133:}
[--25T15::,][INFO ][o.e.b.BootstrapChecks ] [99_nTdv] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [] bootstrap checks failed
[]: max file descriptors [] for elasticsearch process is too low, increase to at least []
[]: max number of threads [] for user [elsearch] is too low, increase to at least []
[]: max virtual memory areas vm.max_map_count [] is too low, increase to at least []
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] stopping ...
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] stopped
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] closing ...
[--25T15::,][INFO ][o.e.n.Node ] [99_nTdv] closed
[--25T15::,][INFO ][o.e.x.m.p.NativeController] [99_nTdv] Native controller process has stopped - no new native processes can be started
[elsearch@slaver4 bin]$
错误一、[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535],解决方法如下所示:
错误原因,每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量。
注意,切记,如果按照此方法修改,必须重启你的虚拟机,而且是root用户修改的配置文件,不然你解决完报的这两个错误,再次启动elasticsearch还是会报错误一,但是不会报错误二,所以重启虚拟机以后解决这两个错误。
1 [root@slaver4 ~]# vim /etc/security/limits.conf
添加如下所示内容:
注意:解释如是,*是代表任何用户,此配置的意思是任何用户都可以打开文件的数量。
1 * soft nofile 65536
2 * hard nofile
操作如下所示:
错误二、[2]: max number of threads [3756] for user [elsearch] is too low, increase to at least [4096]
错误原因,最大线程个数太低。修改配置文件/etc/security/limits.conf(和问题1是一个文件),增加配置。
* soft nproc
* hard nproc
错误三、[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
错误原因,应该是虚拟内存不足导致的错误。修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144。执行命令sysctl -p生效。
1 [root@slaver4 ~]# vim /etc/sysctl.conf
2 [root@slaver4 ~]# sysctl -p
3 vm.max_map_count = 262144
4 [root@slaver4 ~]#
添加内容如下所示:
1 vm.max_map_count=
操作如下所示:
解决完上述两个错误以后,最好停机虚拟机,再次启动即可,使用浏览器访问也出现了正常,如下所示:
使用curl 192.168.110.133:9200可以看到访问成功了。也说明你的ElasticSearch启动成功了。
3、elasticsearch.yml的关键配置说明。
cluster.name是集群的名称,以此作为是否同一集群的判断条件。
node.name节点名称,以此作为集群中不同节点的区分条件。
network.host/http.port是网络地址和端口,用于http和tranport服务使用。
path.data是数据存储地址。
path.log是日志存储地址。 elasticsearch两种模式,一种是开发者模式,一种是生产模式。
Development与Production模式说明。
以transport的地址是否绑定在localhost为判断标准network.host。如果不是localhost或者127.0.0.1都认为是生产模式。
Development模式下在启动时候会以warning的方式提示配置检查异常。
Production模式下在启动时候会以error的方式提示配置检查异常并退出。 参数修改的第二种方式:bin/elasticsearch -Ehttp.port=19200
4、Elasticsearch集群的搭建:https://www.cnblogs.com/biehongli/p/11650045.html
elasticsearch本地快速启动集群的方式,自行练习即可:
bin/elasticsearch
bin/elasticsearch -Ehttp.port= -Epath.data=node2
bin/elasticsearch -Ehttp.port= -Epath.data=node3 http://192.168.110.133:9200/_cat/nodes可以查看集群是否组成集群。
http://192.168.110.133:9200/_cluster/stats可以查看集群的状态。
5、Kibane的安装与运行。
Kibane的安装下载,解压缩操作如下所示:
[root@slaver4 package]# ls
elasticsearch-6.7..tar.gz
[root@slaver4 package]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.7.0-linux-x86_64.tar.gz
---- ::-- https://artifacts.elastic.co/downloads/kibana/kibana-6.7.0-linux-x86_64.tar.gz
正在解析主机 artifacts.elastic.co (artifacts.elastic.co)... 151.101.110.222, 2a04:4e42:1a::
正在连接 artifacts.elastic.co (artifacts.elastic.co)|151.101.110.222|:... 已连接。
已发出 HTTP 请求,正在等待回应... OK
长度: (178M) [application/x-gzip]
正在保存至: “kibana-6.7.-linux-x86_64.tar.gz” %[======================================================================================================================================================================================>] ,, .31MB/s 用时 40s -- :: (4.41 MB/s) - 已保存 “kibana-6.7.-linux-x86_64.tar.gz” [/]) [root@slaver4 package]# ls
elasticsearch-6.7..tar.gz kibana-6.7.-linux-x86_64.tar.gz
[root@slaver4 package]# tar -zxvf kibana-6.7.-linux-x86_64.tar.gz -C /home/hadoop/soft/
解压缩完毕,修改配置文件,我将kibana的目录赋给自己创建的用户及其用户组,如下所示:
server.port: 5601 # 默认是5601,不改也可以。
server.host: "192.168.110.133" # 修改此参数,可以在浏览器访问的。
elasticsearch.hosts: ["http://192.168.110.133:9200"]
修改完毕,可以启动kibana,更多参数修改你可以自己尝试。当出现Server running at http://localhost:5601就已经启动成功了。
[elsearch@slaver4 kibana-6.7.-linux-x86_64]$ bin/kibana
log [::34.724] [info][status][plugin:kibana@6.7.] Status changed from uninitialized to green - Ready
log [::34.921] [info][status][plugin:elasticsearch@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::34.928] [info][status][plugin:xpack_main@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::34.958] [info][status][plugin:graph@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::34.976] [info][status][plugin:monitoring@6.7.] Status changed from uninitialized to green - Ready
log [::34.984] [info][status][plugin:spaces@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::34.997] [warning][security] Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml
log [::35.008] [warning][security] Session cookies will be transmitted over insecure connections. This is not recommended.
log [::35.037] [info][status][plugin:security@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.067] [info][status][plugin:searchprofiler@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.073] [info][status][plugin:ml@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.164] [info][status][plugin:tilemap@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.167] [info][status][plugin:watcher@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.190] [info][status][plugin:grokdebugger@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.196] [info][status][plugin:dashboard_mode@6.7.] Status changed from uninitialized to green - Ready
log [::35.198] [info][status][plugin:logstash@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.210] [info][status][plugin:beats_management@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.269] [info][status][plugin:apm@6.7.] Status changed from uninitialized to green - Ready
log [::35.272] [info][status][plugin:tile_map@6.7.] Status changed from uninitialized to green - Ready
log [::35.276] [info][status][plugin:task_manager@6.7.] Status changed from uninitialized to green - Ready
log [::35.279] [info][status][plugin:maps@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.287] [info][status][plugin:interpreter@6.7.] Status changed from uninitialized to green - Ready
log [::35.309] [info][status][plugin:canvas@6.7.] Status changed from uninitialized to green - Ready
log [::35.326] [info][status][plugin:license_management@6.7.] Status changed from uninitialized to green - Ready
log [::35.334] [info][status][plugin:cloud@6.7.] Status changed from uninitialized to green - Ready
log [::35.344] [info][status][plugin:index_management@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.383] [info][status][plugin:console@6.7.] Status changed from uninitialized to green - Ready
log [::35.386] [info][status][plugin:console_extensions@6.7.] Status changed from uninitialized to green - Ready
log [::35.404] [info][status][plugin:notifications@6.7.] Status changed from uninitialized to green - Ready
log [::35.408] [info][status][plugin:index_lifecycle_management@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.745] [info][status][plugin:infra@6.7.] Status changed from uninitialized to green - Ready
log [::35.778] [info][status][plugin:rollup@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.853] [info][status][plugin:remote_clusters@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.883] [info][status][plugin:cross_cluster_replication@6.7.] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [::35.936] [info][status][plugin:translations@6.7.] Status changed from uninitialized to green - Ready
log [::35.991] [info][status][plugin:upgrade_assistant@6.7.] Status changed from uninitialized to green - Ready
log [::36.026] [info][status][plugin:uptime@6.7.] Status changed from uninitialized to green - Ready
log [::36.039] [info][status][plugin:oss_telemetry@6.7.] Status changed from uninitialized to green - Ready
log [::36.103] [info][status][plugin:metrics@6.7.] Status changed from uninitialized to green - Ready
log [::36.849] [info][status][plugin:timelion@6.7.] Status changed from uninitialized to green - Ready
log [::37.858] [info][status][plugin:elasticsearch@6.7.] Status changed from yellow to green - Ready
log [::38.051] [info][license][xpack] Imported license information from Elasticsearch for the [data] cluster: mode: basic | status: active
log [::38.057] [info][status][plugin:xpack_main@6.7.] Status changed from yellow to green - Ready
log [::38.058] [info][status][plugin:graph@6.7.] Status changed from yellow to green - Ready
log [::38.072] [info][status][plugin:searchprofiler@6.7.] Status changed from yellow to green - Ready
log [::38.073] [info][status][plugin:ml@6.7.] Status changed from yellow to green - Ready
log [::38.074] [info][status][plugin:tilemap@6.7.] Status changed from yellow to green - Ready
log [::38.074] [info][status][plugin:watcher@6.7.] Status changed from yellow to green - Ready
log [::38.074] [info][status][plugin:grokdebugger@6.7.] Status changed from yellow to green - Ready
log [::38.075] [info][status][plugin:logstash@6.7.] Status changed from yellow to green - Ready
log [::38.075] [info][status][plugin:beats_management@6.7.] Status changed from yellow to green - Ready
log [::38.075] [info][status][plugin:index_management@6.7.] Status changed from yellow to green - Ready
log [::38.076] [info][status][plugin:index_lifecycle_management@6.7.] Status changed from yellow to green - Ready
log [::38.076] [info][status][plugin:rollup@6.7.] Status changed from yellow to green - Ready
log [::38.077] [info][status][plugin:remote_clusters@6.7.] Status changed from yellow to green - Ready
log [::38.077] [info][status][plugin:cross_cluster_replication@6.7.] Status changed from yellow to green - Ready
log [::38.078] [info][kibana-monitoring][monitoring-ui] Starting monitoring stats collection
log [::38.139] [info][status][plugin:security@6.7.] Status changed from yellow to green - Ready
log [::38.140] [info][status][plugin:maps@6.7.] Status changed from yellow to green - Ready
log [::38.411] [info][license][xpack] Imported license information from Elasticsearch for the [monitoring] cluster: mode: basic | status: active
log [::40.064] [warning][browser-driver][reporting] Enabling the Chromium sandbox provides an additional layer of protection.
log [::40.067] [warning][reporting] Generating a random key for xpack.reporting.encryptionKey. To prevent pending reports from failing on restart, please set xpack.reporting.encryptionKey in kibana.yml
log [::40.220] [info][status][plugin:reporting@6.7.] Status changed from uninitialized to green - Ready
log [::44.022] [info][listening] Server running at http://192.168.110.133:5601
log [::44.413] [info][status][plugin:spaces@6.7.] Status changed from yellow to green - Ready
kibana访问界面如下所示:
Kibana配置说明,配置位于config文件夹中。kibana.yml关键配置说明。
server.host/server.port 访问kibana的地址和端口号。
elasticsearh.host(之前是elasticsearh.url)待访问elasticsearh的地址。
Kibana常用功能说明。
Discover数据搜索查看。Visualize图标制作。Dashboard仪表盘制作。Timelion时序数据的高级可视化分析。DevTools开发者工具。Management配置。
6、Elasticsearch与Kibana入门。Elasticsearch术语介绍与CRUD实际操作。
Elasticsearch常用术语。
Document文档数据。
Index索引。
Type索引中的数据类型。6.x版本以及以后版本慢慢废除此说法。
Field字段,文档的属性。
Query DESL查询语法。
Create创建文档。Read读取文档。Update更新文档。Delete删除文档。
GET _search
{
"query": {
"match_all": {}
}
} # 插入
PUT /account/person/
{
"name": "zhangsan",
"age":
} PUT /account/person/
{
"name": "zhangsan",
"age":
} # 查询
GET /account/person/ # 修改
POST /account/person//_update
{
"doc":{
"name": "lisi",
"age":
}
} # 删除
DELETE /account/person/ DELETE /account GET /account/_mapping # Query String
GET /account/person/_search?q=zhangsan # Query DSL
GET /account/person/_search
{
"query":{
"match":{
"name": "lisi"
}
}
}
操作如下所示:
7、Beats入门学习。Lightweight Data Shipper,轻量级的数据传送者。
Filebeat日志文件。
处理流程:输入Input、处理Filter、输出Output。
Metricbeat度量数据。
主要用来搜集cpu数据,内存数据,磁盘数据,nginx,mysql。
Packetbeat网络数据。
Winlogbeat,Windows数据。
Auditbeat
Heartbeat建康检查。
Functionbeat
Filebeat的配置简介:
a、Filebeat Input配置简介,使用的是yaml语法。input_type目前有两个类型,分别是log日志文件、stdin标准输入。
案例如下所示:
filebeat.properties:
-input_type:log
paths:
-/var/log/apache/httpd-*.log
-input_type:log
paths:
-/var/log/messages
-/var/log/*.log b、Filebeat Output配置简介,支持的Output对象包含,Console标准输出、Elasticsearch、Logstash、Kafka、Redis、File。
案例如下所示:
output.elasticsearch:
hosts:["http://localhost:9200"] # elasticsearch的连接地址
username:"admin" # 用户权限认证,需要配置账号密码
password:"123456" output.console: # 输出到控制台,方便调试。
pretty:true # 输出做json的格式化。 c、Filebeat Filter配置简介。
Input 时处理
Include_lines : 达到某些条件的时候,读入这一行。
exclude_lines :达到某些条件的时候,不读入这一行。
exclude_files:当文件名符合某些条件的时候,不读取这个文件。 output 前处理 --Processor
drop_event :读取到某一条,满足了某个条件,不输出。
drop_fields :读取到某一条,满足了某个条件,不输出这个字段。
Decode_json_fields :把这条数据里面符合json格式的字段,去做json的解析。
Include_fields :加入一些字段,或者是只想取数据里面的某一些字段。 案例如下所示:
processors:
-drop_event:
when:
regexp: # 正则表达式,当匹配到message字段以DBG开头的进行丢弃。
message:"^DBG:" processors:
-decode_json_fields: # 将结果处理成正常的json格式的。
fields:["inner"] d、Filebeat高级使用简介:
Filebeat + Elasticsearch Ingest Node组合使用。
原因:Filebeat 缺乏数据转换的能力。
Elasticsearch Ingest Node介绍如下所示:
新增的node类型。
在数据写入es前对数据进行处理转换。
使用的api是pipeline api。
8、Filebeat的下载,安装部署。Filebeat是go开发的,所以分操作系统的。根据自己需求下载哦。
你可以下载好,上传到服务器,我是使用wget命令直接下载了。
[root@slaver4 package]# ls
elasticsearch-6.7..tar.gz kibana-6.7.-linux-x86_64.tar.gz
[root@slaver4 package]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.0-linux-x86_64.tar.gz
---- ::-- https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.0-linux-x86_64.tar.gz
正在解析主机 artifacts.elastic.co (artifacts.elastic.co)... 151.101.230.222, 2a04:4e42:::
正在连接 artifacts.elastic.co (artifacts.elastic.co)|151.101.230.222|:... 已连接。
已发出 HTTP 请求,正在等待回应... OK
长度: (11M) [application/x-gzip]
正在保存至: “filebeat-6.7.-linux-x86_64.tar.gz” %[======================================================================================================================================================================================>] ,, .97MB/s 用时 .8s -- :: (3.97 MB/s) - 已保存 “filebeat-6.7.-linux-x86_64.tar.gz” [/]) [root@slaver4 package]# ls
elasticsearch-6.7..tar.gz filebeat-6.7.-linux-x86_64.tar.gz kibana-6.7.-linux-x86_64.tar.gz
[root@slaver4 package]# tar -zxvf filebeat-6.7.-linux-x86_64.tar.gz -C /home/hadoop/soft/
由于使用的是root进行解压缩操作的,将文件拥有者赋予给elsearch自己新建的用户和用户组。
filebeat-6.7.0-linux-x86_64的文件解释如下所示:
data存储的是filebeat解析过程中会去存日志读到的位置。
filebeat是可执行文件。
module是filebeat支持的模块的功能。
[root@slaver4 package]# cd ../soft/
[root@slaver4 soft]# ls
elasticsearch-6.7. filebeat-6.7.-linux-x86_64 kibana-6.7.-linux-x86_64
[root@slaver4 soft]# chown -R elsearch:elsearch filebeat-6.7.-linux-x86_64/
[root@slaver4 soft]# su elsearch
[elsearch@slaver4 soft]$ ls
elasticsearch-6.7. filebeat-6.7.-linux-x86_64 kibana-6.7.-linux-x86_64
[elsearch@slaver4 soft]$ ll
总用量
drwxr-xr-x. elsearch elsearch 10月 : elasticsearch-6.7.
drwxr-xr-x. elsearch elsearch 10月 : filebeat-6.7.-linux-x86_64
drwxr-xr-x. elsearch elsearch 10月 : kibana-6.7.-linux-x86_64
[elsearch@slaver4 soft]$
下面,通过一个简单案例,使用Filebeat收集nginx log日志,通过stdin收集日志。通过console输出结果。
首先修改一下filebeat的配置,修改配置如谢谢所示:
#=========================== Filebeat inputs ============================= filebeat.inputs: # Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations. - type: log # Change to true to enable this input configuration.
enabled: false # Paths that should be crawled and fetched. Glob based paths.
paths:
# - /var/log/*.log
- /home/hadoop/soft/elasticsearch-6.7.0/logs
#- c:\programdata\elasticsearch\logs\* #-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
hosts: ["192.168.110.133:9200"] # Enabled ilm (beta) to use index lifecycle management instead daily indices.
#ilm.enabled: false # Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
启动你的filebeat就可以看到日志信息。
[elsearch@slaver4 filebeat-6.7.0-linux-x86_64]$ ./filebeat -e -c filebeat.yml -d "publish"
9、Logstash入门,下载安装部署,如下所示。
简介data shipper (不是轻量级的,会比beats占用更多的资源,但是功能强大)。
ETL的概念:Extract 对数据进行提取、Transform 转换、Load 对外的输出。
Logstash 是一个开源的,服务端的数据处理流,可以同时从多个数据源提取数据、转换数据、最后把数据放到你要存储的地方。
10、Logstash处理流程,如下所示:
input:可以从file 、Redis 、beats、kafka等读取数据。
filter :gork(表达式,简单理解为基于正则的,可以将非格式化数据转化成格式化数据的语法)、mutate(可以对结构化的数据的字段进行增删改查)、drop、date。
output :可以向stdout 、elasticsearch 、Redis、kafka等中输出。
处理流程,Input和Output的配置,由于Logstash不是yaml语法。
input{file{path => "/tmp/abc.log"}}
output{stdout{codec => rubydebug}} 处理流程,Filter配置。
Grok,基于正则表达式提供了丰富可重用的模式(pattern)。基于此可以将非结构化数据做结构化处理。
Date,将字符串类型的时间字段转换为时间戳类型,方便后续数据处理。
Mutate,进行增加,修改,删除,替换等字段相关的处理。
11、Logstash的下载,安装,Logstash是Ruby开发的哦。如下所示:
Logstash也是基于JVM的应用,我这里直接下载tar包,方便操作,压缩包略大,百十兆哈。
[root@slaver4 package]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.7.0.tar.gz
---- ::-- https://artifacts.elastic.co/downloads/logstash/logstash-6.7.0.tar.gz
正在解析主机 artifacts.elastic.co (artifacts.elastic.co)... 151.101.110.222, 2a04:4e42:1a::
正在连接 artifacts.elastic.co (artifacts.elastic.co)|151.101.110.222|:... 已连接。
已发出 HTTP 请求,正在等待回应... OK
长度: (168M) [application/x-gzip]
正在保存至: “logstash-6.7..tar.gz” %[======================================================================================================================================================================================>] ,, .29MB/s 用时 4m 13s -- :: ( KB/s) - 已保存 “logstash-6.7..tar.gz” [/]) [root@slaver4 package]# ll
总用量
-rw-r--r--. elsearch elsearch 10月 : elasticsearch-6.7..tar.gz
-rw-r--r--. root root 3月 filebeat-6.7.-linux-x86_64.tar.gz
-rw-r--r--. root root 3月 kibana-6.7.-linux-x86_64.tar.gz
-rw-r--r--. root root 3月 logstash-6.7..tar.gz
drwxr-xr-x. elsearch elsearch 10月 : materials
[root@slaver4 package]# tar -zxvf logstash-6.7..tar.gz -C /home/hadoop/soft/
[root@slaver4 package]# cd ../soft/
[root@slaver4 soft]# ls
elasticsearch-6.7. filebeat-6.7.-linux-x86_64 kibana-6.7.-linux-x86_64 logstash-6.7.
[root@slaver4 soft]# chown -R elsearch:elsearch logstash-6.7./
[root@slaver4 soft]# ls
elasticsearch-6.7. filebeat-6.7.-linux-x86_64 kibana-6.7.-linux-x86_64 logstash-6.7.
[root@slaver4 soft]# su elsearch
[elsearch@slaver4 soft]$ cd logstash-6.7./
[elsearch@slaver4 logstash-6.7.]$ ls
bin config CONTRIBUTORS data Gemfile Gemfile.lock lib LICENSE.txt logstash-core logstash-core-plugin-api modules NOTICE.TXT tools vendor x-pack
更深入学习后面见咯!!!
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAFYAVgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpbBpQSQDigjNfysE5NAH9U9FfysUUAf1T0V/KxRQB/VPQc1/KxQOtAH9UxbFKCSAcUYzX8rBOTQB/VPRX8rFFAH9U9FfysUUAf1UUUUUANLYNKCSAcUEZr+VgnJoA/qopCcUtIelACbiDjH40oORX8rOa/qmAxQAEkAnFIGya/lZBwa/qnAxQAtFFFACUV/KxRQB/VMWIOMUoORX8rANf1TgYoACcCkDEnGKUjNfysE0Af1T0V/KxRQB/VPRX8rFFAH9U9FfysUUAf1UUUUUAFFFFABRRRQAnev5WK/qn71/KxQB/VOTgZNAOaCMiv5Wc8dKAP6p6K/lYz7UZ9qAP6p6/lX9K/qor+Vf0oA/qnzjFfysEYNf1SkdM+lKvQc/nQB/KyBk1/VPnOaCCQRmkxtzQB/K1jOa/qmByK/laBx+NITk9KAP6picDJoyKCeOtfytZ7e/WgD+qXcPWgHIppHfn6V/K2evSgBOtf1T5obp1r+VskGgD+qTriv5WK/qmWv5WaAP6pycDJozkUN0r+VrPHbigBp60V/VOOlFAC0h6UtIelAH8rOM5r+qYHIr+VkNjNBYE9KAP6p6/lX9K/qor+Vf0oA/qnyAOaAcikK5I57V/K1kelAH9U9FfysZ9qARnpQB/VN1xX8rFf1TgV/KxQB/VRRRRQAUUUUAFFFFACd6/lYr+qfvX8rFAH9VFfyr9q/qor+VftQAUUUUAf1UV/Kv6V/VRX8q/pQB/VNjOK/lZJJr+qcdq/lYoA/qnoOa/lYoHWgD+qcCjFA6UtAH8rAHPWlOeM+tf1SkZFfys5zigD+qQnpn0pV6Dj86XGcV/KwTk0Af1Tt0PGaavJr+VoHBr+qcDFAB3r+Viv6p+9fysUAf1TkZpCMU6kPSgAGaK/lYPWigD+qckgE4pA2c1/KyDg1/VPjGaAP5WD1ooPWigD+qiv5V/Sv6qK/lX9KAP6px2r+Viv6px2r+VigAoHWigdaAP6px2r+Viv6px2r+VigD+qiiiigAooooAKKKKAE71/KxX9U5OK/lYIIoA/qoor+Vj8KPwoA/qnor+Vj8KPwoA/qmJwK/lZxjFAOD0pSc/hQB/VKO1fysV/VNmv5WSCKADrX9U+aCCR1r+VosDjigD+qXriv5WK/qm6e9fyskEUAf1Tk4GTRnIoIyK/lazx0oAT1r+qbrTCPrxX8rhPPSgBAMmjB9K/qmbp1/Kv5W89u2etADcV/VP1ppB4r+Vs9elAH9U9fyr+lf1T5Ar+VnFAH9U2QBzQDkU08nvx2r+VsnnpQB/VPX8q/XFf1Tk4r+VkcUAJigjBr+qU56/pX8rZHPT8qAP6p6/lY9K/qmJxX8rPSgD+qYdKWv5WD9KPwoA/qnor+Vj8KPwoA/qmJxX8rBGKdnjGKaeT0oA/qoooooAKKKKACiiigBCM0AAUtFACYoPFLSHpQA3ODjH404cjpX8rOa/qmAxQAHgdKbnJxj8acRmv5Wc0Af1SgZ60oAFA6UtACE4FfytYGAfev6pSMjBowKAGk+opV6Dj86XA6dq/lYJyaAP6pySBnGa/laxxTQcGlySaAF79aTHvX9Uw6UtAH8q+aXJJ5pKB1oA/qnxkUAAUDpS0AfysDk9aU9M5poOK/qnAxQB/K0PXNNPWv6pyM1/KwTmgD+qduh4zTQa/laBwa/qnxigBpPOCKcBx0r+VnNf1TAYoACM0mMU6kPSgAH0FGPYV/KwetFAH9Ux4BOKQNntX8rQODX9U+MUAA+gox7Cv5WD1ooA/qoooooAKKKKACiiigBCQOtAORSMuT17V/K1kelAH9U9FfysZ9qX8BQB/VKTiv5WCMU4dMYpDyelAH9U9FfysfhQOvSgD+qbcPWgHIppHf9K/lbJ56UAJQOtf1T59xSE0ALkAUA5FNI57/Sv5Wz16UAf1T0h6UE4pM5oA/lZ9a/qor+Vg1/VPQB/KuBk1/VPnNDdDzimgUAfytYyaCMGv6pTnOf0r+Vsjnp+VACAZNf1Tg5oboecU1eDQA+ikzigEGgD+Vigda/qnJx3pM56UALkAUA5FNI571/K2evSgD+qev5WPSv6picV/Kz0oA/qmHSlr+VnqelJn2oA/qmJwK/lZIPSgHB6Uu7PWgBuKCMGv6pcE4NfytE5NAH9VFFFFABRRRQAUUUUAJ3r+Viv6p+9fysUAAOK/qmIx61/KzX9U/XNAH8rXv6dq/qlA46UYFAGBgUAB4HSm5zxj8acRmv5WSaAAnBpKOtFABmgGigdaAP6pTxjNKvQcfnS4ziv5WCcmgD+qdunSv5WiMd6b0r+qfvQB/K0Bkda/qlBJHSjvX8rHWgD+qdulfytYGPr2r+qUjIwaMCgBufWlXoOPzpcDp2r+VgnJoA/qnIzX8rOa/qnr+Vf0oA/qlPHHPTrX8rZ69a/qmwCOaAMCgD+VjJFf1TYr+Vmv6pz3oA/lZziv6psV/Kx61/VRQAh6etNB5xinEZr+VnNAH9UhPb9RX8rZHPWv6psAigDAoAQ8AnFAO41/KyDg1/VOBigA71/KxX9U/ev5WKAP6qKKKKACiiigAooooATvX8rFf1T96/lYoA/qor+Vf0r+qcnFfys4oA/qmyAOaAcimnnnnp0r+Vs9elACAZr+qcHNfysDrTjwMYoA/qmor+Vj8KPwoA/qmJwK/lZIPSgHnpSk9M0ANxX9U/Wm7Scc9q/lbJHpQAi9RX1h8Bf+CaXxn+Pnh+11+z06x8LaDdp5ltfeIZng+0IVVldI0RnKMGyG24P05P77Eds1lRRNrEkrtLJHao5jVIm2l8HBJI5654oA1U6dMU6s0eH7T1uP8AwKl/+Ko/4R+z/wCnn/wLl/8AiqAPx+H/AARN+KYOf+E68H8f7V1/8Zr9jwp756Yqj/wj9n/08/8AgXL/APFUf8I/Z/8ATz/4Fy//ABVAH4//APDk/wCKYP8AyPPhDH+9df8Axmv2RUYAFZ3/AAj9n/08/wDgXL/8VR/wj9n/ANPP/gXL/wDFUAaVITxWcfD9pj/l4/8AAuX/AOKrOuLWXw3LbzQ3E01hJMsUsE7mTZuOFZWJJ+8RkHI57UAfy9HrRX9UanB29Kkz70AfysAZr+qbOc1/KyDg07PbFACetf1TdaYR9eK/lcJ56UAf1TE4FfyskHpQDg9KXdnrQAgFf1TA5puCef0pwGBQB/Kx1r+qfPWhunWv5Wyc9qAGYyaCMGv6pe/U1/K2eT0/KgD+qeiiigAooooAKKKKAGs2D07V/K1getf1TEA9aAMCgAPNJtr+VmigD+qfGaAMdq/lYooAUDnrX9UgJ/8A107rX8rPpQB/VIWx2pRyAcUuM1/KwTk0Af1TkcdK/lax39+lf1SkZGDRgUAANfysV/VP0xX8rFAH9Umf3uPbNUdAH/EuP/Xeb/0a9XP+W/8AwE1U0D/kHn/rvN/6NegDRoprZxxXk91+0Z4bsvivP8NNTlm8PeLplDaWuoQloNQVlO14mU4bBDAqSpyp+tAHrVFfHup+Iv2i4Pjz4U8GTeLvC97p9zcf2jqq6HpjrJZ6dHIDmYyZCGXmNQCSdpOTgk+x/HD9ozTfgZ4V1rW9U0HXLyDTkBDwWuIJHb7oEpO0AkgZ/Q0AevbuaWvi39hj4qfFz9o3X9c+I/ivWrWx8ELvsLHQLKJQhmBUljnLAIpxknLE9MCvtFTke9AC1m+IBnTcH/ntD/6NWtKs7Xv+Qd/22h/9GrQB+Pv/AAWxH/F/fA3/AGLI6/8AX1PX51ngkV/U1J/yEl/3P6mv5ZCcmgBce9AAHev6p6Q9KAP5WgKQjnrRmv6pgMCgAx7CkIr+VmgdaAP6pxS0g6UtACHmkIwK/lZoHWgB3YnIr+qUcjp+dGMigDAwKAFooooAKKKKACiiigBCcV/KwRg1/VMVyaUAgAZoA/lY61/VPmkPTrX8rhINAH9UnXFfysV/VMDg1/KzigA61/VPnrQ3TrX8rZIPagBuK/qmByK/la3Y7UhOT0oA/qnpD0r+VnPtS9D0oATBJpCMGnA8V/VIOB1/OgD8bf8Agibx8fPHWf8AoWT/AOlUFfsHoH/IPP8A13m/9GvVof6/8Dn9Kq6B/wAg8/8AXeb/ANGvQBo18U/t2aRPZfHj9nXxNptg97qdtrVxAIYHVJLgAQyJEGPHO2QDJx8x9a+1q+QP24vF9p4M+Lf7Ot/eRzTwReI7mRobaJpZW/dxp8iKCWOZBwBnmgZ0P7MX/C7L7xZ4l1P4g+EdE8K2ep3IvJLgTNNezjbtigVVfaqxrtG4+h+Ukkjw/wD4KG/tFeEk8a6b8PNZSXU9K0SH+2b/AEu3YhdSveBbWcjr/q4wC0jnkn5QMHmvWfix8Xfi9qfjjwLo/hSGw8GaV4n1UWlsmp25m1WW2jXzLm6aMnbCirhQpBbLDJXOK8j8df8ABNLXPjR+0V438V+JfEceieFb+++02wtFE91cqyjIwSFjAIIyd3070BszA/Zc+EXjf4s/sw6/4k8M/EvU/hy95q99fwaTo8CRWCMpBKgriRVyCOGwABwcc/RH/BOj40+JPjT8B5LzxVPJf6ppWoyWH9oS/fuUCK6sx7sN+Cfavk39mP4FfGr4j/CbxLpfw9+Jkfh/wLJq17pEumakjF/K4DOjKrY3BiCFI5z65r9E/gD8FdL+APwv0jwZpMhuYrJS8926bGuZmOZJCBnGT0GTgYGTQD3PR6zte/5B3/baH/0ataNZ2vf8g7/ttD/6NWgQ+T/kJr/uf1NfyykYNf1Nyf8AISXjjZ/U1bHAxmgD+VkDJoxg0o4PT86/qk70AOHav5WK/qmziv5WSCKACgda/qnoOaADOK/lYIwa/qlxmlHAAzQB/KzQOtGKUAigD+qbOK/lYIxTvamnrQB/VRRRRQAUUUUAFFFFADS2DSgkgHFBGa/lYJyaAFHJ607ryTTAcV/VPjFAH8rfbtX9UY5HT86/layQaQnJoA/qnPT1poPOMU4jNfys5oA/qmHNGKB0paAP5WAOetf1SA9v1NOIyKMACgBp69K/lbPB6/lSZwaCcmgD9FP+CKHHx98cD/qWT/6VQV+wegf8g8/9d5v/AEa9W8fv/wDgJ/pVTQP+Qef+u83/AKNegDRr5j/bP+AHiL4v6h8MPEfhPbLrfg/X47z7PJMI1eB5IWkbJ4yphQ/TdxX05ScE0Afnz4g+E/xY/ab/AGzbnVNYXWPBHgTwbcyWdjqNo72ss8WcsIH4LGXALMOAvHav0BijEKBQSQOBk5qUKBnA61Fdyrb20srcKilj9AKA3PlD/gmnGy/ArXGOQG8T6gR/30tfWnSvkv8A4Jl3H2v9na7uArKk3iC/kUN6Fx09a+taBhWdr3/IO/7bQ/8Ao1a0azte/wCQd/22h/8ARq0CPx8/4LZY/wCF++Bv+xZGf/Aqevzsx71/U0/Opr/uf1NXaAExX8rWc1/VNX8q/TFAH9UwGRzzSgY7V/KxRQB/VOTgU3JPH604jNfysk0AB4pM0daKAP6pyOOlfytds8c1/VKRkYNGMCgBhP15r+VwjnrR61/VN0oAWiiigAooooAKKKKACiiigD+VcDJr+qfI69qCCQRmk24oAXIoByMiv5Ws9vfrX9UoPHWgD+VgDNf1Tg5r+VgdaceBjFAH9U1FfysDntRn2oAQDJr+qcHNBBIIzSBcGgBSQOtAORSMuT17V/K1kelAH9UPW4/4Cap6Af8AiXkf9N5v/Rr1+DH/AATQ+Pmk/AT9puwu9fuorDQdfs5NFu7ybASDzHR43ZiQEUSRpuY9AT25r917e4fwzNcQTW88tjJK00U8EZk2FjllZRyPmJIOCMHtigDoqKzR4gsz/wA/H/gLL/8AE0f8JBZ/9PP/AICS/wDxNAGlWL4y1B9L8K6tcxWlxfyx20hS2tI98srbThVXIySferH/AAkFn/08/wDgJL/8TSHXrM/8/P8A4Cy//E0AeY/slfCe9+CvwE8M+F9TCLqsUb3F4iHISaVi7LnvjdjPtXsNZi69ZqMYuP8AwEl/+Jpf+Egs/wDp5/8AASX/AOJoA0qzteP/ABLv+20P/o1KQ+ILP0uf/ASX/wCJrPnuZPEk8FvBBNDYxyrLLNOhjLlDuCqp56gEnGMCgDVf/kJr/uf1NfyyV/UnZ3aX188sZ3xKNqsOh9xX8tpHNACAZr+qcEV/KwOtO6cUAf1S7h60A5FN25Oc/hX8reR6UAJ1r+qfvQQSOtfytE5HSgD+qaiv5WfwFJn2oA/qmJwK/lYIxSg4PSgncKAEAzX9U4ORX8rIO0UFgT0oA/qnooooAKKKKACiiigAooooAQkgE4pA2c1/KyDg1/VPjGaAP5WhnnHrSEcnmjOM1/VMBgUAfysgc9a/qkU5NO61/KwaAP6pW64/lX8rR6/4UA4oJyaAP6qKKKKAGs2D07V/K1getf1TEA9aAMCgD+VocHrX9PV1Jq+k5Fm0c0Y+7HOpIHp0Oa6sjI5pCi4+6PyoA/G8f8FsfiiAf+KG8H/983X/AMepD/wWz+KQOP8AhBfCH/fN1/8AHq/OvPWv6o/s8X/PNP8AvkUAcB/wmPin/oH2P/fL/wDxVflef+C2fxTGf+KF8Ifldf8Ax6vzqzX9UYt4h/yyT/vkUAfjkP8Agtn8UiM/8IL4Q/75uv8A49X6nnxh4pBx9gsf++X/APiq7/yIh/yzUfQUfZ4h/wAs0/75FAH44f8AD7P4pHj/AIQXwh/3zdf/AB6v1Yjk13XQEvJI4LduGjt1IDD3JJOOfWu38iL/AJ5p/wB8iv5WzQB/UzplitnAqADFXsY7V/KxRQAoHPWv6pAee/1pxGRRgAUAN3EHpX8rZA9aPWv6pulAC1/KwK/qnr+VfpigD+qXnOOee9fytHr/AIUZoJyaAP6p8ewpD/nFfys0DrQA7HfNNIwa/qmxnFfysk5oA/qoooooAKKKKACiiigBCQOtAORTWHOfbpX8rZ69KAEoHWv6p8+4oP1FAAOlLSDijNAATgZNGcihulfytZ7YoAT1r+qbrTSK/lbJ56UAIBmv6ps5zX8rI604nAx6UANxk0EYNf1S4561/K0Tk0AFHWjFKBg80AJigjBr+qXBODntX8rROTQAUDrRilHWgD+qYdKWv5WcZ6DNJ+FACda/qnz1obp1r+VokGgBuMmgjBr+qXHPWv5WicmgD+qcnAyaMignjrX8rWe3v1oA/ql64r+Viv6punvX8rJBFAH9U/Sv5WDSg89K/qkUYNAH8rQr+qfrTW5PWv5WyeelACUDrX9U9BzQADtX8rFf1TgYr+VigD+qiiiigAooooAKKKKAGseeaF6Dj86UjNfysE5NABmjNFFACgZHWgjB60gOK/qnAwKAA80hGBX8rNA60AO79aTHvX9Uw6UtAH8rAHPWv6pFyTTutfysGgD+qYkg4r+VkjBoBxQTk0Af1TkcdK/laxxnjrX9UpGRg0YwKAG7uQMV/K0Rg0ZwaCcmgD+qY8AnFJnNfytA4Nf1T4HTtQB/K2ADX9UY6dKXFfysdaAP6pz09aaOTinEZr+VgmgD+qYkg4r+VkjBoBxQTk0AL+NL1PJzX9U1FADCfUUq9Bx+dLgdO1fysE5NABQSTRRQA5ema/qkHI6fnX8rIJFBOTQB/VPRX8rFFAH9UxYg9K/laIHrSCv6p+lAC0UUUAFFFFABRRRQAhIHWgHIpGXJ69q/layPSgD+qeiv5WPwo/CgD+qeiv5WPwo/CgD+qeiv5WPwpeh5GKAP6pcjr2r+VgjBr+qbbmlAIAGaAAnFfys4r+qY9PSmgc5zQA7OK/lYIwa/qlK570o4AGaAP5Wa/qnPev5WME1/VN1oA/lZxk0EYNf1TbTnOa/lZJyaAP6pycCv5WcUA4PSlLZ7UAf1S5wKAcjIr+VrPGMfjX9Uq9KAP5WKB1r+qfPuKD9RQAZxX8rBGDX9UpFOXoOc0ABOK/lZIr+qY9PSmgdT+lAH8rXSilIyaSgD+qcnAyaMihulfytZGPp3oA/ql64r+Viv6plr+VmgD+qcnAyaM5FBGRX8rQIxigBp60Up60mKAP6qKKKKACiiigAooooATvX8rFf1T96/lYoA/qnPA6UgOTjFKRmv5WCaAP6p8ewox7Cv5WKKAP6p8A1/Kzmv6p6/lX9KAP6px0paQdKWgBrdDxn6V/K2RgZpoODQSTQAoGR1oIwetIDiv6pwMCgBG6Hj8qFPPFfysg4Nf1TgYoAO9fysV/VP3r+VigD+qfFB4paQ9KAExmlHFfysHrRQAv40D61/VPSHpQB/K0Bx/Q1/VIvQcY+tfytZINITk0Af1Tt06V/K2QBimdK/qnxQAgGa/lZJzX9U/TFfysUAf1Tnmk21/KzRQB/VMSQcV/KyRg0A4oJyaAP6pySB0r+VoqB3/Om9K/qnx1oAbnnp19acOR0r+VnNf1TAYoAWiiigAooooAKKKKAE71/KxX9U/ev5WKAP6qK/lX7V/VOTiv5WSKAEooxRigD+qiv5V/Sv6qK/lX9KAP6p84xX8rBGDX9UxXOKUAgAZoAWv5V/Sv6p8gV/KzigD+qbOMV/KwRg1/VMRn8KBwAM0AfysgZNf1Tg5pDyCM0AbTQApIHWgHIpCMmv5Wsj0oAQDJr+qfI69qQ8gjNJtx3oAdmv5WOlPBAzX9Ui9OtAH8rFf1TnvX8rFf1TkZoA/lZ9a/qm601gc1/K2evSgBK/qnPev5WK/qnPegD+Vg9aKD1ooAAMmv6pwc0EEgjNIBtNACkgdaAcimtye9fytnr0oA/qnr+Vfriv6p81/K1jFADcUEYNf1SnPX9K/lbI56flQB/VPRRRQAUUUUAFFFFACd6/lYr+qfvX8rFAH9U55oAxX8rFFAH9U+PYUY9hX8rFFAH9U5JAzjNfyskYwfekBwaMkmgD+qcdKWkHSloA/lXzS7iaSigAzRmiigAzSjmko6UAf1S5I96/lbIHrSZr+qfpQB/KwOT1p2Mc579KaDiv6pwBQA0mnL0HGKMDp2r+VgnJoAUAetf1ShiT0petfysGgD+qZjzjFKBx0r+VgGv6pwMUAfysAZNf1S7uSMV/K0Dg0ZyaAHbe+aaRg1/VNjOK/lZJzQB/VPQc4r+ViigB+OO2K/qjHI6fnX8rOT60E5NACjr1r+qQHnvTiMijAAoATGetKBjtX8rB60UAf1UUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf//Z" alt="" />
作者:别先生
博客园:https://www.cnblogs.com/biehongli/
如果您想及时得到个人撰写文章以及著作的消息推送,可以扫描上方二维码,关注个人公众号哦。