网站哪些页面会做静态化,网站定制费用,专业的网站建设企业,汕头seo外包服务首先服务器上需要安装docker已经docker-compose#xff0c;如果没有#xff0c;可以参考我之前写的文章进行安装。
https://blog.csdn.net/a_lllk/article/details/143382884?spm1001.2014.3001.5502
1.下载并启动elk容器
先创建一个网关#xff0c;让所有的容器共用此网…首先服务器上需要安装docker已经docker-compose如果没有可以参考我之前写的文章进行安装。
https://blog.csdn.net/a_lllk/article/details/143382884?spm1001.2014.3001.5502
1.下载并启动elk容器
先创建一个网关让所有的容器共用此网关方便容器之间互相通信。
docker network create elk-net
编写docker-compose.yml,我这里的docker-compose版本是2.8.0可以根据自己安装的docker-compose去调整version。ELK的版本都使用的事8.6.2。
version: 2.8
services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:8.6.2restart: alwayscontainer_name: esenvironment:- ES_JAVA_OPTS-Xms256m -Xmx512m- discovery.typesingle-node- ELASTIC_USERNAMEelastic- ELASTIC_PASSWORDelastic- ingest.geoip.downloader.enabledfalse- xpack.security.transport.ssl.enabledfalse- xpack.security.http.ssl.enabledfalse- xpack.security.enabledtrue- bootstrap.memory_locktrue- cluster.namees-clusterports:- 9200:9200- 9300:9300privileged: truenetworks:- elk-netlogstash:image: docker.io/logstash:8.6.2container_name: logstashenvironment:- LS_JAVA_OPTS-Xmx256m -Xms256mports:- 5044:5044 # Beats通信- 9600:9600 # API通信networks:- elk-netrestart: alwaysprivileged: truekibana:image: docker.elastic.co/kibana/kibana:8.6.2container_name: kibanaenvironment:- ELASTICSEARCH_HOSTShttp://elasticsearch:9200- SERVER_NAMEkibana- XPACK_SECURITY_ENABLEDtrueports:- 5601:5601networks:- elk-netrestart: alwaysprivileged: truenetworks:elk-net:driver: bridge将文件放入服务器的任意目录然后输入以下命令运行。
docker-compose up -d
稍等一会等镜像下载并创建容器我这里因为早就下载好了镜像所以就直接创建了容器。 可以使用docker ps -a查看容器的创建情况我的容器创建如下图 可以使用ip端口的形式去查看运行容器的情况这里注意如果是服务器的话记得打开对于端口。
elasticsearch使用ip:9200端口去访问 kibana使用ip:5601去访问。这里注意如果页面显示Kibana server is not ready yet.是正常情况因为目前并没有对elasticsearch做任何配置kibana是没有检测到es的存在。 logstash暂时没有验证的方式只要看容器的启动状态是up就行了。
2.配置ELK
2.1.配置elasticsearch
首先在服务器目录创建一个文件夹来存放容器中的数据。
mkdir -p /usr/local/docker/elasticsearch
然后将容器中的配置文件及datalogs目录复制到当前宿主机指定目录下。
docker cp es:/usr/share/elasticsearch/config /usr/local/docker/elasticsearch/config
docker cp es:/usr/share/elasticsearch/data /usr/local/docker/elasticsearch/data
docker cp es:/usr/share/elasticsearch/logs /usr/local/docker/elasticsearch/logs进入config目录有一个elasticsearch.yml文件这个就是容器的配置文件。
我一般为了保险起见都会先复制一个没有修改过的配置文件避免修改配置文件出错时容器启动报错。
cp elasticsearch.yml elasticsearch-backup.yml
然后修改配置文件内容如下
vim elasticsearch.yml cluster.name: es-cluster
network.host: 0.0.0.0node.name: node-01
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
http.port: 9200
discovery.type: single-node
xpack.security.enabled: true
bootstrap.memory_lock: true
保存并退出es的配置文件就编辑好了。
2.配置kibana
同样创建一个文件夹来存放容器中的数据。
mkdir -p /usr/local/docker/kibana
将需要的文件复制到宿主机中。
docker cp kibana:/usr/share/kibana/config /usr/local/docker/kibana/docker cp kibana:/usr/share/kibana/data /usr/local/docker/kibana/docker cp kibana:/usr/share/kibana/logs /usr/local/docker/kibana/
进入config目录编辑名为kibana.yml的配置文件。
vim kibana.yml
配置文件内容如下 #
# ** THIS IS AN AUTO-GENERATED FILE **
#
# Default Kibana configuration for docker target
server.host: 0.0.0.0
server.shutdownTimeout: 5s
elasticsearch.hosts: [ http://elasticsearch:9200 ]
elasticsearch.username: elastic
elasticsearch.password: elastic
monitoring.ui.container.elasticsearch.enabled: true
#界面汉化
i18n.locale: zh-CN
##启用或禁用 Kibana 报告功能的角色管理
xpack.reporting.roles.enabled: false
保存并退出kibana配置文件就算改好了。
3.配置logstash
创建文件夹
mkdir -p /usr/local/docker/kibana
从容器中复制文件夹
docker cp logstash:/usr/share/logstash/pipeline/ /usr/local/docker/logstash/
进入/logstash/pipeline,编辑logstash.conf
input {beats {port 5044}
}output {elasticsearch {hosts [http://elasticsearch:9200]user elasticpassword elasticindex logs-%{YYYY.MM.dd}}
}
3.重新创建容器
上面就对所有容器的配置文件做了处理然后因为第一次启动的时候没有挂载目录所以更改的配置配置文件也不会生效所以我们就需要重新创建一下容器并将所有编辑的配置文件挂载到容器中去
首先对所有容器进行移除
docker stop es logstash kibana
docker rm es logstash kibana
然后重新编辑上面的docker-compose.yml将宿主机中的目录挂载到容器中。
version: 2.8
services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:8.6.2restart: alwayscontainer_name: esvolumes:- /usr/local/docker/elasticsearch/data:/usr/share/elasticsearch/data - /usr/local/docker/elasticsearch/logs:/usr/share/elasticsearch/logs - /usr/local/docker/elasticsearch/config:/usr/share/elasticsearch/config environment:- ES_JAVA_OPTS-Xms256m -Xmx512m- discovery.typesingle-node- ELASTIC_USERNAMEelastic- ELASTIC_PASSWORDelastic- ingest.geoip.downloader.enabledfalse- xpack.security.transport.ssl.enabledfalse- xpack.security.http.ssl.enabledfalse- xpack.security.enabledtrue- bootstrap.memory_locktrue- cluster.namees-clusterports:- 9200:9200- 9300:9300privileged: truenetworks:- elk-netlogstash:image: docker.io/logstash:8.6.2container_name: logstashenvironment:- LS_JAVA_OPTS-Xmx256m -Xms256mvolumes:- /usr/local/docker/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:rw # Logstash配置ports:- 5044:5044 # Beats通信- 9600:9600 # API通信networks:- elk-netrestart: alwaysprivileged: truekibana:image: docker.elastic.co/kibana/kibana:8.6.2container_name: kibanaenvironment:- ELASTICSEARCH_HOSTShttp://elasticsearch:9200- SERVER_NAMEkibana- XPACK_SECURITY_ENABLEDtruevolumes:- /usr/local/docker/kibana/logs:/usr/share/kibana/logs - /usr/local/docker/kibana/data:/usr/share/kibana/data- /usr/local/docker/kibana/config:/usr/share/kibana/config ports:- 5601:5601networks:- elk-netrestart: alwaysprivileged: truenetworks:elk-net:driver: bridge运行命令还是生成了三个容器。使用上面的ip端口的方式去验证发现es可以访问但是kibana一直在尝试重启说明配置文件存在问题。 使用log命令查看kibana的启动日志
docker logs -f kibana
发现es报错了报错信息如下
Error: [config validation of [elasticsearch].username]: value of elastic is forbidden. This is a superuser account that cannot write to system indices that Kibana needs to function. Use a service account token instead. Learn more: https://www.elastic.co/guide/en/elasticsearch/reference/8.0/service-accounts.html 这里大概意思就是elastic作为超级账号是不能在kibana中直接使用这里推荐使用账户token的方式去连接es。所以这里需要使用token的方式去连接es。
先进入到es的容器之中然后运行一下命令生成对应的token令牌。
进入容器:
docker exec -it es /bin/bash
运行生成令牌命令
bin/elasticsearch-service-tokens create elastic/kibana default
复制等号后面的token信息 exit;退出容器然后进入kibana的配置文件存放位置
cd usr/local/docker/kibana/config/
编辑kibana.yml内容如下 将之前配置的用户名和密码注释或删除然后新增elasticsearch.serviceAccountToken内容为刚才容器中返回的token信息。
然后wq保存重启kibana
docker restart kibana
然后使用ip:5601的方式访问kibana发现已经可以正常登录使用了也就是kibana已经成功连接了es。 4.在SpringBoot项目中简单使用
elk的使用方式有很多种这里简单演示一下整合springBoot。
先创建一个springBoot项目并导入以下jar包 !-- Logback Classic --dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.2.11/version/dependency!-- Logstash Logback Encoder --dependencygroupIdnet.logstash.logback/groupIdartifactIdlogstash-logback-encoder/artifactIdversion6.3/version/dependency然后在application.properties同级目录新建一个文件文件名就是logback-spring.xml 然后xml内容如下。
?xml version1.0 encodingUTF-8?
configurationappender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss} - %msg%n/pattern/encoder/appender!-- 控制台输出 --appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderlayout classch.qos.logback.classic.PatternLayoutpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}.%M.%L) - %highlight(%msg)%n/pattern/layout/appender!-- logback 输出 --appender nameSTASH classnet.logstash.logback.appender.LogstashTcpSocketAppenderdestination60.204.148.130:5044/destinationencoder classnet.logstash.logback.encoder.LogstashEncoderincludeCallerDatatrue/includeCallerDatatimeZoneUTC/timeZonecustomFields{server_name:demo-server}/customFields/encoder/appenderroot levelDEBUG!-- 将日志发送到Logstash --appender-ref refSTDOUT/appender-ref refSTASH//root
/configuration然后直接启动springBoot项目我这边为了演示level使用的是debug模式如果觉得debug模式记录太多的话可以将xml最下面的root level值改为info.
然后访问kibana主页点击右侧management下面的Stack Management。 进入Stack Management后选择右边的索引管理。 这里已经成功根据配置文件新建了一个记录springBoot项目运行日志的索引。 然后可以点击右侧Management下的开发工具。 在左边控制台中输入下面命令去查看日志的记录清空。
GET /logs-2025.01.16/_search // _search
{sort: [{timestamp: {order: desc}}], query: {match_all: {}}
}