Skip to content

Passenger status monitoring agent for Prometheus.

License

Notifications You must be signed in to change notification settings

rakutentech/passenger-go-exporter

Repository files navigation

Passenger Go Exporter

Passenger status monitoring agent for Prometheus.

You can be used as a sidecar container for Passenger applications. Implemented in golang, keeps memory consumption below 100MB, and runs on CPU 0.05 core.

Supported version

  • golang: 1.23
  • Passenger: 6.0.23, or later.

All other versions have not been tested.

How to use

We expect to using this as a sidecar.
A example is in here.

Sidecar Pattern

Container images can be pulled from ghcr.io/rakutentech/passenger-go-exporter.
Passsenger Go Exporter must be shared the directory specified by PASSENGER_INSTANCE_REGISTRY_DIR with passenger application.

Passenger Application side defines PASSENGER_INSTANCE_REGISTRY_DIR environment varibles, and specify emptyDir volume. Passenger Go Exporter side defines similarly.

    spec:
      volumes:
        - name: tmp
          emptyDir: {}
      containers:
        - name: example
          env:
            - name: PASSENGER_INSTANCE_REGISTRY_DIR
              value: /tmp/ruby
          volumeMounts:
            - mountPath: /tmp/ruby
              name: tmp
        - name: passenger-exporter
          image: ghcr.io/rakutentech/passenger-go-exporter:v1.4.4
          imagePullPolicy: IfNotPresent
          env:
            - name: PASSENGER_INSTANCE_REGISTRY_DIR
              value: /tmp/ruby
          volumeMounts:
            - mountPath: /tmp/ruby
              name: tmp

Passenger Go Exporter works with the following resources definitions.

          resources:
            limits:
              cpu: 20m
              memory: 60Mi
            requests:
              cpu: 20m
              memory: 60Mi

Health check of Passenger Go Exporter is following contents.

          livenessProbe:
            initialDelaySeconds: 10
            timeoutSeconds: 2
            httpGet:
              path: /health
              port: 9768
          readinessProbe:
            timeoutSeconds: 1
            httpGet:
              path: /health
              port: 9768

Default of Port number is 9768. But this could be changed by args defined.

          - args:
            - "-port"
            - "9149"

Running Options

Name Description Default
-port Listening port number 9768

Collect Metrics

Name Labels Description
passenger_go_wait_list_size name number of requests in queue in each application
passenger_go_process_count name number of current application processes in each application
passenger_go_process_real_memory_bytes name, pid memory usage of process in each PID
passenger_go_process_processed name, pid the number of requests handled by each process