长沙网站制作价,衡阳网站开发,如何在网站上做背景图片怎么做,长沙网站建设zh68ELK 是目前最流行的集中式日志解决方案#xff0c;提供了对日志收集、存储、展示等一站式的解决方案。
ELK 分别指 Elasticsearch、Logstash、Kibana。
Elasticsearch#xff1a;分布式数据搜索引擎#xff0c;基于 Apache Lucene 实现#xff0c;可集群#xff0c;提供…
ELK 是目前最流行的集中式日志解决方案提供了对日志收集、存储、展示等一站式的解决方案。
ELK 分别指 Elasticsearch、Logstash、Kibana。
Elasticsearch分布式数据搜索引擎基于 Apache Lucene 实现可集群提供数据的集中式存储分析以及强大的数据搜索和聚合功能。Logstash数据收集引擎相较于Filebeat 比较重量级但它集成了大量的插件支持丰富的数据源收集对收集的数据可以过滤分析格式化日志格式。Kibana数据的可视化平台通过该 web 平台可以实时查看 Elasticsearch 中的相关数据并提供了丰富的图表统计功能。FilebeatFilebeat 是一款轻量级占用服务资源非常少的数据收集引擎它是 ELK 家族的新成员可以代替 Logstash 作为在应用服务器端的日志收集引擎支持将收集到的数据输出到 KafkaRedis 等队列。
一、Elasticsearch
1.1 安装配置
1.1.1 拉取镜像
[rootlocalhost software]# docker pull elasticsearch:7.17.71.1.2 配置文件
第一步在 Linux 上创建三个数据挂载目录。 第二步在 conf 目录下创建 elasticsearch.yml 文件并修改权限为777。
[rootlocalhost elasticsearch]# cd conf/
[rootlocalhost conf]# touch elasticsearch.yml
[rootlocalhost conf]# chmod 777 elasticsearch.yml
[rootlocalhost conf]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 12月 5 11:03 elasticsearch.yml配置内容如下
http:host: 0.0.0.0cors:enabled: trueallow-origin: *
xpack:security:enabled: false1.1.3 修改 Linux 的 vm.max_map_count
直接启动后会报下面的异常
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]表示系统虚拟内存默认最大映射数为65530无法满足ES系统要求需要调整为262144以上。
修改方法如下 查看 sysctl -a|grep vm.max_map_count 修改 sysctl -w vm.max_map_count262144
1.2 创建运行
docker run -itd \
--name es \
--privileged \
--network docker_net \
--ip 172.18.12.80 \
-p 9200:9200 \
-p 9300:9300 \
-e discovery.typesingle-node \
-e ES_JAVA_OPTS-Xms4g -Xmx4g \
-v /usr/local/software/elk/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/software/elk/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/software/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.17.7容器创建并运行成功后我们在浏览器里面访问 虚拟机地址:9200出现内容表示运行成功。
1.3 ES 的分词器
1.3.1 下载并上传分词器到 Linux 中
下载链接https://github.com/medcl/elasticsearch-analysis-ik/releases 注意需下载和 es 一致的版本避免出错。
上传到 /usr/local/software/elk/plugins/目录下。
1.3.2 拷贝分词器插件到容器 ik 文件夹
[rootlocalhost plugins]# docker cp elasticsearch-analysis-ik-7.17.7.zip es:/usr/share/elasticsearch/plugins/ik1.3.3 解压分词器
进入容器 ik 文件夹下面没有ik文件夹就手动创建解压插件。 解压
unzip elasticsearch-analysis-ik-7.17.7.zip解压完将压缩包删除并记得重启容器。
二、Kibana
2.1 安装
安装 Kibana 前需保证 ES 已经运行成功。
2.1.1 拉取镜像
docker pull kibana:7.17.7注意版本尽量保持一致。
2.1.2 创建并运行容器
docker run -it \
--name kibana \
--privileged \
--network docker_net \
--ip 172.18.12.81 \
-e ELASTICSEARCH_HOSTShttp://192.168.200.135:9200 \
-p 5601:5601 \
-d kibana:7.17.72.1.3 测试
浏览器打开 http://虚拟机地址:5601/ 成功进入即表示运行成功。
2.2 简单使用
打开 Dev Tools 执行查询可看到出现右面的数据
2.3 测试分词器
2.3.1 标准分词器 如上图所示标准分词器对中文不太友好。
2.3.2 ES 分词器 如上图所示es 分词器对中文分词好一点但是还是不够灵活。所以我们可以自定义一下 es 的分词器词典。
2.3.3 自定义 es 分词器词典
进入 es 容器的 ik/config 目录 查看配置文件 注意ext_dict_my.dic 是我自定义的词典文件默认没有。编写自己的配置文件 重启容器并测试 。
三、Logstash
3.1 安装
3.1.1 拉取 logstash
[rootlocalhost ~]# docker pull logstash:7.17.73.1.2 创建容器
docker run -it \
--name logstash \
--privileged \
-p 5044:5044 \
-p 9600:9600 \
--network docker_net \
--ip 172.18.12.82 \
-v /etc/localtime:/etc/localtime \
-d logstash:7.17.73.2 容器配置
有三个配置文件分别是 我们在宿主机创建一个 logstash 文件夹( /usr/local/software/elk/logstash)将三个配置文件复制到这个目录下方便编辑。
logstash.yml
path.logs: /usr/share/logstash/logs
config.test_and_exit: false
config.reload.automatic: false
http.host: 0.0.0.0
xpack.monitoring.elasticsearch.hosts: [ http://192.168.200.135:9200 ]piplelines.xml
- pipeline.id: mainpath.config: /usr/share/logstash/pipeline/logstash.conflogstash.conf
input {tcp {mode serverhost 0.0.0.0port 5044codec json_lines}
}
filter{
}
output {elasticsearch {hosts [192.168.200.135:9200] #elasticsearch的ip地址 index elk #索引名称}stdout { codec rubydebug }
}修改完成后将配置文件拷贝到容器相应位置并重启容器。
3.3 释放端口 firewall-cmd --add-port9600/tcp --permanent firewall-cmd --add-port5044/tcp --permanentfirewall-cmd --reload四、springboot 中使用 logstash
4.1 引入框架
dependencygroupIdnet.logstash.logback/groupIdartifactIdlogstash-logback-encoder/artifactIdversion7.3/version
/dependency4.2 创建 logback-spring.xml
?xml version1.0 encodingUTF-8?
!-- 日志级别从低到高分为TRACE DEBUG INFO WARN ERROR FATAL如果设置为WARN则低于WARN的信息都不会输出 --
!-- scan:当此属性设置为true时配置文档如果发生改变将会被重新加载默认值为true --
!-- scanPeriod:设置监测配置文档是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 --
!-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 --
configuration scantrue scanPeriod10 seconds!--1. 输出到控制台--appender nameCONSOLE classch.qos.logback.core.ConsoleAppender!--此日志appender是为开发使用只配置最低级别控制台输出的日志级别是大于或等于此级别的日志信息--filter classch.qos.logback.classic.filter.ThresholdFilterlevelDEBUG/level/filterencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} -%5level ---[%15.15thread] %-40.40logger{39} : %msg%n/pattern!-- 设置字符集 --charsetUTF-8/charset/encoder/appender!-- 2. 输出到文件 --appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender!--日志文档输出格式--appendtrue/appendencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} -%5level ---[%15.15thread] %-40.40logger{39} : %msg%n/patterncharsetUTF-8/charset !-- 此处设置字符集 --/encoder/appender!--3. LOGSTASH config --appender nameLOGSTASH classnet.logstash.logback.appender.LogstashTcpSocketAppenderdestination192.168.200.135:5044/destinationencoder charsetUTF-8 classnet.logstash.logback.encoder.LogstashEncoder!--自定义时间戳格式 默认是yyyy-MM-ddTHH:mm:ss.SSS--timestampPatternyyyy-MM-dd HH:mm:ss/timestampPatterncustomFields{appname:QueryApp}/customFields/encoder/appenderroot levelDEBUGappender-ref refCONSOLE/appender-ref refFILE/appender-ref refLOGSTASH//root
/configuration注意这个地址需配置 es 的地址。 文件存放位置
4.3 测试代码
Slf4j
RestController
RequestMapping(/api/query)
public class QueryController {Autowiredprivate IBookDocService ibs;GetMapping(/helloLog)public HttpResp helloLog(){ListBookDoc all ibs.findAll();log.debug(从es中查询到的数据{},all);log.debug(我是来测试logstash是否工作的);return HttpResp.success(all.subList(0,10));}
}4.4 Kibana 中查看
4.4.1 创建一个索引
put elkelk 名称是之前 logstash.conf 文件中配置的。 4.4.2 创建索引模式 执行操作如搜索。