dns clickhouse改造
This commit is contained in:
@@ -18,7 +18,7 @@ echo "build all edge-admin"
|
||||
echo "=============================="
|
||||
./build.sh linux amd64 plus
|
||||
#./build.sh linux 386 plus
|
||||
./build.sh linux arm64 plus
|
||||
#./build.sh linux arm64 plus
|
||||
#./build.sh linux mips64 plus
|
||||
#./build.sh linux mips64le plus
|
||||
#./build.sh darwin amd64 plus
|
||||
@@ -26,4 +26,3 @@ echo "=============================="
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ fi
|
||||
|
||||
./build.sh linux amd64
|
||||
./build.sh linux 386
|
||||
./build.sh linux arm64
|
||||
#./build.sh linux arm64
|
||||
./build.sh linux mips64
|
||||
./build.sh linux mips64le
|
||||
./build.sh darwin amd64
|
||||
./build.sh darwin arm64
|
||||
#./build.sh darwin arm64
|
||||
|
||||
@@ -87,17 +87,20 @@ func (this *CreatePopupAction) RunPost(params struct {
|
||||
Field("type", params.Type).
|
||||
Require("请选择存储类型")
|
||||
|
||||
baseType, writeTargets := serverconfigs.ParseStorageTypeAndWriteTargets(params.Type)
|
||||
if writeTargets == nil {
|
||||
writeTargets = &serverconfigs.AccessLogWriteTargets{File: true, MySQL: true}
|
||||
baseType, _ := serverconfigs.ParseStorageTypeAndWriteTargets(params.Type)
|
||||
storedType := baseType
|
||||
if serverconfigs.IsFileBasedStorageType(params.Type) {
|
||||
storedType = params.Type
|
||||
}
|
||||
|
||||
var options any = nil
|
||||
switch baseType {
|
||||
case serverconfigs.AccessLogStorageTypeFile:
|
||||
params.Must.
|
||||
Field("filePath", params.FilePath).
|
||||
Require("请输入日志文件路径")
|
||||
if !serverconfigs.IsFileBasedStorageType(params.Type) || (params.Type != serverconfigs.AccessLogStorageTypeFileClickhouse && params.Type != serverconfigs.AccessLogStorageTypeFileMySQLClickhouse) {
|
||||
params.Must.
|
||||
Field("filePath", params.FilePath).
|
||||
Require("请输入日志文件路径")
|
||||
}
|
||||
|
||||
var storage = new(serverconfigs.AccessLogFileStorageConfig)
|
||||
storage.Path = params.FilePath
|
||||
@@ -175,21 +178,15 @@ func (this *CreatePopupAction) RunPost(params struct {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
writeTargetsMap := map[string]bool{
|
||||
"file": writeTargets.File,
|
||||
"mysql": writeTargets.MySQL,
|
||||
"clickhouse": writeTargets.ClickHouse,
|
||||
}
|
||||
writeTargetsJSON, _ := json.Marshal(writeTargetsMap)
|
||||
createResp, err := this.RPC().HTTPAccessLogPolicyRPC().CreateHTTPAccessLogPolicy(this.AdminContext(), &pb.CreateHTTPAccessLogPolicyRequest{
|
||||
Name: params.Name,
|
||||
Type: baseType,
|
||||
Type: storedType,
|
||||
OptionsJSON: optionsJSON,
|
||||
CondsJSON: nil, // TODO
|
||||
IsPublic: params.IsPublic,
|
||||
FirewallOnly: params.FirewallOnly,
|
||||
DisableDefaultDB: params.DisableDefaultDB,
|
||||
WriteTargetsJSON: writeTargetsJSON,
|
||||
WriteTargetsJSON: nil,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
|
||||
@@ -46,11 +46,7 @@ func (this *IndexAction) RunGet(params struct{}) {
|
||||
return
|
||||
}
|
||||
}
|
||||
writeTargets := serverconfigs.ParseWriteTargetsFromPolicy(policy.WriteTargetsJSON, policy.Type, policy.DisableDefaultDB)
|
||||
typeDisplay := serverconfigs.ComposeStorageTypeDisplay(policy.Type, writeTargets)
|
||||
if typeDisplay == "" {
|
||||
typeDisplay = policy.Type
|
||||
}
|
||||
typeDisplay := policy.Type
|
||||
policyMaps = append(policyMaps, maps.Map{
|
||||
"id": policy.Id,
|
||||
"name": policy.Name,
|
||||
|
||||
@@ -36,11 +36,7 @@ func InitPolicy(parent *actionutils.ParentAction, policyId int64) error {
|
||||
}
|
||||
}
|
||||
|
||||
writeTargets := serverconfigs.ParseWriteTargetsFromPolicy(policy.WriteTargetsJSON, policy.Type, policy.DisableDefaultDB)
|
||||
typeDisplay := serverconfigs.ComposeStorageTypeDisplay(policy.Type, writeTargets)
|
||||
if typeDisplay == "" {
|
||||
typeDisplay = policy.Type
|
||||
}
|
||||
typeDisplay := policy.Type
|
||||
|
||||
parent.Data["policy"] = maps.Map{
|
||||
"id": policy.Id,
|
||||
|
||||
@@ -106,21 +106,30 @@ func (this *UpdateAction) RunPost(params struct {
|
||||
Field("type", params.Type).
|
||||
Require("请选择存储类型")
|
||||
|
||||
baseType, writeTargets := serverconfigs.ParseStorageTypeAndWriteTargets(params.Type)
|
||||
if writeTargets == nil {
|
||||
writeTargets = &serverconfigs.AccessLogWriteTargets{File: true, MySQL: true}
|
||||
baseType, _ := serverconfigs.ParseStorageTypeAndWriteTargets(params.Type)
|
||||
storedType := baseType
|
||||
if serverconfigs.IsFileBasedStorageType(params.Type) {
|
||||
storedType = params.Type
|
||||
}
|
||||
|
||||
var options interface{} = nil
|
||||
switch baseType {
|
||||
case serverconfigs.AccessLogStorageTypeFile:
|
||||
params.Must.
|
||||
Field("filePath", params.FilePath).
|
||||
Require("请输入日志文件路径")
|
||||
|
||||
var storage = new(serverconfigs.AccessLogFileStorageConfig)
|
||||
storage.Path = params.FilePath
|
||||
storage.AutoCreate = params.FileAutoCreate
|
||||
if params.Type == serverconfigs.AccessLogStorageTypeFileClickhouse || params.Type == serverconfigs.AccessLogStorageTypeFileMySQLClickhouse {
|
||||
if len(policy.OptionsJSON) > 0 {
|
||||
_ = json.Unmarshal(policy.OptionsJSON, storage)
|
||||
}
|
||||
if len(params.FilePath) > 0 {
|
||||
storage.Path = params.FilePath
|
||||
}
|
||||
} else {
|
||||
params.Must.
|
||||
Field("filePath", params.FilePath).
|
||||
Require("请输入日志文件路径")
|
||||
storage.Path = params.FilePath
|
||||
storage.AutoCreate = params.FileAutoCreate
|
||||
}
|
||||
options = storage
|
||||
case serverconfigs.AccessLogStorageTypeES:
|
||||
params.Must.
|
||||
@@ -195,23 +204,17 @@ func (this *UpdateAction) RunPost(params struct {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
writeTargetsMap := map[string]bool{
|
||||
"file": writeTargets.File,
|
||||
"mysql": writeTargets.MySQL,
|
||||
"clickhouse": writeTargets.ClickHouse,
|
||||
}
|
||||
writeTargetsJSON, _ := json.Marshal(writeTargetsMap)
|
||||
_, err = this.RPC().HTTPAccessLogPolicyRPC().UpdateHTTPAccessLogPolicy(this.AdminContext(), &pb.UpdateHTTPAccessLogPolicyRequest{
|
||||
HttpAccessLogPolicyId: params.PolicyId,
|
||||
Name: params.Name,
|
||||
Type: baseType,
|
||||
Type: storedType,
|
||||
OptionsJSON: optionsJSON,
|
||||
CondsJSON: nil, // TODO
|
||||
IsOn: params.IsOn,
|
||||
IsPublic: params.IsPublic,
|
||||
FirewallOnly: params.FirewallOnly,
|
||||
DisableDefaultDB: params.DisableDefaultDB,
|
||||
WriteTargetsJSON: writeTargetsJSON,
|
||||
WriteTargetsJSON: nil,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- 文件(含 文件 / 文件+MySQL / 文件+ClickHouse / 文件+MySQL+ClickHouse) -->
|
||||
<tbody v-show="type == 'file' || type == 'file_mysql' || type == 'file_clickhouse' || type == 'file_mysql_clickhouse'">
|
||||
<!-- 文件(文件 / 文件+MySQL) -->
|
||||
<tbody v-show="type == 'file' || type == 'file_mysql'">
|
||||
<tr>
|
||||
<td>日志文件路径 *</td>
|
||||
<td>
|
||||
@@ -36,7 +36,9 @@
|
||||
<span class="ui label tiny basic">时:${hour}</span>
|
||||
<span class="ui label tiny basic">分:${minute}</span>
|
||||
<span class="ui label tiny basic">秒:${second}</span>
|
||||
<span class="ui label tiny basic">年月日:${date}</span>,比如<span class="ui label tiny basic">/var/log/web-access-${date}.log</span>,此文件会在API节点上写入。
|
||||
<span class="ui label tiny basic">年月日:${date}</span>,比如<span class="ui label tiny basic">/var/log/web-access-${date}.log</span>。
|
||||
<span v-if="type == 'file_clickhouse' || type == 'file_mysql_clickhouse'">当存储类型包含 ClickHouse 时,此文件会在节点侧写入,并由 Fluent Bit 采集后写入 ClickHouse。</span>
|
||||
<span v-else>此文件会在API节点上写入。</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -51,6 +53,15 @@
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<!-- 文件+ClickHouse / 文件+MySQL+ClickHouse -->
|
||||
<tbody v-show="type == 'file_clickhouse' || type == 'file_mysql_clickhouse'">
|
||||
<tr>
|
||||
<td>日志文件路径</td>
|
||||
<td>
|
||||
<p class="comment">当前类型包含 ClickHouse,日志文件路径将由节点侧按公用策略自动复用,或回退到默认日志目录,无需手动输入。</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
<!-- Elastic Search -->
|
||||
<tbody v-show="type == 'es'">
|
||||
@@ -242,4 +253,4 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<submit-btn></submit-btn>
|
||||
</form>
|
||||
</form>
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- 文件 -->
|
||||
<tbody v-show="policy.typeDisplay == 'file' || policy.typeDisplay == 'file_mysql' || policy.typeDisplay == 'file_clickhouse' || policy.typeDisplay == 'file_mysql_clickhouse'">
|
||||
<!-- 文件(文件 / 文件+MySQL) -->
|
||||
<tbody v-show="policy.typeDisplay == 'file' || policy.typeDisplay == 'file_mysql'">
|
||||
<tr>
|
||||
<td>日志文件路径 *</td>
|
||||
<td>
|
||||
@@ -37,7 +37,9 @@
|
||||
<span class="ui label tiny basic">时:${hour}</span>
|
||||
<span class="ui label tiny basic">分:${minute}</span>
|
||||
<span class="ui label tiny basic">秒:${second}</span>
|
||||
<span class="ui label tiny basic">年月日:${date}</span>,比如<span class="ui label tin basic">/var/log/web-access-${date}.log</span>,此文件会在API节点上写入。
|
||||
<span class="ui label tiny basic">年月日:${date}</span>,比如<span class="ui label tiny basic">/var/log/web-access-${date}.log</span>。
|
||||
<span v-if="policy.typeDisplay == 'file_clickhouse' || policy.typeDisplay == 'file_mysql_clickhouse'">当存储类型包含 ClickHouse 时,此文件会在节点侧写入,并由 Fluent Bit 采集后写入 ClickHouse。</span>
|
||||
<span v-else>此文件会在API节点上写入。</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -52,6 +54,15 @@
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<!-- 文件+ClickHouse / 文件+MySQL+ClickHouse -->
|
||||
<tbody v-show="policy.typeDisplay == 'file_clickhouse' || policy.typeDisplay == 'file_mysql_clickhouse'">
|
||||
<tr>
|
||||
<td>日志文件路径</td>
|
||||
<td>
|
||||
<p class="comment">当前类型包含 ClickHouse,日志文件路径将由节点侧按公用策略自动复用,或回退到默认日志目录,无需手动输入。</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
<!-- Elastic Search -->
|
||||
<tbody v-show="policy.typeDisplay == 'es'">
|
||||
@@ -247,4 +258,4 @@
|
||||
</tr>
|
||||
</table>
|
||||
<submit-btn></submit-btn>
|
||||
</form>
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user