diff --git a/_docs/tasks/telemetry/faq.md b/_docs/tasks/telemetry/faq.md index 18de976138..f1a0d52e7d 100644 --- a/_docs/tasks/telemetry/faq.md +++ b/_docs/tasks/telemetry/faq.md @@ -9,3 +9,178 @@ type: markdown --- {% include home.html %} +## How do I see all of the configuration for Mixer ? + +Configuration for *instances*, *handlers*, and *rules* is stored as Kubernetes +[Custom +Resources](https://kubernetes.io/docs/concepts/api-extension/custom-resources/). +Configuration may be accessed by using `kubectl` to query the Kubernetes [API +server](https://kubernetes.io/docs/admin/kube-apiserver/) for the resources. + +### Rules + +To see the list of all rules, execute the following: + +``` +kubectl get rules --all-namespaces +``` + +Output will be similar to: + +``` +NAMESPACE NAME KIND +default mongoprom rule.v1alpha2.config.istio.io +istio-system promhttp rule.v1alpha2.config.istio.io +istio-system promtcp rule.v1alpha2.config.istio.io +istio-system stdio rule.v1alpha2.config.istio.io +``` + +To see an individual rule configuration, execute the following: + +``` +kubectl -n get rules -o yaml +``` + +### Handlers + +Handlers are defined based on Kubernetes [Custom Resource +Definitions](https://kubernetes.io/docs/concepts/api-extension/custom-resources/#customresourcedefinitions) +for adapters. + +First, identify the list of adapter kinds: + +``` +kubectl get crd -listio=mixer-adapter +``` + +The output will be similar to: + +``` +NAME KIND +deniers.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +listcheckers.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +memquotas.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +noops.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +prometheuses.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +stackdrivers.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +statsds.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +stdios.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +svcctrls.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +``` + +Then, for each adapter kind in that list, issue the following command: + +``` +kubectl get --all-namespaces +``` + +Output for `stdios` will be similar to: + +``` +NAMESPACE NAME KIND +istio-system handler stdio.v1alpha2.config.istio.io +``` + +To see an individual handler configuration, execute the following: + +``` +kubectl -n get -o yaml +``` + + +### Instances + +Instances are defined according to Kubernetes [Custom Resource +Definitions](https://kubernetes.io/docs/concepts/api-extension/custom-resources/#customresourcedefinitions) +for instances. + +First, identify the list of instance kinds: + +``` +kubectl get crd -listio=mixer-instance +``` + +The output will be similar to: + +``` +NAME KIND +checknothings.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +listentries.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +logentries.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +metrics.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +quotas.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +reportnothings.config.istio.io CustomResourceDefinition.v1beta1.apiextensions.k8s.io +``` + +Then, for each instance kind in that list, issue the following command: + +``` +kubectl get --all-namespaces +``` + +Output for `metrics` will be similar to: + +``` +NAMESPACE NAME KIND +default mongoreceivedbytes metric.v1alpha2.config.istio.io +default mongosentbytes metric.v1alpha2.config.istio.io +istio-system requestcount metric.v1alpha2.config.istio.io +istio-system requestduration metric.v1alpha2.config.istio.io +istio-system requestsize metric.v1alpha2.config.istio.io +istio-system responsesize metric.v1alpha2.config.istio.io +istio-system tcpbytereceived metric.v1alpha2.config.istio.io +istio-system tcpbytesent metric.v1alpha2.config.istio.io +``` + +To see an individual instance configuration, execute the following: + +``` +kubectl -n get -o yaml +``` + +## What is the full set of attribute expressions supported by Mixer ? + +Please see the [Expression Language +Reference]({{home}}/docs/reference/config/mixer/expression-language.html) for +the full set of supported attribute expressions. + +## Does Mixer provide any self-monitoring ? + +Mixer provides self-monitoring in the form of debug endpoints, Prometheus +metrics, access and application logs, and generated trace data for all requests. + +### Mixer monitoring + +Mixer exposes an monitoring endpoint(default port: `9093`). There are a few +useful paths that can be used to investigate Mixer performance and audit +function: + +- `/metrics` provides Prometheus metrics on the Mixer process as well as gRPC + metrics related to API calls and metrics on adapter dispatch. +- `/debug/pprof` provides an endpoint for profiling data in [pprof + format](https://golang.org/pkg/net/http/pprof/). +- `/debug/vars` provides an endpoint exposing server metrics in JSON format. + +### Mixer logs + +Mixer logs can be accessed via a `kubectl logs` command, as follows: + +``` +kubectl -n istio-system logs $(kubectl -n istio-system get pods -listio=mixer -o jsonpath='{.items[0].metadata.name}') mixer +``` + +### Mixer traces + +Mixer trace generation is controlled by the command-line flag `traceOutput`. If +the flag value is set to `STDOUT` or `STDERR` trace data will be written +directly to those locations. If a URL is provided, Mixer will post +Zipkin-formatted data to that endpoint (example: +`http://zipkin:9411/api/v1/spans`). + +In the 0.2 release, Mixer only supports Zipkin tracing. + + +## How can I write a custom adapter for Mixer ? + +To implement a new adapter for Mixer, please refer to the [Adapter Developer's +Guide](https://github.com/istio/mixer/blob/master/doc/dev/adapters.md). \ No newline at end of file