乐趣区

关于elasticsearch:实践教程之采集-PolarDBX-SQL-日志到-ElasticSearch

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/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  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/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  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"

原文链接

本文为阿里云原创内容,未经容许不得转载。

退出移动版