白嫖一個月的ES,完成了與MySQL的聯動

2023-04-04 15:00:11

前言

《騰訊雲 x Elasticsearch三週年》活動來了。文章寫之前的思路是:在騰訊雲伺服器使用docker搭建ES。但是理想很豐滿,顯示很骨感,在操作過程中一波三折,最後還是含著淚美滋滋地,白嫖了一個月的騰訊雲ES服務。

最後就是利用騰訊雲的Elasticsearch和Kibana,和我在騰訊雲伺服器上搭建MySQL進行了一波聯動,完成了資料庫內部指標的展示。

<伺服器搭建ES> 部分只用作記錄,可以忽略直接看 <騰訊雲領取ES的活動> 進行後續操作。

一. 伺服器搭建ES

1.拉取ES映象

本來想自己編寫dockerfile生成映象,沒成想ES官網提供了docker映象,這裡就使用官方映象,操作檔案參考連結:

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.6.2

2. 修改Linux系統控制程式碼

# 在 /etc/sysctl.conf 末尾新增
vm.max_map_count=262144

修改之後重啟或者使用以下命令使其生效:

/sbin/sysctl -p

3. 修改檔案控制程式碼和程序限制

# 在 /etc/security/limits.conf 末尾新增
* soft nofile 65536
* hard nofile 65536

4. docker安裝

docker我也是提前安裝好了,可以參考我之前的文章

yum -y install docker-ce

如果安裝叢集,還需要安裝docker-compose,官網提供了此種安裝方式,但是我的服務記憶體實在太小,嘗試幾次之後就果斷放棄了。

單節點ES搭建

啟動ES的時候,會自動啟用安全認證設定,包括:

  1. 生成安全證書:http_ca.crt
  2. elasticsearch.yml.:TLS(Transport Layer Security)設定
  3. ES使用者密碼
  4. Kibana的註冊token

1. 啟動單節點ES

# 建立es網路
docker network create elastic

2. 啟動單節點ES

# 啟動單節點ES
docker run --name es01 --net elastic -p 9200:9200 -it docker.elastic.co/elasticsearch/elasticsearch:8.6.2

在啟動單節點ES的時候,終端會列印一個使用者密碼(使用者名稱:elastic),和一個註冊Kibana用的token。因為只會在第一次啟動時輸出,所以要儲存好。

這裡使用的是前臺啟動,在儲存好密碼之後,再使用docker start後臺啟動容器。

3. 安全證書

執行命令將http_ca.crt拷貝到宿主機。

docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

4. 驗證

使用下載的安全證書和使用者密碼存取ES服務。

curl --cacert http_ca.crt -u elastic https://localhost:9200


至此,ES搭建完成。

外網無法存取伺服器Docker中的ES

測試外網無法存取伺服器中的ES,需要修改以下設定:

#  /etc/sysctl.conf 預設為0,修改成1
net.ipv4.ip_forward = 1

重啟網路和es:

systemctl restart network
docker restart es01

這樣就可以外網存取到ES了。

Kibana安裝

docker pull docker.elastic.co/kibana/kibana:8.6.2
docker run --name kib-01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.6.2

啟動Kibana的時候會輸出一個地址,去瀏覽器中設定。

複製ES啟動時生成的token填入。

token過期了,可以再生成一個。

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

花了老大的勁才忙活到這兒,™然後啟動kibana就CPU狂飆,丐版伺服器終究錯付。搞了一下午無果,決定還是去騰訊雲看看能不能白嫖。


二. 騰訊雲ES0元活動

果然到有ES白嫖一月的活動,嗚嗚嗚嗚。覺得自己是個鐵憨憨。


購買付款。


兩分鐘完事兒,進入控制檯。

可以看到叢集已經分配好,查詢叢集架構可以發現一共三個ES、一個Kibana。

視覺化設定中新增本機的IP到白名單,就可以存取Kibana。

點選公網存取地址,進入Kibana。

三.實踐應用

1. 新增資料

在Kibana首頁,進入 Add data,可以新增很多種類資料來源。這裡挑選進行操作

2. MySQL Metrics

選擇 MySQL metrics,這個可以獲取MySQL的內部指標。首先下載metricbeat。然後根據官方步驟完成設定:

  1. 修改metricbeat.yml中的es和kibana的設定

  1. 修改modules.d/msyql.yml中的mysql的設定,把query那行註釋掉,否則會報錯。

官方操作檔案:

資料載入完成之後,點選check data 會提示資料成功接收。

3. Dashboard

在Kibana首頁找到Dashboard

選擇匯入的MySQL指標資料。

如圖,MySQL各種指標就展示出來了。

結語

在控制檯點選幾下,就完成了一下午的工作量,不得不感嘆SaaS有點東西。如果對Elasticsearch和Kibana有興趣的,在騰訊雲白嫖一個挺合適的。