grafana.com
Open in
urlscan Pro
2600:1901:0:b3ea::
Public Scan
Submitted URL: https://go.grafana.com/MzU2LVlGRy0zODkAAAGWdu6wFHVf_OFdxO4q-vqax0yXTKYYDcRiXoXgyDsNPo_ZEQtVkkPlX2InO4oeaQtjUaFooOg=
Effective URL: https://grafana.com/events/observabilitycon/?src=email&cnt=ltn&camp=2024-10-ltn-gen-owned&mkt_tok=MzU2LVlGRy0zODkAAA...
Submission: On October 29 via api from DE — Scanned from US
Effective URL: https://grafana.com/events/observabilitycon/?src=email&cnt=ltn&camp=2024-10-ltn-gen-owned&mkt_tok=MzU2LVlGRy0zODkAAA...
Submission: On October 29 via api from DE — Scanned from US
Form analysis
4 forms found in the DOM<form class="chat-feedback">
<div><label for="">
<p class="body-default text-gray-8 mb-half"><strong>Comments</strong> <span class="f-14 text-gray-6 fw-400">(required)</span></p>
</label><textarea class="bg-white input-no-focus h-150" placeholder="Let us know about your experience with Grot" x-model="summary.feedback.comments" id="modalChatFeedback" :disabled="summary.feedback.success === true"></textarea></div>
<div class="text-center mx-auto maxw-200"><button class="btn btn--primary w-100" @click.prevent="submitSummaryFeedback" x-show="!summary.feedback.success" :disabled="!summary.feedback.comments || !summary.feedback.rating">
<span x-show="!summary.feedback.loading && !summary.feedback.success">Send </span><span x-show="summary.feedback.loading">Sending...</span></button>
<div class="d-flex justify-content-space-evenly maxw-75 mx-auto" x-show="summary.feedback.success"><span><svg width="27" height="26" viewBox="0 0 27 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.94922 12.6283 12.4033 16l6.1459-6" stroke="#1a7f4b" stroke-width="2" stroke-linecap="square"></path>
<circle opacity=".2" cx="13.75" cy="13" r="12" stroke="#1a7f4b" stroke-width="2"></circle>
</svg></span><span>Sent</span></div>
</div>
<div class="text-center mb-2 mx-auto maxw-500">
<p x-show="summary.feedback.success">Thank you! Your message has been received!</p>
<p x-show="summary.feedback.error !== ''" x-text="summary.feedback.error"></p>
</div>
</form>
<form class="chat-feedback">
<div><label for="modalChatFeedback">
<p class="body-default text-gray-8 mb-half"><strong>Comments</strong> <span class="f-14 text-gray-6 fw-400">(required)</span></p>
</label><textarea class="bg-white input-no-focus h-150" placeholder="Let us know about your experience with Grot" x-model="conversation_feedback.comments" id="modalChatFeedback" :disabled="conversation_feedback.success === true"></textarea></div>
<div class="text-center mx-auto maxw-200"><button class="btn btn--primary w-100" @click.prevent="submitChatFeedback(conversation_feedback.conversation_index)" x-show="!conversation_feedback.success"
:disabled="!conversation_feedback.comments || !conversation_feedback.rating">
<span x-show="!conversation_feedback.loading && !conversation_feedback.success">Send</span>
<span x-show="conversation_feedback.loading"></span></button>
<div class="d-flex justify-content-space-evenly maxw-75 mx-auto" x-show="conversation_feedback.success"><span><svg width="27" height="26" viewBox="0 0 27 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.94922 12.6283 12.4033 16l6.1459-6" stroke="#1a7f4b" stroke-width="2" stroke-linecap="square"></path>
<circle opacity=".2" cx="13.75" cy="13" r="12" stroke="#1a7f4b" stroke-width="2"></circle>
</svg></span><span>Sent</span></div>
</div>
<div class="text-center mb-2 mx-auto maxw-500">
<p x-show="conversation_feedback.success">Thank you! Your message has been received!</p>
<p x-show="conversation_feedback.error !== ''" x-text="conversation_feedback.error"></p>
</div>
</form>
<form @submit.prevent="submit()"><template x-if="!response && !email_error">
<div class="form-main"><template x-for="field in form.fields" :key="field">
<div class="form-input-wrap"><template x-if="field.element === 'input' && field.type === 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<template x-if="email !== ''"><input :name="field.name" :value="email" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</template><template x-if="email === ''"><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern"></template>
</div>
</template><template x-if="field.element === 'input' && field.type !== 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</div>
</template><template x-if="field.element === 'textarea'">
<div :class="field.wrapperClass || 'form-input'"><label :for="field.label" x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<textarea :name="field.name" :cols="field.cols || '250'" :rows="field.rows || '4'" @input="set_value($event, field.name)" :class="field.inputClass" :placeholder="field.placeholder || ''"
:required="field.required === false ? undefined : true"></textarea>
</div>
</template><template x-if="field.element === 'select'">
<div :class="field.wrapperClass || 'form-input'">
<div><label :for="field.label" x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<div class="dropdown mb-0"><select :class="field.selectClass || 'form__input'" :id="field.label" :name="field.name" @input="set_value($event, field.name)" :required="field.required === false ? undefined : true"><template
x-if="field.placeholder">
<option disabled="" selected="" value="" x-text="field.placeholder"></option>
</template><template x-if="!field.placeholder">
<option disabled="" selected="" value="">Select...</option>
</template><template x-for="option in field.options" :key="option">
<option :value="option" x-text="option"></option>
</template></select></div>
</div>
</div>
</template><template x-if="field.element === 'radio'">
<div :class="field.wrapperClass || 'form-input'"><label x-show="field.hideLabel === true ? false : true" :class="field.labelClass" x-text="field.required !== false ? field.label + '*' : field.label"></label>
<div :class="field.optionsClass"><template x-for="option in field.options" :key="option">
<div :class="field.radioGroupClass || 'd-flex flex-direction-row align-items-center justify-items-center'"><input :class="field.radioInputClass" :id="option.label.replace(/\"/g, "")" :name="field.name" type="radio"
:value="option.value" @input="set_value($event, field.name)" :required="field.required === false ? undefined : true">
<label :class="field.radioLabelClass || 'ml-half'" :for="option.label.replace(/\"/g, "")" x-text="option.label.replace(/\"/g, "")"></label>
</div>
</template></div>
</div>
</template></div>
</template>
<div><label><sup>*</sup>required</label></div>
<div class="form-submit"><template x-if="form.submit_btn"><button class="btn" :class="form.submit_btn" type="submit" x-text="form.submit"></button>
</template><template x-if="!form.submit_btn"><button class="btn btn--primary" type="submit" x-text="form.submit"></button></template></div>
</div>
</template>
<div class="form-main"><template x-for="field in form.fields" :key="field">
<div class="form-input-wrap"><template x-if="field.element === 'input' && field.type === 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<template x-if="email !== ''"><input :name="field.name" :value="email" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</template><template x-if="email === ''"><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern"></template>
</div>
</template><template x-if="field.element === 'input' && field.type !== 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</div>
</template><template x-if="field.element === 'textarea'">
<div :class="field.wrapperClass || 'form-input'"><label :for="field.label" x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<textarea :name="field.name" :cols="field.cols || '250'" :rows="field.rows || '4'" @input="set_value($event, field.name)" :class="field.inputClass" :placeholder="field.placeholder || ''"
:required="field.required === false ? undefined : true"></textarea>
</div>
</template><template x-if="field.element === 'select'">
<div :class="field.wrapperClass || 'form-input'">
<div><label :for="field.label" x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<div class="dropdown mb-0"><select :class="field.selectClass || 'form__input'" :id="field.label" :name="field.name" @input="set_value($event, field.name)" :required="field.required === false ? undefined : true"><template
x-if="field.placeholder">
<option disabled="" selected="" value="" x-text="field.placeholder"></option>
</template><template x-if="!field.placeholder">
<option disabled="" selected="" value="">Select...</option>
</template><template x-for="option in field.options" :key="option">
<option :value="option" x-text="option"></option>
</template></select></div>
</div>
</div>
</template><template x-if="field.element === 'radio'">
<div :class="field.wrapperClass || 'form-input'"><label x-show="field.hideLabel === true ? false : true" :class="field.labelClass" x-text="field.required !== false ? field.label + '*' : field.label"></label>
<div :class="field.optionsClass"><template x-for="option in field.options" :key="option">
<div :class="field.radioGroupClass || 'd-flex flex-direction-row align-items-center justify-items-center'"><input :class="field.radioInputClass" :id="option.label.replace(/\"/g, "")" :name="field.name" type="radio"
:value="option.value" @input="set_value($event, field.name)" :required="field.required === false ? undefined : true">
<label :class="field.radioLabelClass || 'ml-half'" :for="option.label.replace(/\"/g, "")" x-text="option.label.replace(/\"/g, "")"></label>
</div>
</template></div>
</div>
</template></div>
</template>
<div class="form-input-wrap"><template x-if="field.element === 'input' && field.type === 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<template x-if="email !== ''"><input :name="field.name" :value="email" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</template><template x-if="email === ''"><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern"></template>
</div>
</template>
<div :class="field.wrapperClass || 'form-input'" class="form-input"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true">Email*</label>
<template x-if="email !== ''"><input :name="field.name" :value="email" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</template><template x-if="email === ''"><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern"></template><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type"
@input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label" :required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern" name="email"
placeholder="Email" type="email" class="" aria-label="Email" required="required">
</div><template x-if="field.element === 'input' && field.type !== 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label" :required="field.required === false ? undefined : true"
maxlength="255" :title="field.title" :pattern="field.pattern">
</div>
</template><template x-if="field.element === 'textarea'">
<div :class="field.wrapperClass || 'form-input'"><label :for="field.label" x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<textarea :name="field.name" :cols="field.cols || '250'" :rows="field.rows || '4'" @input="set_value($event, field.name)" :class="field.inputClass" :placeholder="field.placeholder || ''"
:required="field.required === false ? undefined : true"></textarea>
</div>
</template><template x-if="field.element === 'select'">
<div :class="field.wrapperClass || 'form-input'">
<div><label :for="field.label" x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<div class="dropdown mb-0"><select :class="field.selectClass || 'form__input'" :id="field.label" :name="field.name" @input="set_value($event, field.name)" :required="field.required === false ? undefined : true"><template
x-if="field.placeholder">
<option disabled="" selected="" value="" x-text="field.placeholder"></option>
</template><template x-if="!field.placeholder">
<option disabled="" selected="" value="">Select...</option>
</template><template x-for="option in field.options" :key="option">
<option :value="option" x-text="option"></option>
</template></select></div>
</div>
</div>
</template><template x-if="field.element === 'radio'">
<div :class="field.wrapperClass || 'form-input'"><label x-show="field.hideLabel === true ? false : true" :class="field.labelClass" x-text="field.required !== false ? field.label + '*' : field.label"></label>
<div :class="field.optionsClass"><template x-for="option in field.options" :key="option">
<div :class="field.radioGroupClass || 'd-flex flex-direction-row align-items-center justify-items-center'"><input :class="field.radioInputClass" :id="option.label.replace(/\"/g, "")" :name="field.name" type="radio"
:value="option.value" @input="set_value($event, field.name)" :required="field.required === false ? undefined : true">
<label :class="field.radioLabelClass || 'ml-half'" :for="option.label.replace(/\"/g, "")" x-text="option.label.replace(/\"/g, "")"></label>
</div>
</template></div>
</div>
</template>
</div>
<div><label><sup>*</sup>required</label></div>
<div class="form-submit"><template x-if="form.submit_btn"><button class="btn" :class="form.submit_btn" type="submit" x-text="form.submit"></button>
</template><template x-if="!form.submit_btn"><button class="btn btn--primary" type="submit" x-text="form.submit"></button></template><button class="btn btn--primary" type="submit" x-text="form.submit">Sign up</button></div>
</div><template x-if="form.content_bottom && response != true">
<div class="form__notice mt-1" :class="form.align" x-html="form.content_bottom"></div>
</template>
<div class="form__notice mt-1" :class="form.align" x-html="form.content_bottom">By signing up, you agree to be emailed about this event and related product information. </div><template
x-if="(response === true && form.success) || (response === true && !form.success)">
<div><template x-if="form.success">
<p class="form-response form-response--success text-center" x-html="form.success"></p>
</template><template x-if="!form.success">
<p class="form-response form-response--success text-center">Thanks. You are signed up.</p>
</template></div>
</template><template class="form-response form-response--error mt-1" x-if="response === false">
<p class="form-response form-response--success mt-1 text-center">Sorry, an error occurred. Email <a href="mailto:update@grafana.com">update@grafana.com</a> for help.</p>
</template><template x-if="email_error">
<p class="form-response form-response__error mt-1">Sorry, this event is only open to select companies.</p>
</template>
<script src="//go2.grafana.com/js/forms2/js/forms2.min.js"></script>
</form>
<form @submit.prevent="submit()"><template x-if="!response">
<div><template x-for="field in form.fields" :key="field">
<div class="alpine-form__wrap"><template x-if="field.element === 'input' && field.type === 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<template x-if="email !== ''"><input :name="field.name" :value="email" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</template><template x-if="email === ''"><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern"></template>
</div>
</template><template x-if="field.element === 'input' && field.type !== 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</div>
</template>
<div class="form-submit"><template x-if="form.submit_btn"><button class="btn" :class="form.submit_btn" type="submit" x-text="form.submit"></button>
</template><template x-if="!form.submit_btn"><button class="btn btn--outline-white btn--form" type="submit">Subscribe</button></template></div>
</div>
</template></div>
</template>
<div><template x-for="field in form.fields" :key="field">
<div class="alpine-form__wrap"><template x-if="field.element === 'input' && field.type === 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<template x-if="email !== ''"><input :name="field.name" :value="email" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</template><template x-if="email === ''"><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern"></template>
</div>
</template><template x-if="field.element === 'input' && field.type !== 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</div>
</template>
<div class="form-submit"><template x-if="form.submit_btn"><button class="btn" :class="form.submit_btn" type="submit" x-text="form.submit"></button>
</template><template x-if="!form.submit_btn"><button class="btn btn--outline-white btn--form" type="submit">Subscribe</button></template></div>
</div>
</template>
<div class="alpine-form__wrap"><template x-if="field.element === 'input' && field.type === 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<template x-if="email !== ''"><input :name="field.name" :value="email" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</template><template x-if="email === ''"><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern"></template>
</div>
</template>
<div :class="field.wrapperClass || 'form-input'" class="form-input"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true">Email*</label>
<template x-if="email !== ''"><input :name="field.name" :value="email" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern">
</template><template x-if="email === ''"><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label"
:required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern"></template><input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type"
@input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label" :required="field.required === false ? undefined : true" maxlength="255" :title="field.title" :pattern="field.pattern" name="email"
placeholder="Email" type="email" class="" aria-label="Email" required="required">
</div><template x-if="field.element === 'input' && field.type !== 'email'">
<div :class="field.wrapperClass || 'form-input'"><label x-text="field.required !== false ? field.label + '*' : field.label" x-show="field.hideLabel === true ? false : true"></label>
<input :name="field.name" :placeholder="field.placeholder || field.label" :type="field.type" @input="set_value($event, field.name)" :class="field.inputClass" :aria-label="field.label" :required="field.required === false ? undefined : true"
maxlength="255" :title="field.title" :pattern="field.pattern">
</div>
</template>
<div class="form-submit"><template x-if="form.submit_btn"><button class="btn" :class="form.submit_btn" type="submit" x-text="form.submit"></button>
</template><template x-if="!form.submit_btn"><button class="btn btn--outline-white btn--form" type="submit">Subscribe</button></template><button class="btn btn--outline-white btn--form" type="submit">Subscribe</button></div>
</div>
</div><template x-if="response === true && form.success">
<div>
<p class="h5 form-response form-response__success inter m-0" x-text="form.success"></p>
</div>
</template><template x-if="response === true && !form.success">
<div>
<p class="h5 form-response form-response__success inter m-0"></p>
</div>
</template><template class="form-response form-response--error mt-1" x-if="response === false">
<p class="form-response form-response--success text-white mt-1">Sorry, an error occurred. Email <a class="text-white text-underline" href="mailto:update@grafana.com">update@grafana.com</a> for help.</p>
</template>
</form>
Text Content
Path: Copied! * Products Open Source Solutions Learn Docs Company * Downloads Contact us Sign in Create free account Contact us Products All Products LGTM+ Stack Logs powered by Grafana Loki Grafana for visualization Traces powered by Grafana Tempo Metrics powered by Grafana Mimir and Prometheus Profiles powered by Grafana Pyroscope Key Capabilities AI/ML insights Identify anomalies and reduce toil Contextual root cause analysis Automated anomaly correlation SLO management Create SLOs and error budget alerts Alerting Trigger alerts from any data source Plugins Connect Grafana to data sources, apps, and more Observability Solutions Frontend Observability Gain real user monitoring insights Application Observability Monitor application performance Infrastructure observability Ensure infrastructure health and performance Testing Performance & load testing powered by Grafana k6 Synthetic Monitoring powered by Grafana k6 IRM OnCall Observability native incident response Incident Observability native incident management Deploy The Stack Grafana Cloud Fully managed Grafana Enterprise Self-managed Pricing Hint: It starts at FREE Open Source All Open Source Grafana Loki Multi-tenant log aggregation system Grafana Query, visualize, and alert on data Grafana Tempo High-scale distributed tracing backend Grafana Mimir Scalable and performant metrics backend Grafana Pyroscope Scalable continuous profiling backend Grafana Beyla eBPF auto-instrumentation Grafana Faro Frontend application observability web SDK Grafana Alloy OpenTelemetry Collector distribution with Prometheus pipelines Grafana OnCall On-call management Grafana k6 Load testing for engineering teams Prometheus Monitor Kubernetes and cloud native OpenTelemetry Instrument and collect telemetry data Graphite Scalable monitoring for time series data All Community resources Dashboard templates Try out and share prebuilt visualizations Prometheus exporters Get your metrics into Prometheus quickly Solutions All end-to-end solutions Opinionated solutions that help you get there easier and faster Kubernetes Monitoring Get K8s health, performance, and cost monitoring from cluster to container Application Observability Monitor application performance Frontend Observability Gain real user monitoring insights Incident Response & Management Detect and respond to incidents with a simplified workflow All monitoring and visualization solutions monitor infrastructure Out-of-the-box KPIs, dashboards, and alerts for observability Linux Windows Docker Postgres MySQL AWS Kafka Jenkins RabbitMQ MongoDB All monitoring solutions visualize any data Instantly connect all your data sources to Grafana MongoDB AppDynamics Oracle GitLab Jira Salesforce Splunk Datadog New Relic Snowflake All visualization solutions Learn All Learn Stay up to date ObservabilityCON Annual flagship observability conference ObservabilityCON on the Road Observability roadshow series Blog News, releases, cool stories, and more Observability Survey 2024 Key findings and results New Story of Grafana 10 years of Grafana Events Upcoming in-person and virtual events Success stories By use case, product, and industry Technical learning Documentation All the docs Webinars and videos Demos, webinars, and feature tours Tutorials Step-by-step guides Workshops Free, in-person or online Writers' Toolkit Contribute to technical documentation provided by Grafana Labs Plugin development Visit the Grafana developer portal for tools and resources for extending Grafana with plugins. new Join the community Community Join the Grafana community new Community forums Ask the community for help Community Slack Real-time engagement Grafana Champions Contribute to the community new Community organizers Host local meetups new Docs All Docs Grafana Grafana Mimir Grafana Tempo Grafana Loki Grafana Pyroscope Grafana Alloy Grafana Beyla Grafana Faro Grafana k6 Prometheus Writers’ Toolkit Grafana Cloud Grafana Cloud k6 Synthetic Monitoring Grafana Kubernetes Monitoring Grafana OnCall Grafana Incident Grafana SLO Grafana Alerting Grafana Machine Learning Application Observability Grafana Enterprise Grafana Enterprise Logs Grafana Enterprise Metrics Grafana Enterprise Traces Grafana plugins Community plugins Visit documentation Get started Get started with Grafana Build your first dashboard Get started with Grafana Cloud What's new / Release notes Grafana: 11.3 Grafana k6: 0.54 Grafana Loki: 3.2 Grafana Mimir: 2.14 Grafana Pyroscope: 1.8 Grafana Tempo: 2.6 Company All Company Our team Careers We're hiring Events Partnerships Newsroom Contact us Merch Help build the future of open source observability software Open positions Check out the open source projects we support Downloads Sign in LGTM+ Stack Logs powered by Grafana Loki Grafana for visualization Traces powered by Grafana Tempo Metrics powered by Grafana Mimir and Prometheus Profiles powered by Grafana Pyroscope Key Capabilities AI/ML insights Identify anomalies and reduce toil Contextual root cause analysis Automated anomaly correlation SLO management Create SLOs and error budget alerts Alerting Trigger alerts from any data source Plugins Connect Grafana to data sources, apps, and more Observability Solutions Frontend Observability Gain real user monitoring insights Application Observability Monitor application performance Infrastructure observability Ensure infrastructure health and performance Testing Performance & load testing powered by Grafana k6 Synthetic Monitoring powered by Grafana k6 IRM OnCall Observability native incident response Incident Observability native incident management Deploy The Stack Grafana Cloud Fully managed Grafana Enterprise Self-managed Pricing Hint: It starts at FREE The actually useful free plan * Grafana, of course * 14 day retention * 10k series Prometheus metrics * 500 VUh k6 testing * 50 GB logs, traces, and profiles * 50k frontend sessions * 2,232 app o11y host hours * 2,232 k8s monitoring host hours * 37,944 k8s monitoring container hours * and more cool stuff Create free account No credit card needed, ever. Grafana Loki Multi-tenant log aggregation system Grafana Query, visualize, and alert on data Grafana Tempo High-scale distributed tracing backend Grafana Mimir Scalable and performant metrics backend Grafana Pyroscope Scalable continuous profiling backend Grafana Beyla eBPF auto-instrumentation Grafana Faro Frontend application observability web SDK Grafana Alloy OpenTelemetry Collector distribution with Prometheus pipelines Grafana OnCall On-call management Grafana k6 Load testing for engineering teams Prometheus Monitor Kubernetes and cloud native OpenTelemetry Instrument and collect telemetry data Graphite Scalable monitoring for time series data All Community resources Dashboard templates Try out and share prebuilt visualizations Prometheus exporters Get your metrics into Prometheus quickly end-to-end solutions Opinionated solutions that help you get there easier and faster Kubernetes Monitoring Get K8s health, performance, and cost monitoring from cluster to container Application Observability Monitor application performance Frontend Observability Gain real user monitoring insights Incident Response & Management Detect and respond to incidents with a simplified workflow monitor infrastructure Out-of-the-box KPIs, dashboards, and alerts for observability Linux Windows Docker Postgres MySQL AWS Kafka Jenkins RabbitMQ MongoDB visualize any data Instantly connect all your data sources to Grafana MongoDB AppDynamics Oracle GitLab Jira Salesforce Splunk Datadog New Relic Snowflake All monitoring and visualization solutions Stay up to date ObservabilityCON Annual flagship observability conference ObservabilityCON on the Road Observability roadshow series Blog News, releases, cool stories, and more Observability Survey 2024 Key findings and results New Story of Grafana 10 years of Grafana Events Upcoming in-person and virtual events Success stories By use case, product, and industry Technical learning Documentation All the docs Webinars and videos Demos, webinars, and feature tours Tutorials Step-by-step guides Workshops Free, in-person or online Writers' Toolkit Contribute to technical documentation provided by Grafana Labs Plugin development Visit the Grafana developer portal for tools and resources for extending Grafana with plugins. new Join the community Community Join the Grafana community new Community forums Ask the community for help Community Slack Real-time engagement Grafana Champions Contribute to the community new Community organizers Host local meetups new Featured Getting started with the Grafana LGTM Stack We’ll demo how to get started using the LGTM Stack: Loki for logs, Grafana for visualization, Tempo for traces, and Mimir for metrics. Watch now → Open source Grafana Grafana Mimir Grafana Tempo Grafana Loki Grafana Pyroscope Grafana Alloy Grafana Beyla Grafana Faro Grafana k6 Prometheus Writers’ Toolkit Cloud Grafana Cloud Grafana Cloud k6 Synthetic Monitoring Grafana Kubernetes Monitoring Grafana OnCall Grafana Incident Grafana SLO Grafana Alerting Grafana Machine Learning Application Observability Enterprise Grafana Enterprise Grafana Enterprise Logs Grafana Enterprise Metrics Grafana Enterprise Traces Grafana plugins Community plugins Visit documentation Get started Get started with Grafana Build your first dashboard Get started with Grafana Cloud What's new / Release notes Grafana: 11.3 Grafana k6: 0.54 Grafana Loki: 3.2 Grafana Mimir: 2.14 Grafana Pyroscope: 1.8 Grafana Tempo: 2.6 Our team Careers We're hiring Events Partnerships Newsroom Contact us Merch Grot good Grot bad Feedback I'm a beta, not like one of those pretty fighting fish, but like an early test version. Our lawyers want you to know that I may get answers wrong, so we will monitor feedback and output constantly Grot good Grot bad Feedback I'm a beta, not like one of those pretty fighting fish, but like an early test version. Our lawyers want you to know that I may get answers wrong, so we will monitor feedback and output constantly ← Go back FEEDBACK Write a short description about your experience with Grot, our AI Beta. Rate your experience (required) Comments (required) Send Sending... Sent Thank you! Your message has been received! Would you like an AI-generated summary of this page in your language? Select language GermanEnglishSpanishFrenchItalianJapaneseKoreanBrazilian PortugueseRussianChinese Yes No, thanks We cannot remember your choice unless you click the consent notice at the bottom. I am Grot, your AI helper. Ask me anything. Grot good Grot bad Feedback RELEVANT SOURCES: I’m a beta, not like one of those pretty fighting fish, but like an early test version. Our lawyers want you to know that my answers may be wrong or not fully up to date, so please provide feedback to help me improve. I am Grot, your AI helper. Ask me anything. Grot good Grot bad Feedback RELEVANT SOURCES: I’m a beta, not like one of those pretty fighting fish, but like an early test version. Our lawyers want you to know that my answers may be wrong or not fully up to date, so please provide feedback to help me improve. ← Go back FEEDBACK Write a short description about your experience with Grot, our AI Beta. Rate your experience (required) Comments (required) Send Sent Thank you! Your message has been received! Register now ObservabilityCON Menu Close * On-demand sessions * Keynote * See all events -> THAT’S A WRAP! SEE YOU AGAIN SOON … ObservabilityCON is our biggest annual event for observability professionals to learn technical tips and tricks, winning observability strategies, and deep dives into all the newest features from Grafana Labs. Sign up to learn more about future observability events. Select... *required Select... Email* Select... *required Sign up By signing up, you agree to be emailed about this event and related product information. Thanks. You are signed up. Sorry, an error occurred. Email update@grafana.com for help. Sorry, this event is only open to select companies. Please enable JavaScript to register. CATCH UP ON ALL THE ANNOUNCEMENTS Read recap blog post –> ON-DEMAND SESSIONS OPENING KEYNOTE Learn about the latest features and AI/ML developments in the Grafana LGTM Stack and Grafana Cloud that make it easier and faster to get value from your observability practice. * MANOJ ACHARYA VP, Engineering Grafana Labs * RAJ DUTT CEO, Co-Founder Grafana Labs * AARON ERICKSON Senior Manager, Resource Governance AI team NVIDIA * OLIN GAY Director - Head of Observability BlackRock * JEN VILLA Director of Product Grafana Labs * TOM WILKIE Chief Technology Officer Grafana Labs HOW SAILPOINT CHARTED A COURSE TO COST EFFICIENCY WITH GRAFANA CLOUD Join Omar Lopez, Head of Observability team at SailPoint, as he shares how the company leveraged Grafana Cloud to achieve cost efficiency while navigating the choppy waters of scaling observability. In this session, Omar will delve into the challenges of managing growing metrics volumes and explore the strategic decisions and tools that helped SailPoint handle the complexities of observability, all while optimizing costs and performance. * OMAR LOPEZ Head of Observability SailPoint INSTRUMENTATION AND INGESTION IN AN INSTANT: DEMO OF GRAFANA ALLOY, GRAFANA BEYLA, AND OPENTELEMETRY Learn the basics of Grafana Alloy and Beyla and watch a live demo of how, with a single deployment, you can instantly get your data into Grafana Cloud for unified application and infrastructure observability. * MATT DURHAM Senior Software Engineer Grafana Labs * CARRIE EDWARDS Senior Software Engineer Grafana Labs * NIKOLA GRCEVSKI Principal Software Engineer Grafana Labs TROUBLESHOOT FASTER WITH UNIFIED APPLICATION AND INFRASTRUCTURE OBSERVABILITY IN GRAFANA CLOUD See a live demo of Grafana Cloud’s workflows for unified application, Kubernetes, and infrastructure observability for faster root cause analysis. * MYRLE KRANTZ Engineering Director Grafana Labs * BALJEET SAINI Lead Software Engineer BlackRock * GOUTHAM VEERAMACHANENI Product Manager Grafana Labs FROM A CONSTELLATION OF TOOLS TO A CENTRALIZED OBSERVABILITY STACK: PLANET’S JOURNEY WITH GRAFANA CLOUD Learn about Planet’s path from tool sprawl to Grafana Cloud’s fully managed observability stack built on Mimir for metrics, Tempo for traces, and Loki for logs. You will also hear about the team’s future plans for leveraging Pyroscope for profiles and Grafana Cloud solutions for IRM and performance testing. * JACOB STRASZYNSKI Staff Software Engineer Planet PANEL DISCUSSION: YOU'VE IMPLEMENTED OBSERVABILITY AT SCALE. NOW WHAT? Hear from a panel of observability leaders at Pegasystems and LexisNexis about their journey to implementing observability at scale, and what happens next: driving adoption, demonstrating value for the business, future-proofing their strategy, and more. * FRANK GUERRERA Chief Technology Officer Pegasystems * WAYNE JIN VP, Product Marketing Grafana Labs * NEIL WILSON Director of Software Engineering, Insurance Technology LexisNexis Risk Solutions HOW IG GROUP EMBRACED AN 'OBSERVABLE BY DEFAULT' CULTURE WITH GRAFANA CLOUD Learn how IG Group shifted from disparate monitoring solutions to centralized observability with Grafana Cloud Metrics, Logs, and Traces – and as a result streamlined operations, reduced costs, and transformed the financial services company’s engineering culture. * NATALIE UJUK Logging and Telemetry Team Lead IG Group AI/ML IN GRAFANA CLOUD: SAVING TOIL, TIME, AND MONEY Learn how AI/ML-powered Grafana Cloud features like Sift, Asserts, and Adaptive Metrics are helping organizations reduce toil, get faster insights, optimize observability costs – and level up the productivity of their engineers. * EDWARD QIAN Senior Software Engineer Grafana Labs * JEN VILLA Director of Product Grafana Labs TELETRACKING'S PATH TO FUTURE-PROOFING ITS OBSERVABILITY PRACTICE WITH GRAFANA CLOUD Learn how TeleTracking expanded observability coverage, improved the ability to bring context to issues, and defined more focused and quantifiable planning targets with Grafana Cloud Metrics, Logs, IRM, and Frontend Observability. * OREN LION Director, Software Engineering TeleTracking * ANDREW QU Software Engineer II TeleTracking A USER'S GUIDE TO GRAFANA CLOUD'S END-TO-END IRM SOLUTION See a demo of how Grafana Cloud’s Incident Response and Management solution provides workflows that span creating alerts and SLOs, managing on-call and incident response, and learning from postmortems – all within the context of your observability stack. * DEVIN CHEEVERS Director of Product Grafana Labs * SARAH KAPLAN Senior Engineering Manager Grafana Labs BEST PRACTICES FOR FASTER INSIGHTS FROM YOUR METRICS, LOGS, TRACES, AND PROFILES Learn about the latest features and functionality in Grafana Mimir for Prometheus metrics, Grafana Loki for logs, Grafana Tempo for traces, and Grafana Pyroscope for profiles – and best practices for getting faster insights from your data. * JOE ELLIOTT Principal Software Engineer Grafana Labs * CATHERINE GUI Senior Product Designer Grafana Labs * ELIJAH MCPHERSON Engineering Director Shopify * RYAN PERRY Principal Product Manager Grafana Labs HOW UNITY MIGRATED TO GRAFANA MIMIR AND SCALED ITS METRICS BACKEND TO 150 MILLION ACTIVE SERIES Learn how Unity migrated its metrics backend from Thanos to Cortex to Grafana Mimir and scaled it to over 150 million active series – and saved millions of dollars in the process. * GREG CHAMBERS Senior Software Engineer, Quality Unity Technologies * LUKAS MONKEVICIUS Senior Site Reliability Engineer Unity Technologies IMPROVING DEVELOPER VELOCITY: HOW GRAFANA CLOUD HELPED ASAPP STREAMLINE DASHBOARD CREATION Learn how ASAPP, which provides AI-powered customer service solutions, increased developer productivity with a streamlined process for creating dashboards in git and importing them into Grafana Cloud. * PATO ARVIZU Staff Site Reliability Engineer ASAPP * RAMIRO DE ZAVALIA Staff Site Reliability Engineer ASAPP HOW TO USE SYNTHETICS, LOAD TESTING, AND REAL USER MONITORING TO UNDERSTAND YOUR END USERS' EXPERIENCE Learn how synthetics can be used in conjunction with load testing and real user monitoring in Grafana Cloud for a more holistic approach to user-centered observability. * VIRGINIA CEPEDA Senior Software Engineer Grafana Labs * MARCELO MAGALLÓN Senior Software Engineer Grafana Labs * PETER SCHRETLEN Senior Manager, Engineering Grafana Labs WITH CHAINED OPENTELEMETRY COLLECTORS AND GRAFANA CLOUD, NOVO NORDISK ACHIEVES CENTRALIZED OBSERVABILITY Get the technical and architectural details behind how Novo Nordisk runs a hub-and-spoke Kubernetes cluster setup with chained OpenTelemetry collectors. You’ll learn how they use Grafana Cloud to provide a centrally managed platform that mimics multi-tenancy. * JUAN GONZÁLEZ MARTÍNEZ Senior Software Developer - Security Novo Nordisk * CASPER NIELSEN Operations & SRE Capability Lead Novo Nordisk THANK YOU TO OUR SPONSORS PLATINUM GOLD SILVER Sign up for Grafana stack updates Subscribe Subscribe Email* SubscribeSubscribe Sorry, an error occurred. Email update@grafana.com for help. Note: By signing up, you agree to be emailed related product-level information. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- * Grafana * Overview * Deployment options * Plugins * Dashboards * Products * Grafana Cloud * Grafana Cloud Status * Grafana Enterprise Stack * AI/ML tools for observability * Contextual root cause analysis | Grafana Cloud Asserts * Grafana Cloud Application Observability * Grafana Cloud Frontend Observability * Grafana Cloud k6 * Grafana Cloud Logs * Grafana Cloud Metrics * Grafana Cloud Profiles * Grafana Cloud Synthetic Monitoring * Grafana Cloud Traces * Grafana IRM * Grafana SLO * Open Source * Grafana * Grafana Loki * Grafana Mimir * Grafana OnCall * Grafana Tempo * Grafana Agent * Grafana Alloy * Grafana k6 * Prometheus * Grafana Faro * Grafana Pyroscope * Grafana Beyla * OpenTelemetry * Grafana Tanka * Graphite * GitHub * Learn * Grafana Labs blog * Documentation * Downloads * Community * Community forums * Community Slack * Grafana Champions * Community organizers * ObservabilityCON 2024 * GrafanaCON * The Golden Grot Awards * Successes * Workshops * Videos * OSS vs Cloud * Load testing * Log monitoring * Authors * Company * * The team * Press * Careers * * Partnerships * Contact Us | Grafana Labs * Getting help * Merch -------------------------------------------------------------------------------- Grafana Cloud Status Legal and Security Terms of Service Privacy Policy Trademark Policy Copyright 2024 © Grafana Labs Grafana Labs uses cookies for the normal operation of this website. Learn more. Got it! word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1