Skip to content

Commit fe64380

Browse files
committed
feat: add server monitor ingest service with Docker and configuration updates
1 parent 449a1db commit fe64380

24 files changed

+5443
-6
lines changed

.github/workflows/build.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,21 @@ jobs:
255255
- name: build docker image
256256
run: sudo docker build -f ./ProbeIngest/Dockerfile .
257257

258+
docker-build-server-monitor-ingest:
259+
runs-on: ubuntu-latest
260+
env:
261+
CI_PIPELINE_ID: ${{github.run_number}}
262+
steps:
263+
- name: Checkout
264+
uses: actions/checkout@v4
265+
266+
- name: Preinstall
267+
run: npm run prerun
268+
269+
# build image probe api
270+
- name: build docker image
271+
run: sudo docker build -f ./ServerMonitorIngest/Dockerfile .
272+
258273
docker-build-open-telemetry-ingest:
259274
runs-on: ubuntu-latest
260275
env:

.github/workflows/compile.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,18 @@ jobs:
217217
- run: cd Common && npm install
218218
- run: cd ProbeIngest && npm install && npm run compile && npm run dep-check
219219

220+
compile-server-monitor-ingest:
221+
runs-on: ubuntu-latest
222+
env:
223+
CI_PIPELINE_ID: ${{github.run_number}}
224+
steps:
225+
- uses: actions/checkout@v4
226+
- uses: actions/setup-node@v4
227+
with:
228+
node-version: latest
229+
- run: cd Common && npm install
230+
- run: cd ServerMonitorIngest && npm install && npm run compile && npm run dep-check
231+
220232
compile-open-telemetry-ingest:
221233
runs-on: ubuntu-latest
222234
env:

.github/workflows/release.yml

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,69 @@ jobs:
613613
GIT_SHA=${{ github.sha }}
614614
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
615615
616+
617+
server-monitor-ingest-docker-image-deploy:
618+
needs: [generate-build-number]
619+
runs-on: ubuntu-latest
620+
steps:
621+
- name: Docker Meta
622+
id: meta
623+
uses: docker/metadata-action@v4
624+
with:
625+
images: |
626+
oneuptime/server-monitor-ingest
627+
ghcr.io/oneuptime/server-monitor-ingest
628+
tags: |
629+
type=raw,value=release,enable=true
630+
type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}},pattern={{version}},enable=true
631+
632+
- uses: actions/checkout@v4
633+
with:
634+
ref: ${{ github.ref }}
635+
636+
- uses: actions/setup-node@v4
637+
with:
638+
node-version: latest
639+
640+
- name: Set up QEMU
641+
uses: docker/setup-qemu-action@v2
642+
643+
- name: Set up Docker Buildx
644+
uses: docker/setup-buildx-action@v2
645+
646+
- name: Generate Dockerfile from Dockerfile.tpl
647+
run: npm run prerun
648+
649+
# Build and deploy probe-ingest.
650+
651+
- name: Login to Docker Hub
652+
uses: docker/[email protected]
653+
with:
654+
username: ${{ secrets.DOCKERHUB_USERNAME }}
655+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
656+
657+
- name: Login to GitHub Container Registry
658+
uses: docker/[email protected]
659+
with:
660+
registry: ghcr.io
661+
username: ${{ github.repository_owner }}
662+
password: ${{ secrets.GITHUB_TOKEN }}
663+
664+
- name: Build and push
665+
uses: docker/build-push-action@v4
666+
with:
667+
file: ./ServerMonitorIngest/Dockerfile
668+
context: .
669+
platforms: linux/amd64,linux/arm64
670+
push: true
671+
tags: ${{ steps.meta.outputs.tags }}
672+
labels: ${{ steps.meta.outputs.labels }}
673+
build-args: |
674+
GIT_SHA=${{ github.sha }}
675+
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
676+
677+
678+
616679
open-telemetry-ingest-docker-image-deploy:
617680
needs: [generate-build-number]
618681
runs-on: ubuntu-latest
@@ -1590,7 +1653,7 @@ jobs:
15901653

