{"version":3,"file":"module.js","mappings":"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","sources":["webpack://grafana-k8s-app/webpack/runtime/create fake namespace object","webpack://grafana-k8s-app/webpack/runtime/load script","webpack://grafana-k8s-app/./node_modules/grafana-public-path.js","webpack://grafana-k8s-app/./components/Extensions/ClusterConfigExtension.tsx","webpack://grafana-k8s-app/./components/Extensions/HelmChartIntegrationConfigExtension.tsx","webpack://grafana-k8s-app/./components/Extensions/ObjectDetailExtensionParams.tsx","webpack://grafana-k8s-app/./module.tsx","webpack://grafana-k8s-app/./components/Loader/Loader.tsx","webpack://grafana-k8s-app/./constants.ts","webpack://grafana-k8s-app/./context/PluginMetaContext.tsx","webpack://grafana-k8s-app/./enums.ts","webpack://grafana-k8s-app/./static/config/integrations/aerospike.ts","webpack://grafana-k8s-app/./static/config/integrations/index.ts","webpack://grafana-k8s-app/./static/config/integrations/alloy.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheActivemq.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheAirflow.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheCassandra.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheCouchDB.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheHadoop.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheHttp.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheMesos.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheSolr.ts","webpack://grafana-k8s-app/./static/config/integrations/apacheTomcat.ts","webpack://grafana-k8s-app/./static/config/integrations/certManager.ts","webpack://grafana-k8s-app/./static/config/integrations/ciliumEnterprise.ts","webpack://grafana-k8s-app/./static/config/integrations/clickhouse.ts","webpack://grafana-k8s-app/./static/config/integrations/cockroachdb.ts","webpack://grafana-k8s-app/./static/config/integrations/coredns.ts","webpack://grafana-k8s-app/./static/config/integrations/couchbase.ts","webpack://grafana-k8s-app/./static/config/integrations/etcd.ts","webpack://grafana-k8s-app/./static/config/integrations/gitlab.ts","webpack://grafana-k8s-app/./static/config/integrations/kafka.ts","webpack://grafana-k8s-app/./static/config/integrations/ibm-db2.ts","webpack://grafana-k8s-app/./static/config/integrations/ibm-mq.ts","webpack://grafana-k8s-app/./static/config/integrations/istio.ts","webpack://grafana-k8s-app/./static/config/integrations/linuxNode.ts","webpack://grafana-k8s-app/./static/config/integrations/mimir.ts","webpack://grafana-k8s-app/./static/config/integrations/mongodb.ts","webpack://grafana-k8s-app/./static/config/integrations/mssql.ts","webpack://grafana-k8s-app/./static/config/integrations/mysql.ts","webpack://grafana-k8s-app/./static/config/integrations/nginx.ts","webpack://grafana-k8s-app/./static/config/integrations/openldap.ts","webpack://grafana-k8s-app/./static/config/integrations/opensearch.ts","webpack://grafana-k8s-app/./static/config/integrations/oracledb.ts","webpack://grafana-k8s-app/./static/config/integrations/pgbouncer.ts","webpack://grafana-k8s-app/./static/config/integrations/postgres.ts","webpack://grafana-k8s-app/./static/config/integrations/presto.ts","webpack://grafana-k8s-app/./static/config/integrations/squid.ts","webpack://grafana-k8s-app/./static/config/integrations/tensorflow.ts","webpack://grafana-k8s-app/./static/config/integrations/varnish.ts","webpack://grafana-k8s-app/./static/config/integrations/velero.ts","webpack://grafana-k8s-app/./static/config/integrations/wildfly.ts","webpack://grafana-k8s-app/external amd \"@emotion/css\"","webpack://grafana-k8s-app/external amd \"@grafana/data\"","webpack://grafana-k8s-app/external amd \"@grafana/runtime\"","webpack://grafana-k8s-app/external amd \"@grafana/ui\"","webpack://grafana-k8s-app/external amd \"app/core/app_events\"","webpack://grafana-k8s-app/external amd \"lodash\"","webpack://grafana-k8s-app/external amd \"module\"","webpack://grafana-k8s-app/external amd \"react\"","webpack://grafana-k8s-app/external amd \"react-dom\"","webpack://grafana-k8s-app/external amd \"react-redux\"","webpack://grafana-k8s-app/external amd \"react-router\"","webpack://grafana-k8s-app/external amd \"redux\"","webpack://grafana-k8s-app/external amd \"rxjs\"","webpack://grafana-k8s-app/webpack/bootstrap","webpack://grafana-k8s-app/webpack/runtime/amd options","webpack://grafana-k8s-app/webpack/runtime/compat get default export","webpack://grafana-k8s-app/webpack/runtime/define property getters","webpack://grafana-k8s-app/webpack/runtime/ensure chunk","webpack://grafana-k8s-app/webpack/runtime/get javascript chunk filename","webpack://grafana-k8s-app/webpack/runtime/global","webpack://grafana-k8s-app/webpack/runtime/hasOwnProperty shorthand","webpack://grafana-k8s-app/webpack/runtime/make namespace object","webpack://grafana-k8s-app/webpack/runtime/node module decorator","webpack://grafana-k8s-app/webpack/runtime/publicPath","webpack://grafana-k8s-app/webpack/runtime/compat","webpack://grafana-k8s-app/webpack/runtime/jsonp chunk loading","webpack://grafana-k8s-app/webpack/runtime/nonce","webpack://grafana-k8s-app/webpack/startup"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"grafana-k8s-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t\tscript.integrity = __webpack_require__.sriHashes[chunkId];\n\t\tscript.crossOrigin = \"anonymous\";\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","\nimport amdMetaModule from 'amd-module';\n\n__webpack_public_path__ =\n amdMetaModule && amdMetaModule.uri\n ? amdMetaModule.uri.slice(0, amdMetaModule.uri.lastIndexOf('/') + 1)\n : 'public/plugins/grafana-k8s-app/';\n","import React, { lazy, Suspense } from 'react';\n\nimport { usePluginContext } from '@grafana/data';\nimport { PluginMetaContext } from 'context/PluginMetaContext';\nimport Loader from 'components/Loader/Loader';\n\nconst ClusterConfig = lazy(() => import('components/scenes/Config/ClusterConfig/ClusterConfig'));\n\nexport function ClusterConfigExtension() {\n const context = usePluginContext();\n return (\n context && (\n \n }>\n \n \n \n )\n );\n}\n\nexport const ClusterConfigExtensionParams = {\n title: 'K8s Cluster Config',\n description: 'K8s Cluster configuration settings',\n targets: 'grafana/grafana-k8s-app/cluster-config/v1',\n component: ClusterConfigExtension,\n};\n","import Loader from 'components/Loader/Loader';\nimport React, { lazy, Suspense } from 'react';\nimport integrations from 'static/config/integrations';\nimport { ExtensionLink } from 'types';\n\nexport interface ChartConfigProps {\n slug: string;\n showTitle?: boolean;\n}\n\nconst HelmChartIntegration = lazy(() => import('components/IntegrationsList/HelmChartIntegration'));\n\nexport function HelmChartIntegrationConfigExtension({ context }: { context?: ChartConfigProps }) {\n return (\n }>\n \n \n );\n}\n\nexport const HelmChartIntegrationConfigExtensionParams = {\n title: 'K8s Helm Chart Config',\n description: 'K8s Helm Chart Integration Snippets',\n targets: 'grafana/grafana-k8s-app/helm-chart-integration-snippets/v1',\n component: HelmChartIntegrationConfigExtension,\n};\n\nexport const HelmChartConfigLinkParams: ExtensionLink = {\n title: 'K8s Helm Chart Config Check',\n description: 'K8s Helm Chart Integration Snippets Check',\n targets: 'grafana/grafana-k8s-app/helm-chart-integration-snippets-check/v1',\n path: '/a/grafana-k8s-app/helm-chart-integration-snippets-check/v1',\n configure(context) {\n if (!context?.slug || integrations[context.slug]?.logs || integrations[context.slug]?.metrics) {\n return {};\n } else {\n return undefined;\n }\n },\n};\n","import React, { lazy, memo, Suspense } from 'react';\nimport { TimeRange } from '@grafana/data';\nimport { DateTimeRange } from 'store/timeRange';\nimport { DataSourceRef } from '@grafana/schema';\n\nconst LazyObjectDetailExtension = lazy(() => import('./ObjectDetailExtension'));\n\nexport interface ObjectDetailExtensionProps {\n entityType: 'Node' | 'Namespace' | 'Workload' | 'KubeCluster' | 'Pod';\n entityName: string;\n clusterName: string;\n initialTimeRange: DateTimeRange;\n namespace?: string;\n workloadType?: string;\n workload?: string;\n locationTitle?: string;\n onTimeRangeChange: (timeRange: TimeRange) => void;\n promDatasourceRef: DataSourceRef;\n lokiDatasourceRef: DataSourceRef;\n}\n\nconst ObjectDetailExtension = (props: ObjectDetailExtensionProps) => (\n \n \n \n);\n\nexport const ObjectDetailExtensionParams = {\n title: 'K8s Object Detail',\n description: 'Metrics details for various k8s objects',\n id: 'grafana-k8s-app/object-detail-extension/v1',\n component: memo(ObjectDetailExtension),\n};\n","import { AppPlugin, AppRootProps } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport React, { ComponentClass, lazy, Suspense } from 'react';\nimport { ClusterConfigExtensionParams } from 'components/Extensions/ClusterConfigExtension';\nimport {\n HelmChartIntegrationConfigExtensionParams,\n HelmChartConfigLinkParams,\n} from 'components/Extensions/HelmChartIntegrationConfigExtension';\nimport { FARO_APP_NAME, FARO_ENDPOINT } from './constants';\nimport {\n ObjectDetailExtensionParams,\n ObjectDetailExtensionProps,\n} from 'components/Extensions/ObjectDetailExtensionParams';\nimport Loader from 'components/Loader/Loader';\n\nconst LazyApp = lazy(() => import('./Root'));\n\nlet faroInstance: null | {\n api: {\n pushMeasurement: (param: object) => void;\n };\n} = null;\n\nexport const getFaro = async () => {\n if (!faroInstance) {\n const { initializeFaro, getWebInstrumentations } = await import('@grafana/faro-web-sdk');\n\n // @ts-ignore\n faroInstance = initializeFaro({\n url: FARO_ENDPOINT,\n app: {\n name: FARO_APP_NAME,\n version: config.apps['grafana-k8s-app'].version,\n environment: process.env.NODE_ENV,\n },\n isolate: true,\n user: {\n id: config.bootData.user.orgName,\n },\n instrumentations: [...getWebInstrumentations()],\n sessionTracking: {\n enabled: true,\n persistent: true,\n },\n });\n }\n\n return faroInstance;\n};\n\nconst App = (props: AppRootProps) => (\n }>\n \n \n);\n\nexport const plugin = new AppPlugin().setRootPage(App as unknown as ComponentClass);\n\nif (typeof plugin.addComponent !== 'undefined') {\n // Grafana > v11.1.0\n plugin.addComponent<{}>(ClusterConfigExtensionParams);\n plugin.addComponent<{ context?: { slug: string; showTitle?: boolean | undefined } | undefined }>(\n HelmChartIntegrationConfigExtensionParams\n );\n} else if (typeof plugin.configureExtensionComponent !== 'undefined') {\n // Grafana <= v11.1.0\n plugin.configureExtensionComponent<{}>({\n ...ClusterConfigExtensionParams,\n extensionPointId: ClusterConfigExtensionParams.targets,\n });\n\n plugin.configureExtensionComponent<{ context?: { slug: string; showTitle?: boolean | undefined } | undefined }>({\n ...HelmChartIntegrationConfigExtensionParams,\n extensionPointId: HelmChartIntegrationConfigExtensionParams.targets,\n });\n}\n\nif (typeof plugin.exposeComponent !== 'undefined') {\n // Grafana > v11.1.0\n plugin.exposeComponent(ObjectDetailExtensionParams);\n}\n\n// We need to check whether given integration has logs or metrics snippets\n// this is needed as the integrations-api returns k8s integrations even if there are no snippets.\n// This approach uses link extensions temporarily before we get plugin capabilities/exports in Grafana.\nif (typeof plugin.addLink !== 'undefined') {\n // Grafana > v11.1.0\n plugin.addLink<{ slug: string }>(HelmChartConfigLinkParams);\n} else if (typeof plugin.configureExtensionLink !== 'undefined') {\n // Grafana <= v11.1.0\n plugin.configureExtensionLink<{ slug: string }>({\n ...HelmChartConfigLinkParams,\n extensionPointId: HelmChartConfigLinkParams.targets as string,\n });\n}\n","import { Spinner } from '@grafana/ui';\nimport React from 'react';\n\nconst Loader = () => {\n return (\n
\n Loading ... \n
\n );\n};\n\nexport default Loader;\n","import { config } from '@grafana/runtime';\nimport { AgentOptions } from './enums';\nimport { DurationUnit } from '@grafana/data';\nimport { WindowBreakpoints } from 'types';\nimport { RelativeRange } from 'store/timeRange';\n\nexport const PLUGIN_ID = 'grafana-k8s-app';\nexport const PLUGIN_ROOT_URL = `/a/${PLUGIN_ID}`;\n\nexport const PROMETHEUS_DS_TYPE = 'prometheus';\nexport const USAGE_DS_NAME = 'usage';\nexport const ML_METRICS_DS_NAME = 'ml-metrics';\n\nexport const PAGINATION_PAGE_SIZES = [\n {\n label: '15',\n value: 15,\n },\n {\n label: '30',\n value: 30,\n },\n {\n label: '50',\n value: 50,\n },\n {\n label: '100',\n value: 100,\n },\n];\n\nexport const DEFAULT_INITIAL_PAGE = 1;\nexport const DEFAULT_TABLE_ID = 'default';\n\nexport const WORKLOAD_TYPE_MAPPING = {\n ReplicaSet: 'deployment',\n Job: 'job',\n DaemonSet: 'daemonset',\n StatefulSet: 'statefulset',\n};\n\nexport const INTEGRATIONS_API_ERROR = {\n 403: 'Permission denied trying to access integration API. Make sure you have the correct permission to view this page.',\n};\n\nexport const K8S_INTEGRATION_ID = 'kubernetes';\n\nexport const colors = {\n blue03: '#538ade',\n blue04: '#343b40',\n blue07: '#245baf',\n};\n\nexport const K8S_STORAGE_KEY = 'grafana.k8s-app.navigation.storage';\n\nexport const EFFICIENCY_UNDER_UTILIZED_THRESHOLD = 0.6;\nexport const EFFICIENCY_OVER_UTILIZED_THRESHOLD = 0.9;\nexport const EFFICIENCY_MAX_UTILIZED_THRESHOLD = 0.9;\n\nexport const EFFICIENCY_USAGE_METRICS = {\n cluster: {\n cpu: ['container_cpu_usage_seconds_total', 'kube_node_status_capacity'],\n memory: ['container_memory_working_set_bytes', 'machine_memory_bytes'],\n storage: ['node_filesystem_size_bytes', 'node_filesystem_avail_bytes'],\n },\n namespace: {\n cpu: ['container_cpu_usage_seconds_total', 'node_cpu_seconds_total'],\n memory: ['container_memory_working_set_bytes', 'machine_memory_bytes'],\n storage: ['kubelet_volume_stats_available_bytes', 'kubelet_volume_stats_capacity_bytes'],\n },\n node: {\n cpu: ['node_cpu_seconds_total'],\n memory: ['container_memory_working_set_bytes', 'machine_memory_bytes'],\n storage: ['node_filesystem_size_bytes', 'node_filesystem_avail_bytes'],\n },\n};\n\nexport const MAX_ITEMS_PER_LIST = 12;\nexport const MAX_NUMBER_OF_LISTS = 2;\n\n// Faro settings\nconst FARO_DEV_ENDPOINT =\n 'https://faro-collector-prod-us-central-0.grafana.net/collect/f0e899cd74e7e893677f290f38a11a65';\nconst FARO_OPS_ENDPOINT =\n 'https://faro-collector-prod-us-central-0.grafana.net/collect/ebafdd81fcb463242ed5ed9bcc8ea802';\nconst FARO_PROD_ENDPOINT =\n 'https://faro-collector-prod-us-central-0.grafana.net/collect/e3f6441bd29dc97e68acade53dd3ecdb';\nconst appUrl = config.appUrl;\nconst FARO_APP_DEV = 'grafana-k8s-app-dev';\nconst FARO_APP_PROD = 'grafana-k8s-app-prod';\nconst FARO_APP_OPS = 'grafana-k8s-app-ops';\n\n// This isn't great but the other options using config object aren't great either\nexport const FARO_ENDPOINT =\n appUrl.includes('grafana-dev.net') || appUrl.includes('localhost')\n ? FARO_DEV_ENDPOINT\n : appUrl.includes('grafana-ops.net')\n ? FARO_OPS_ENDPOINT\n : FARO_PROD_ENDPOINT;\n\nexport const FARO_APP_NAME =\n appUrl.includes('grafana-dev.net') || appUrl.includes('localhost')\n ? FARO_APP_DEV\n : appUrl.includes('grafana-ops.net')\n ? FARO_APP_OPS\n : FARO_APP_PROD;\n\nexport const NO_DATA_FLOWING_MAP = {\n nodes: {\n title: 'No nodes detected',\n description:\n 'Connect a data source to view your nodes. Then, you can filter by cluster or condition, view node resource utilization, and predict CPU or memory usage.',\n },\n clusters: {\n title: 'No clusters detected',\n description:\n 'Connect a data source to view your clusters. Then, you can filter by cluster, provider or efficiency, and drill into cluster details.',\n },\n namespaces: {\n title: 'No namespaces detected',\n description:\n 'Connect a data source to view your namespaces. Then, you can filter by cluster or namespace, see alerts, and drill into namespace details.',\n },\n workloads: {\n title: 'No workloads detected',\n description:\n 'Connect a data source to view your workloads. Then, you can filter by workload type, see alerts, available pods and drill into workload details.',\n },\n efficiency: {\n title: 'No data detected',\n description:\n 'Connect a data source to explore efficiency view. It provides a correlation between CPU, memory, and storage use for clusters, nodes, and namespaces.',\n },\n costs: {\n title: 'No data detected',\n description:\n 'Connect a data source to explore cost view. It enables you to manage the cost of cloud resources that your Kubernetes infrastructure is consuming.',\n },\n search: {\n title: 'No data detected',\n description: 'Connect a data source to search your k8s infrastructure.',\n },\n};\n\nexport const agentOptions = [\n { label: 'Helm Chart', value: AgentOptions.Alloy },\n { label: 'Agent', value: AgentOptions.AgentInStaticMode },\n { label: 'Agent Operator', value: AgentOptions.AgentOperator },\n];\n\n// Update to set a different initial time range on scenes timerange picker\nexport const DEFAULT_TIME_AMOUNT = 1;\nexport const DEFAULT_TIME_UNIT: DurationUnit = 'h';\nexport const DEFAULT_INITIAL_TIME_RANGE: RelativeRange = {\n from: `now-${DEFAULT_TIME_AMOUNT}${DEFAULT_TIME_UNIT}`,\n to: 'now',\n};\n\nexport const DEFAULT_REFRESH_INTERVAL = '1m';\nexport const REFRESH_INTERVAL_OPTIONS = [DEFAULT_REFRESH_INTERVAL, '5m', '15m', '1h'];\n\nexport const windowBreakpoints: WindowBreakpoints = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 1024,\n xl: 1200,\n xxl: 1440,\n};\n\nexport const URL_ENCODE_FORWARD_SLASH = '---';\n\nexport const MAX_WORKLOADS_WITH_DETAILS = 1000;\nexport const MAX_SELECTABLE_ASSERTS_COMPARE_ROWS = 20;\n\n// Regex to detect grafana cloud hosted datasources\nexport const RE_GRAFANA_CLOUD_HOST = /grafana(-dev|-ops)?\\.net/;\n\nexport const FULL_VIEW_CONTAINER_COUNT_LIMIT = 50_000;\nexport const SIMPLE_VIEW_CONTAINER_COUNT_LIMIT = 200_000;\n","import { PluginMeta } from '@grafana/data';\nimport React from 'react';\nimport { JSONData } from 'types';\n\nexport const PluginMetaContext = React.createContext({} as PluginMeta);\n","export enum TableType {\n Cluster = 'cluster',\n Namespace = 'namespace',\n Workload = 'workload',\n Resources = 'resources',\n Node = 'node',\n}\n\nexport enum SourceType {\n HostedExporter = 'hosted-exporter',\n Instance = 'instance',\n Integration = 'integration',\n CloudApp = 'cloud-app',\n DataSource = 'data-source',\n}\n/*\nTODO:\n- asserts extenstion clicks\n- tab clicks (including detail view + which tab)\n- search clicks\n*/\nexport enum RudderstackEvents {\n IntegrationUpdate = 'cloud_k8s_clicked_update_integration',\n IntegrationInstall = 'cloud_k8s_clicked_install_integration',\n SetupClickedTest = 'cloud_k8s_clicked_test_setup',\n SetupOpenAgent = 'cloud_k8s_clicked_open_agent_instructions',\n SetupClickedSaveConfig = 'cloud_k8s_clicked_finish_setup',\n SetupStart = 'cloud_k8s_clicked_start_setup',\n ManualSetupNoData = 'cloud_k8s_clicked_manual_setup_no_data',\n AgentDocsNoData = 'cloud_k8s_clicked_agent_docs_no_data',\n CopyItem = 'cloud_k8s_clicked_copy_string',\n ExploreLogs = 'cloud_k8s_clicked_explore_logs',\n ExploreDashboards = 'cloud_k8s_clicked_explore_dashboards',\n IntegrationUninstall = 'cloud_k8s_clicked_integration_uninstall',\n DashboardListClick = 'cloud_k8s_clicked_dashboard_list',\n NamespaceListClick = 'cloud_k8s_clicked_namespace',\n WorkloadListClick = 'cloud_k8s_clicked_workload',\n PodListClick = 'cloud_k8s_clicked_pod',\n Explore = 'cloud_k8s_clicked_explore',\n CreatedAlertFromPanel = 'cloud_k8s_created_alert_from_panel',\n ChangeTableView = 'cloud_k8s_changed_table_view',\n HomepageAlertClick = 'cloud_k8s_homepage_alert_click',\n RunOutlierDetection = 'cloud_k8s_clicked_outlier_detection',\n RunPredictionModel = 'cloud_k8s_clicked_prediction_model',\n OpenedAgentConfig = 'cloud_k8s_clicked_open_agent_config',\n OpenedOperatorConfig = 'cloud_k8s_clicked_open_operator_config',\n InstalledK8sIntegration = 'cloud_k8s_clicked_install_integration',\n IntegrationTest = 'cloud_k8s_clicked_test_integration',\n AppO11YNavigateToServiceClick = 'cloud_k8s_appo11y_navigate_to_service',\n AppO11YPopOverClick = 'cloud_k8s_appo11y_popover',\n ChangeRefreshPicker = 'cloud_k8s_clicked_change_refresh_picker',\n TitleNavigationMenuClick = 'cloud_k8s_title_navigation_menu_click',\n TitleNavigationMenuItemClick = 'cloud_k8s_title_navigation_menu_item_click',\n}\n\nexport enum PodHealthStatus {\n Healthy,\n Unhealthy,\n Warning,\n Unknown,\n}\n\nexport enum FetchStatus {\n Idle,\n Fetching,\n Success,\n Error,\n InstallRollbackError,\n}\n\nexport enum AgentOptions {\n Alloy,\n AgentInStaticMode,\n AgentOperator,\n}\n\nexport enum TokenOptions {\n NewToken,\n ExistingToken,\n}\n\nexport enum IntegrationConnectionErrorCause {\n NoMetricsFound = 'No metrics were found for this integration.',\n CannotScrapeMetrics = \"Unable to reach the integration's metrics endpoint.\",\n NoLogsFound = 'No logs were found for this integration.',\n Unexpected = 'An unexpected error occurred. Please try again.',\n}\n\nexport enum Platforms {\n Kubernetes = 'kubernetes',\n Openshift = 'openshift',\n Fargate = 'fargate',\n IBMCloud = 'ibmcloud',\n Autopilot = 'autopilot',\n AzureAKS = 'azureaks',\n}\n\nexport enum DeploymentMethods {\n Helm = 'helm',\n Terraform = 'terraform',\n}\n\nexport enum ContainerCountView {\n FULL_VIEW,\n LIMITED_VIEW,\n SIMPLE_VIEW,\n}\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"aerospike\" {\n role = \"pod\"\n selectors {\n role = \"pod\"\n label = \"=\"\n }\n }\n \n discovery.relabel \"aerospike\" {\n targets = discovery.kubernetes.aerospike.targets\n rule {\n source_labels = [\"__meta_kubernetes_pod_container_port_number\"]\n regex = \"\"\n action = \"keep\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_container_name\"]\n separator = \"-\"\n target_label = \"instance\"\n }\n rule {\n replacement = \"\"\n target_label = \"aerospike_cluster\"\n }\n rule {\n replacement = \"integrations/aerospike\"\n target_label = \"job\"\n }\n }\n \n prometheus.scrape \"metrics_aerospike\" {\n targets = discovery.relabel.aerospike.output\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_pod_label_\"]\n regex = \"\"\n replacement = \"aerospike\"\n target_label = \"integration\"\n }\n\n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"aerospike\\\\\"}\"\n\n stage.multiline {\n firstline = \"\\\\\\\\w{3} \\\\\\\\d{2} \\\\\\\\d{4}\"\n max_lines = 0\n max_wait_time = \"3s\"\n }\n \n stage.regex {\n expression = \"\\\\\\\\w{3} \\\\\\\\d{2} \\\\\\\\d{4} \\\\\\\\d{2}:\\\\\\\\d{2}:\\\\\\\\d{2} \\\\\\\\w{3}: (?P\\\\\\\\w+) \\\\\\\\((?P\\\\\\\\w+)\\\\\\\\): (?P\\\\\\\\(\\\\\\\\S+\\\\\\\\))\\\\\\\\s+(?P(?s:.*))$\"\n }\n \n stage.template {\n source = \"instance\"\n template = \"{{ .namespace }}-{{ .container }}\"\n }\n\n stage.static_labels {\n values = {\n aerospike_cluster = \"\",\n job = \"integrations/aerospike\",\n }\n }\n \n stage.labels {\n values = {\n context = null,\n instance = null,\n level = null,\n }\n }\n }`;\n\nexport default { metrics, logs };\n","import aerospike from './aerospike';\nimport alloy from './alloy';\nimport apacheActivemq from './apacheActivemq';\nimport apacheAirflow from './apacheAirflow';\nimport apacheCassandra from './apacheCassandra';\nimport apacheCouchDB from './apacheCouchDB';\nimport apacheHadoop from './apacheHadoop';\nimport apacheHttp from './apacheHttp';\nimport apacheMesos from './apacheMesos';\nimport apacheSolr from './apacheSolr';\nimport apacheTomcat from './apacheTomcat';\nimport certManager from './certManager';\nimport ciliumEnterprise from './ciliumEnterprise';\nimport clickhouse from './clickhouse';\nimport cockroachdb from './cockroachdb';\nimport coredns from './coredns';\nimport couchbase from './couchbase';\nimport etcd from './etcd';\nimport gitlab from './gitlab';\nimport ibmDb2 from './ibm-db2';\nimport ibmMq from './ibm-mq';\nimport istio from './istio';\nimport kafka from './kafka';\nimport linuxNode from './linuxNode';\nimport mimir from './mimir';\nimport mongodb from './mongodb';\nimport mssql from './mssql';\nimport mysql from './mysql';\nimport nginx from './nginx';\nimport openldap from './openldap';\nimport opensearch from './opensearch';\nimport oracledb from './oracledb';\nimport pgbouncer from './pgbouncer';\nimport postgres from './postgres';\nimport presto from './presto';\nimport squid from './squid';\nimport tensorflow from './tensorflow';\nimport varnish from './varnish';\nimport velero from './velero';\nimport wildfly from './wildfly';\n\ninterface Integration {\n metrics?: string;\n logs?: string;\n extraLogsInstructions?: string;\n}\ninterface IntegrationList {\n [key: string]: Integration;\n}\n\nconst integrations: IntegrationList = {\n aerospike,\n 'alloy-health': alloy,\n 'apache-activemq': apacheActivemq,\n 'apache-airflow': apacheAirflow,\n 'apache-cassandra': apacheCassandra,\n 'apache-couchdb': apacheCouchDB,\n 'apache-hadoop': apacheHadoop,\n 'apache-http': apacheHttp,\n 'apache-mesos': apacheMesos,\n 'apache-solr': apacheSolr,\n 'apache-tomcat': apacheTomcat,\n 'cert-manager': certManager,\n 'cilium-enterprise': ciliumEnterprise,\n clickhouse,\n cockroachdb,\n coredns,\n couchbase,\n etcd,\n gitlab,\n kafka,\n 'ibm-db2': ibmDb2,\n 'ibm-mq': ibmMq,\n istio,\n 'linux-node': linuxNode,\n mimir,\n mongodb,\n mssql,\n mysql,\n nginx,\n openldap,\n opensearch,\n oracledb,\n pgbouncer,\n postgres,\n presto,\n squid,\n tensorflow,\n 'varnish-cache': varnish,\n velero,\n wildfly,\n};\n\nexport default integrations;\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nintegrations:\n alloy:\n instances:\n - name: \n labelSelectors:\n : `;\n\nexport default { metrics };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"activemq\" {\n role = \"pod\"\n selectors {\n role = \"pod\"\n label = \"=\"\n }\n }\n\n discovery.relabel \"activemq\" {\n targets = discovery.kubernetes.activemq.targets\n rule {\n source_labels = [\"__meta_kubernetes_pod_container_port_number\"]\n regex = \"\"\n action = \"keep\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_container_name\"]\n separator = \"-\"\n target_label = \"instance\"\n }\n rule {\n replacement = \"\"\n target_label = \"activemq_cluster\"\n }\n rule {\n replacement = \"integrations/apache-activemq\"\n target_label = \"job\"\n }\n }\n\n prometheus.scrape \"activemq\" {\n targets = discovery.relabel.activemq.output\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_pod_label_\"]\n regex = \"\"\n replacement = \"activemq\"\n target_label = \"integration\"\n }\n\n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"activemq\\\\\"}\"\n \n stage.multiline {\n firstline = \"(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)\"\n max_lines = 0\n max_wait_time = \"3s\"\n }\n \n stage.regex {\n expression = \"(?PTRACE|DEBUG|INFO|WARN|ERROR|FATAL)\\\\\\\\s*[\\\\\\\\|:]\\\\\\\\s*(?P.+)\"\n }\n \n stage.template {\n source = \"instance\"\n template = \"{{ .namespace }}-{{ .container }}\"\n }\n \n stage.static_labels {\n values = {\n activemq_cluster = \"\",\n job = \"integrations/apache-activemq\",\n }\n }\n \n stage.labels {\n values = {\n instance = null,\n level = null,\n }\n }\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n prometheus.scrape \"integrations_airflow_statsd_exporter\" {\n targets = [{\"__address__\" = \"..svc.cluster.local:9102\"}]\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n job_name = \"integrations/apache-airflow\"\n }`;\n\nconst extraLogsInstructions = `\nThese instructions are being written under the assumption that the official helm chart is in use. If not, there may be additional work.\n\n

