GPU-Live/gpulive/istio-1.23.1/samples/open-telemetry/loki/REAME.md

100 lines
2.5 KiB
Markdown

# Open Telemetry with Loki
This sample demonstrates Istio's Open Telemetry [ALS(Access Log Service)](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/access_loggers/grpc/v3/als.proto) and sending logs to [Loki](https://github.com/grafana/loki).
## Install Istio
Run the following script to install Istio with an Open Telemetry ALS provider:
```bash
istioctl install -f iop.yaml -y
```
## Setup Loki
Run the following script to install `Loki`:
```bash
kubectl apply -f ../../addons/loki.yaml -n istio-system
```
## Setup otel-collector service
First, create an `otel-collector` backend with a simple configuration.
```bash
kubectl apply -f otel.yaml -n istio-system
```
With the following configuration, otel-collector-contrib will create a grpc receiver on port `4317`, and output to stdout. You can find more details [here](https://github.com/open-telemetry/opentelemetry-collector-contrib).
```yaml
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
attributes:
actions:
- action: insert
key: loki.attribute.labels
value: podName, namespace,cluster,meshID
exporters:
loki:
endpoint: "http://loki.istio-system.svc:3100/loki/api/v1/push"
logging:
loglevel: debug
extensions:
health_check:
service:
extensions:
- health_check
pipelines:
logs:
receivers: [otlp]
processors: [attributes]
exporters: [loki, logging]
```
## Apply Telemetry API
Next, add a Telemetry resource that tells Istio to send access logs to the OpenTelemetry collector.
```bash
kubectl apply -f telemetry.yaml
```
## Check ALS output
Following this [doc](../../httpbin/README.md), start the `fortio` and `httpbin` services.
Run the following script to request `httpbin` from `fortio`.
```bash
kubectl exec -it deploy/fortio -- fortio curl httpbin:8000/ip
```
Run the following script to view ALS output.
```bash
kubectl logs -l app=opentelemetry-collector -n istio-system --tail=-1
```
You can also check the Grafana logs:
```bash
istioctl dashboard grafana
```
Learn how to use Loki with Grafana [here](https://grafana.com/docs/grafana/v8.4/datasources/loki/).
## Cleanup
```bash
kubectl delete -f otel.yaml -n istio-system
kubectl delete telemetry mesh-logging -n istio-system
istioctl uninstall --purge -y
```