15911654
test-e2e-release-saas:
15921655
runs-on: ubuntu-latest
1593-
needs: [open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, fluent-ingest-docker-image-deploy, docs-docker-image-deploy, api-reference-docker-image-deploy, workflow-docker-image-deploy, llm-docker-image-deploy, accounts-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, dashboard-docker-image-deploy, haraka-docker-image-deploy, probe-ingest-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, status-page-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, nginx-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
1656+
needs: [open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, fluent-ingest-docker-image-deploy, docs-docker-image-deploy, api-reference-docker-image-deploy, workflow-docker-image-deploy, llm-docker-image-deploy, accounts-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, dashboard-docker-image-deploy, haraka-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, status-page-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, nginx-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
15941657
env:
15951658
CI_PIPELINE_ID: ${{github.run_number}}
15961659
steps:
@@ -1643,7 +1706,7 @@ jobs:
16431706
test-e2e-release-self-hosted:
16441707
runs-on: ubuntu-latest
16451708
# After all the jobs runs
1646-
needs: [open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, incoming-request-ingest-docker-image-deploy, fluent-ingest-docker-image-deploy, docs-docker-image-deploy, api-reference-docker-image-deploy, workflow-docker-image-deploy, llm-docker-image-deploy, accounts-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, dashboard-docker-image-deploy, haraka-docker-image-deploy, probe-ingest-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, status-page-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, nginx-docker-image-deploy]
1709+
needs: [open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, incoming-request-ingest-docker-image-deploy, fluent-ingest-docker-image-deploy, docs-docker-image-deploy, api-reference-docker-image-deploy, workflow-docker-image-deploy, llm-docker-image-deploy, accounts-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, dashboard-docker-image-deploy, haraka-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, status-page-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, nginx-docker-image-deploy]
16471710
env:
16481711
CI_PIPELINE_ID: ${{github.run_number}}
16491712
steps:

.github/workflows/test-release.yaml

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,72 @@ jobs:
664664
GIT_SHA=${{ github.sha }}
665665
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
666666
667+
668+
669+
server-monitor-ingest-docker-image-deploy:
670+
needs: generate-build-number
671+
runs-on: ubuntu-latest
672+
steps:
673+
- name: Docker Meta
674+
id: meta
675+
uses: docker/metadata-action@v4
676+
with:
677+
images: |
678+
oneuptime/server-monitor-ingest
679+
ghcr.io/oneuptime/server-monitor-ingest
680+
tags: |
681+
type=raw,value=test,enable=true
682+
type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true
683+
684+
685+
- uses: actions/checkout@v4
686+
with:
687+
ref: ${{ github.ref }}
688+
689+
- uses: actions/setup-node@v4
690+
with:
691+
node-version: latest
692+
693+
- name: Set up QEMU
694+
uses: docker/setup-qemu-action@v2
695+
696+
- name: Set up Docker Buildx
697+
uses: docker/setup-buildx-action@v2
698+
699+
- name: Generate Dockerfile from Dockerfile.tpl
700+
run: npm run prerun
701+
702+
# Build and deploy ServerMonitorIngest.
703+
704+
- name: Login to Docker Hub
705+
uses: docker/[email protected]
706+
with:
707+
username: ${{ secrets.DOCKERHUB_USERNAME }}
708+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
709+
710+
- name: Login to GitHub Container Registry
711+
uses: docker/[email protected]
712+
with:
713+
registry: ghcr.io
714+
username: ${{ github.repository_owner }}
715+
password: ${{ secrets.GITHUB_TOKEN }}
716+
717+
- name: Build and push
718+
uses: docker/build-push-action@v4
719+
with:
720+
file: ./ServerMonitorIngest/Dockerfile
721+
context: .
722+
platforms: linux/amd64,linux/arm64
723+
push: true
724+
tags: ${{ steps.meta.outputs.tags }}
725+
labels: ${{ steps.meta.outputs.labels }}
726+
build-args: |
727+
GIT_SHA=${{ github.sha }}
728+
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
729+
730+
731+
732+
667733
incoming-request-ingest-docker-image-deploy:
668734
needs: generate-build-number
669735
runs-on: ubuntu-latest
@@ -1530,7 +1596,7 @@ jobs:
15301596
15311597
test-helm-chart:
15321598
runs-on: ubuntu-latest
1533-
needs: [infrastructure-agent-deploy, llm-docker-image-deploy, open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, docs-docker-image-deploy, worker-docker-image-deploy, workflow-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, api-reference-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, probe-ingest-docker-image-deploy, probe-docker-image-deploy, haraka-docker-image-deploy, dashboard-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, accounts-docker-image-deploy, otel-collector-docker-image-deploy, status-page-docker-image-deploy, nginx-docker-image-deploy, e2e-docker-image-deploy, fluent-ingest-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
1599+
needs: [infrastructure-agent-deploy, llm-docker-image-deploy, open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, docs-docker-image-deploy, worker-docker-image-deploy, workflow-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, api-reference-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, probe-docker-image-deploy, haraka-docker-image-deploy, dashboard-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, accounts-docker-image-deploy, otel-collector-docker-image-deploy, status-page-docker-image-deploy, nginx-docker-image-deploy, e2e-docker-image-deploy, fluent-ingest-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
15341600
env:
15351601
CI_PIPELINE_ID: ${{github.run_number}}
15361602
steps:

.vscode/launch.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,20 @@
175175
"restart": true,
176176
"autoAttachChildProcesses": true
177177
},
178+
{
179+
"address": "127.0.0.1",
180+
"localRoot": "${workspaceFolder}/ServerMonitorIngest",
181+
"name": "ServerMonitorIngest: Debug with Docker",
182+
"port": 9941,
183+
"remoteRoot": "/usr/src/app",
184+
"request": "attach",
185+
"skipFiles": [
186+
"<node_internals>/**"
187+
],
188+
"type": "node",
189+
"restart": true,
190+
"autoAttachChildProcesses": true
191+
},
178192
{
179193
"address": "127.0.0.1",
180194
"localRoot": "${workspaceFolder}/IncomingRequestIngest",
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# OneUptime server-monitor-ingest Deployment
2+
3+
apiVersion: apps/v1
4+
kind: Deployment
5+
metadata:
6+
name: {{ printf "%s-%s" $.Release.Name "server-monitor-ingest" }}
7+
namespace: {{ $.Release.Namespace }}
8+
labels:
9+
app: {{ printf "%s-%s" $.Release.Name "server-monitor-ingest" }}
10+
app.kubernetes.io/part-of: oneuptime
11+
app.kubernetes.io/managed-by: Helm
12+
appname: oneuptime
13+
date: "{{ now | unixEpoch }}"
14+
spec:
15+
selector:
16+
matchLabels:
17+
app: {{ printf "%s-%s" $.Release.Name "server-monitor-ingest" }}
18+
{{- if $.Values.deployment.serverMonitorIngest.replicaCount }}
19+
replicas: {{ $.Values.deployment.serverMonitorIngest.replicaCount }}
20+
{{- else }}
21+
replicas: {{ $.Values.deployment.replicaCount }}
22+
{{- end }}
23+
template:
24+
metadata:
25+
labels:
26+
app: {{ printf "%s-%s" $.Release.Name "server-monitor-ingest" }}
27+
date: "{{ now | unixEpoch }}"
28+
appname: oneuptime
29+
spec:
30+
volumes:
31+
- name: greenlockrc
32+
emptyDir:
33+
sizeLimit: "1Gi"
34+
{{- if $.Values.podSecurityContext }}
35+
securityContext: {{- $.Values.podSecurityContext | toYaml | nindent 8 }}
36+
{{- end }}
37+
{{- if $.Values.imagePullSecrets }}
38+
imagePullSecrets:
39+
{{- toYaml $.Values.imagePullSecrets | nindent 8 }}
40+
{{- end }}
41+
{{- if $.Values.affinity }}
42+
affinity: {{- $.Values.affinity | toYaml | nindent 8 }}
43+
{{- end }}
44+
{{- if $.Values.tolerations }}
45+
tolerations: {{- $.Values.tolerations | toYaml | nindent 8 }}
46+
{{- end }}
47+
{{- if $.Values.nodeSelector }}
48+
nodeSelector: {{- $.Values.nodeSelector | toYaml | nindent 8 }}
49+
{{- end }}
50+
containers:
51+
- image: {{ printf "%s/%s/%s:%s" $.Values.image.registry $.Values.image.repository "server-monitor-ingest" $.Values.image.tag }}
52+
name: {{ printf "%s-%s" $.Release.Name "server-monitor-ingest" }}
53+
{{- if $.Values.startupProbe.enabled }}
54+
# Startup probe
55+
startupProbe:
56+
httpGet:
57+
path: /status/live
58+
port: {{ $.Values.port.serverMonitorIngest }}
59+
periodSeconds: {{ $.Values.startupProbe.periodSeconds }}
60+
failureThreshold: {{ $.Values.startupProbe.failureThreshold }}
61+
{{- end }}
62+
{{- if $.Values.livenessProbe.enabled }}
63+
# Liveness probe
64+
livenessProbe:
65+
httpGet:
66+
path: /status/live
67+
port: {{ $.Values.port.serverMonitorIngest }}
68+
periodSeconds: {{ $.Values.livenessProbe.periodSeconds }}
69+
timeoutSeconds: {{ $.Values.livenessProbe.timeoutSeconds }}
70+
initialDelaySeconds: {{ $.Values.livenessProbe.initialDelaySeconds }}
71+
{{- end }}
72+
{{- if $.Values.readinessProbe.enabled }}
73+
# Readyness Probe
74+
readinessProbe:
75+
httpGet:
76+
path: /status/ready
77+
port: {{ $.Values.port.serverMonitorIngest }}
78+
periodSeconds: {{ $.Values.readinessProbe.periodSeconds }}
79+
initialDelaySeconds: {{ $.Values.readinessProbe.initialDelaySeconds }}
80+
timeoutSeconds: {{ $.Values.readinessProbe.timeoutSeconds }}
81+
{{- end }}
82+
{{- if $.Values.containerSecurityContext }}
83+
securityContext: {{- $.Values.containerSecurityContext | toYaml | nindent 12 }}
84+
{{- end }}
85+
imagePullPolicy: {{ $.Values.image.pullPolicy }}
86+
env:
87+
{{- include "oneuptime.env.common" . | nindent 12 }}
88+
{{- include "oneuptime.env.commonServer" . | nindent 12 }}
89+
{{- include "oneuptime.env.oneuptimeSecret" . | nindent 12 }}
90+
- name: OPENTELEMETRY_EXPORTER_OTLP_HEADERS
91+
value: {{ $.Values.openTelemetryExporter.headers }}
92+
- name: PORT
93+
value: {{ $.Values.port.serverMonitorIngest | quote }}
94+
- name: DISABLE_TELEMETRY
95+
value: {{ $.Values.serverMonitorIngest.disableTelemetryCollection | quote }}
96+
ports:
97+
- containerPort: {{ $.Values.port.serverMonitorIngest }}
98+
protocol: TCP
99+
name: http
100+
restartPolicy: {{ $.Values.image.restartPolicy }}
101+
102+
---
103+
104+
# OneUptime server-monitor-ingest Service
105+
{{- $serverMonitorIngestPorts := dict "port" $.Values.port.serverMonitorIngest -}}
106+
{{- $serverMonitorIngestServiceArgs := dict "ServiceName" "server-monitor-ingest" "Ports" $serverMonitorIngestPorts "Release" $.Release "Values" $.Values -}}
107+
{{- include "oneuptime.service" $serverMonitorIngestServiceArgs }}
108+
---
109+
110+
# OneUptime server-monitor-ingest autoscaler
111+
{{- $serverMonitorIngestAutoScalerArgs := dict "ServiceName" "server-monitor-ingest" "Release" $.Release "Values" $.Values -}}
112+
{{- include "oneuptime.autoscaler" $serverMonitorIngestAutoScalerArgs }}
113+
---

HelmChart/Public/oneuptime/values.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ deployment:
3131
replicaCount: 1
3232
probeIngest:
3333
replicaCount:
34+
serverMonitorIngest:
35+
replicaCount:
3436
openTelemetryIngest:
3537
replicaCount:
3638
fluentIngest:
@@ -221,6 +223,7 @@ probes:
221223
port:
222224
app: 3002
223225
probeIngest: 3400
226+
serverMonitorIngest: 3404
224227
openTelemetryIngest: 3403
225228
fluentIngest: 3401
226229
incomingRequestIngest: 3402
@@ -472,6 +475,9 @@ incomingRequestIngest:
472475
isolatedVM:
473476
disableTelemetryCollection: false
474477

478+
serverMonitorIngest:
479+
disableTelemetryCollection: false
480+
475481

476482
slackApp:
477483
clientId:

Nginx/default.conf.template

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ upstream open-telemetry-ingest {
1414
server ${SERVER_OPEN_TELEMETRY_INGEST_HOSTNAME}:${OPEN_TELEMETRY_INGEST_PORT} weight=10 max_fails=3 fail_timeout=30s;
1515
}
1616

17+
18+
upstream server-monitor-ingest {
19+
server ${SERVER_SERVER_MONITOR_INGEST_HOSTNAME}:${SERVER_MONITOR_INGEST_PORT} weight=10 max_fails=3 fail_timeout=30s;
20+
}
21+
1722
upstream incoming-request-ingest {
1823
server ${SERVER_INCOMING_REQUEST_INGEST_HOSTNAME}:${INCOMING_REQUEST_INGEST_PORT} weight=10 max_fails=3 fail_timeout=30s;
1924
}
@@ -630,7 +635,7 @@ server {
630635
proxy_http_version 1.1;
631636
proxy_set_header Upgrade $http_upgrade;
632637
proxy_set_header Connection "upgrade";
633-
proxy_pass http://probe-ingest/server-monitor;
638+
proxy_pass http://server-monitor-ingest/server-monitor;
634639

635640
client_max_body_size 50M;
636641
}

0 commit comments

Comments
 (0)