33

We are using Grafana 4 and have implemented alert notifications to a slack channel through an Incoming Webhook. The notifications are sent as and wen expected, except that the link in the notification points to the wrong place. For instance, if you take the following test notification:

enter image description here

Then I would expect the link in [Alerting] Test notification to point to the Grafana server. However, the host in that link is localhost. I thought it might be just a problem with test notifications, but this also happens with real notifications: the path will be correct, but the host and port will be wrong (localhost:62033, for full details).

I have tried to find the place where this host/port is configured, with no luck. Any tips so as to how to fix this?

Thanks in advance.

quiram
  • 746
  • 1
  • 7
  • 18

3 Answers3

32

There are a number of options you can add to your ini file to tell Grafana how to build self-referential urls:

#################################### Server ##############################
[server]
# Protocol (http or https)
protocol = http

# The http port  to use
http_port = 3000

# The public facing domain name used to access grafana from a browser
domain = localhost

# The full public facing url
root_url = %(protocol)s://%(domain)s:%(http_port)s/

You should start by setting the protocol, http_port and domain to the proper values. If you're accessing Grafana on port 80 or 443 and don't want to have the port explicitly in the url you can remove :%(http_port) from the root_url setting.

AussieDan
  • 2,116
  • 15
  • 11
  • What's with the "s" after each "%()"? I can't find any documentation about the template syntax you're using. – Shannon Jan 20 '21 at 22:56
  • @Shannon that's a syntax defined by the underlying library used to parse the config file, you can read more at https://ini.unknwon.io/docs/howto/work_with_values#recursive-values – AussieDan Jan 21 '21 at 23:08
10

In addition to editing the grafana.ini, if you are running Grafana within a Docker container you can also pass this into the container using environment variables (example uses the default grafana/grafana container).

docker run \ -d \ -p 3000:3000 \ --name=grafana \ -e "GF_SERVER_ROOT_URL=http://grafana.server.name:3000" \ grafana/grafana

dragon788
  • 3,583
  • 1
  • 40
  • 49
0

if you are using docker-compose you can pass your domain in the docker-compose.yml like this.

 environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_SERVER_ROOT_URL=http://grafana.server.com
Jusasane
  • 21
  • 3