實(shí)驗(yàn)示例圖
??注意事項(xiàng)
- elasticsearch安裝之后,十分消耗內(nèi)存資源,需要手動(dòng)配置限制內(nèi)存大小。
- elasticsearch和Kibana安裝時(shí),版本號(hào)需要一致。
- 本實(shí)驗(yàn)采用的Linux系統(tǒng)是
CentOS Linux release 7.9.2009 (Core)
,docker版本是20.10.14
- elasticsearch和kibana版本都是
8.2.0
一、什么是elasticsearch?
Elasticsearch 是一個(gè)分布式、RESTful 風(fēng)格的搜索和數(shù)據(jù)分析引擎,能夠解決不斷涌現(xiàn)出的各種用例。作為 Elastic Stack 的核心,它集中存儲(chǔ)您的數(shù)據(jù),幫助您發(fā)現(xiàn)意料之中以及意料之外的情況。
二、什么是Kibana?
Kibana 是一個(gè)開(kāi)源分析和可視化平臺(tái),旨在與 Elasticsearch 配合使用。您可以使用 Kibana 搜索、查看存儲(chǔ)在 Elasticsearch 索引中的數(shù)據(jù)并與之交互。您可以輕松執(zhí)行高級(jí)數(shù)據(jù)分析,并在各種圖表、表格和地圖中可視化數(shù)據(jù)。
三、使用docker安裝部署elasticsearch
創(chuàng)建專(zhuān)屬網(wǎng)絡(luò)
docker network create xybnet
docker network ls
docker inspect xybnet
執(zhí)行命令結(jié)果
[root@docker ~]# docker network create xybnet
b4562c006813576d161c84f729c1a6aebf0eecb1ced954159ba02f32cd6ee656
[root@docker ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
b2ac7dc0d1c0 bridge bridge local
9fd62dbfb07f host host local
27700772b8f7 none null local
b4562c006813 xybnet bridge local
[root@docker ~]# docker inspect xybnet
[
{
"Name": "xybnet",
"Id": "b4562c006813576d161c84f729c1a6aebf0eecb1ced954159ba02f32cd6ee656",
"Created": "2022-05-13T23:03:55.546299236+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
[root@docker ~]#
下載elasticsearch鏡像
docker search elasticsearch
docker pull elasticsearch:8.2.0
docker images
執(zhí)行命令結(jié)果
[root@docker ~]# docker search elasticsearch
[root@docker ~]# docker pull elasticsearch:8.2.0
8.2.0: Pulling from library/elasticsearch
e0b25ef51634: Already exists
860caabdf263: Already exists
9fbe6bc43ac5: Already exists
9d4f6737f430: Already exists
10f01841fd3e: Already exists
dae1e3bba098: Already exists
0a3767e40ef9: Already exists
7d786dfd085d: Already exists
7ce904f28ed3: Already exists
Digest: sha256:6bd33a35f529d349d8d385856b138d73241555abf2851287c055665494680b8d
Status: Downloaded newer image for elasticsearch:8.2.0
docker.io/library/elasticsearch:8.2.0
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6-alpine3.15 6d12d0de5a46 2 weeks ago 32.4MB
elasticsearch 8.2.0 f75ee9faf718 3 weeks ago 1.21GB
tomcat latest fb5657adc892 4 months ago 680MB
elasticsearch latest 5acf0e8da90b 3 years ago 486MB
[root@docker ~]# docker inspect elasticsearch:8.2.0
[
{
"Id": "sha256:f75ee9faf7183b931afb70d416647824c9b344e83905bbe7f70062b5eab91e43",
"RepoTags": [
"elasticsearch:8.2.0"
],
"RepoDigests": [
******以下輸出內(nèi)容省略******
創(chuàng)建并啟動(dòng)Elasticsearch容器服務(wù)
# 此命令限制運(yùn)行內(nèi)存大小以及掛載卷
docker run -d --name xybes --net xybnet -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1024m -Xmx2048m" -p 5601:5601 -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data elasticsearch:8.2.0
# 此命令不設(shè)置自定義網(wǎng)絡(luò)
docker run -d --name xybes -p 9200:9200 -p 9300:9300 -p 5601:5601 -e "discovery.type=single-node" elasticsearch:8.2.0
# 本實(shí)驗(yàn)執(zhí)行此命令
docker run -d --name xybes --net xybnet -p 9200:9200 -p 9300:9300 -p 5601:5601 -e "discovery.type=single-node" elasticsearch:8.2.0
docker ps
# 參數(shù)解釋說(shuō)明
# -d 后臺(tái)運(yùn)行
# --name xybes 指定容器唯一的名稱(chēng),方便管理
# --net xybnet 指定網(wǎng)絡(luò)
# -p 9200:9200 -p 9300:9300 映射容器端口到宿主機(jī)上
# -e "discovery.type=single-node" 環(huán)境變量配置為單機(jī)模式
# -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data 持久化數(shù)據(jù)存儲(chǔ)
# -e ES_JAVA_OPTS="-Xms1024m -Xmx2048m" 設(shè)置內(nèi)存大小
# elasticsearch:8.2.0 鏡像名稱(chēng)和版本號(hào)
執(zhí)行命令結(jié)果
[root@docker ~]# docker run -d --name xybes --net xybnet -p 9200:9200 -p 9300:9300 -p 5601:5601 -e "discovery.type=single-node" elasticsearch:8.2.0
900c8e4dbe11c4460543859b8c887d1fbb21b33071474e079de430e087fdb92f
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
900c8e4dbe11 elasticsearch:8.2.0 "/bin/tini -- /usr/l…" 17 seconds ago Up 16 seconds 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp, 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp xybes
[root@docker ~]# docker inspect 900c8e4dbe11
[
{
"Id": "900c8e4dbe11c4460543859b8c887d1fbb21b33071474e079de430e087fdb92f",
"Created": "2022-05-14T12:56:51.502325109Z",
"Path": "/bin/tini",
"Args": [
"--",
"/usr/local/bin/docker-entrypoint.sh",
"eswrapper"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 7605,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-05-14T12:56:52.189429009Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
******以下輸出內(nèi)容省略******
# 進(jìn)入xybes容器
[root@docker ~]# docker exec -it xybes /bin/bash
cluster.name: "docker-cluster"
# 查看配置目錄
elasticsearch@900c8e4dbe11:~$ ls
LICENSE.txt NOTICE.txt README.asciidoc bin config data jdk lib logs modules plugins
# 查看設(shè)置es用戶密碼幫助命令
elasticsearch@900c8e4dbe11:~$ ./bin/elasticsearch-setup-passwords -h
Sets the passwords for reserved users
Commands
--------
auto - Uses randomly generated passwords
interactive - Uses passwords entered by a user
Non-option arguments:
command
Option Description
------ -----------
-E <KeyValuePair> Configure a setting
-h, --help Show help
-s, --silent Show minimal output
-v, --verbose Show verbose output
# 以自定義的方式設(shè)置密碼
elasticsearch@900c8e4dbe11:~$ ./bin/elasticsearch-setup-passwords interactive
******************************************************************************
Note: The 'elasticsearch-setup-passwords' tool has been deprecated. This command will be removed in a future release.
******************************************************************************
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana_system]:
Reenter password for [kibana_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
elasticsearch@900c8e4dbe11:~$ ls
LICENSE.txt NOTICE.txt README.asciidoc bin config data jdk lib logs modules plugins
# 進(jìn)入elasticsearch.yml配置文件,關(guān)閉SSL(即修改此命令xpack.security.enabled: false)
elasticsearch@900c8e4dbe11:~$ vi config/elasticsearch.yml
elasticsearch@900c8e4dbe11:~$ cat config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically
# generated to configure Elasticsearch security features on 14-05-2022 12:56:54
#
# --------------------------------------------------------------------------------
# Enable security features
xpack.security.enabled: false
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
#----------------------- END SECURITY AUTO CONFIGURATION -------------------------
# 退出容器
elasticsearch@900c8e4dbe11:~$ exit
exit
# 系統(tǒng)重新加載
[root@docker ~]# systemctl daemon-reload
# 重啟xybes容器
[root@docker ~]# docker restart xybes
xybes
# 測(cè)試訪問(wèn)
[root@docker ~]# curl http://localhost:9200
curl: (56) Recv failure: Connection reset by peer
# 使用IP:9200訪問(wèn)成功
[root@docker ~]# curl http://192.168.200.66:9200
{
"name" : "900c8e4dbe11",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "wDwmop88TiO1Rkf1fecHvg",
"version" : {
"number" : "8.2.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "b174af62e8dd9f4ac4d25875e9381ffe2b9282c5",
"build_date" : "2022-04-20T10:35:10.180408517Z",
"build_snapshot" : false,
"lucene_version" : "9.1.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
[root@docker ~]#
# 以SSL安全模式訪問(wèn)。
[root@docker ~]# docker cp xybes:/usr/share/elasticsearch/config/certs/http_ca.crt ./
# 訪問(wèn)成功
[root@docker ~]# curl --cacert http_ca.crt -u elastic https://localhost:9200
Enter host password for user 'elastic':
{
"name" : "900c8e4dbe11",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "wDwmop88TiO1Rkf1fecHvg",
"version" : {
"number" : "8.2.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "b174af62e8dd9f4ac4d25875e9381ffe2b9282c5",
"build_date" : "2022-04-20T10:35:10.180408517Z",
"build_snapshot" : false,
"lucene_version" : "9.1.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
[root@docker ~]#
四、使用docker安裝部署Kibana
下載kibana鏡像(注意對(duì)應(yīng)版本)
docker search kibana
docker pull kibana:8.2.0
docker images
執(zhí)行命令結(jié)果
[root@docker ~]# docker pull kibana:8.2.0
8.2.0: Pulling from library/kibana
e0b25ef51634: Already exists
16168a059524: Pull complete
a7c5b97fb1b3: Pull complete
b4997d90f2a3: Pull complete
08edfcb77367: Pull complete
162b89073472: Pull complete
c27ed485e628: Pull complete
c8ec5118d07e: Pull complete
3098c58d1611: Pull complete
f0cd89b25439: Pull complete
90247f6ea1db: Pull complete
3bdda07522a2: Pull complete
36a9ec86c178: Pull complete
Digest: sha256:0ba5d3d3ddab3212eadd15bcc701c24a2baafe2f8bd7ced9d2a750cf227b8a06
Status: Downloaded newer image for kibana:8.2.0
docker.io/library/kibana:8.2.0
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6-alpine3.15 6d12d0de5a46 2 weeks ago 32.4MB
kibana 8.2.0 58a692253df4 3 weeks ago 752MB
elasticsearch 8.2.0 f75ee9faf718 3 weeks ago 1.21GB
tomcat latest fb5657adc892 4 months ago 680MB
elasticsearch 7.7.0 7ec4f35ab452 2 years ago 757MB
elasticsearch latest 5acf0e8da90b 3 years ago 486MB
[root@docker ~]#
創(chuàng)建并啟動(dòng)kibana容器
# 本實(shí)驗(yàn)執(zhí)行此命令
docker run -it -d --name kibana --network=container:xybes kibana:8.2.0
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 --name kibana --network=container:xybes -v /data/kibana/config:/usr/share/kibana/config kibana:8.2.0
執(zhí)行命令結(jié)果
[root@docker ~]# docker run -it -d --name kibana --network=container:xybes kibana:8.2.0
88969a52ec18c84fa7950a80f0211fc645c8de2df49b2b70ee8847e8903e026c
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
88969a52ec18 kibana:8.2.0 "/bin/tini -- /usr/l…" 50 seconds ago Up 49 seconds
kibana
900c8e4dbe11 elasticsearch:8.2.0 "/bin/tini -- /usr/l…" 4 hours ago Up 3 hours 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp, 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp xybes
[root@docker ~]#
[root@docker ~]# docker inspect 88969a52ec18
[
{
"Id": "88969a52ec18c84fa7950a80f0211fc645c8de2df49b2b70ee8847e8903e026c",
"Created": "2022-05-14T17:08:38.738984864Z",
"Path": "/bin/tini",
"Args": [
"--",
"/usr/local/bin/kibana-docker"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 27371,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-05-14T17:08:38.908540948Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
******以下輸出內(nèi)容省略******
五、配置elasticsearch和Kibana相連接
進(jìn)入elasticsearch容器中生成令牌
或
進(jìn)入kibana容器中修改kibana.yml配置文件
# 方法一:
# 進(jìn)入elasticsearch容器中生成令牌(失敗)
elasticsearch@900c8e4dbe11:~$ ./bin/elasticsearch-create-enrollment-token --scope kibana
ERROR: Failed to determine the health of the cluster.
elasticsearch@900c8e4dbe11:~$
# 方法二:
# 進(jìn)入kibana容器中修改kibana.yml配置文件(本實(shí)驗(yàn)采用此方法),修改訪問(wèn)的IP地址,為本地127.0.0.1訪問(wèn)。
kibana@900c8e4dbe11:~$cat >config/kibana.yml<<EOF
#
# ** THIS IS AN AUTO-GENERATED FILE **
#
# Default Kibana configuration for docker target
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://127.0.0.1:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
# 此處設(shè)置顯示語(yǔ)言為中文
i18n.locale: "zh-CN"
EOF
# 查看修改后的配置內(nèi)容
kibana@900c8e4dbe11:~$ cat config/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://127.0.0.1:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
kibana@900c8e4dbe11:~$
# 退出容器并重啟容器
kibana@900c8e4dbe11:~$ exit
exit
[root@docker ~]# docker restart kibana
kibana
需要輸入注冊(cè)令牌,再elasticsearch容器中生成?;蛘咝薷膋ibana.yml配置文件
進(jìn)入kiabana管理界面。
運(yùn)行樣例數(shù)據(jù),查看效果。
六、Kibana設(shè)置成中文圖形化界面
設(shè)置之前的圖形界面如下
# Kibana將語(yǔ)言設(shè)置為中文 6.7以后系統(tǒng)開(kāi)始支持中文,修改語(yǔ)言只需要添加一行配置即可。
# 在kibana.yml配置文件中添加一行配置即可。
[root@docker ~]# docker exec -it kibana bash
kibana@900c8e4dbe11:~$
# 修改kibana.yml配置文件
kibana@900c8e4dbe11:~$cat >config/kibana.yml<<EOF
#
# ** THIS IS AN AUTO-GENERATED FILE **
#
# Default Kibana configuration for docker target
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://127.0.0.1:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
# 此處設(shè)置顯示語(yǔ)言為中文
i18n.locale: "zh-CN"
EOF
# 查看修改后的kibana.yml配置文件
kibana@900c8e4dbe11:~$ cat config/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://192.168.200.66:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
kibana@900c8e4dbe11:~$
設(shè)置中文顯示圖形界面如下
七、安裝 Heartbeat
1、下載并安裝 Heartbeat
curl -L -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-8.2.0-x86_64.rpm
sudo rpm -vi heartbeat-8.2.0-x86_64.rpm
2、編輯配置
修改 /etc/heartbeat/heartbeat.yml 以設(shè)置連接信息:
output.elasticsearch:
hosts: ["<es_url>"]
username: "elastic"
password: "<password>"
# If using Elasticsearch's default certificate
ssl.ca_trusted_fingerprint: "<es cert fingerprint>"
setup.kibana:
host: "<kibana_url>"
其中,
<password>
是elastic
用戶的密碼,<es_url>
是 Elasticsearch 的 URL,<kibana_url>
是 Kibana 的 URL。要使用 Elasticsearch 生成的默認(rèn)證書(shū) 配置 SSL,請(qǐng)?jiān)?<es cert fingerprint>
中添加其指紋。
3、編輯配置 - 添加監(jiān)測(cè)
# 在 heartbeat.yml 文件中編輯 heartbeat.monitors 設(shè)置。
heartbeat.monitors:
- type: http
urls: ["<http://localhost:9200>"]
schedule: "@every 10s"
其中
<http://localhost:9200>
是受監(jiān)測(cè) URL。
4、啟動(dòng) Heartbeat
# setup 命令加載 Kibana 索引模式。
sudo heartbeat setup
sudo service heartbeat-elastic start
5、Heartbeat 狀態(tài)
確認(rèn)從 Heartbeat 收到數(shù)據(jù)
八、其他
kibana容器中沒(méi)有vi編輯命令??梢允褂?code>cat>配置文件<<EOF編輯方式進(jìn)行編輯。
權(quán)限問(wèn)題。
更新軟件權(quán)限不足。使用管理員的身份進(jìn)入容器。
# 查看集群狀態(tài)
[root@docker ~]# curl -X GET "localhost:9200/_cluster/health?pretty"
{
"cluster_name" : "docker-cluster",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 14,
"active_shards" : 14,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 1,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 93.33333333333333
}
[root@docker ~]#
# 節(jié)點(diǎn)簡(jiǎn)要信息
[root@docker ~]# curl -X GET "localhost:9200/_cat/nodes?pretty&v"
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.18.0.2 54 77 6 0.01 0.05 0.11 cdfhilmrstw * 900c8e4dbe11
[root@docker ~]#
#索引列表
[root@docker ~]# curl -X GET "localhost:9200/_cat/indices?v"
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .ds-heartbeat-8.2.0-2022.05.15-000001 AkhgkfJgQL2SHqBNVuBp5g 1 1 0 0 225b 225b
green open kibana_sample_data_logs 8mgvHLdDTIm5TwvOlB2QXA 1 0 14074 0 9.2mb 9.2mb
green open kibana_sample_data_ecommerce L5j4XqRhRqmA2mIDORvZpw 1 0 4675 0 4.3mb 4.3mb
[root@docker ~]#
九、參考鏈接
Elasticsearch - Official Image | Docker Hub
Kibana - Official Image | Docker Hub文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-431815.html
ElasticSearch常用命令文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-431815.html
到了這里,關(guān)于【docker】使用docker安裝部署elasticsearch+Kibana的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!