# Monitoring Microservice

**URL:** <https://discuss.elastic.co/t/monitoring-microservice/335491>\
**Category:** Elastic Agent\
**Created:** [June 8, 2023, 2:55am UTC](https://discuss.elastic.co/t/monitoring-microservice/335491 "2023-06-08T02:55:18Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Suhendra\_sitorus](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/suhendra_sitorus/32/118169_2.png) [@Suhendra\_sitorus](https://discuss.elastic.co/u/Suhendra_sitorus)\
**Post date:** [June 8, 2023, 2:55am UTC](https://discuss.elastic.co/t/monitoring-microservice/335491/1 "2023-06-08T02:55:18Z")

</div>

Hallo,  
I am used ELK version 8.5.0, i am want monitoring Microservice system, the microservice with base pyhton frame work Fast API and the microservice on docker and kubernetes ( OCP ), i have 100 more microservice so with metode installasi agent one by one on my microseervice is imposible or not efficient because to much.

And I try with a elastic agent by docker or OCP is not succes or not work, this attchment for setting elastic agent by kubernetes.  
apiVersion: v1  
kind: ConfigMap  
metadata:  
name: agent-node-datastreams  
namespace: cls-dev  
labels:  
k8s-app: elastic-agent  
data:  
agent.yml: |-  
id: b975a220-fec5-11ed-9372-95f2b3598fbb  
outputs:  
default:  
type: elasticsearch  
hosts:  
- '[http://IP](http://IP) Elastic:9200'  
username: '${ES\_USERNAME}'  
password: '${ES\_PASSWORD}'  
inputs:  
- id: kubernetes/metrics-kubelet-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: kubernetes/metrics  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
kubernetes/metrics-kubernetes.container-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.container  
metricsets:  
- container  
add\_metadata: true  
hosts:  
- 'https://${env.NODE\_NAME}:10250'  
period: 10s  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
ssl.verification\_mode: none  
- id: \>-  
kubernetes/metrics-kubernetes.node-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.node  
metricsets:  
- node  
add\_metadata: true  
hosts:  
- 'https://${env.NODE\_NAME}:10250'  
period: 10s  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
ssl.verification\_mode: none  
- id: \>-  
kubernetes/metrics-kubernetes.pod-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.pod  
metricsets:  
- pod  
add\_metadata: true  
hosts:  
- 'https://${env.NODE\_NAME}:10250'  
period: 10s  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
ssl.verification\_mode: none  
- id: \>-  
kubernetes/metrics-kubernetes.system-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.system  
metricsets:  
- system  
add\_metadata: true  
hosts:  
- 'https://${env.NODE\_NAME}:10250'  
period: 10s  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
ssl.verification\_mode: none  
- id: \>-  
kubernetes/metrics-kubernetes.volume-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.volume  
metricsets:  
- volume  
add\_metadata: true  
hosts:  
- 'https://${env.NODE\_NAME}:10250'  
period: 10s  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
ssl.verification\_mode: none  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
- id: \>-  
kubernetes/metrics-kube-state-metrics-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: kubernetes/metrics  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
kubernetes/metrics-kubernetes.state\_container-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_container  
metricsets:  
- state\_container  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_cronjob-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_cronjob  
metricsets:  
- state\_cronjob  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_daemonset-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_daemonset  
metricsets:  
- state\_daemonset  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_deployment-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_deployment  
metricsets:  
- state\_deployment  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_job-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_job  
metricsets:  
- state\_job  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_node-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_node  
metricsets:  
- state\_node  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_persistentvolume-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_persistentvolume  
metricsets:  
- state\_persistentvolume  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_persistentvolumeclaim-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_persistentvolumeclaim  
metricsets:  
- state\_persistentvolumeclaim  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_pod-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_pod  
metricsets:  
- state\_pod  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_replicaset-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_replicaset  
metricsets:  
- state\_replicaset  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_resourcequota-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_resourcequota  
metricsets:  
- state\_resourcequota  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_service-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_service  
metricsets:  
- state\_service  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_statefulset-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_statefulset  
metricsets:  
- state\_statefulset  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
- id: \>-  
kubernetes/metrics-kubernetes.state\_storageclass-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.state\_storageclass  
metricsets:  
- state\_storageclass  
add\_metadata: true  
hosts:  
- 'kube-state-metrics:8080'  
period: 10s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
- id: kubernetes/metrics-kube-apiserver-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: kubernetes/metrics  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
kubernetes/metrics-kubernetes.apiserver-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.apiserver  
metricsets:  
- apiserver  
hosts:  
- \>-  
https://${env.KUBERNETES\_SERVICE\_HOST}:${env.KUBERNETES\_SERVICE\_PORT}  
period: 30s  
condition: '${kubernetes\_leaderelection.leader} == true'  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
ssl.certificate\_authorities:  
- /var/run/secrets/kubernetes.io/serviceaccount/ca.crt  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
- id: kubernetes/metrics-kube-proxy-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: kubernetes/metrics  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
kubernetes/metrics-kubernetes.proxy-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.proxy  
metricsets:  
- proxy  
hosts:  
- 'localhost:10249'  
period: 10s  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
- id: kubernetes/metrics-kube-scheduler-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: kubernetes/metrics  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
kubernetes/metrics-kubernetes.scheduler-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.scheduler  
metricsets:  
- scheduler  
hosts:  
- '[https://0.0.0.0:10259](https://0.0.0.0:10259)'  
period: 10s  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
ssl.verification\_mode: none  
condition: '${kubernetes.labels.component} == ''kube-scheduler'''  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
- id: \>-  
kubernetes/metrics-kube-controller-manager-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: kubernetes/metrics  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
kubernetes/metrics-kubernetes.controllermanager-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.controllermanager  
metricsets:  
- controllermanager  
hosts:  
- '[https://0.0.0.0:10257](https://0.0.0.0:10257)'  
period: 10s  
bearer\_token\_file: /var/run/secrets/kubernetes.io/serviceaccount/token  
ssl.verification\_mode: none  
condition: '${kubernetes.labels.component} == ''kube-controller-manager'''  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
- id: kubernetes/metrics-events-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: kubernetes/metrics  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
kubernetes/metrics-kubernetes.event-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: metrics  
dataset: kubernetes.event  
metricsets:  
- event  
period: 10s  
add\_metadata: true  
skip\_older: true  
condition: '${kubernetes\_leaderelection.leader} == true'  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
- id: filestream-container-logs-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: filestream  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
kubernetes-container-logs-${kubernetes.pod.name}-${kubernetes.container.id}  
data\_stream:  
type: logs  
dataset: kubernetes.container\_logs  
paths:  
- '/var/log/containers/\*${kubernetes.container.id}.log'  
prospector.scanner.symlinks: true  
parsers:  
- container:  
stream: all  
format: auto  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
- id: filestream-audit-logs-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
revision: 1  
name: kubernetes-1  
type: filestream  
data\_stream:  
namespace: cls-dev  
use\_output: cls-dev  
package\_policy\_id: 8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
streams:  
- id: \>-  
filestream-kubernetes.audit\_logs-8594aef4-88bf-400c-b38d-8fa79f7ba4f9  
data\_stream:  
type: logs  
dataset: kubernetes.audit\_logs  
paths:  
- /var/log/kubernetes/kube-apiserver-audit.log  
exclude\_files:  
- .gz$  
parsers:  
- ndjson:  
add\_error\_key: true  
target: kubernetes\_audit  
processors:  
- rename:  
fields:  
- from: kubernetes\_audit  
to: kubernetes.audit  
- drop\_fields:  
when:  
has\_fields: kubernetes.audit.responseObject  
fields:  
- kubernetes.audit.responseObject.metadata  
- drop\_fields:  
when:  
has\_fields: kubernetes.audit.requestObject  
fields:  
- kubernetes.audit.requestObject.metadata  
- script:  
lang: javascript  
id: dedot\_annotations  
source: |  
function process(event) {  
var audit = event.Get("kubernetes.audit");  
for (var annotation in audit["annotations"]) {  
var annotation\_dedoted = annotation.replace(/./g,'\_')  
event.Rename("kubernetes.audit.annotations."+annotation, "kubernetes.audit.annotations."+annotation\_dedoted)  
}  
return event;  
} function test() {  
var event = process(new Event({ "kubernetes": { "audit": { "annotations": { "[authorization.k8s.io/decision](http://authorization.k8s.io/decision)": "allow", "[authorization.k8s.io/reason](http://authorization.k8s.io/reason)": "RBAC: allowed by ClusterRoleBinding "system:kube-scheduler" of ClusterRole "system:kube-scheduler" to User "system:kube-scheduler"" } } } }));  
if (event.Get("kubernetes.audit.annotations.authorization\_k8s\_io/decision") !== "allow") {  
throw "expected kubernetes.audit.annotations.authorization\_k8s\_io/decision === allow";  
}  
}  
meta:  
package:  
name: kubernetes  
version: 1.29.2  
revision: 2  
agent:  
download:  
source\_uri: '[https://artifacts.elastic.co/downloads/](https://artifacts.elastic.co/downloads/)'  
monitoring:  
namespace: cls-dev  
use\_output: cls-dev  
enabled: true  
logs: true  
metrics: true  
output\_permissions:  
cls-dev:  
\_elastic\_agent\_monitoring:  
indices:  
- names:  
- logs-elastic\_agent.apm\_server-cls-dev  
privileges: &ref\_0  
- auto\_configure  
- create\_doc  
- names:  
- metrics-elastic\_agent.apm\_server-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.auditbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.auditbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.cloud\_defend-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.cloudbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.cloudbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.elastic\_agent-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.endpoint\_security-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.endpoint\_security-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.filebeat\_input-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.filebeat\_input-cls-devt  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.filebeat-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.filebeat-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.fleet\_server-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.fleet\_server-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.heartbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.heartbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.metricbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.metricbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.osquerybeat-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.osquerybeat-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-elastic\_agent.packetbeat-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-elastic\_agent.packetbeat-cls-dev  
privileges: \*ref\_0  
\_elastic\_agent\_checks:  
cluster:  
- monitor  
8594aef4-88bf-400c-b38d-8fa79f7ba4f9:  
indices:  
- names:  
- metrics-kubernetes.container-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.node-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.pod-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.system-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.volume-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_container-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_cronjob-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_daemonset-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_deployment-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_job-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_node-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_persistentvolume-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_persistentvolumeclaim-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_pod-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_replicaset-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_resourcequota-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_service-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_statefulset-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.state\_storageclass-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.apiserver-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.proxy-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.scheduler-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.controllermanager-cls-dev  
privileges: \*ref\_0  
- names:  
- metrics-kubernetes.event-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-kubernetes.container\_logs-cls-dev  
privileges: \*ref\_0  
- names:  
- logs-kubernetes.audit\_logs-cls-dev  
privileges: \*ref\_0

* * *

# For more information refer [Run Elastic Agent Standalone on Kubernetes | Elastic Docs](https://www.elastic.co/guide/en/fleet/current/running-on-kubernetes-standalone.html)

## apiVersion: apps/v1 kind: DaemonSet metadata: name: elastic-agent namespace: cls-dev labels: app: elastic-agent spec: selector: matchLabels: app: elastic-agent template: metadata: labels: app: elastic-agent spec: # Tolerations are needed to run Elastic Agent on Kubernetes control-plane nodes. # Agents running on control-plane nodes collect metrics from the control plane components (scheduler, controller manager) of Kubernetes tolerations: - key: [node-role.kubernetes.io/control-plane](http://node-role.kubernetes.io/control-plane) effect: NoSchedule - key: [node-role.kubernetes.io/master](http://node-role.kubernetes.io/master) effect: NoSchedule serviceAccountName: elastic-agent hostNetwork: true dnsPolicy: ClusterFirstWithHostNet containers: - name: elastic-agent image: [docker.elastic.co/beats/elastic-agent:8.5.0](http://docker.elastic.co/beats/elastic-agent:8.5.0) args: ["-c", "/etc/agent.yml", "-e",] env: # The basic authentication username used to connect to Elasticsearch # This user needs the privileges required to publish events to Elasticsearch. - name: ES\_USERNAME value: "elastic" # The basic authentication password used to connect to Elasticsearch - name: ES\_PASSWORD value: "\*\*\*\*\*\*\*\*\*\*" - name: NODE\_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: POD\_NAME valueFrom: fieldRef: fieldPath: metadata.name securityContext: runAsUser: 0 resources: limits: memory: 700Mi requests: cpu: 100m memory: 400Mi volumeMounts: - name: datastreams mountPath: /etc/agent.yml readOnly: true subPath: agent.yml - name: proc mountPath: /hostfs/proc readOnly: true - name: cgroup mountPath: /hostfs/sys/fs/cgroup readOnly: true - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true - name: varlog mountPath: /var/log readOnly: true - name: etc-kubernetes mountPath: /hostfs/etc/kubernetes readOnly: true - name: var-lib mountPath: /hostfs/var/lib readOnly: true - name: passwd mountPath: /hostfs/etc/passwd readOnly: true - name: group mountPath: /hostfs/etc/group readOnly: true - name: etcsysmd mountPath: /hostfs/etc/systemd readOnly: true volumes: - name: datastreams configMap: defaultMode: 0640 name: agent-node-datastreams - name: proc hostPath: path: /proc - name: cgroup hostPath: path: /sys/fs/cgroup - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers - name: varlog hostPath: path: /var/log # Needed for cloudbeat - name: etc-kubernetes hostPath: path: /etc/kubernetes # Needed for cloudbeat - name: var-lib hostPath: path: /var/lib # Needed for cloudbeat - name: passwd hostPath: path: /etc/passwd # Needed for cloudbeat - name: group hostPath: path: /etc/group # Needed for cloudbeat - name: etcsysmd hostPath: path: /etc/systemd

apiVersion: [rbac.authorization.k8s.io/v1](http://rbac.authorization.k8s.io/v1)  
kind: ClusterRoleBinding  
metadata:  
name: elastic-agent  
subjects:

- kind: ServiceAccount  
name: elastic-agent  
namespace: cls-dev  
roleRef:  
kind: ClusterRole  
name: elastic-agent  
apiGroup: [rbac.authorization.k8s.io](http://rbac.authorization.k8s.io)

* * *

apiVersion: [rbac.authorization.k8s.io/v1](http://rbac.authorization.k8s.io/v1)  
kind: RoleBinding  
metadata:  
namespace: cls-dev  
name: elastic-agent  
subjects:

- kind: ServiceAccount  
name: elastic-agent  
namespace: cls-dev  
roleRef:  
kind: Role  
name: elastic-agent  
apiGroup: [rbac.authorization.k8s.io](http://rbac.authorization.k8s.io)

* * *

apiVersion: [rbac.authorization.k8s.io/v1](http://rbac.authorization.k8s.io/v1)  
kind: RoleBinding  
metadata:  
name: elastic-agent-kubeadm-config  
namespace: cls-dev  
subjects:

- kind: ServiceAccount  
name: elastic-agent  
namespace: cls-dev  
roleRef:  
kind: Role  
name: elastic-agent-kubeadm-config  
apiGroup: [rbac.authorization.k8s.io](http://rbac.authorization.k8s.io)

* * *

apiVersion: [rbac.authorization.k8s.io/v1](http://rbac.authorization.k8s.io/v1)  
kind: ClusterRole  
metadata:  
name: elastic-agent  
labels:  
k8s-app: elastic-agent  
rules:

- apiGroups: [""]  
resources:
  - nodes
  - namespaces
  - events
  - pods
  - services
  - configmaps

# Needed for cloudbeat

  - serviceaccounts
  - persistentvolumes
  - persistentvolumeclaims  
verbs: ["get", "list", "watch"]

# Enable this rule only if planing to use kubernetes\_secrets provider

#- apiGroups: [""]

# resources:

# - secrets

# verbs: ["get"]

- apiGroups: ["extensions"]  
resources:
  - replicasets  
verbs: ["get", "list", "watch"]

- apiGroups: ["apps"]  
resources:
  - statefulsets
  - deployments
  - replicasets
  - daemonsets  
verbs: ["get", "list", "watch"]

- apiGroups: ["batch"]  
resources:
  - jobs
  - cronjobs  
verbs: ["get", "list", "watch"]

- apiGroups:
  - ""  
resources:
  - nodes/stats  
verbs:
  - get

# Needed for apiserver

- nonResourceURLs:
  - "/metrics"  
verbs:
  - get

# Needed for cloudbeat

- apiGroups: ["[rbac.authorization.k8s.io](http://rbac.authorization.k8s.io)"]  
resources:
  - clusterrolebindings
  - clusterroles
  - rolebindings
  - roles  
verbs: ["get", "list", "watch"]

# Needed for cloudbeat

- apiGroups: ["policy"]  
resources:
  - podsecuritypolicies  
verbs: ["get", "list", "watch"]

* * *

apiVersion: [rbac.authorization.k8s.io/v1](http://rbac.authorization.k8s.io/v1)  
kind: Role  
metadata:  
name: elastic-agent

# Should be the namespace where elastic-agent is running

namespace: cls-dev  
labels:  
k8s-app: elastic-agent  
rules:

- apiGroups:
  - [coordination.k8s.io](http://coordination.k8s.io)  
resources:
  - leases  
verbs: ["get", "create", "update"]

* * *

apiVersion: [rbac.authorization.k8s.io/v1](http://rbac.authorization.k8s.io/v1)  
kind: Role  
metadata:  
name: elastic-agent-kubeadm-config  
namespace: cls-dev  
labels:  
k8s-app: elastic-agent  
rules:

- apiGroups: [""]  
resources:
  - configmaps  
resourceNames:
  - kubeadm-config  
verbs: ["get"]

* * *

## apiVersion: v1 kind: ServiceAccount metadata: name: elastic-agent namespace: cls-dev labels: k8s-app: elastic-agent

And I have also tried using filebeat to fetch data by log microservice, but we can't retrieve a status condition whether the microservice is dead or alive

Thanks you very much, and I hope to get the best answer or suggestion / solution to my problem

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2023, 2:55am UTC](https://discuss.elastic.co/t/monitoring-microservice/335491/2 "2023-07-06T02:55:55Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