\nTo collect logs from Apache Airflow, Alloy sidecars must be added to the deployment configuration for the scheduler and worker pods. \n

\n\n

\nPlease refer to these instructions for further details.\n

\n`;\n\nexport default { metrics, extraLogsInstructions };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"apache_cassandra\" {\n role = \"pod\"\n selectors {\n role = \"pod\"\n label = \"=\"\n }\n }\n \n discovery.relabel \"apache_cassandra\" {\n targets = discovery.kubernetes.apache_cassandra.targets\n rule {\n source_labels = [\"__meta_kubernetes_pod_container_port_number\"]\n regex = \"\"\n action = \"keep\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_container_name\"]\n separator = \"-\"\n target_label = \"instance\"\n }\n rule {\n replacement = \"\"\n target_label = \"cassandra_cluster\"\n }\n rule {\n replacement = \"integrations/apache-cassandra\"\n target_label = \"job\"\n }\n }\n \n prometheus.scrape \"metrics_apache_cassandra\" {\n targets = discovery.relabel.apache_cassandra.output\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_pod_label_\"]\n regex = \"\"\n replacement = \"apache_cassandra\"\n target_label = \"integration\"\n }\n\n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"apache_cassandra\\\\\"}\"\n \n stage.template {\n source = \"instance\"\n template = \"{{ .namespace }}-{{ .container }}\"\n }\n\n stage.static_labels {\n values = {\n cassandra_cluster = \"\",\n job = \"integrations/apache-cassandra\",\n }\n }\n\n stage.labels {\n values = {\n instance = null,\n }\n }\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"apache_couchdb\" {\n role = \"endpoints\"\n selectors {\n role = \"endpoints\"\n label = \"=\"\n }\n }\n \n discovery.relabel \"apache_couchdb\" {\n targets = discovery.kubernetes.apache_couchdb.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_service_name\",\"__meta_kubernetes_endpoint_port_name\"]\n separator = \":\"\n regex = \".*-couchdb:metrics\"\n action = \"keep\"\n }\n \n rule {\n replacement = \"\"\n target_label = \"couchdb_cluster\"\n }\n }\n \n prometheus.scrape \"apache_couchdb\" {\n targets = discovery.relabel.apache_couchdb.output\n metrics_path = \"/_node/_local/_prometheus\"\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n job_name = \"integrations/couchdb\"\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_namespace\",\"__meta_kubernetes_pod_name\",\"__meta_kubernetes_pod_container_port_name\"]\n separator = \":\"\n regex = \"sample-apps:.*-couchdb.*:metrics\"\n replacement = \"couchdb\"\n target_label = \"integration\"\n }\n \n rule {\n source_labels = [\"integration\",\"__meta_kubernetes_pod_ip\",\"__meta_kubernetes_pod_container_port_number\"]\n separator = \":\"\n regex = \"couchdb:(.*):(.*)\"\n replacement = \"$1:$2\"\n target_label = \"instance\"\n }\n\n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"couchdb\\\\\"}\"\n\n stage.static_labels {\n values = {\n couchdb_cluster = \"\",\n job = \"integrations/apache-cassandra\",\n log_type = \"couchdb\",\n }\n }\n\n stage.labels {\n values = {\n instance = null,\n }\n }\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"hadoop_datanode_service_jmx\" {\n role = \"service\"\n selectors {\n role = \"service\"\n field = \"metadata.name=\"\n }\n namespaces = [\"\"]\n }\n \n discovery.relabel \"hadoop_datanode_service_jmx\" {\n targets = discovery.kubernetes.services.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_service_port_name\"]\n regex = \"\"\n action = \"keep\"\n }\n }\n\n discovery.kubernetes \"hadoop_namenode_service_jmx\" {\n role = \"service\"\n selectors {\n role = \"service\"\n field = \"metadata.name=\"\n }\n namespaces = [\"\"]\n }\n \n discovery.relabel \"hadoop_namenode_service_jmx\" {\n targets = discovery.kubernetes.hadoop_namenode_service_jmx.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_service_port_name\"]\n regex = \"\"\n action = \"keep\"\n }\n }\n \n discovery.kubernetes \"hadoop_nodemanager_service_jmx\" {\n role = \"service\"\n selectors {\n role = \"service\"\n field = \"metadata.name=\"\n }\n namespaces = [\"\"]\n }\n \n discovery.relabel \"hadoop_nodemanager_service_jmx\" {\n targets = discovery.kubernetes.hadoop_nodemanager_service_jmx.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_service_port_name\"]\n regex = \"\"\n action = \"keep\"\n }\n }\n \n discovery.kubernetes \"hadoop_resourcemanager_service_jmx\" {\n role = \"service\"\n selectors {\n role = \"service\"\n field = \"metadata.name=\"\n }\n namespaces = [\"\"]\n }\n \n discovery.relabel \"hadoop_resourcemanager_service_jmx\" {\n targets = discovery.kubernetes.hadoop_resourcemanager_service_jmx.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_service_port_name\"]\n regex = \"\"\n action = \"keep\"\n }\n }\n \n discovery.relabel \"hadoop_all_services_jmx\" {\n targets = array.concat(\n discovery.relabel.hadoop_datanode_service_jmx.output,\n discovery.relabel.hadoop_namenode_service_jmx.output,\n discovery.relabel.hadoop_nodemanager_service_jmx.output,\n discovery.relabel.hadoop_resourcemanager_service_jmx.output,\n )\n rule {\n target_label = \"hadoop_cluster\"\n replacement = \"\"\n }\n }\n \n prometheus.scrape \"integrations_hadoop_prometheus_exporter\" {\n targets = discovery.relabel.hadoop_all_services_jmx.output\n job_name = \"integrations/apache-hadoop\"\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace all values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\", \"__meta_kubernetes_pod_container_name\"]\n separator = \":\"\n regex = \"(::)\"\n target_label = \"integration\"\n replacement = \"hadoop\"\n }\n \n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\", \"__meta_kubernetes_pod_container_name\"]\n separator = \":\"\n regex = \"(::)\"\n target_label = \"integration\"\n replacement = \"hadoop\"\n }\n \n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\", \"__meta_kubernetes_pod_container_name\"]\n separator = \":\"\n regex = \"(::)\"\n target_label = \"integration\"\n replacement = \"hadoop\"\n }\n \n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\", \"__meta_kubernetes_pod_container_name\"]\n separator = \":\"\n regex = \"(::)\"\n target_label = \"integration\"\n replacement = \"hadoop\"\n }\n \n rule {\n source_labels = [\"integration\",\"__address__\"]\n regex = \"hadoop-(datanode|namenode|nodemanager|resourcemanager):(.+)\"\n replacement = \"$2\"\n target_label = \"instance\"\n }\n rule {\n source_labels = [\"integration\"]\n regex = \"hadoop-(datanode|namenode|nodemanager|resourcemanager)\"\n target_label = \"log_type\"\n }\n\n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"hadoop\\\\\"}\"\n\n stage.static_labels {\n values = {\n hadoop_cluster = \"\",\n job = \"integrations/apache-hadoop\",\n }\n }\n\n stage.labels {\n values = {\n instance = null,\n log_type = null,\n }\n }\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n prometheus.exporter.apache \"exporter_apache_http\" {\n scrape_uri = \"http://..svc.cluster.local:80/server-status?auto\"\n }\n \n prometheus.scrape \"exporter_apache_http\" {\n targets = prometheus.exporter.apache.exporter_apache_http.targets\n job_name = \"integrations/apache_http\"\n forward_to = [prometheus.relabel.exporter_apache_http.receiver]\n }\n \n prometheus.relabel \"exporter_apache_http\" {\n // this has to be manually set to the value of your apache http pod -\n rule {\n replacement = \"\"\n target_label = \"instance\"\n }\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_pod_label_\", \"__meta_kubernetes_pod_container_port_number\"]\n separator = \":\"\n regex = \":\"\n replacement = \"apache_http\"\n target_label = \"integration\"\n }\n\n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"apache_http\\\\\"}\"\n \n stage.regex {\n expression = \"^(?P[^ ]*) [^ ]* (?P[^ ]*) \\\\\\\\[(?P[^\\\\\\\\]]*)\\\\\\\\] \\\\\"(?P\\\\\\\\S+)(?: +(?P[^ ]*) +\\\\\\\\S*)?\\\\\" (?P[^ ]*) (?P[^ ]*)(?: \\\\\"(?P[^\\\\\\\\\\\\\"]*)\\\\\" \\\\\"(?P.*)\\\\\")?$\"\n }\n \n stage.template {\n source = \"instance\"\n template = \"{{ .namespace }}-{{ .container }}\"\n }\n\n stage.metrics { \n metric.histogram {\n name = \"response_http_codes\"\n description = \"Apache responses by HTTP codes\"\n source = \"code\"\n prefix = \"apache_\"\n buckets = [199,299,399,499,599]\n }\n }\n \n stage.labels {\n values = {\n method = \"\",\n }\n }\n \n stage.static_labels {\n values = {\n logtype = \"access\",\n job = \"integrations/apache_http\",\n }\n }\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"apache_mesos\" {\n role = \"endpoints\"\n selectors {\n role = \"service\"\n field = \"metadata.name=\"\n }\n }\n\n discovery.relabel \"apache_mesos\" {\n targets = discovery.kubernetes.apache_mesos.targets\n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"\"\n action = \"keep\"\n }\n rule {\n replacement = \"\"\n target_label = \"mesos_cluster\"\n }\n }\n\n prometheus.scrape \"integrations_mesos_statsd_exporter\" {\n targets = discovery.relabel.apache_mesos.output\n job_name = \"integrations/apache-mesos\"\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\", \"__meta_kubernetes_pod_container_name\"]\n separator = \":\"\n regex = \"(::)\"\n replacement = \"apache_mesos\"\n target_label = \"integration\"\n }\n rule {\n source_labels = [\"integration\"]\n regex = \"apache_mesos\"\n replacement = \"master\"\n target_label = \"log_type\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\", \"__meta_kubernetes_pod_container_name\"]\n separator = \":\"\n regex = \"(::)\"\n replacement = \"apache_mesos\"\n target_label = \"integration\"\n }\n rule {\n source_labels = [\"integration\", \"log_type\"]\n separator = \":\"\n regex = \"apache_mesos:\"\n replacement = \"agent\"\n target_label = \"log_type\"\n }\n rule {\n source_labels = [\"integration\", \"__meta_kubernetes_node_name\"]\n separator = \":\"\n regex = \"apache_mesos:(.*)\"\n target_label = \"node\"\n }\n rule {\n source_labels = [\"integration\"]\n regex = \"apache_mesos\"\n replacement = \"\"\n target_label = \"mesos_cluster\"\n }\n rule {\n source_labels = [\"integration\"]\n regex = \"apache_mesos\"\n replacement = \"integrations/mesos\"\n target_label = \"job\"\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"apache_solr\" {\n role = \"endpoints\"\n selectors {\n role = \"service\"\n field = \"metadata.name=\"\n }\n }\n\n discovery.relabel \"apache_solr\" {\n targets = discovery.kubernetes.apache_solr.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\"]\n separator = \"-\"\n target_label = \"instance\"\n }\n rule {\n replacement = \"\"\n target_label = \"solr_cluster\"\n }\n }\n \n prometheus.scrape \"solr_metrics\" { \n targets = discovery.relabel.integrations_solr.output\n metrics_path = \"/metrics\"\n job_name = \"integrations/apache-solr\"\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_namespace\",\"__meta_kubernetes_pod_name\"]\n separator = \":\"\n regex = \":\"\n replacement = \"apache_solr\"\n target_label = \"integration\"\n }\n \n rule {\n source_labels = [\"integration\", \"__meta_kubernetes_pod_ip\",\"__meta_kubernetes_pod_container_port_number\"]\n separator = \":\"\n regex = \"apache_solr:(.*):(.*)\"\n replacement = \"$1:$2\"\n target_label = \"instance\"\n }\n \n rule {\n source_labels = [\"integration\"]\n regex = \"apache_solr\"\n replacement = \"/var/log/solr/solr.log\"\n target_label = \"filename\"\n }\n\n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"apache_solr\\\\\"}\"\n \n stage.multiline {\n firstline = \"^\\\\\\\\d{4}-\\\\\\\\d{2}-\\\\\\\\d{2} \\\\\\\\d{2}:\\\\\\\\d{2}:\\\\\\\\d{2}\\\\\\\\.\\\\\\\\d{3}\"\n }\n stage.regex {\n expression = \"^\\\\\\\\d{4}-\\\\\\\\d{2}-\\\\\\\\d{2} \\\\\\\\d{2}:\\\\\\\\d{2}:\\\\\\\\d{2}\\\\\\\\.\\\\\\\\d{3} (?P\\\\\\\\w+)\"\n }\n stage.labels {\n values = {\n level = \"\",\n }\n }\n stage.static_labels {\n values = {\n solr_cluster = \"\",\n job = \"integrations/apache-solr\",\n }\n }\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"tomcat_service_jmx\" {\n role = \"service\"\n selectors {\n role = \"service\"\n field = \"metadata.name=\"\n }\n namespaces {\n names = []\n }\n }\n\n discovery.relabel \"tomcat_service_jmx\" {\n targets = discovery.kubernetes.tomcat_service_jmx.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_service_port_name\"]\n action = \"keep\"\n regex = \"\"\n }\n \n rule {\n replacement = \"integrations/apache-tomcat\"\n target_label = \"job\"\n }\n }\n \n prometheus.scrape \"tomcat_metrics\" {\n targets = discovery.relabel.tomcat_service_jmx.output\n job_name = \"integrations/apache-tomcat\"\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\", \"__meta_kubernetes_pod_container_name\"]\n separator = \":\"\n regex = \"(::)\"\n replacement = \"apache-tomcat\"\n target_label = \"integration\"\n }\n rule {\n source_labels = [\"integration\"]\n regex = \"apache-tomcat\"\n replacement = \"catalina.out\"\n target_label = \"log_type\"\n }\n rule {\n source_labels = [\"integration\"]\n regex = \"apache-tomcat\"\n replacement = \"..svc:\"\n target_label = \"instance\"\n }\n rule {\n source_labels = [\"integration\"]\n regex = \"apache-tomcat\"\n replacement = \"integrations/apache-tomcat\"\n target_label = \"job\"\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nintegrations:\n cert-manager:\n instances:\n - name: \n labelSelectors:\n : `;\nexport default { metrics };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n // Cilium Agent\n discovery.kubernetes \"cilium_agent\" {\n role = \"service\"\n selectors {\n role = \"service\"\n label = \"k8s-app=cilium\"\n }\n }\n \n discovery.relabel \"cilium_agent\" {\n targets = discovery.kubernetes.cilium_agent.targets\n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"metrics\"\n action = \"keep\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_service_label_k8s_app\"]\n target_label = \"k8s_app\"\n }\n }\n\n prometheus.scrape \"cilium_agent\" {\n targets = discovery.relabel.cilium_agent.output\n job_name = \"integrations/cilium-enterprise/cilium-agent\"\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }\n\n // Cilium Operator\n discovery.kubernetes \"cilium_operator\" {\n role = \"service\"\n selectors {\n role = \"service\"\n label = \"name=cilium-operator,io.cilium/app=operator\"\n }\n }\n\n discovery.relabel \"cilium_operator\" {\n targets = discovery.kubernetes.cilium_operator.targets\n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"metrics\"\n action = \"keep\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_service_label_io_cilium_app_app\"]\n target_label = \"io_cilium_app\"\n }\n }\n\n prometheus.scrape \"cilium_operator\" {\n targets = discovery.relabel.cilium_operator.output\n job_name = \"integrations/cilium-enterprise/cilium-operator\"\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }\n\n // Hubble Relay\n discovery.kubernetes \"hubble_relay\" {\n role = \"service\"\n selectors {\n role = \"service\"\n label = \"k8s-app=hubble-relay\"\n }\n }\n\n discovery.relabel \"hubble_relay\" {\n targets = discovery.kubernetes.hubble_relay.targets\n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"metrics\"\n action = \"keep\"\n }\n }\n\n prometheus.scrape \"hubble_relay\" {\n targets = discovery.relabel.hubble_relay.output\n job_name = \"integrations/cilium-enterprise/hubble-relay\"\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }\n\n // Hubble\n discovery.kubernetes \"hubble\" {\n role = \"service\"\n selectors {\n role = \"service\"\n label = \"k8s-app=hubble\"\n }\n }\n \n discovery.relabel \"hubble\" {\n targets = discovery.kubernetes.services.targets\n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"hubble-metrics\"\n action = \"keep\"\n }\n }\n\n prometheus.scrape \"hubble\" {\n targets = discovery.relabel.hubble.output\n job_name = \"integrations/cilium-enterprise/hubble\"\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }\n\n // Hubble Enterprise\n discovery.kubernetes \"hubble_enterprise\" {\n role = \"service\"\n selectors {\n role = \"service\"\n label = \"app.kubernetes.io/name=hubble-enterprise\"\n }\n }\n\n discovery.relabel \"hubble_enterprise\" {\n targets = discovery.kubernetes.hubble_enterprise.targets\n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"metrics\"\n action = \"keep\"\n }\n }\n\n prometheus.scrape \"hubble_enterprise\" {\n targets = discovery.relabel.hubble_enterprise.output\n job_name = \"integrations/cilium-enterprise/hubble-enterprise\"\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }\n\n // Hubble Timescape Ingester\n discovery.kubernetes \"hubble_timescape_ingester\" {\n role = \"service\"\n selectors {\n role = \"service\"\n label = \"app.kubernetes.io/name=hubble-timescape-ingester,app.kubernetes.io/component=ingester\"\n }\n }\n\n discovery.relabel \"hubble_timescape_ingester\" {\n targets = discovery.kubernetes.hubble_timescape_ingester.targets\n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"metrics\"\n action = \"keep\"\n }\n }\n \n prometheus.scrape \"hubble_timescape_ingester\" {\n targets = discovery.relabel.hubble_timescape_ingester.output\n job_name = \"integrations/cilium-enterprise/hubble-timescape-ingester\"\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }\n\n // Hubble Timescape Server\n discovery.kubernetes \"hubble_timescape_server\" {\n role = \"service\"\n selectors {\n role = \"service\"\n label = \"app.kubernetes.io/name=hubble-timescape-server,app.kubernetes.io/component=server\"\n }\n }\n\n discovery.relabel \"hubble_timescape_server\" {\n targets = discovery.kubernetes.hubble_timescape_server.targets\n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"metrics\"\n action = \"keep\"\n }\n }\n \n prometheus.scrape \"hubble_timescape_server\" {\n targets = discovery.relabel.hubble_timescape_server.output\n job_name = \"integrations/cilium-enterprise/hubble-timescape-server\"\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nexport default { metrics };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"metrics_clickhouse\" {\n role = \"endpoints\"\n selectors {\n role = \"endpoints\"\n label = \"=\"\n }\n }\n \n discovery.relabel \"metrics_clickhouse\" {\n targets = discovery.kubernetes.metrics_clickhouse.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_endpoint_port_name\"]\n regex = \"\"\n action = \"keep\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_pod_label_clickhouse_cluster\"]\n target_label = \"clickhouse_cluster\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_pod_name\"]\n target_label = \"instance\"\n }\n }\n \n prometheus.scrape \"metrics_clickhouse\" {\n targets = discovery.relabel.metrics_clickhouse.output\n job_name = \"integrations/clickhouse\"\n honor_labels = true\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_label_\"]\n separator = \":\"\n regex = \":\"\n replacement = \"clickhouse\"\n target_label = \"integration\"\n }\n \n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"clickhouse\\\\\"}\"\n \n stage.multiline {\n firstline = \\`^([\\\\d]{4}).([\\\\d]{1,2}).([\\\\d]{1,2}) (([\\\\d]+):([\\\\d]+):([\\\\d]+).([\\\\d]+))\\`\n max_lines = 0\n max_wait_time = \"0s\"\n }\n \n stage.regex {\n expression = \\`(?P([\\\\d]{4}).([\\\\d]{1,2}).([\\\\d]{1,2}) (([\\\\d]+):([\\\\d]+):([\\\\d]+).([\\\\d]+))) \\\\[ \\\\d+ \\\\] \\\\{.*\\\\} <(?P.+)> (?P(?s:.*))$\\`\n }\n\n stage.template {\n source = \"instance\"\n template = \"{{ .namespace }}-{{ .container }}\"\n }\n\n stage.labels {\n values = {\n instance = \"pod\",\n level = \"\",\n }\n }\n \n stage.static_labels {\n values = {\n job = \"integrations/clickhouse\",\n clickhouse_cluster = \"\",\n }\n }\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"cockroachdb\" {\n role = \"service\"\n selectors {\n role = \"service\"\n label = \"=\"\n }\n }\n\n prometheus.scrape \"cockroachdb\" {\n targets = discovery.kubernetes.cockroachdb.output\n job_name = \"integrations/cockroachdb\"\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nexport default { metrics };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"coredns\" {\n role = \"pod\"\n selectors {\n role = \"pod\"\n label = \"=\"\n }\n }\n \n discovery.relabel \"coredns\" {\n targets = discovery.kubernetes.coredns.targets\n rule {\n source_labels = [\"__meta_kubernetes_pod_container_port_number\"]\n regex = \"\"\n action = \"keep\"\n } \n rule {\n source_labels = [\"__meta_kubernetes_pod_name\"]\n target_label = \"instance\"\n }\n }\n\n prometheus.scrape \"coredns\" {\n targets = discovery.relabel.coredns.output\n job_name = \"integrations/tensorflow\"\n honor_labels = true\n }`;\n\nexport default { metrics };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"couchbase\" {\n role = \"endpoints\"\n selectors {\n role = \"service\"\n field = \"metadata.name=\"\n }\n }\n\n discovery.relabel \"couchbase\" {\n targets = discovery.kubernetes.couchbase.targets\n \n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_name\"]\n separator = \"-\"\n target_label = \"instance\"\n }\n rule {\n replacement = \"\"\n target_label = \"couchbase_cluster\"\n }\n }\n \n prometheus.scrape \"metrics_couchbase\" { \n targets = discovery.relabel.couchbase.output\n job_name = \"integrations/couchbase\"\n honor_labels = true\n basic_auth {\n username = \"\"\n password = \"\"\n }\n forward_to = [prometheus.remote_write.grafana_cloud_metrics.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_pod_name\",\"__meta_kubernetes_pod_container_name\"]\n separator = \":\"\n regex = \":\"\n replacement = \"couchbase\"\n target_label = \"integration\"\n }\n \n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"couchbase\\\\\"}\"\n \n stage.multiline {\n firstline = \\`\\\\[\\d\\\\] couchbase.log.*\\`\n max_lines = 0\n max_wait_time = \"3s\"\n }\n\n stage.drop {\n expression = \"---\"\n }\n\n stage.template {\n source = \"instance\"\n template = \"{{ .namespace }}-{{ .pod }}\"\n }\n\n stage.static_labels {\n values = {\n couchbase_cluster = \"\",\n job = \"integrations/couchbase\",\n }\n }\n \n stage.labels {\n values = {\n instance = null,\n level = null,\n }\n }\n }`;\n\nexport default { metrics, logs };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nintegrations:\n etcd:\n instances:\n - name: \n labelSelectors:\n : \n`;\n\nexport default { metrics };\n","const metrics = `# Replace any values between the angle brackets '<>', with your desired configuration\nalloy-metrics:\n extraConfig: |-\n discovery.kubernetes \"gitlab\" {\n role = \"pod\"\n selectors {\n role = \"pod\"\n label = \"=\"\n }\n }\n \n discovery.relabel \"gitlab\" {\n targets = discovery.kubernetes.gitlab.targets\n rule {\n source_labels = [\"__meta_kubernetes_pod_container_port_number\"]\n regex = \"\"\n action = \"keep\"\n }\n rule {\n source_labels = [\"__meta_kubernetes_namespace\", \"__meta_kubernetes_pod_container_name\"]\n separator = \"-\"\n target_label = \"instance\"\n } \n }\n \n prometheus.scrape \"gitlab\" {\n targets = discovery.relabel.gitlab.output\n metrics_path = \"/-/metrics\"\n job_name = \"integrations/gitlab\"\n honor_labels = true\n forward_to = [prometheus.remote_write.metrics_service.receiver]\n }`;\n\nconst logs = `# Replace any values between the angle brackets '<>', with your desired configuration\npodLogs:\n extraDiscoveryRules: |-\n rule {\n source_labels = [\"__meta_kubernetes_pod_label_\", \"__meta_kubernetes_pod_container_port_number\"]\n separator = \":\"\n regex = \":\"\n replacement = \"gitlab\"\n target_label = \"integration\"\n }\n\n extraLogProcessingStages: |-\n stage.match {\n selector = \"{integration=\\\\\"gitlab\\\\\"}\"\n\n stage.drop {\n expression = \"^([^{}].*)?$\"\n }\n \n stage.regex {\n expression = \\`^\\\\{\\\"severity\\\":\\\"(?PERROR)\\\",\\\"time\\\":\\\"(?P