PolarDB-X 为了不便用户体验,提供了收费的试验环境,您能够在试验环境里体验 PolarDB-X 的装置部署和各种内核个性。除了收费的试验,PolarDB-X 也提供收费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
本期试验将领导您如何采集PolarDB-X SQL日志到ElasticSearch
本期收费试验地址
本期教学视频地址
前置筹备
假如曾经依据前一讲内容实现了PolarDB-X的搭建部署,应用PolarDB-X Operator装置PolarDB-X,并且能够胜利链接上PolarDB-X数据库。
装置PolarDB-X LogCollector
本步骤将领导您装置PolarDB-X LogCollector组件,并将PolarDB-X日志投递到Elastic Search中。
1.执行如下命令,创立一个名为polardbx-logcollector的命名空间。
kubectl create namespace polardbx-logcollector
2.执行如下命令,装置 PolarDB-X LogCollector。
helm install --namespace polardbx-logcollector polardbx-logcollector polardbx/polardbx-logcollector --version=1.3.0-alpha.1
3.执行如下命令,期待 PolarDB-X LogCollector 的组件ready。
kubectl get pods -n polardbx-logcollector
4.PolarDB-X 日志采集性能是默认敞开的,执行如下命令,为第三步创立的 PolarDB-X 集群开启日志采集性能。
kubectl patch pxc polardb-x --patch '{"spec":{"config":{"cn":{"enableAuditLog":true}}}}' --type merge
5.在 LogStash 规范输入查看 PolarDB-X 日志。
阐明:logstash pod name须要替换为 polardbx-logcollector 命名空间下的 logstash pod 名称。
kubectl logs -n polardbx-logcollector {logstash pod name} -f
部署Elastic Search
本步骤将领导您如何在K8s上部署一个Elastic Search集群。
1.执行如下命令,创立ECK的CRD。
kubectl create -f https://download.elastic.co/downloads/eck/2.4.0/crds.yaml
2.执行如下命令,装置ECKOperator。
kubectl apply -f https://download.elastic.co/downloads/eck/2.4.0/operator.yaml
3.执行如下命令,查看ECK Operator的POD状态,期待所有的POD都变成Running状态。
kubectl get pods -n elastic-system
4.执行如下命令,创立es.yaml。
vim es.yaml
5.按i键进入编辑模式,将如下代码复制到文件中,而后按ECS退出编辑模式,输出:wq后按下Enter键保留并退出。
apiVersion: elasticsearch.k8s.elastic.co/v1kind: Elasticsearchmetadata: name: quickstartspec: version: 8.4.3 image: elasticsearch:8.4.3 nodeSets: - name: default count: 1 config: node.store.allow_mmap: false
6.执行如下命令,创立Elastic Search集群。
kubectl apply -f es.yaml
7.执行如下命令,查看Elastic Search集群创立状态。
kubectl get elasticsearch
返回后果如下,请您急躁期待几分钟,当PHASE显示为Ready时,示意Elastic Search 集群曾经部署实现。
8.执行如下命令,创立kibana.yaml。
vim kibana.yaml
9.按i键进入编辑模式,将如下代码复制到文件中,而后按ECS退出编辑模式,输出:wq后按下Enter键保留并退出。
apiVersion: kibana.k8s.elastic.co/v1kind: Kibanametadata: name: quickstartspec: version: 8.4.3 image: kibana:8.4.3 count: 1 elasticsearchRef: name: quickstart
10.执行如下命令,创立 Kinana 实例。
kubectl apply -f kibana.yaml
11.执行如下命令,查看Kibana创立状态。
kubectl get kibana
12.获取Elastic Search集群的访问信息。
执行如下命令,获取Elastic Search的明码。
kubectl get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}' | xargs echo "PASSWORD: "
投递日志到 Elastic Search
PolarDB-X日志采集性能开启后,默认会投递日志到logstash的规范输入。您能够批改logstash的output配置,将日志投递到其它零碎中。本步骤将领导您将PolarDB-X日志投递到Elastic Search中,并在Kibana上拜访日志信息。
1.Elastic Search 8以上默认要求HTTPS拜访,因而须要为 logstash 配置拜访 Elastic Search 的证书。执行如下命令获取 Elastic Search的拜访证书,并配置到 logstash的 secret中
CRT=$(kubectl get secret quickstart-es-http-certs-public -o jsonpath={.data}) kubectl patch secret elastic-certs-public -p "{\"data\": ${CRT}}" -n polardbx-logcollector
2.配置 Logstash 的 output, 将日志输入到 ES。
2.1 获取 ES 的拜访明码。
留神:请提前复制明码,后续的配置文件中须要填入。
kubectl get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}' | xargs echo "PASSWORD: "
2.2 执行如下命令,创立 logstash-pipeline-patch.yaml。
vim logstash-pipeline-patch.yaml
2.3 按i键进入编辑模式,将如下代码复制到文件中,并批改output中的password字段为下面获取到的ES明码,而后按ECS退出编辑模式,输出:wq后按下Enter键保留并退出。
留神:须要批改output中的password字段,能力正确投递。
data: logstash.conf: |- input { beats { port => 5044 } } filter { if [fields][log_type] in ["cn_sql_log","cn_slow_log"] { polardbx { } date{ match => ["timestamp", "UNIX_MS","ISO8601"] timezone => "Asia/Shanghai" } mutate{ remove_field => ["event", "timestamp","[message][begin_time]","[message][timestamp]"] add_field => { "[@metadata][target_index]" => "%{[fields][log_type]}-%{+YYYY.MM.dd}" } } } else if [fields][log_type] == "cn_tddl_log" { grok{ match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] %{LOGLEVEL:loglevel} %{DATA:logger} - %{JAVALOGMESSAGE:messagetmp}" } } date{ match => ["timestamp","ISO8601"] timezone => "Asia/Shanghai" } mutate{ remove_field => ["event","timestamp"] rename => {"messagetmp" => "message"} add_field => { "[@metadata][target_index]" => "%{[fields][log_type]}-%{+YYYY.MM.dd}" } } } else { mutate{ add_field => { "[@metadata][target_index]" => "other_log-%{+YYYY.MM.dd}" } } } } output { elasticsearch { hosts => ["https://quickstart-es-http.default:9200"] user => elastic password => "{ES 的明码}" ssl => true cacert => "/usr/share/logstash/config/certs/ca.crt" index => "%{[@metadata][target_index]}" } }
2.4 执行如下命令,更新Logstash的output配置,将下面的配置项填入output中。
kubectl patch configmap logstash-pipeline -n polardbx-logcollector --patch-file logstash-pipeline-patch.yaml
2.5 执行如下命令,期待logstash pod重建实现。
kubectl get pods -n polardbx-logcollector -w
执行业务SQL
本步骤将领导您如何连贯通过K8s部署的PolarDB-X集群,并执行相干SQL、
1.执行如下命令,查看PolarDB-X集群登录明码。
kubectl get secret polardb-x -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "
返回后果如下,您能够查看到PolarDB-X集群登录明码。
2.执行如下命令,将PolarDB-X集群端口转发到3306端口。
阐明:应用MySQL Client形式登录通过k8s部署的PolarDB-X集群前,您须要进行获取PolarDB-X集群登录明码和端口转发。
kubectl port-forward svc/polardb-x 3306
3.在试验页面,单击右上角的+ 图标,创立新的终端二。
4.在终端二中,执行如下命令,连贯PolarDB-X集群。
阐明:
- 您须要将<PolarDB-X集群登录明码>替换为理论获取到的PolarDB-X集群登录明码。
- 如遇到mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0报错,请您稍等一分钟,从新转发端口并连贯PolarDB-X集群即可。
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集群登录明码>
5.顺次执行如下的SQL语句,验证PolarDB-X是否失常。
# 查看GMS select * from information_schema.schemata;# 创立分区表create database polarx_example partition_mode='partitioning';use polarx_example;create table example ( `id` bigint(11) auto_increment NOT NULL, `name` varchar(255) DEFAULT NULL, `score` bigint(11) DEFAULT NULL, primary key (`id`)) engine=InnoDB default charset=utf8 partition by hash(id) partitions 8;insert into example values(null,'lily',375),(null,'lisa',400),(null,'ljh',500);select * from example;select sleep(2);select sleep(3);show topology from example;
查看SQL审计日志
本步骤将领导您登录Kibana,查看PolarDB-X的SQL日志。
1.切换回终端一窗口,输出CRTL+C终止之前的命令。
2.执行如下命令,将Kibana的service转发到本地。
kubectl port-forward service/quickstart-kb-http 5601 --address=0.0.0.0
3.在本地电脑上通过浏览器拜访URL: https://{试验ECS公网ip}:5601。
4.输出用户名明码。
用户名:elastic 明码:下面获取的ES拜访明码
5.登录后创立如下三个Index patthen。
6.在输入框中输出相干关键字,即可搜寻PolarDB-X相干日志。
例:搜寻蕴含select关键字的SQL。
message.sql: "create"
原文链接
本文为阿里云原创内容,未经容许不得转载。