Skip to content

Commit 025b34b

Browse files
committed
environment(kubernetes): fix stats err bug
1 parent 953b8f2 commit 025b34b

File tree

5 files changed

+57
-308
lines changed

5 files changed

+57
-308
lines changed

cmd/diagnostics.go

+28-47
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package cmd
22

33
import (
4-
"context"
54
"errors"
65
"fmt"
76
"io"
@@ -16,14 +15,12 @@ import (
1615
"github.com/AlecAivazis/survey/v2"
1716
"github.com/AlecAivazis/survey/v2/terminal"
1817
"github.com/apex/log"
19-
"github.com/docker/docker/api/types"
2018
"github.com/docker/docker/pkg/parsers/kernel"
2119
"github.com/docker/docker/pkg/parsers/operatingsystem"
2220
"github.com/goccy/go-json"
2321
"github.com/spf13/cobra"
2422

2523
"github.com/pterodactyl/wings/config"
26-
"github.com/pterodactyl/wings/environment"
2724
"github.com/pterodactyl/wings/loggers/cli"
2825
"github.com/pterodactyl/wings/system"
2926
)
@@ -91,15 +88,15 @@ func diagnosticsCmdRun(*cobra.Command, []string) {
9188
panic(err)
9289
}
9390

94-
dockerVersion, dockerInfo, dockerErr := getDockerInfo()
91+
// dockerVersion, dockerInfo, dockerErr := getDockerInfo()
9592

9693
output := &strings.Builder{}
9794
fmt.Fprintln(output, "Pterodactyl Wings - Diagnostics Report")
9895
printHeader(output, "Versions")
9996
fmt.Fprintln(output, " Wings:", system.Version)
100-
if dockerErr == nil {
101-
fmt.Fprintln(output, " Docker:", dockerVersion.Version)
102-
}
97+
// if dockerErr == nil {
98+
// fmt.Fprintln(output, " Docker:", dockerVersion.Version)
99+
// }
103100
if v, err := kernel.GetKernelVersion(); err == nil {
104101
fmt.Fprintln(output, " Kernel:", v)
105102
}
@@ -131,30 +128,30 @@ func diagnosticsCmdRun(*cobra.Command, []string) {
131128
fmt.Fprintln(output, " Server Time:", time.Now().Format(time.RFC1123Z))
132129
fmt.Fprintln(output, " Debug Mode:", cfg.Debug)
133130

134-
printHeader(output, "Docker: Info")
135-
if dockerErr == nil {
136-
fmt.Fprintln(output, "Server Version:", dockerInfo.ServerVersion)
137-
fmt.Fprintln(output, "Storage Driver:", dockerInfo.Driver)
138-
if dockerInfo.DriverStatus != nil {
139-
for _, pair := range dockerInfo.DriverStatus {
140-
fmt.Fprintf(output, " %s: %s\n", pair[0], pair[1])
141-
}
142-
}
143-
if dockerInfo.SystemStatus != nil {
144-
for _, pair := range dockerInfo.SystemStatus {
145-
fmt.Fprintf(output, " %s: %s\n", pair[0], pair[1])
146-
}
147-
}
148-
fmt.Fprintln(output, "LoggingDriver:", dockerInfo.LoggingDriver)
149-
fmt.Fprintln(output, " CgroupDriver:", dockerInfo.CgroupDriver)
150-
if len(dockerInfo.Warnings) > 0 {
151-
for _, w := range dockerInfo.Warnings {
152-
fmt.Fprintln(output, w)
153-
}
154-
}
155-
} else {
156-
fmt.Fprintln(output, dockerErr.Error())
157-
}
131+
// printHeader(output, "Docker: Info")
132+
// if dockerErr == nil {
133+
// fmt.Fprintln(output, "Server Version:", dockerInfo.ServerVersion)
134+
// fmt.Fprintln(output, "Storage Driver:", dockerInfo.Driver)
135+
// if dockerInfo.DriverStatus != nil {
136+
// for _, pair := range dockerInfo.DriverStatus {
137+
// fmt.Fprintf(output, " %s: %s\n", pair[0], pair[1])
138+
// }
139+
// }
140+
// if dockerInfo.SystemStatus != nil {
141+
// for _, pair := range dockerInfo.SystemStatus {
142+
// fmt.Fprintf(output, " %s: %s\n", pair[0], pair[1])
143+
// }
144+
// }
145+
// fmt.Fprintln(output, "LoggingDriver:", dockerInfo.LoggingDriver)
146+
// fmt.Fprintln(output, " CgroupDriver:", dockerInfo.CgroupDriver)
147+
// if len(dockerInfo.Warnings) > 0 {
148+
// for _, w := range dockerInfo.Warnings {
149+
// fmt.Fprintln(output, w)
150+
// }
151+
// }
152+
// } else {
153+
// fmt.Fprintln(output, dockerErr.Error())
154+
// }
158155

159156
printHeader(output, "Docker: Running Containers")
160157
c := exec.Command("docker", "ps")
@@ -206,22 +203,6 @@ func diagnosticsCmdRun(*cobra.Command, []string) {
206203
}
207204
}
208205

209-
func getDockerInfo() (types.Version, types.Info, error) {
210-
client, err := environment.Docker()
211-
if err != nil {
212-
return types.Version{}, types.Info{}, err
213-
}
214-
dockerVersion, err := client.ServerVersion(context.Background())
215-
if err != nil {
216-
return types.Version{}, types.Info{}, err
217-
}
218-
dockerInfo, err := client.Info(context.Background())
219-
if err != nil {
220-
return types.Version{}, types.Info{}, err
221-
}
222-
return dockerVersion, dockerInfo, nil
223-
}
224-
225206
func uploadToHastebin(hbUrl, content string) (string, error) {
226207
r := strings.NewReader(content)
227208
u, err := url.Parse(hbUrl)

environment/docker.go

-107
This file was deleted.

environment/kubernetes/api.go

-118
This file was deleted.

environment/kubernetes/stats.go

+15-14
Original file line numberDiff line numberDiff line change
@@ -58,19 +58,16 @@ func (e *Environment) pollResources(ctx context.Context) error {
5858
break
5959
}
6060

61+
// Don't throw an error if pod metrics are not available, just keep trying.
6162
podMetrics, err := mc.MetricsV1beta1().PodMetricses(config.Get().System.Namespace).Get(ctx, e.Id, metav1.GetOptions{})
62-
if err != nil {
63-
return err
64-
}
65-
66-
podContainers := podMetrics.Containers
67-
for _, container := range podContainers {
68-
if container.Name != "process" {
69-
continue
70-
}
7163

72-
cpuQuantity := container.Usage.Cpu().AsDec().String()
73-
memQuantity, ok := container.Usage.Memory().AsInt64()
64+
// Check if container index 0 is not out of range,
65+
// if it is then send only the uptime stats.
66+
//
67+
// @see https://stackoverflow.com/questions/26126235/panic-runtime-error-index-out-of-range-in-go
68+
if len(podMetrics.Containers) != 0 {
69+
cpuQuantity := podMetrics.Containers[0].Usage.Cpu().AsDec().String()
70+
memQuantity, ok := podMetrics.Containers[0].Usage.Memory().AsInt64()
7471
if !ok {
7572
break
7673
}
@@ -82,15 +79,19 @@ func (e *Environment) pollResources(ctx context.Context) error {
8279
break
8380
}
8481

85-
// msg := fmt.Sprintf("CPU usage: %f \n Memory usage: %d", f, memQuantity)
86-
// fmt.Println(msg)
87-
8882
st := environment.Stats{
8983
Uptime: uptime,
9084
Memory: uint64(memQuantity),
9185
CpuAbsolute: f * 100,
9286
}
9387
e.Events().Publish(environment.ResourceEvent, st)
88+
} else {
89+
uptime = uptime + 1000
90+
91+
st := environment.Stats{
92+
Uptime: uptime,
93+
}
94+
e.Events().Publish(environment.ResourceEvent, st)
9495
}
9596

9697
time.Sleep(time.Second)

0 commit comments

Comments
 (0)