Skip to content

Commit 8326ca8

Browse files
authored
Report EnterpriseSearch memory usage (#4499) (#4503)
1 parent 5e18403 commit 8326ca8

File tree

4 files changed

+55
-2
lines changed

4 files changed

+55
-2
lines changed

pkg/controller/enterprisesearch/pod.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
)
2020

2121
const (
22+
EnvJavaOpts = "JAVA_OPTS"
2223
HTTPPort = 3002
2324
DefaultJavaOpts = "-Xms3500m -Xmx3500m"
2425
ConfigHashLabelName = "enterprisesearch.k8s.elastic.co/config-hash"
@@ -36,7 +37,7 @@ var (
3637
},
3738
}
3839
DefaultEnv = []corev1.EnvVar{
39-
{Name: "JAVA_OPTS", Value: DefaultJavaOpts},
40+
{Name: EnvJavaOpts, Value: DefaultJavaOpts},
4041
}
4142
ReadinessProbe = corev1.Probe{
4243
FailureThreshold: 3,

pkg/license/aggregator.go

+30
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ import (
1313

1414
apmv1 "github.com/elastic/cloud-on-k8s/pkg/apis/apm/v1"
1515
esv1 "github.com/elastic/cloud-on-k8s/pkg/apis/elasticsearch/v1"
16+
entv1 "github.com/elastic/cloud-on-k8s/pkg/apis/enterprisesearch/v1"
1617
kbv1 "github.com/elastic/cloud-on-k8s/pkg/apis/kibana/v1"
1718
"github.com/elastic/cloud-on-k8s/pkg/controller/apmserver"
1819
"github.com/elastic/cloud-on-k8s/pkg/controller/elasticsearch/nodespec"
1920
essettings "github.com/elastic/cloud-on-k8s/pkg/controller/elasticsearch/settings"
21+
"github.com/elastic/cloud-on-k8s/pkg/controller/enterprisesearch"
2022
"github.com/elastic/cloud-on-k8s/pkg/controller/kibana"
2123
"github.com/elastic/cloud-on-k8s/pkg/utils/k8s"
2224
"github.com/pkg/errors"
@@ -39,6 +41,7 @@ func (a Aggregator) AggregateMemory() (resource.Quantity, error) {
3941
a.aggregateElasticsearchMemory,
4042
a.aggregateKibanaMemory,
4143
a.aggregateApmServerMemory,
44+
a.aggregateEnterpriseSearchMemory,
4245
} {
4346
memory, err := f()
4447
if err != nil {
@@ -79,6 +82,33 @@ func (a Aggregator) aggregateElasticsearchMemory() (resource.Quantity, error) {
7982
return total, nil
8083
}
8184

85+
func (a Aggregator) aggregateEnterpriseSearchMemory() (resource.Quantity, error) {
86+
var entList entv1.EnterpriseSearchList
87+
err := a.client.List(context.Background(), &entList)
88+
if err != nil {
89+
return resource.Quantity{}, errors.Wrap(err, "failed to aggregate Enterprise Search memory")
90+
}
91+
92+
var total resource.Quantity
93+
for _, ent := range entList.Items {
94+
mem, err := containerMemLimits(
95+
ent.Spec.PodTemplate.Spec.Containers,
96+
entv1.EnterpriseSearchContainerName,
97+
enterprisesearch.EnvJavaOpts, memFromJavaOpts,
98+
enterprisesearch.DefaultMemoryLimits,
99+
)
100+
if err != nil {
101+
return resource.Quantity{}, errors.Wrap(err, "failed to aggregate Enterprise Search memory")
102+
}
103+
104+
total.Add(multiply(mem, ent.Spec.Count))
105+
log.V(1).Info("Collecting", "namespace", ent.Namespace, "ent_name", ent.Name,
106+
"memory", mem.String(), "count", ent.Spec.Count)
107+
}
108+
109+
return total, nil
110+
}
111+
82112
func (a Aggregator) aggregateKibanaMemory() (resource.Quantity, error) {
83113
var kbList kbv1.KibanaList
84114
err := a.client.List(context.Background(), &kbList)

pkg/license/aggregator_test.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
apmv1 "github.com/elastic/cloud-on-k8s/pkg/apis/apm/v1"
1515
esv1 "github.com/elastic/cloud-on-k8s/pkg/apis/elasticsearch/v1"
16+
entv1 "github.com/elastic/cloud-on-k8s/pkg/apis/enterprisesearch/v1"
1617
kbv1 "github.com/elastic/cloud-on-k8s/pkg/apis/kibana/v1"
1718
"github.com/elastic/cloud-on-k8s/pkg/utils/k8s"
1819
"github.com/stretchr/testify/assert"
@@ -143,7 +144,7 @@ func TestAggregator(t *testing.T) {
143144

144145
val, err := aggregator.AggregateMemory()
145146
require.NoError(t, err)
146-
require.Equal(t, 324.1705472, inGB(val))
147+
require.Equal(t, 349.940350976, inGB(val))
147148
}
148149

149150
func readObjects(t *testing.T, filePath string) []runtime.Object {
@@ -153,6 +154,7 @@ func readObjects(t *testing.T, filePath string) []runtime.Object {
153154
scheme.AddKnownTypes(esv1.GroupVersion, &esv1.Elasticsearch{}, &esv1.ElasticsearchList{})
154155
scheme.AddKnownTypes(kbv1.GroupVersion, &kbv1.Kibana{}, &kbv1.KibanaList{})
155156
scheme.AddKnownTypes(apmv1.GroupVersion, &apmv1.ApmServer{}, &apmv1.ApmServerList{})
157+
scheme.AddKnownTypes(entv1.GroupVersion, &entv1.EnterpriseSearch{}, &entv1.EnterpriseSearchList{})
156158
decoder := serializer.NewCodecFactory(scheme).UniversalDeserializer()
157159

158160
f, err := os.Open(filePath)

pkg/license/testdata/stack.yaml

+20
Original file line numberDiff line numberDiff line change
@@ -124,3 +124,23 @@ spec:
124124
memory: 2Gi
125125
limits:
126126
memory: 2Gi
127+
---
128+
apiVersion: enterprisesearch.k8s.elastic.co/v1
129+
kind: EnterpriseSearch
130+
metadata:
131+
name: enterprise-search-quickstart
132+
spec:
133+
count: 3
134+
podTemplate:
135+
spec:
136+
containers:
137+
- name: enterprise-search
138+
resources:
139+
requests:
140+
cpu: 3
141+
memory: 8Gi
142+
limits:
143+
memory: 8Gi
144+
env:
145+
- name: JAVA_OPTS
146+
value: -Xms7500m -Xmx7500m

0 commit comments

Comments
 (0)