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

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 &amp;&amp; !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 &amp;&amp; !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 &amp;&amp; !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' &amp;&amp; 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' &amp;&amp; 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(/\&quot;/g, &quot;&quot;)" :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(/\&quot;/g, &quot;&quot;)" x-text="option.label.replace(/\&quot;/g, &quot;&quot;)"></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' &amp;&amp; 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' &amp;&amp; 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(/\&quot;/g, &quot;&quot;)" :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(/\&quot;/g, &quot;&quot;)" x-text="option.label.replace(/\&quot;/g, &quot;&quot;)"></label>
                </div>
              </template></div>
          </div>
        </template></div>
    </template>
    <div class="form-input-wrap"><template x-if="field.element === 'input' &amp;&amp; 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' &amp;&amp; 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(/\&quot;/g, &quot;&quot;)" :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(/\&quot;/g, &quot;&quot;)" x-text="option.label.replace(/\&quot;/g, &quot;&quot;)"></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 &amp;&amp; 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 &amp;&amp; form.success) || (response === true &amp;&amp; !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' &amp;&amp; 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' &amp;&amp; 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' &amp;&amp; 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' &amp;&amp; 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' &amp;&amp; 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' &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; !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